Settings Guide
The Protect RPC uses query parameters and URL paths to convey your preferences. These parameters indicate which builders to share your transaction with, how potential refunds should be distributed, when to send transactions to the mempool, and other features.
Default
https:
By default, Flashbots Protect uses the following settings:
- Transactions are only forwarded to the Flashbots block builder
- Transactions are retried for 25 blocks and dropped if they do not land on chain within this time
- The
hash
anddefault_logs
hints are shared with MEV-Share searchers - 90% of MEV refunds are sent to
tx.origin
(the remaining 10% is sent to the validator) - 100% of gas fee refunds are sent to
tx.origin
- 0 priority fee transactions are not included on chain
- Reverted transactions are not included on chain
This may change as the configuration is tuned to maximize benefits.
Fast
Speed up your transactions by using fast mode.
https:/fast
Compared with the default configuration:
- Transactions are shared with all registered builders
- Validators receive a higher percentage of the MEV-Share refund increasing the probability that the transaction will be included in the winning block.
Hints
Change what transaction data is visible to MEV-Share searchers with the hint
query parameter. The default hint configuration will be used if no hints are provided. If you specify one or more hints, any hint that is not included will be disabled.
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. |
default_logs | Share specific subset of logs related to defi swaps. Partial info (the pool id and the fact that a swap was made) for curve, balancer, and uniswapV2/V3-style trades |
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 hash (or bundle hash if sending a bundle). To use full privacy mode, share this hint and this hint alone. The hash will always be shared if other hints are shared. |
tx_hash | Share individual tx hashes in the bundle. |
Here is an example:
https:?hint=contract_address&hint=logs
This configuration shares the contract address and logs with searchers. It does not share the calldata or function selector.
Builders
Designate which builders will receive your transaction with the builder
query parameter. This parameter can be repeated multiple times to include different builders. The builders listed below are currently supported.
Note that all transactions are shared with the Flashbots block builder, even if it is not explicitly specified.
Name | RPC |
---|
It's important to understand that while adding more builders can increase your transaction inclusion rate, it also requires you to place trust in those builders. Here's an example of how to utilize the builder
parameter:
https:?builder=ABC&builder=XYZ
This configuration sends your transaction to ABC block builder, XYZ block builder, and the Flashbots block builder.
Refunds
Tailor your refund settings using the refund
query parameter. This determines how MEV and gas fee refunds will be distributed across different addresses. If not specified, the transaction originator (tx.origin) will receive all refunds.
The refund parameter contains two colon-separated values: an address for the refund and the percentage of the payment that should be refunded to that address.
Here is an example of a refund parameter that sends 10% of refunds to the address recipientAddress
:
https:?refund=recipientAddress:10
MEV Refund Recipients
MEV refunds can be split across multiple recipients. To distribute the payment across multiple addresses, append a new refund parameter for each address.
The sum of all refund percentages must be less than 100. The remaining percentage, inferred from 100 - total refund percentages, is the payment to the validator.
Note: Keeping a larger percentage of the refund may result in longer block inclusion times as it reduces the payment to the validator.
Gas Fee Refund Recipients
Gas fee refunds can only be sent to a single recipient. If multiple addresses are specified, the first refund address listed will receive 100% of the gas fee refund. There is no additional payment split with the validator.
Mempool Configuration
Send certain transactions to the public mempool to improve the likelihood of inclusion by including the useMempool
query parameter. If either of the following conditions are true, Flashbots will send all pending transactions with this parameter to the public mempool:
- The Ethereum validator responsible for proposing the next block does not run MEV-Boost. Approximately 10% of Ethereum blocks do not include any private transactions. Sending your transaction to the public mempool will give you access to those blocks at the expense of privacy and MEV refunds.
- The transaction has not been included for 25 blocks: Some transactions pay very low priority fees are unlikely to land within 25 blocks. Send them to the public mempool to allow them to wait for lower gas prices.
To enable this feature, add the useMempool
parameter to your Protect RPC URL:
https:?useMempool=true
For analytics or other purposes, you can also specify a custom mempool URL by adding the mempoolRpc
parameter:
https:?useMempool=true&mempoolRpc=https://your-custom-node-url
Note: If this setting is enabled, all cancellations will be immediately forwarded to the public mempool, regardless of if the transaction itself has been made public.
Reverted Transactions
Allow reverted transactions by including the canRevert
query parameter in your request. By default, Flashbots Protect does not land reverted transactions on chain to save users gas fees. You can override this feature to receive faster feedback about failing transactions.
https:?canRevert=true
Block range
By default we try to land transactions in the next 25 blocks. You can change this range by including the blockRange
query parameter in your request.
https:?blockRange=10
Bundle Mode
Use the Protect PRC in bundle mode to interactively construct a bundle of transactions that you want to be land together. This setting is typically used for whitehat rescues and you can find the complete documentation in the Flashbots API docs.
Bundle mode has a few differences from the regular Protect experience:
- Protect will not immediately attempt to land transactions sent in bundle mode. Instead, new transactions will be queued and kept in a pending state.
- To send all pending transactions as a bundle, you must make a separate API request to Flashbots.
- Querying the balance of an address in bundle mode will return a fake balance of 100 ETH.
Custom Read RPC
Use a custom RPC endpoint for read requests by including the url
query parameter in your request. Write requests (eg. eth_sendRawTransaction
) will still be sent to the Protect RPC. This feature is recommended for wallets and applications with large volumes of read requests.
https:?url=http://RPC-ENDPOINT.COM