Private Transaction Relay

Land a sensitive transaction without it ever touching the public mempool — so it can't be front-run. From the Seneschal data API.

What it does

Some transactions are too valuable to broadcast. The moment a profitable or sensitive tx hits the public mempool, generalised front-runners copy its calldata, bid higher gas and beat you to the block — claiming a bounty/CTF prize you solved, sniping a mint, or sandwiching your swap.

This relay closes that window. You sign the transaction locally and send us only the signed bytes; we forward them only to block builders (Flashbots, Titan + our own rbuilder) and never to the public mempool. There is nothing for a front-runner to see. You keep custody throughout — we can't alter the tx (any change breaks the signature) and never see your key.

Try it — validate a signed tx (free)

Paste a locally-signed raw transaction (0x…). We decode it, recover the sender, and show exactly which private builders it would be relayed to — without relaying it and without charge. Confirm the bytes are right before you pay to relay.

How to claim privately

  1. Sign locally. Build & sign your tx offline with your own wallet (viem, ethers, cast mktx…). Your key never leaves your machine.
  2. Validate (free). GET /v1/private-relay/inspect?raw_tx=0x… — or use the box on the left — to confirm sender/nonce/target.
  3. Relay (paid). POST /v1/premium/private-relay with an x402 payment and { raw_tx }. We fan it out privately.
  4. Watch. We return the tx hash + which builders accepted it. It lands when one of them wins a block — no mempool exposure in between.
public_mempool: false — always

Where your tx goes

Live builder set (from /v1/private-relay/info). Our own rbuilder is marked ours; the rest are major private-order-flow builders.

loading…

It is never sent to a public node's eth_sendRawTransaction, so it cannot appear in the public mempool.

Price

$0.50 / submission
USDC on Base · no account, no API key

Pay-per-use over the x402 protocol — one micropayment per private submission. Compatible clients (@x402/fetch) sign + retry automatically.

Relay with x402 (JS)

import { wrapFetchWithPayment } from '@x402/fetch';
import { createWalletClient, http } from 'viem';

// 1. sign LOCALLY — your key never leaves here
const rawTx = await wallet.signTransaction(txRequest);

// 2. (optional) validate for free
await fetch(
  'https://api.seneschal.space/v1/private-relay/inspect'
  + '?raw_tx=' + rawTx
).then(r => r.json());

// 3. relay privately (x402 pays $0.50)
const f = wrapFetchWithPayment(fetch, payWallet);
const res = await f(
  'https://api.seneschal.space/v1/premium/private-relay',
  { method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({ raw_tx: rawTx }) }
);
const { tx_hash, accepted, public_mempool } = await res.json();
// public_mempool === false, always

Or from the shell

# sign locally with foundry's cast
RAW=$(cast mktx 0xTARGET "claim(bytes)" 0x… \
  --private-key $KEY --rpc-url $RPC)

# validate (free)
curl "https://api.seneschal.space/v1/private-relay/inspect?raw_tx=$RAW"

# relay (needs an x402-capable client to satisfy the 402)
curl -X POST https://api.seneschal.space/v1/premium/private-relay \
  -H 'content-type: application/json' \
  -d "{\"raw_tx\":\"$RAW\"}"

MCP (agents): seneschal_private_relay{ "view": "inspect", "raw_tx": "0x…" } to preview for free; relay itself is the paid REST endpoint.

Who uses it & why

  • Puzzle / CTF / bounty solvers — claim a frontrun_bait bounty without handing your solution to a mempool sniper. (This is the relay the puzzle-risk feed points to.)
  • Anyone revoking approvals or rescuing funds — a wallet drainer watches the mempool for your rescue tx and races it; relay privately and it can't.
  • Minters & first-touchers — guaranteed-private submission for time-sensitive, copyable transactions.
  • Searchers without their own builder relationships — borrow ours: one POST, fanned out to multiple builders, pay-per-use, no infra.

We relay your transaction as signed — we do not simulate or endorse it. Inclusion is best-effort: a private tx only lands if one of the builders above wins the block. It is never broadcast publicly regardless.