Protected Transactions

The OFA (Order Flow Auction) proxy acts as a drop-in replacement for your standard RPC endpoint. It intercepts eth_sendRawTransaction calls and routes them through a protection pipeline that shields users from MEV extraction while capturing value on their behalf.

How Protection Works

When a transaction hits the OFA proxy, it passes through six stages:

1. Interception

The proxy decodes the raw transaction and extracts key fields -- sender, recipient, calldata, value. Swap transactions are identified by matching against known DEX router selectors (e.g., swapExactTokensForTokens, exactInputSingle).

2. Sandwich Detection

The engine analyzes the mempool for pending transactions that could sandwich the user's trade. It checks for:

  • Matching token pairs with large pending orders
  • Abnormal gas price bidding on the same pair
  • Known sandwich bot addresses

3. Private Routing

Instead of broadcasting to the public mempool, the transaction is sent through a private channel directly to block builders. This prevents frontrunning by keeping the transaction invisible to mempool observers.

4. Backrun Auction

The proxy runs a sealed-bid auction among registered searchers. Searchers submit backrun bundles that extract residual arbitrage after the user's trade executes. The auction selects the highest-value backrun that does not negatively impact the user's execution.

5. MEV Capture

The winning backrun is bundled atomically with the user's transaction. The MEV extracted by the backrun is captured and split between the user (90%) and the protocol (10%).

6. Submission

The final bundle (user tx + backrun) is submitted to block builders for inclusion. If no profitable backrun exists, the user's transaction is submitted alone through the private channel.

Protection Status Lifecycle

Each protected transaction moves through the following states:

StatusDescription
pendingTransaction received and queued for protection analysis.
protectedSandwich detection passed; transaction routed privately.
auctionedBackrun auction completed; bundle assembled.
includedBundle included in a block on-chain.
failedTransaction could not be included (reverted, timed out, or dropped).

Query Protection Status

GET /protect/tx/{tx_id}

Also available via WebSocket gateway as mev_getProtectStatus.

Returns the current protection status and metadata for a submitted transaction.

Response:

{
  "tx_hash": "0xabc123...",
  "status": "included",
  "protected": true,
  "sandwich_detected": false,
  "backrun_value_wei": "450000000000000",
  "rebate_wei": "405000000000000",
  "block_number": 19482301,
  "included_at": "2026-03-15T14:22:10Z"
}

Code Examples

Submit a protected transaction

curl -X POST https://mev.yoorquezt.io/protect/tx \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_sendRawTransaction",
    "params": ["0xf86c0a8502540be400..."],
    "id": 1
  }'

Query protection status

curl https://mev.yoorquezt.io/protect/tx/0xabc123...def456

Poll until included

TX_HASH="0xabc123...def456"

while true; do
  STATUS=$(curl -s "https://mev.yoorquezt.io/protect/tx/$TX_HASH" | jq -r '.status')
  echo "Status: $STATUS"

  if [ "$STATUS" = "included" ] || [ "$STATUS" = "failed" ]; then
    break
  fi

  sleep 2
done
Edit this page