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:
| Status | Description |
|---|---|
pending | Transaction received and queued for protection analysis. |
protected | Sandwich detection passed; transaction routed privately. |
auctioned | Backrun auction completed; bundle assembled. |
included | Bundle included in a block on-chain. |
failed | Transaction 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