Wallet/Dapp Integration Guide
This guide covers the essential steps for wallet & dapp developers to send transactions to MEV-Share.
MEV-share is a protocol that lets users, wallets, and dapps to capture the MEV their transactions create.
You can submit your orderflow to the Flashbots Matchmaker to internalize the MEV generated by your transactions.
A matchmaker is a service that matches user transactions with searcher bundles. Flashbots runs matchmakers on Ethereum Mainnet and Goerli. Users submit their transactions to the matchmaker, which shares select information about transactions with searchers. Searchers propose transactions for the matchmaker to bundle with the user transactions (currently we only support backruns). The matchmaker forwards these bundles to a block builder with a requirement that the user is paid a kickback; a percentage of the winning searcher's bundle profit.
How to Integrate
The Flashbots Matchmaker is accessible through the Flashbots Protect RPC.
Send Orderflow to Protect RPC
Route your application's eth_sendRawTransaction
calls to the Protect RPC rpc.flashbots.net
to connect to the matchmaker. By default, connecting to Protect will enable the matchmaker with the Stable configuration, which is set by Flashbots to give users the best possible execution.
Set Privacy Configuration
To specify a custom privacy configuration, options are passed as URL query params. These params currently include hints and builders.
Hints specify which data fields in the user's transactions are shared with searchers on MEV-Share. The following hints are currently available:
Hint | Description |
---|---|
calldata | Share data sent to the smart contract (if applicable) by the transaction. The function selector and contract address will also be shared if the calldata is shared. |
logs | Share logs emitted by executing the transaction. |
function_selector | Share the 4-byte identifier of the function being called on the smart contract by the transaction. The contract address will also be shared if the function selector is shared. |
contract_address | Share the address of the recipient of the transaction; typically a smart contract. |
hash | Share the transaction (or bundle) hash. To use full privacy mode, share this hint and this hint alone. The hash will always be shared if other hints are shared. |
Specifying builders permits the specified builders to use your orderflow to build blocks.
Adding other builders can make users' transactions land on-chain faster and more reliably, but note that Flashbots does not control how other builders operate and makes no guarantees about their behavior.
The following builders are currently supported. By default, orderflow is only routed to the Flashbots block builder.
Name | RPC | Supported APIs |
---|
We strongly recommend experimenting to find the right hints for you and your users. We are eager to partner with your data and product teams to find the best balance.
Example
Connecting to RPC with this configuration would share logs and function selectors, and send transactions only to Flashbots:
https://rpc.flashbots.net?hint=logs&hint=function_selector&builder=flashbots
To learn more about configuring Flashbots Protect, see the Flashbots Protect RPC docs.
What are the guarantees and benefits?
The matchmaker will bundle user transactions with each valid searcher backrun and submit them to a dedicated Flashbots builder. The builder will choose the winning bundle and transfer 90% of the searcher's payment to msg.sender
of the user's transaction.
If no valid backruns are submitted, the transaction will be treated as a regular Protect transaction and receive all the typical benefits of Flashbots Protect.
What are the risks?
This is a beta release of the Flashbots matchmaker. The matchmaker service may experience service interruptions and there may be API breaks during the trial phase.
By default, the matchmaker shares no transaction information with searchers other than the transaction hash. This is unlikely to result in the largest possible kickback. You can customize your request to share additional information and we will closely monitor and update the defaults where needed.
Next steps
We are exploring a number of improvements. For instance — customizable kickback percentage & recipients (which would allow wallets or dapps to take a cut), more privacy settings & per-protocol defaults, and more expressive execution preferences (allowing searchers to submit bundles that contain more than simple backruns).
The Flashbots Matchmaker is one implementation of the MEV-share protocol. We are also actively designing standard interfaces for the protocol as a whole.
Join us in discussing the latest APIs by creating an Issue or Pull Request on github/flashbots/mev-share.