OrdoFi for Searchers
Bid on backrun opportunities across Robinhood Chain's DEXs through a single sealed-bid auction — instead of racing raw latency to the sequencer.
Robinhood Chain orders transactions first-come-first-served with no public mempool. Today MEV is a pure latency race won by whoever is closest to the sequencer in Ashburn/Ohio. OrdoFi turns it into a fair auction: you bid for the backrun right, and the winner's transaction is dispatched immediately after the user's — no colocation arms race required.
How it works
- Connect to the auction over WebSocket and receive redacted opportunity hints (which pools a pending user tx will touch).
- Simulate the backrun, decide your max bid, and submit a sealed bid with an EIP-712 signature authorizing payment up to that amount.
- Highest bidder wins and pays the second-highest price. Your backrun is dispatched right after the user transaction.
- The clearing price is debited from your on-chain bond; 90% is rebated to the user, 5% to the originating app, 5% to the protocol.
Quick start 2 minutes
# run the reference bot against the auction
git clone https://github.com/OrdoFi/ordofi && cd ordofi && npm install
SEARCHER_KEY=0xYOUR_KEY \
ORDO_AUCTION_WS=wss://auction.ordofi.network/searcher \
ORDO_SETTLEMENT_ADDRESS=0xCONTRACT \
npm run searcher-bot
Build your own with the SDK
import { OrdoSearcher } from "@ordofi/sdk";
const searcher = new OrdoSearcher({
auctionWsUrl: "wss://auction.ordofi.network/searcher",
privateKey: process.env.SEARCHER_KEY,
settlementAddress: process.env.ORDO_SETTLEMENT_ADDRESS,
onOpportunity: async (opp) => {
// simulate the backrun on opp.hint.poolsTouched,
// compute expected profit, bid up to it:
return { maxBidWei: 10n ** 15n, backrunRawTx };
},
});
searcher.connect();
Bonding
Bids are backed by an on-chain bond so settlement is trustless. Deposit once; the contract debits winning clearing prices and lets you withdraw the rest anytime.
import { OrdoBond } from "@ordofi/sdk";
const bond = new OrdoBond(SEARCHER_KEY, SETTLEMENT_ADDRESS);
await bond.deposit("1.0"); // bond 1 ETH
await bond.bondOf(address); // check balance
You can never be overcharged. Every settlement requires your own EIP-712 signature over your bid. The auctioneer can debit at most the amount you signed, and only for an opportunity you actually bid on — enforced on-chain in OrdoSettlement.