From 445bd3bc097ff5d01363f3e751f1d7d78819ea08 Mon Sep 17 00:00:00 2001 From: yifuzhang95 <67046731+yifuzhang95@users.noreply.github.com> Date: Fri, 4 Apr 2025 12:45:34 -0400 Subject: [PATCH 01/19] Update quick-start.mdx (#611) --- docs/flashbots-protect/quick-start.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flashbots-protect/quick-start.mdx b/docs/flashbots-protect/quick-start.mdx index 5c888f9e..e71878ca 100644 --- a/docs/flashbots-protect/quick-start.mdx +++ b/docs/flashbots-protect/quick-start.mdx @@ -9,7 +9,7 @@ import ProtectButton from '@site/src/components/ProtectButton'; Flashbots Protect has the following key benefits: - **Frontrunning protection:** Transactions are hidden from the public mempool away from front-running and sandwich bots. -- **Refunds**: If your transaction creates MEV, you an earn an [MEV refund](/flashbots-protect/mev-refunds). If your transaction pays high priority fees, you can earn [gas fee refunds](/flashbots-protect/gas-fee-refunds). +- **Refunds**: If your transaction creates MEV, you can earn an [MEV refund](/flashbots-protect/mev-refunds). If your transaction pays high priority fees, you can earn [gas fee refunds](/flashbots-protect/gas-fee-refunds). - **No failed transactions:** Transactions are only included in the block if they do not revert. Users do not pay fees for failed transactions. - **Configurable:** You can customize your privacy, speed, and refund settings. From a9ff7a2f139e5172f9fb09f3b9c25741fe745fc0 Mon Sep 17 00:00:00 2001 From: sketsdever Date: Fri, 11 Apr 2025 18:01:43 -0400 Subject: [PATCH 02/19] Blocks API is deprecated (#612) --- .../advanced/bundle-pricing.md | 2 +- .../advanced/troubleshooting.mdx | 10 +++---- docs/flashbots-data/blockapi.md | 26 ------------------- .../additional-documentation/bundle-cache.md | 7 +---- docs/sidebars.js | 1 - 5 files changed, 5 insertions(+), 41 deletions(-) delete mode 100644 docs/flashbots-data/blockapi.md diff --git a/docs/flashbots-auction/advanced/bundle-pricing.md b/docs/flashbots-auction/advanced/bundle-pricing.md index be750386..e6d2ba8c 100644 --- a/docs/flashbots-auction/advanced/bundle-pricing.md +++ b/docs/flashbots-auction/advanced/bundle-pricing.md @@ -33,4 +33,4 @@ The Flashbots builder employs a new algorithm aimed at maximizing block profitab There could be two potential reasons why your bundles are not being included. The first reason to consider is that the gas price of your bundles might not be higher than that at the tail end of a block. It's recommended to analyze the gas price your bundles are offering by initially simulating the bundles and observing the difference in the coinbase and the gas consumed. If this value is found to be lower than the tail end of recent blocks, it would be necessary to increase your gas price accordingly. -Alternatively, your bundles may not be included due to competition with other searchers targeting the same opportunities. These competitors might be offering a higher gas price than you. To address this, first simulate your bundles to check the gas price they are offering. Log the amount you are paying for a specific opportunity in a specific block. If your bundle is still not included, refer to the [blocks API](https://blocks.flashbots.net/) to identify the bundle that was included in your target block and the gas price they offered. +Alternatively, your bundles may not be included due to competition with other searchers targeting the same opportunities. These competitors might be offering a higher gas price than you. To address this, first simulate your bundles to check the gas price they are offering. Log the amount you are paying for a specific opportunity in a specific block. diff --git a/docs/flashbots-auction/advanced/troubleshooting.mdx b/docs/flashbots-auction/advanced/troubleshooting.mdx index e05bc350..ddfcb94d 100644 --- a/docs/flashbots-auction/advanced/troubleshooting.mdx +++ b/docs/flashbots-auction/advanced/troubleshooting.mdx @@ -90,9 +90,9 @@ Covers: 3. Competitors paying more ``` -[Flashbots bundles adhere to a "blind" auction](/flashbots-auction/overview), where bundle pricing is not released by Flashbots prior to landing on-chain. The winning "bids" are revealed _only_ after the block containing winning bundles is propagated (via the transactions themselves and [blocks-api](https://blocks.flashbots.net/) for recognizing which set of transactions belong to a bundle). +[Flashbots bundles adhere to a "blind" auction](/flashbots-auction/overview), where bundle pricing is not released by Flashbots prior to landing on-chain. The winning "bids" are revealed _only_ after the block containing winning bundles is propagated. -While you cannot see a competitor's bid in real time, it is possible to look AFTER the fact to: +While you cannot see a competitor's bid in real time, it is possible to look onchain AFTER the fact to: 1. Identify the exact bundle (if any) that conflicted with yours 2. Compare the conflicting bundle's `effective priority fee` with your own (to see if you should be bidding more to remain competitive) @@ -256,11 +256,7 @@ Analyze the timestamps above in relation to when you observe the targeted block mev-boost is an opt-in system that runs alongside a validator's consensus client. Unless every validator on Ethereum runs mev-boost, some slots cannot be targeted with Flashbots. Additionally, your builder must be connected to the same relay as the proposer for the target slot. -If no bundles are detected in the blocks-api response, check if other blocks from the same validator ever have Flashbots bundles. If no blocks from a particular validator contain Flashbots bundles, it is possible your bundle was not seen by the validator who proposed the block for the target block height. - -## New Blocks API fields - -New fields have been added to the blocks API to align the API with PoS Ethereum nomenclature. Details can be found in the [Blocks API page](/flashbots-data/blockapi). +If no blocks from a particular validator contain Flashbots bundles, it is possible your bundle was not seen by the validator who proposed the block for the target block height. ## Everything checks out, what's next? diff --git a/docs/flashbots-data/blockapi.md b/docs/flashbots-data/blockapi.md deleted file mode 100644 index a1b7dbea..00000000 --- a/docs/flashbots-data/blockapi.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: MEV-Blocks API ---- -mev-blocks is a a public API for displaying flashbots blocks and transactions. - -Access it here: [blocks.flashbots.net](https://blocks.flashbots.net/) - -## New Blocks API fields - -For the PoS Ethereum merge, we added new fields to the Blocks API response to align the API with PoS Ethereum nomenclature. - -Old fields were left in place for backwards compatibility with clients, and have been retrofitted to populate with data from the Flashbots builder. - -| Parent Type | Old Name | New Name | -| --- | --- | --- | -| _`blocks`_ | `miner` | `fee_recipient` | -| _`blocks`_ | `miner_reward` | `fee_recipient_eth_diff` | -| _`blocks`_ | `coinbase_transfers` | `eth_sent_to_fee_recipient` | -| _`transactions`_ | `total_miner_reward` | `fee_recipient_eth_diff` | -| _`transactions`_ | `coinbase_transfer` | `eth_sent_to_fee_recipient` | - -:::note - -Old names will be removed in a future release. - -::: diff --git a/docs/flashbots-protect/additional-documentation/bundle-cache.md b/docs/flashbots-protect/additional-documentation/bundle-cache.md index 1f62499a..c1bd5c1a 100644 --- a/docs/flashbots-protect/additional-documentation/bundle-cache.md +++ b/docs/flashbots-protect/additional-documentation/bundle-cache.md @@ -1,10 +1,5 @@ - - - - - --- -title: bundle cache API +title: Bundle Cache API --- To create a bundle iteratively (e.g. by signing & sending transactions one at a time with Metamask), you can use the bundle cache API to cache signed transactions and retrieve them with a bundle ID. diff --git a/docs/sidebars.js b/docs/sidebars.js index 67786b0b..3a7fba64 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -198,6 +198,5 @@ module.exports = { "flashbots-auction/advanced/rpc-endpoint", "flashbots-protect/additional-documentation/status-api", "flashbots-protect/additional-documentation/bundle-cache", - "flashbots-data/blockapi", ] }; From 2858e9b2418378c513d7a581402326a4a4d6e4d7 Mon Sep 17 00:00:00 2001 From: sketsdever Date: Tue, 29 Apr 2025 13:24:33 -0400 Subject: [PATCH 03/19] Include system logs in ToS (#613) --- docs/policies/terms-of-service.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/policies/terms-of-service.mdx b/docs/policies/terms-of-service.mdx index efef79eb..f6dc398a 100644 --- a/docs/policies/terms-of-service.mdx +++ b/docs/policies/terms-of-service.mdx @@ -79,7 +79,7 @@ FLASHBOTS hereby grants You a single, revocable, non-exclusive, non-transferable ### LICENSE GRANT TO FLASHBOTS -Unless otherwise agreed upon by You and FLASHBOTS, Your transaction, transaction bundle, or blocks of transactions (Your “Protected Data”) will be treated as proprietary and confidential to the extent not published to a public blockchain or other public record by virtue of the operation of such networks. You hereby grant FLASHBOTS a limited, non-exclusive license to use, adapt, or reproduce Your Protected Data for purely internal purposes, such as improvement of the Flashbots Service; as part of an anonymized, aggregated data set, or otherwise consistent with the purposes for which such information was disclosed to FLASHBOTS. +Unless otherwise agreed upon by You and FLASHBOTS, Your transaction, transaction bundle, or blocks of transactions (Your “Protected Data”) will be treated as proprietary and confidential to the extent not published to a public blockchain or other public record by virtue of the operation of such networks. You hereby grant FLASHBOTS a limited, non-exclusive license to use, adapt, or reproduce Your Protected Data for purely internal purposes, such as improvement of the Flashbots Service; as part of an anonymized, aggregated data set; to derive and publish system performance metrics and logs; or otherwise consistent with the purposes for which such information was disclosed to FLASHBOTS. ### TAXES & FEES @@ -93,7 +93,7 @@ You alone assume the sole responsibility of evaluating the merits and risks asso ### CERTAIN INFORMATION MADE AVAILABLE BY FLASHBOTS -FLASHBOTS may make available to You certain public data and other information (including, without limitation, information derived from public blockchain records), including information that we obtain from our agents, including but not limited to partners, vendors, and infrastructure providers. FLASHBOTS makes this information available to You as a service for Your convenience; the Flashbots Parties neither endorse nor approve any such information. The Flashbots Parties neither (1) guarantee the accuracy, timeliness, or completeness of any such information, nor (2) warrant any results from Your use or reliance on such information. You agree that You use any such information at Your own risk. +FLASHBOTS may make available to You certain public data and other information (including, without limitation, information derived from public blockchain records, system logs, and other operational metrics), including information that we obtain from our agents, including but not limited to partners, vendors, and infrastructure providers. FLASHBOTS makes this information available to You as a service for Your convenience; the Flashbots Parties neither endorse nor approve any such information. The Flashbots Parties neither (1) guarantee the accuracy, timeliness, or completeness of any such information, nor (2) warrant any results from Your use or reliance on such information. You agree that You use any such information at Your own risk. ### DISCLAIMER From e49049b34d954371a4d04482c9599a8bc61593bd Mon Sep 17 00:00:00 2001 From: sketsdever Date: Tue, 13 May 2025 16:05:26 -0400 Subject: [PATCH 04/19] Use BuilderNet docs for refund rule (#614) * Protect gas fee refunds come from BuilderNet * Use BuilderNet docs for refund rule * Add link to BuilderNet website --- .../advanced/gas-fee-refunds.md | 70 +++---------------- docs/flashbots-protect/gas-fee-refunds.md | 16 ++--- 2 files changed, 19 insertions(+), 67 deletions(-) diff --git a/docs/flashbots-auction/advanced/gas-fee-refunds.md b/docs/flashbots-auction/advanced/gas-fee-refunds.md index f0b2c63e..7fe9c4db 100644 --- a/docs/flashbots-auction/advanced/gas-fee-refunds.md +++ b/docs/flashbots-auction/advanced/gas-fee-refunds.md @@ -4,7 +4,7 @@ title: Gas Fee Refunds ## Introduction -Searchers and private transaction API users are automatically eligible to receive gas fee refunds. If Flashbots can include a bundle on chain for a lower price, you are eligible to receive a refund. +Searchers and private transaction API users are automatically eligible to receive gas fee refunds. If a bundle can be included on chain for a lower price, you are eligible to receive a refund. Gas fee refunds do not change how bundles are executed and searchers do not need to make any changes to be eligible for them. @@ -12,29 +12,29 @@ Gas fee refunds do not change how bundles are executed and searchers do not need Gas fee refunds include both priority fees and coinbase transfers. -In an optimal case, searchers are refunded the difference between their bid and the bid of the next-best bundle or transaction targeting the same state. Ie. the refund effectively results in the searcher paying the second price. In practice, searchers will receive some fraction of this amount depending on how much profit the Flashbots builder makes. +In an optimal case, searchers are refunded the difference between their bid and the bid of the next-best bundle or transaction targeting the same state. Ie. the refund effectively results in the searcher paying the second price. In practice, searchers will receive some fraction of this amount depending on how much profit BuilderNet makes. ## Which bundles receive refunds -Flashbots provides refunds for bundles in blocks landed by the Flashbots block builder. Whether a bundle receives a refund depends on a few factors that vary from block to block: +Flashbots provides refunds for bundles in blocks landed by [BuilderNet](https://buildernet.org/). Whether a bundle receives a refund depends on a few factors that vary from block to block: * How much network congestion and competition there was -* Whether the Flashbots builder made a profit and how much +* Whether BuilderNet made a profit and how much * How much the specific bundle contributed to the value of the block -* If the bundle was sent directly to Flashbots, or shared with other block builders by the searcher +* If the bundle was sent directly to Flashbots or BuilderNet, or shared with other block builders by the searcher Note that transactions seen in the public mempool are excluded and bundles containing only public mempool transactions do not receive refunds. ## How to maximize both refunds and speed -Transactions which are sent directly to the Flashbots Builder via the Bundle Relay, and not multiplexed _by the searcher_ to other block builders, are likely to receive higher refunds. This is because they increase the profit of the Flashbots builder which is used to provide refunds. +Transactions which are sent directly to the Flashbots Bundle Relay or BuilderNet, and not multiplexed _by the searcher_ to other block builders, are likely to receive higher refunds. This is because they increase the profit of BuilderNet which is used to provide refunds. -The Flashbots block builder does not land 100% of blocks. In order to land bundles in all blocks, searchers can ask Flashbots to share their bundles with other block builders in cases where the Flashbots builder does not win a block. Flashbots will automatically share with all specified builders on the searcher's behalf. +BuilderNet does not land 100% of blocks. In order to land bundles in all blocks, searchers can ask Flashbots to share their bundles with other block builders in cases where BuilderNet does not win a block. Flashbots will automatically share with all specified builders on the searcher's behalf. ### Smart multiplexing To share bundles with other builders, add the `builders` field to your `eth_sendBundle` request. The `builders` field accepts a list of strings which correspond to the "name" tags of [registered builders](https://github.com/flashbots/dowg/blob/main/builder-registrations.json). -All `eth_sendBundle` requests are shared with the Flashbots builder. They are multiplexed to other block builders at the end of the slot if the Flashbots builder determines it will not win that block. +All `eth_sendBundle` requests are shared with BuilderNet. They are multiplexed to other block builders at the end of the slot if BuilderNet determines it will not win that block. For example: @@ -55,7 +55,7 @@ For example: } ``` -Searchers can also use `mev_sendBundle` to multiplex bundles if they prefer. Though this method is more complex and not necessary for gas fee refunds. +Searchers can also use `mev_sendBundle` to multiplex bundles if they prefer. This method is more complex and not necessary for gas fee refunds. _Note: Smart multiplexing has a 1% rate of false positives, meaning that in 1% of MEV-Boost blocks there is a risk that searcher bundles will not be landed._ @@ -65,55 +65,7 @@ To view bundle stats on multiplexed `eth_sendBundle` requests, use the `flashbot ## How are refunds calculated -The Flashbots builder uses a refund rule to retroactively calculate refunds for all bundles landed in its blocks. - -The refund rule aims to have bundles make the minimum net payment so that bidding optimally is as straight forward as possible. We do this by measuring the contribution of bundles above the other bundles the builder has received, and refunding as much of that as possible. - -Bundles sent by the same signer will be treated as non-competitive. - -See the [explainer](https://collective.flashbots.net/t/refund-rule-wat-dis-how-to-and-faq/4049/2) for more details about how to bid and interact with the refund rule. - -### The Flat Tax Rule - -- **$B(T)$** is the most profitable block produced from bundles in $T$. -- **$v(T)$** is the value of $B(T)$. -- **$b_i(T)$** is the payment of all bundles sent by identity $i$ if block $B(T)$ is realized. -- **$\mu_i(T) = \min\{b_i(T), v(T) - v(T \setminus \{i\})\}$** is the marginal contribution of all bundles sent by identity $i$ if $B(T)$ is realized. We bound the marginal contribution so that the net payment can't be negative. -- **$c$** is the amount the builder pays to the proposer to win the block. - -$$ -\phi_i(T, c) = \frac{\mu_i(T)}{\sum_j \mu_j(T)} \min\{v(B(T)) - c, \sum_j \mu_j(T)\} -$$ - -So the net payment per identity (assuming it's included) is $p_i(T) = b_i(B(T)) - \phi_i(T, c)$. - -Notice that if the block generates enough value after paying the proposer, everyone should be refunded their contribution, meaning everyone pays the minimum they need to pay to beat competition. - -### Identity constraint - -To avoid the rule being gamed by submitting bundles from multiple identities, we impose an additional constraint that no set of identities can receive in total more refunds than they contribute to the block. - -For each set of identities $I$ we define - -$$ -\mu_I(T) = \min\{\sum_{i\in I} b_i(T), v(T) - v(T \setminus I)\}, -$$ - -to be the joint marginal contribution of the identities in $I$ to the block. Then we choose rebates that are minimally different from the flat-tax rule subject to the constraint that they don't rebate a set of bundles more in total than its joint marginal contribution. This means the vector of rebates $\psi(T, c)$ solves - -$$ -\min_{r\in\mathbb{R}^n_+} \sum_i (r_i - \phi_i(T, c))^2 -$$ - -$$ -\text{subject to} \sum_{i\in I} r_i \leq \mu_I(T) \text{ for each } I \subseteq B(T), -$$ - -$$ -\sum_i r_i \leq v(T) - c -$$ - -where $\phi(T, c)$ are the orginal flat-tax rebates as defined above. +BuilderNet uses a refund rule to retroactively calculate refunds for all bundles landed in its blocks. For more information, see the [BuilderNet docs](https://buildernet.org/docs/refunds). ## Who receives refunds @@ -121,7 +73,7 @@ By default, the refund recipient is the signer used on the `eth_sendBundle`, `me ## How to track refunds -Refunds are tracked from a start date of July 8, 2024. Refunds are sent to recipients in batches, the first batch originated from our builder address `0xdf99A0839818B3f120EBAC9B73f82B617Dc6A555` while newer batches originate from [`refunds.buildernet.eth`](https://etherscan.io/address/0x62a29205f7ff00f4233d9779c210150787638e7f). +Refunds are tracked from a start date of July 8, 2024. Refunds are sent to recipients in batches, the first batch originated from the Flashbots builder address `0xdf99A0839818B3f120EBAC9B73f82B617Dc6A555` while newer batches originate from [`refunds.buildernet.eth`](https://etherscan.io/address/0x62a29205f7ff00f4233d9779c210150787638e7f). Track your refunds using the [`flashbots_getFeeRefundTotalsByRecipient`](/flashbots-auction/advanced/rpc-endpoint#flashbots_getfeerefundtotalsbyrecipient) RPC method or the [refund dashboard](https://app.hex.tech/9eb1e790-53f7-4c16-be76-4a22c1aa7d17/app/0c2d34ef-1304-481a-b3d6-b773ce9e0e19/latest) on Dune. diff --git a/docs/flashbots-protect/gas-fee-refunds.md b/docs/flashbots-protect/gas-fee-refunds.md index fa9f8b73..bd943c5c 100644 --- a/docs/flashbots-protect/gas-fee-refunds.md +++ b/docs/flashbots-protect/gas-fee-refunds.md @@ -4,7 +4,7 @@ title: Gas Fee Refunds ## Introduction -Flashbots Protect users are automatically eligible to receive gas fee refunds. If Flashbots can include your transaction on chain for a lower price, you are eligible to receive a refund. This applies to both the RPC and the private transaction API. +Flashbots Protect users are automatically eligible to receive gas fee refunds, if a transaction can be landed onchain for a lower price. This applies to both the RPC and the private transaction API. Gas fee refunds do not change how transactions are executed and users do not need to make any changes to be eligible for them. Gas fee refunds are calculated separately, and applied in addition to, MEV refunds from [MEV-Share](/flashbots-protect/mev-refunds). @@ -12,25 +12,25 @@ Gas fee refunds do not change how transactions are executed and users do not nee Users and orderflow providers (like wallets) often pay high priority fees to land transactions on chain. Many of these transactions could be executed just as quickly for a fraction of the gas cost. -It can be difficult to estimate gas correctly when sending a transaction. The Flashbots block builder calculates this on behalf of users and automatically refunds transactions that overpay. +It can be difficult to estimate gas correctly when sending a transaction. Flashbots Protect sends all transactions to [BuilderNet](https://buildernet.org/), which calculates the optimal fee on your behalf and refunds transactions that overpay. Gas fee refunds include both priority fees (more common in user transactions) and coinbase transfers (less common). ## Which transactions receive refunds -Flashbots provides refunds for transactions in blocks landed by the Flashbots block builder. Whether a transaction receives a refund depends on a few factors that vary from block to block: +Flashbots Protect provides refunds for transactions in blocks landed by BuilderNet. Whether a transaction receives a refund depends on a few factors that vary from block to block: * How much network congestion and competition there was -* Whether the Flashbots builder made a profit and how much +* Whether BuilderNet made a profit and how much * How much the specific transaction contributed to the value of the block -* If the transaction was sent directly to Flashbots, or shared with other RPCs and block builders +* If the transaction was sent directly to Flashbots Protect, or shared with other RPCs and block builders Note that transactions seen in the public mempool are excluded and do not receive refunds. ## How to maximize both refunds and speed -Transactions which are sent directly to the Flashbots RPC or API, and not multiplexed _by the user_ to other RPCs or block builders, are likely to receive higher refunds. This is because they increase the profit of the Flashbots builder which is used to provide refunds. +Transactions which are sent directly to the Flashbots RPC or API, and not multiplexed _by the user_ to other RPCs or block builders, are likely to receive higher refunds. This is because they increase the profit of BuilderNet which is used to provide refunds. -The Flashbots block builder does not land 100% of blocks. In order to improve inclusion speed, users can ask Flashbots to share their transactions with other block builders in cases where the Flashbots builder does not win a block. Flashbots will automatically share with all specified builders on the user's behalf. +BuilderNet does not land 100% of blocks. In order to improve inclusion speed, users can ask Flashbots to share their transactions with other block builders in cases where BuilderNet does not win a block. Flashbots will automatically share with all specified builders on the user's behalf. There are two ways to share with other builders: * Use [fast mode](/flashbots-protect/quick-start#faster-transactions) to share with all registered builders @@ -44,7 +44,7 @@ For the private transaction API: The refund recipient is the signer used on the ## How to track refunds -Refunds are tracked from a start date of July 8, 2024. Refunds are sent to recipients in batches, the first batch originated from our builder address `0xdf99A0839818B3f120EBAC9B73f82B617Dc6A555` while newer batches originate from [`refunds.buildernet.eth`](https://etherscan.io/address/0x62a29205f7ff00f4233d9779c210150787638e7f). The recipient can track the status of their refunds using the [`flashbots_getFeeRefundTotalsByRecipient`](/flashbots-auction/advanced/rpc-endpoint#flashbots_getfeerefundtotalsbyrecipient) RPC method. +Refunds are tracked from a start date of July 8, 2024. Refunds are sent to recipients in batches, the first batch originated from the Flashbots builder address `0xdf99A0839818B3f120EBAC9B73f82B617Dc6A555` while newer batches originate from [`refunds.buildernet.eth`](https://etherscan.io/address/0x62a29205f7ff00f4233d9779c210150787638e7f). The recipient can track the status of their refunds using the [`flashbots_getFeeRefundTotalsByRecipient`](/flashbots-auction/advanced/rpc-endpoint#flashbots_getfeerefundtotalsbyrecipient) RPC method. ## Distributed refunds From 3632b393c2f3e5f180aaa4f548a74f9acf0c9e74 Mon Sep 17 00:00:00 2001 From: Chris Hager Date: Tue, 20 May 2025 14:46:07 +0200 Subject: [PATCH 05/19] Add redirect from mev-share to mev-refunds (#616) --- vercel.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/vercel.json b/vercel.json index f5c46869..c5664fdb 100644 --- a/vercel.json +++ b/vercel.json @@ -46,6 +46,11 @@ "source": "/flashbots-auction/searchers/:path*", "destination": "/flashbots-auction/:path", "permanent": true + }, + { + "source": "/flashbots-protect/mev-share", + "destination": "/flashbots-protect/mev-refunds", + "permanent": true } ] } From 097b95870b174dbc43fbb826b12baae294bed348 Mon Sep 17 00:00:00 2001 From: Chris Hager Date: Tue, 27 May 2025 10:32:19 +0200 Subject: [PATCH 06/19] Update block-builders.md (#617) --- docs/flashbots-mev-boost/block-builders.md | 37 +--------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/docs/flashbots-mev-boost/block-builders.md b/docs/flashbots-mev-boost/block-builders.md index 27aecf18..66f3288e 100644 --- a/docs/flashbots-mev-boost/block-builders.md +++ b/docs/flashbots-mev-boost/block-builders.md @@ -51,42 +51,7 @@ External builders can submit blocks to Mainnet and Sepolia Flashbots relays. The Submissions to all relays are currently rate-limited to 600 submissions / 5m / IP, which translates to in average 2 submissions / sec /IP. -## Flashbots Builders - -All Flashbots builders pay block proposers from the [`flashbots-builder.eth` ENS address](https://etherscan.io/address/0xdafea492d9c6733ae3d56b7ed1adb60692c98bc5). Each Flashbots builder uses a different public key (`builder_pubkey`) for relay identification and analytics purposes. - -The various `builder_pubkeys` used to identify Flashbots builders to relays are listed below: - -| **Builder Public Key** | -| --- | -| 0xa01a00479f1fa442a8ebadb352be69091d07b0c0a733fae9166dae1b83179e326a968717da175c7363cd5a13e8580e8d | -| 0xa01b00a4ab433cbb0a0801cff3815722d56e1980caad7ed156900563e6670cdf6280535dae331f358c647c4bf4558a85 | -| 0xa02a0054ea4ba422c88baccfdb1f43b2c805f01d1475335ea6647f69032da847a41c0e23796c6bed39b0ee11ab9772c6 | -| 0xa02b009596e741d5f61d18b900cbd03bbcdb9c0f16b1981928d13b57fcb48d4ddce21a96c523bf84425b3a4e6e6b3f14 | -| 0xa03a000b0e3d1dc008f6075a1b1af24e6890bd674c26235ce95ac06e86f2bd3ccf4391df461b9e5d3ca654ef6b9e1ceb | -| 0xa03b00ddb78b2c111450a5417a8c368c40f1f140cdf97d95b7fa9565467e0bbbe27877d08e01c69b4e5b02b144e6a265 | -| 0xa04a00ea847205dc7d684de0424544faf2dbc7e85d4ea72e5cde59c26e179f4caca52645169ee9c3685ae7d0ebaf26ed | -| 0xa04b0070ffa9e233d9c183fbb8cff4a6b3130fb90b765932295eafbc76c6e02b5b0c4ecb579a769a72c6d0e6c7f0e844 | -| 0xa08a00b8d1521ddc7e51717f9e1ed77266108008acec8cb58aa492ed0a17cc4c55330cfb1871d4471a7451d3f7c89192 | -| 0xa08b00cedceeb18c97d723f9338ead7d660fffc9050e487a5219e334e08e3d15faf4d8b51b0daf0e792f5f27a8c54da0 | -| 0x800a002dd9e1afc77af8ae909cf7f8169b413a92cfd43caa56ac749024774d9817a806dae49f4bd5af0661b054595ea4 | -| 0x800b00c6e03a92b910cfe928fe6d5bff63eb326af308a6224c512a82c6fdeae92e4d3a39e7b8dbfc572af5d2411cb26c | -| 0x801a00923e9949a7c510f565d92d282bcc79d79da6d57c98972891553443877ba5905b8bdf8145e23a06dac45b9a4d69 | -| 0x801b00e0e3a828ef58174652bc74cc6695fee2c7035a935b739c59cdd958c69564668ca5334dc51a85421eba77f9acc2 | -| 0x802a0012e4878385fbb8fb1f4b7d2ddaf332d2c409d340e2328a75e2387edafd16d543ca07ec2cc8d6134415e5a5b0ad | -| 0x802b00ecf62b2968050b7f557f8edbcbc080c9ee0cecc0982736d85997d3a1fb586587de7fb360fa31bade77254ce2e4 | -| 0x803a00a9dd54076d272a332f9e9d6815e4f9f449cc1ea2dbdc48ad90756206941c1f050ee97d66e314d7f773b5c71365 | -| 0x803b0018bd6776c5be2012e7ea053352fdf17df87921af9a9321e89d1f5da254de4e51e1e011fd25cf66e76eef551d5d | -| 0x804a0032e48f725bb41305041439578a89f4da71bd7662096d5bb55e2d14ac7135eb01d29fe0914f8efc57c85eb6e0f2 | -| 0x804b0038e40af99372530e57f351694643a667b0f3a197e1116d0496b1fefcd04df23c64037af1c807e30ac2746aba3f | -| 0x805a003c2b3c51302132864ac6897cf2623ce4ad0b35f5afe43f70e4e4d9c87f9e9fe5252836faedae57c0f922cb14a0 | -| 0x805b008679ccda28ae22ded00a91a24c15951a078032ceee051d72d60240b6e199873c8a9f2042b982be6588e67aba70 | -| 0x806a008bd4beb89f79d3df63b64c94dfab54857465fd0a5d1041b02c498bb5aa47ddb18e3829eebd0ca6b46db4969b2d | -| 0x806b00a40b92e88bcd83e31f15d75106bccb0dd6dff5d69daa644fbb71e736cc6fde918db241b8e5649e8abe3461fad0 | -| 0x807a00919db875280147cc98ef29d49a4ff3ab533b4c33df21d6c189ce4df0fd9446114835d7d2d44fbe4e7aa0a1df4c | -| 0x807b00cc542a2f24202638bef5ec2e0e729ed1759d3f87158350e75ce010d9ccb746bcde4205c505bff6b3deeda59982 | -| 0x808a0004c6802692bee5217ae930d29ccd9f6c9983acde9acf873d93f16b7d2d6064cb72cae1c89c0a59eb83c0bed40d | -| 0x808b0035e892b3e47eb8b4b3e6f7116313c6d1378abfde48c6311f687f93f6fe241f270f2acf32e3927adc21c46b3a1e | +## BuilderNet Block Builders The keys used in BuilderNet are listed here: https://buildernet.org/docs/public-identity#bls-keys-for-submitting-blocks-to-mev-boost-relays From 5d24db7c40c4512ac525c46c2926e4d377383b83 Mon Sep 17 00:00:00 2001 From: Antony Denyer Date: Wed, 28 May 2025 00:57:40 +0100 Subject: [PATCH 07/19] Update rpc-endpoint.mdx for ethers v6 (#619) In v6 id is exported directly from 'ethers' https://docs.ethers.org/v6/migrating/ --- docs/flashbots-auction/advanced/rpc-endpoint.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/flashbots-auction/advanced/rpc-endpoint.mdx b/docs/flashbots-auction/advanced/rpc-endpoint.mdx index a55088f9..aab67c86 100644 --- a/docs/flashbots-auction/advanced/rpc-endpoint.mdx +++ b/docs/flashbots-auction/advanced/rpc-endpoint.mdx @@ -1031,13 +1031,13 @@ The signature is calculated by taking the [EIP-191](https://eips.ethereum.org/EI ```ts -import {Wallet, utils} from 'ethers'; +import {Wallet, id} from 'ethers'; const privateKey = '0x1234'; const wallet = new Wallet(privateKey); const body = '{"jsonrpc":"2.0","method":"eth_sendBundle","params":[{see above}],"id":1}'; -const signature = wallet.address + ':' + wallet.signMessage(utils.id(body)); +const signature = wallet.address + ':' + wallet.signMessage(id(body)); ``` From 6015f3bcf415a60e5bb50efe5d7ca0ae72d116f2 Mon Sep 17 00:00:00 2001 From: Ivan Frolov <45122314+jeyldii@users.noreply.github.com> Date: Wed, 28 May 2025 20:14:53 +0400 Subject: [PATCH 08/19] New auctionTimeout query param spec for protect settings-guide (#618) --- docs/flashbots-protect/settings-guide.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/flashbots-protect/settings-guide.md b/docs/flashbots-protect/settings-guide.md index c750ec2f..56705577 100644 --- a/docs/flashbots-protect/settings-guide.md +++ b/docs/flashbots-protect/settings-guide.md @@ -142,3 +142,12 @@ Use a custom RPC endpoint for **read** requests by including the `url` query par ```url https://rpc.flashbots.net?url=http://RPC-ENDPOINT.COM ``` + +### Auction timeout + +If `auctionTimeout=T`, where `T` is the time in milliseconds, is specified, and a transaction arrives within `T` milliseconds of the end of the current slot, it will be scheduled for the next slot. +This ensures the transaction is processed at the beginning of the next slot, giving searchers the full slot duration to submit their bundles and backruns. + +``` +https://rpc.flashbots.net?auctionTimeout=3000 +``` From 8ccdf824c3b540526410903e4fd5f6fc91a9d4bf Mon Sep 17 00:00:00 2001 From: Brian Curcio Date: Tue, 1 Jul 2025 18:36:42 -0300 Subject: [PATCH 09/19] remove outdated data content (#621) * remove outdated data content * remove from sidebar --- docs/flashbots-data/dashboard.md | 7 - .../mev-inspect-py/data/arbitrages.md | 28 --- .../mev-inspect-py/data/classified_traces.md | 32 --- .../mev-inspect-py/data/miner_payments.md | 31 --- .../mev-inspect-py/data/swaps.md | 24 -- .../mev-inspect-py/data/transfers.md | 21 -- .../mev-inspect-py/exploring.md | 37 ---- .../mev-inspect-py/inspecting.md | 75 ------- .../flashbots-data/mev-inspect-py/overview.md | 20 -- .../mev-inspect-py/quick-start.md | 208 ------------------ docs/sidebars.js | 22 -- 11 files changed, 505 deletions(-) delete mode 100644 docs/flashbots-data/dashboard.md delete mode 100644 docs/flashbots-data/mev-inspect-py/data/arbitrages.md delete mode 100644 docs/flashbots-data/mev-inspect-py/data/classified_traces.md delete mode 100644 docs/flashbots-data/mev-inspect-py/data/miner_payments.md delete mode 100644 docs/flashbots-data/mev-inspect-py/data/swaps.md delete mode 100644 docs/flashbots-data/mev-inspect-py/data/transfers.md delete mode 100644 docs/flashbots-data/mev-inspect-py/exploring.md delete mode 100644 docs/flashbots-data/mev-inspect-py/inspecting.md delete mode 100644 docs/flashbots-data/mev-inspect-py/overview.md delete mode 100644 docs/flashbots-data/mev-inspect-py/quick-start.md diff --git a/docs/flashbots-data/dashboard.md b/docs/flashbots-data/dashboard.md deleted file mode 100644 index bd16dddf..00000000 --- a/docs/flashbots-data/dashboard.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Flashbots Transparency Dashboard ---- - -The [Flashbots Transparency Dashboard](https://transparency.flashbots.net/) is a public dashboard with metrics on Realised Extractable Value (REV) on Ethereum, as well as data related to the Flashbots MEV-Boost Relay. The dashboard includes data from the Ethereum mainnet since block #15537940 on September 15th 2022 and has a freshness delay of 1 week. Pre-merge MEV activity can be explored here: [MEV-Explore](https://explore.flashbots.net/). - -The Transparency Dashboard is a key component of our commitment to provide transparency on the wider MEV ecosystem and our products. It serves as a valuable resource for contributors and collaborators by providing data for research. Methodology and more information can be found in the [forum post](https://collective.flashbots.net/t/will-the-real-mev-please-stand-up/1686) introducing the dashboard. diff --git a/docs/flashbots-data/mev-inspect-py/data/arbitrages.md b/docs/flashbots-data/mev-inspect-py/data/arbitrages.md deleted file mode 100644 index 69c5890b..00000000 --- a/docs/flashbots-data/mev-inspect-py/data/arbitrages.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: arbitrages ---- -### description - -an **arbitrage** is an circuit of swaps - -arbitrages are joined to their corresponding swaps in the **arbitrage_swaps** table - -### fields - -| Column | Type | Nullable | Description | -|----------------------|-----------------------------|----------|-----------------------------------------------------------------------| -| id | character varying(256) | not null | unique id | -| created_at | timestamp without time zone | not null | when the entry was added to the database | -| block_number | numeric | not null | block number | -| transaction_hash | character varying(256) | not null | transaction hash | -| account_address | character varying(256) | not null | address that took the profit of the arb - can be a contract or an EOA | -| profit_token_address | character varying(256) | not null | token that profit was taken in | -| profit_amount | numeric | not null | gross profit - note: this does not account for miner payment | -| start_amount | numeric | not null | starting amount of the profit token | -| end_amount | numeric | not null | end amount of the profit token | - -:::note - -The "miner" nomenclature will be replaced in a future release to accurately reflect PoS Ethereum architecture. - -::: diff --git a/docs/flashbots-data/mev-inspect-py/data/classified_traces.md b/docs/flashbots-data/mev-inspect-py/data/classified_traces.md deleted file mode 100644 index 254d8254..00000000 --- a/docs/flashbots-data/mev-inspect-py/data/classified_traces.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: classified_traces ---- -### description - -a **classified trace** represents a single trace - -classified traces optionally include: -- a classification for the call (ex: transfer, swap, liquidation) -- decoded function name and inputs - -### fields - -| Column | Type | Nullable | Description | -|--------------------|-----------------------------|----------|-------------------------------------------------------------------------------------------| -| classified_at | timestamp without time zone | not null | when this trace was added to the database | -| block_number | numeric | not null | block number | -| transaction_hash | character varying(66) | not null | transaction hash | -| trace_address | integer[] | not null | trace address | -| trace_type | character varying(256) | not null | the type of call in the trace - one of `call`, `create`, `delegate_call`, `reward`, `suicide` | -| classification | character varying(256) | not null | classification for the trace - one of `unknown`, `swap`, `burn`, `transfer`, `liquidate` | -| protocol | character varying(256) | | the protocol associated with the trace | -| abi_name | character varying(1024) | | the ABI used to decode this trace | -| function_name | character varying(2048) | | the name of the function called | -| function_signature | character varying(2048) | | the signature of the function called | -| inputs | json | | inputs of the function | -| from_address | character varying(256) | | from address | -| to_address | character varying(256) | | to address | -| gas | numeric | | gas | -| value | numeric | | ETH value | -| gas_used | numeric | | gas used | -| error | character varying(256) | | error | diff --git a/docs/flashbots-data/mev-inspect-py/data/miner_payments.md b/docs/flashbots-data/mev-inspect-py/data/miner_payments.md deleted file mode 100644 index 590204b8..00000000 --- a/docs/flashbots-data/mev-inspect-py/data/miner_payments.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: miner_payments ---- -### description - -a **miner payment** is how much was paid to a miner in a given transaction - -miner payment includes payment through gas and coinbase transfers - -### fields - -| Column | Type | Nullable | Description | -|----------------------------------|-----------------------------|----------|--------------------------------------------------------| -| created_at | timestamp without time zone | not null | when the entry was added to the database | -| block_number | numeric | not null | block number | -| transaction_hash | character varying(66) | not null | transaction hash | -| transaction_index | numeric | not null | transaction index | -| miner_address | character varying(256) | not null | address of the miner | -| coinbase_transfer | numeric | not null | amount of ETH was paid as direct transfer to the miner | -| base_fee_per_gas | numeric | not null | base fee for this block | -| gas_price | numeric | not null | gas price (excludes coinbase transfer) | -| gas_price_with_coinbase_transfer | numeric | not null | gas price (includes coinbase transfer) | -| gas_used | numeric | not null | total gas used by the transaction | -| transaction_to_address | character varying(256) | | to address of the transaction | -| transaction_from_address | character varying(256) | | from address of the transaction | - -:::note - -The "miner" nomenclature will be replaced in a future release to accurately reflect PoS Ethereum architecture. - -::: diff --git a/docs/flashbots-data/mev-inspect-py/data/swaps.md b/docs/flashbots-data/mev-inspect-py/data/swaps.md deleted file mode 100644 index 2d6082ec..00000000 --- a/docs/flashbots-data/mev-inspect-py/data/swaps.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: swaps ---- -### description - -a **swap** is a swap between two ERC-20 tokens - -### fields -| Column | Type | Nullable | Description | -|-------------------|-----------------------------|----------|-------------------------------------------| -| created_at | timestamp without time zone | not null | when the entry was added to the database | -| block_number | numeric | not null | block number | -| transaction_hash | character varying(66) | not null | transaction hash | -| trace_address | integer[] | not null | trace address | -| abi_name | character varying(1024) | not null | name of the ABI used to decode the swap | -| pool_address | character varying(256) | not null | pool address | -| from_address | character varying(256) | not null | address where tokens are coming from | -| to_address | character varying(256) | not null | address where swapped tokens are going to | -| token_in_address | character varying(256) | not null | address of the token going in | -| token_in_amount | numeric | not null | amount of the token going in | -| token_out_address | character varying(256) | not null | address of the token going out | -| token_out_amount | numeric | not null | amount of the token going out | -| protocol | character varying(256) | | protocol | -| error | character varying(256) | | error | diff --git a/docs/flashbots-data/mev-inspect-py/data/transfers.md b/docs/flashbots-data/mev-inspect-py/data/transfers.md deleted file mode 100644 index 8e8786c8..00000000 --- a/docs/flashbots-data/mev-inspect-py/data/transfers.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: transfers ---- -### description - -a **transfer** is an ERC-20 token transfer - -### fields - -| Column | Type | Nullable | Description | -|------------------|-----------------------------|----------|---------------------------------------------| -| created_at | timestamp without time zone | not null | when the transfer was added to the database | -| block_number | numeric | not null | block number | -| transaction_hash | character varying(66) | not null | transaction hash | -| trace_address | character varying(256) | not null | trace address | -| from_address | character varying(256) | not null | who the tokens are transferring from | -| to_address | character varying(256) | not null | who the tokens are transferring to | -| token_address | character varying(256) | not null | token address | -| amount | numeric | not null | amount | -| protocol | character varying(256) | | protocol associated with the transfer | -| error | character varying(256) | | error | diff --git a/docs/flashbots-data/mev-inspect-py/exploring.md b/docs/flashbots-data/mev-inspect-py/exploring.md deleted file mode 100644 index ab638ef4..00000000 --- a/docs/flashbots-data/mev-inspect-py/exploring.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Exploring ---- - -All inspect output data is stored in Postgres. - -To connect to the local Postgres database for querying, launch a client container with: - -```sh -./mev db -``` - -When you see the prompt - -```sh -mev_inspect=# -``` - -You're ready to query! - -Try finding the total number of swaps decoded with UniswapV3Pool - -```sql -SELECT COUNT(*) FROM swaps WHERE abi_name='UniswapV3Pool'; -``` - -or top 10 arbs by gross profit that took profit in WETH - -```sql -SELECT * -FROM arbitrages -WHERE profit_token_address = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' -ORDER BY profit_amount DESC -LIMIT 10; -``` - -Postgres tip: Enter `\x` to enter "Expanded display" mode which looks nicer for results with many columns diff --git a/docs/flashbots-data/mev-inspect-py/inspecting.md b/docs/flashbots-data/mev-inspect-py/inspecting.md deleted file mode 100644 index 041083f9..00000000 --- a/docs/flashbots-data/mev-inspect-py/inspecting.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Inspecting ---- - -Executing an inspection for a block will perform the following operations: - -- Retrieve traces, receipts, and block data from the RPC endpoint. -- Decode the traces using recognized ABIs. -- Extract structured objects such as transfers and swaps. -- Store all these elements in the database for future querying. - -## Examples - -### Inspect a single block - -Inspecting block [12914944](https://twitter.com/mevalphaleak/status/1420416437575901185): - -```sh -./mev inspect 12914944 -``` - -### Inspect many blocks - -Inspecting blocks 12914944 to 12914954: - -```sh -./mev inspect-many 12914944 12914954 -``` - -### Inspect all incoming blocks - -Start a block listener with: - -```sh -./mev listener start -``` - -By default, it will pick up wherever you left off. -If running for the first time, listener starts at the latest block. - -Tail logs for the listener with: - -```sh -./mev listener tail -``` - -And stop the listener with: - -```sh -./mev listener stop -``` - -### Backfilling - -For larger backfills, you can inspect many blocks in parallel using kubernetes - -To inspect blocks 12914944 to 12915044 divided across 10 worker pods: - -```sh -./mev backfill 12914944 12915044 10 -``` - -You can see worker pods spin up then complete by watching the status of all pods - -```sh -watch kubectl get pods -``` - -To watch the logs for a given pod, take its pod name using the above, then run: - -```sh -kubectl logs -f pod/mev-inspect-backfill-abcdefg -``` - -(where `mev-inspect-backfill-abcdefg` is your actual pod name) diff --git a/docs/flashbots-data/mev-inspect-py/overview.md b/docs/flashbots-data/mev-inspect-py/overview.md deleted file mode 100644 index 784bd6ce..00000000 --- a/docs/flashbots-data/mev-inspect-py/overview.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Overview ---- - -**mev-inspect-py** is an MEV inspector for Ethereum - -Given a block, mev-inspect finds: - -- Validator payments (gas + coinbase) -- Tokens transfers and profit -- Swaps and [arbitrages](https://twitter.com/bertcmiller/status/1427632028263059462) -- ...and more - -All data is stored in Postgres for querying and analysis - -To get started, check out the [quick start](/flashbots-data/mev-inspect-py/quick-start.md) - -To see which data inspect produces, check out the [data](/flashbots-data/mev-inspect-py/data/classified_traces.md) section - -Access and contribute to the public mev-inspect-py repository [here](https://github.com/flashbots/mev-inspect-py). diff --git a/docs/flashbots-data/mev-inspect-py/quick-start.md b/docs/flashbots-data/mev-inspect-py/quick-start.md deleted file mode 100644 index c75e74d6..00000000 --- a/docs/flashbots-data/mev-inspect-py/quick-start.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -title: Quick Start ---- - -Let's use mev-inspect to find the same arbitrage as [MEV Alpha Leak](https://twitter.com/mevalphaleak/status/1420416437575901185) - -## Install - -mev-inspect-py is built to run on kubernetes locally and in production - -### Install dependencies - -First, setup a local kubernetes deployment - we use [Docker](https://www.docker.com/products/docker-desktop) and [kind](https://kind.sigs.k8s.io/docs/user/quick-start) - -If using kind, create a new cluster with: - -```sh -kind create cluster -``` - -Next, install the kubernetes CLI [`kubectl`](https://kubernetes.io/docs/tasks/tools/) - -Then, install [helm](https://helm.sh/docs/intro/install/) - helm is a package manager for kubernetes - -Lastly, setup [Tilt](https://docs.tilt.dev/install.html) which manages running and updating kubernetes resources locally - -### Start up - -Set an environment variable `RPC_URL` to an RPC for fetching blocks -Example: - -```sh -export RPC_URL="http://111.111.111.111:8546/" -``` - -:::note - -mev-inspect-py currently requires and RPC with support for OpenEthereum / Erigon traces (not geth 😔) - -::: - -Next, start all servcies with: - -```sh -tilt up -``` - -Press "space" to see a browser of the services starting up - -On first startup, you'll need to apply database migrations. Apply with: - -```sh -./mev exec alembic upgrade head -``` - -### Tear down - -First stop the running tilt window with `Ctrl+C` - -Then run - -```sh -tilt down -``` - -## Inspect a block - -Using the [linked etherscan transaction](https://etherscan.io/tx/0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc), we can see the block number is 12914944. - -To inspect this block, run - -```sh -./mev inspect 12914944 -``` - -## Connect to Postgres - -We'll connect to the Postgres database to see the data inspect found in that block - -Let's start up a client container connected to the DB: - -```sh -./mev db -``` - -When you see the prompt - -```sh -mev_inspect=# -``` - -You're ready to query! - -To make the data display nice, switch into "Expanded display" mode by running - -```sh -\x -``` - -## Query for arbitrage data - -Let's find that arbitrage by querying the `arbitrages` table: - -```sql -SELECT * -FROM arbitrages -WHERE - block_number = 12914944 AND - transaction_hash = '0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc' -``` - -You should see output like this: - -```txt -id | ff2deb13-c2c1-4ef5-a6ff-0ca813a07d6b -created_at | 2021-09-27 15:26:58.193263 -account_address | 0x0000fee6275dab194ab538a01dd8b18b02b20000 -profit_token_address | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -block_number | 12914944 -transaction_hash | 0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc -start_amount | 70287643212620210176 -end_amount | 123848351154563483804 -profit_amount | 53560707941943273628 -``` - -We can see this matches the original tweet description! - -The `profit_token_address` is the address for WETH, our `start_amount` is 70 WETH (assuming 18 decimals), and our `end_amount` is 123 WETH - -## Query for arbitrage swaps - -We can learn about the swaps involed in this arbitrage by joining against the `arbitrage_swaps` and `swaps` tables - -:::note -You'll need to switch in the id you got in the first query for arbitrage_id -::: - -```sql -SELECT s.* -FROM swaps s -JOIN arbitrage_swaps arb_swaps ON - s.transaction_hash = arb_swaps.swap_transaction_hash AND - s.trace_address = arb_swaps.swap_trace_address -WHERE arb_swaps.arbitrage_id = 'ff2deb13-c2c1-4ef5-a6ff-0ca813a07d6b'; -``` - -You should see output like this: - -```txt --[ RECORD 1 ]-----+------------------------------------------------------------------- -created_at | 2021-09-27 15:26:58.180131 -abi_name | UniswapV3Pool -transaction_hash | 0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc -block_number | 12914944 -protocol | -pool_address | 0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640 -from_address | 0x7ec0b75a98997c927ace6d87958147a105147ea0 -to_address | 0x0000fee6275dab194ab538a01dd8b18b02b20000 -token_in_address | 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 -token_in_amount | 283588902010 -token_out_address | 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 -token_out_amount | 123848351154563483804 -trace_address | {0,0} -error | --[ RECORD 2 ]-----+------------------------------------------------------------------- -... -``` - -## Query for miner payment - -Lastly, we can see how much was paid to the miner for this transaction by querying by the transaction hash: - -```sql -SELECT * -FROM miner_payments -WHERE transaction_hash = '0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc'; -``` - -You should see results like this: - -```txt -created_at | 2021-09-27 15:26:58.245444 -block_number | 12914944 -transaction_hash | 0xfcf4558f6432689ea57737fe63124a5ec39fd6ba6aaf198df13a825dd599bffc -transaction_index | 1 -miner_address | 0x5A0b54D5dc17e0AadC383d2db43B0a0D3E029c4c -coinbase_transfer | 48204637147748941824 -base_fee_per_gas | 0 -gas_price | 0 -gas_price_with_coinbase_transfer | 200463421638605 -gas_used | 240466 -transaction_to_address | 0x00000000454a11ca3a574738c0aab442b62d5d45 -transaction_from_address | 0xd80276cd0348e9b3c5d017e1f7529f0a785fec3a -``` - -`gas_price` is the gas price paid directly as gas (it includes the EIP-1559 base fee) - -`coinbase_transfer` is the amount of ETH paid directly as a transfer to the validator's address - -`gas_price_with_coinbase_transfer` is the gas price including both original gas and coinbase transfers - -So in total, this searcher paid 48.2 ETH to make 53.5 ETH for a net profit of 5.3 ETh - -## Next steps - -To see what other data is available for querying, check out the [data](/flashbots-data/mev-inspect-py/data/classified_traces) section - -To learn about inspecting blocks in bulk or listening for new blocks as they come in, check out the [inspecting](/flashbots-data/mev-inspect-py/inspecting) section diff --git a/docs/sidebars.js b/docs/sidebars.js index 3a7fba64..fdf0d28a 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -68,28 +68,6 @@ module.exports = { } ], }, - { - "Flashbots Data": [ - { - 'MEV-Inspect': [ - 'flashbots-data/mev-inspect-py/overview', - 'flashbots-data/mev-inspect-py/quick-start', - 'flashbots-data/mev-inspect-py/inspecting', - 'flashbots-data/mev-inspect-py/exploring', - { - "Data": [ - 'flashbots-data/mev-inspect-py/data/classified_traces', - 'flashbots-data/mev-inspect-py/data/transfers', - 'flashbots-data/mev-inspect-py/data/swaps', - 'flashbots-data/mev-inspect-py/data/arbitrages', - 'flashbots-data/mev-inspect-py/data/miner_payments', - ], - }, - ] - }, - 'flashbots-data/dashboard', - ], - }, { "MEV-Boost": [ 'flashbots-mev-boost/introduction', From 3f68e1ac72bb75b21ecb9aca0189b0f6ddce9980 Mon Sep 17 00:00:00 2001 From: Ilya Lukyanov <73885545+ilyaluk@users.noreply.github.com> Date: Wed, 9 Jul 2025 09:48:42 +0100 Subject: [PATCH 10/19] DVO-1029: remove mentions of holesky (#622) Holesky infra have been decommissioned, removing any mentions of it from the docs as well --- docs/flashbots-auction/advanced/rpc-endpoint.mdx | 1 - docs/flashbots-auction/advanced/testnets.mdx | 1 - docs/flashbots-mev-share/searchers/event-stream.mdx | 1 - docs/flashbots-protect/additional-documentation/status-api.md | 1 - docs/flashbots-protect/quick-start.mdx | 1 - 5 files changed, 5 deletions(-) diff --git a/docs/flashbots-auction/advanced/rpc-endpoint.mdx b/docs/flashbots-auction/advanced/rpc-endpoint.mdx index aab67c86..f66b8822 100644 --- a/docs/flashbots-auction/advanced/rpc-endpoint.mdx +++ b/docs/flashbots-auction/advanced/rpc-endpoint.mdx @@ -19,7 +19,6 @@ Advanced users can interact with the RPC endpoint at `relay.flashbots.net`, or o | -------- | ---------------------------------------- | | Mainnet | `https://relay.flashbots.net` | | Sepolia | `https://relay-sepolia.flashbots.net` | -| Holešky | `https://relay-holesky.flashbots.net` | The API provides JSON-RPC methods for interfacing with Flashbots. Below are some of the restrictions: diff --git a/docs/flashbots-auction/advanced/testnets.mdx b/docs/flashbots-auction/advanced/testnets.mdx index 8d1f5c38..1a361664 100644 --- a/docs/flashbots-auction/advanced/testnets.mdx +++ b/docs/flashbots-auction/advanced/testnets.mdx @@ -10,7 +10,6 @@ Flashbots operates on Sepolia so that searchers can test Flashbots without riski | --- | --- | | Mainnet | `https://relay.flashbots.net` | | Sepolia | `https://relay-sepolia.flashbots.net` | -| Holešky | `https://relay-holesky.flashbots.net` | ## Examples diff --git a/docs/flashbots-mev-share/searchers/event-stream.mdx b/docs/flashbots-mev-share/searchers/event-stream.mdx index ca1964f4..431e4da4 100644 --- a/docs/flashbots-mev-share/searchers/event-stream.mdx +++ b/docs/flashbots-mev-share/searchers/event-stream.mdx @@ -73,7 +73,6 @@ Events currently represent pending transactions, but eventually may be expanded | Network | URL | |-|-| | Mainnet | https://mev-share.flashbots.net | -| Holešky | https://mev-share-holesky.flashbots.net | | Sepolia | https://mev-share-sepolia.flashbots.net | The endpoint sends an event with the message `:ping` every 15 seconds if no other messages were sent in the last 15 seconds. diff --git a/docs/flashbots-protect/additional-documentation/status-api.md b/docs/flashbots-protect/additional-documentation/status-api.md index 0717e6a6..cce14797 100644 --- a/docs/flashbots-protect/additional-documentation/status-api.md +++ b/docs/flashbots-protect/additional-documentation/status-api.md @@ -10,7 +10,6 @@ The Transaction Status API is also available on test networks. Below is a table | -------- | -------------------------------------------------- | | Mainnet | `https://protect.flashbots.net/tx/` | | Sepolia | `https://protect-sepolia.flashbots.net/tx/` | -| Holešky | `https://protect-holesky.flashbots.net/tx/` | diff --git a/docs/flashbots-protect/quick-start.mdx b/docs/flashbots-protect/quick-start.mdx index e71878ca..a66a62a0 100644 --- a/docs/flashbots-protect/quick-start.mdx +++ b/docs/flashbots-protect/quick-start.mdx @@ -75,7 +75,6 @@ Below is the list of Flashbots Protect RPCs we currently support across Ethereum | ------- | ------------------------------------ | | Mainnet | `https://rpc.flashbots.net/fast` | | Sepolia | `https://rpc-sepolia.flashbots.net/` | -| Holešky | `https://rpc-holesky.flashbots.net/` | ## Stuck transactions From 91487050305a6a1d48fc10e65ff011dc53772ca0 Mon Sep 17 00:00:00 2001 From: Vitaly Drogan Date: Tue, 19 Aug 2025 17:39:31 +0200 Subject: [PATCH 11/19] new refund data methods (#624) --- .../advanced/rpc-endpoint.mdx | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/docs/flashbots-auction/advanced/rpc-endpoint.mdx b/docs/flashbots-auction/advanced/rpc-endpoint.mdx index f66b8822..3b88de1a 100644 --- a/docs/flashbots-auction/advanced/rpc-endpoint.mdx +++ b/docs/flashbots-auction/advanced/rpc-endpoint.mdx @@ -867,7 +867,7 @@ The response contains three fields: ### flashbots_getFeeRefundsByRecipient -The `flashbots_getFeeRefundsByRecipient` JSON-RPC method returns detailed information about [fee refunds](/flashbots-protect/gas-fee-refunds) that have been earned by a specific address. Our refund process calculates these values weekly. +The `flashbots_getFeeRefundsByRecipient` JSON-RPC method returns detailed information about [fee refunds](/flashbots-protect/gas-fee-refunds) that have been earned by a specific address. Our refund process usually calculates these values with a 4 hour delay. ```json { @@ -913,6 +913,42 @@ The `"cursor"` field is only included if there are more fee refunds to fetch. To NOTE: This API currently only returns details for bundles included in block 20802497 and later. To see total fee refunds processed for a specific address since inception, use the `flashbots_getFeeRefundTotalsByRecipient` method. +### flashbots_getFeeRefundsByBundle + +The `flashbots_getFeeRefundsByBundle` is similar to `flashbots_getFeeRefundsByRecipient` but returns result for the given bundle. + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "flashbots_getFeeRefundsByBundle", + "params": [ + { + bundle_hash, // String, the hash of the bundle + } + ] +} +``` + +### flashbots_getFeeRefundsByBlock + +The `flashbots_getFeeRefundsByBlock` is similar to `flashbots_getFeeRefundsByRecipient` but returns result for the given block. + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "flashbots_getFeeRefundsByBlock", + "params": [ + { + block_number, // String, hex-encoded block number (e.g. 0x15d0280) + } + ] +} +``` + + + ### flashbots_setFeeRefundRecipient The `flashbots_setFeeRefundRecipient` JSON-RPC method allows a user to "delegate" their [fee refunds](/flashbots-auction/advanced/gas-fee-refunds) to a specific wallet address. Two addresses must be provided, the first is the address associated with the signing key used to authenticate your request, while the second is the address to send refunds to. From c68de108101af48d2e6100a1ff5313de3ca26ebb Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:25:15 -0400 Subject: [PATCH 12/19] Update settings-guide.md (#625) * Update settings-guide.md add tee-searcher to hints section * Update settings-guide.md update text to compare with default config * Update settings-guide.md tee searcher vs searcher not in tee * Update settings-guide.md reorderd full tx info to be at bottom of default configs * Update settings-guide.md reordering features for fast mode * Update settings-guide.md shea's nits --- docs/flashbots-protect/settings-guide.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/flashbots-protect/settings-guide.md b/docs/flashbots-protect/settings-guide.md index 56705577..a5179c10 100644 --- a/docs/flashbots-protect/settings-guide.md +++ b/docs/flashbots-protect/settings-guide.md @@ -35,10 +35,11 @@ https://rpc.flashbots.net/fast Compared with the default configuration: - Transactions are shared with all [registered builders](https://github.com/flashbots/dowg/blob/main/builder-registrations.json) - Validators receive a higher percentage of the MEV-Share refund increasing the probability that the transaction will be included in the winning block. - +- Full transaction information (without signatures) is shared with searchers inside TEEs to increase MEV refunds while preserving frontrunning protection. Searchers not in TEEs will receive only the hints specified. TEE searchers will be able to see full transaction information (even for failed or reverted transactions) after a 5-minute delay for troubleshooting and debugging purposes. + ### Hints -Change what transaction data is visible to MEV-Share searchers with the `hint` query parameter. The [default](/flashbots-protect/settings-guide#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. +Change what transaction data is visible to MEV-Share searchers with the `hint` query parameter. The [default](/flashbots-protect/settings-guide#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. If fast mode is used, searchers not in TEEs will only receive the hints specified while TEE searchers will receive all hints regardless of specification. From bae58e010849bc3d58b68b7b5dc51c3a2ef7bb42 Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:28:33 -0400 Subject: [PATCH 13/19] Update status-api.md (#627) * Update status-api.md added blurb for tee searching being exception to privacy rule for failed tx * Update status-api.md without signature --- docs/flashbots-protect/additional-documentation/status-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flashbots-protect/additional-documentation/status-api.md b/docs/flashbots-protect/additional-documentation/status-api.md index cce14797..fff1195a 100644 --- a/docs/flashbots-protect/additional-documentation/status-api.md +++ b/docs/flashbots-protect/additional-documentation/status-api.md @@ -49,7 +49,7 @@ Below is a table of status codes that can be returned: ## Privacy -The `transaction` fields are disclosed only for transactions with an `INCLUDED` status to maintain privacy for trades that are pending, failed, or cancelled. These fields will remain empty for transactions with `PENDING`, `FAILED`, `UNKNOWN`, or `CANCELLED` statuses. +The `transaction` fields are disclosed only for transactions with an `INCLUDED` status to maintain privacy for trades that are pending, failed, or cancelled. These fields will remain empty for transactions with `PENDING`, `FAILED`, `UNKNOWN`, or `CANCELLED` statuses. Protect fast mode transactions are an exception to this rule as TEE searchers will receive all fields (without signature) for all transactions, including reverted or failed transactions, with a 5 minute delay for troubleshooting and debugging purposes. For instance, once a transaction is included, the JSON response will be populated with data for all fields: From c113675d06ef0af6c71e90bba365d6a11f8918d5 Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Thu, 28 Aug 2025 13:30:41 -0400 Subject: [PATCH 14/19] Update troubleshooting.mdx (#628) added blurb for tee searching for troubleshooting tx --- docs/flashbots-auction/advanced/troubleshooting.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flashbots-auction/advanced/troubleshooting.mdx b/docs/flashbots-auction/advanced/troubleshooting.mdx index ddfcb94d..dbebe0eb 100644 --- a/docs/flashbots-auction/advanced/troubleshooting.mdx +++ b/docs/flashbots-auction/advanced/troubleshooting.mdx @@ -14,7 +14,7 @@ Unlike broadcasting a transaction which lands on-chain even if the transaction f 5. The validator for the target slot is not running mev-boost ``` -Instead of relying on [Etherscan](https://etherscan.io) to examine the execution of your transaction, its on-chain status, and its comparison with competitors, you'll need a different approach with Flashbots. This is because Flashbots prevents failed transactions from appearing on the chain. For effective debugging, we highly recommend simulating your transactions, logging the results, and maintaining a record of all submitted data, including the complete bundle and its signed transactions. +Instead of relying on [Etherscan](https://etherscan.io) to examine the execution of your transaction, its on-chain status, and its comparison with competitors, you'll need a different approach with Flashbots. This is because Flashbots prevents failed transactions from appearing on the chain. For effective debugging, we highly recommend simulating your transactions, logging the results, and maintaining a record of all submitted data, including the complete bundle and its signed transactions. If you are a TEE searcher, you will receive logs with full transaction information at a 5 minute delay to help with troubleshooting and debugging. The issues listed above are arranged in the order of their priority for consideration. In the following sections, we will explore each issue in detail, providing guidance on how to identify and address them. While the examples provided assume the use of the [Flashbots Ethers Provider](https://github.com/flashbots/ethers-provider-flashbots-bundle), the [RPC calls are standard](/flashbots-auction/advanced/rpc-endpoint) and the suggested strategies can be easily adapted for use with [other providers](/flashbots-auction/libraries/golang). From 8450ab1be767dd139ba84f42a53ee84463762f4d Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Thu, 28 Aug 2025 14:01:17 -0400 Subject: [PATCH 15/19] Update quick-start.mdx (#626) * Update quick-start.mdx added #1 for fast mode - re: tee searching and logs being shared after 5 min * Update quick-start.mdx tee vs non-tee searchers * Update quick-start.mdx shortened * Update quick-start.mdx shortened text * Update quick-start.mdx reordering --- docs/flashbots-protect/quick-start.mdx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/flashbots-protect/quick-start.mdx b/docs/flashbots-protect/quick-start.mdx index a66a62a0..1f754922 100644 --- a/docs/flashbots-protect/quick-start.mdx +++ b/docs/flashbots-protect/quick-start.mdx @@ -21,8 +21,9 @@ Fast mode details: 1. **Shared with all builders:** Transactions are multiplexed, or shared, with all [registered builders](https://github.com/flashbots/dowg/blob/main/builder-registrations.json) within one block after they are received. Multiplexing increases the probability that the transaction will be sent to the builder building the winning block. 2. **Larger validator payment:** With the default RPC, 10% of the MEV-Share refund is paid to validators. In fast mode, validators receive a higher percentage of the MEV-Share refund increasing the probability that the transaction will be included in the winning block. +3. **Shared with TEE searchers:** Full transaction information is also shared with searchers in TEEs (secure enviroments), leading to better MEV refunds while preserving frontrunning protection. -**Note**: When you send your transaction to a builder, you trust them not to frontrun your transaction or disclose it to third-party MEV searchers. +**Note**: When you send your transaction to a builder, you trust them not to frontrun your transaction or disclose it to third-party MEV searchers. ### Customer Support From c6a07e0e52b8696871f397d7193825a4b347d713 Mon Sep 17 00:00:00 2001 From: Vitaly Drogan Date: Mon, 20 Oct 2025 11:09:09 +0200 Subject: [PATCH 16/19] Delayed refunds (#632) * delayed refunds * tweak --- .../advanced/rpc-endpoint.mdx | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/docs/flashbots-auction/advanced/rpc-endpoint.mdx b/docs/flashbots-auction/advanced/rpc-endpoint.mdx index 3b88de1a..5c5b8e33 100644 --- a/docs/flashbots-auction/advanced/rpc-endpoint.mdx +++ b/docs/flashbots-auction/advanced/rpc-endpoint.mdx @@ -980,6 +980,90 @@ If the first address matches the authentication signature, then a response with If the signature is invalid or does not match the first address, an appropriate error will be returned instead. +### buildernet_getDelayedRefunds + +The `buildernet_getDelayedRefunds` JSON-RPC method returns detailed information about delayed refunds. + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "buildernet_getDelayedRefunds", + "params": [ + { + recipient, // String, the address that receives delayed refunds + blockRangeFrom, // [optional] String, hex-encoded block number for the start of the range (inclusive) + blockRangeTo, // [optional] String, hex-encoded block number for the end of the range (inclusive) + cursor, // [optional] String, the cursor to continue from + hash, // [optional] String, bundle hash; if provided, you must also set both blockRangeFrom and blockRangeTo + } + ] +} +``` + +Responses are paginated and contain the following fields: + +```json +{ + "refunds": [ + { + "hash": "0x...", + "amount": "0x...", + "blockNumber": "0x13ddaa4", + "status": "pending", + "recipient": "0x..." + }, + ... + ], + "nextCursor": "0x..." + "indexedUpTo": "0x..." +} +``` + +The `"refunds"` field contains an array of per-order fee refunds, each with the following fields: + +- `hash`: the bundle hash that generated delayed refund +- `amount`: the amount of the delayed refund, in wei +- `blockNumber`: the block number the order was contained in +- `status`: the status of the delayed refund, either "pending" or "received" +- `recipient`: the address the delayed refund is credited to + +The `"cursor"` field is only included if there are more delayed refunds to fetch, some data might be avaiable in the future. To continue fetching, include the cursor as the second argument in the next request. If response is empty but contains cursor retry later. + +`"indexedUpTo"` contains maximum block number for which delayed refunds are indexed + +### buildernet_getDelayedRefundTotalsByRecipient + +The `buildernet_getDelayedRefundTotalsByRecipient` JSON-RPC method returns the total amount of delayed refunds that have been earned by a specific address. + +```json +{ + "jsonrpc": "2.0", + "id": 1, + "method": "buildernet_getDelayedRefundTotalsByRecipient", + "params": [{ + recipient, // String, the address to query for delayed refunds + blockRangeFrom, // [optional] String, hex-encoded block number for the start of the range (inclusive) + blockRangeTo, // [optional] String, hex-encoded block number for the end of the range (inclusive) + }] +} +``` + +The response contains three fields: + +```json +{ + "pending":"0x17812ea4fbbe314", + "received":"0x108d1b27b63a213", + "indexedUpTo":"0x13ddb08" +} +``` + +- `pending`: the total amount of fee refunds that have been earned but not yet received by the recipient +- `received`: the total amount of fee refunds that have been received by the recipient +- `indexedUpTo`: the highest block number for which delayed refunds have been processed + + ### flashbots_getMevRefundTotalByRecipient Returns the total amount of [MEV refunds](/flashbots-protect/mev-refunds) that have been paid to a specific recipient address. This API not require authentication. From 11f7ad7bb8f59f7b330bdf87cc59e1a1d9c3e09c Mon Sep 17 00:00:00 2001 From: Shane Date: Mon, 20 Oct 2025 13:14:09 -0400 Subject: [PATCH 17/19] fix: use ethers package name (#634) --- docs/flashbots-auction/quick-start.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/flashbots-auction/quick-start.mdx b/docs/flashbots-auction/quick-start.mdx index 93e4cfc3..89195dd7 100644 --- a/docs/flashbots-auction/quick-start.mdx +++ b/docs/flashbots-auction/quick-start.mdx @@ -55,7 +55,7 @@ Next, you need a means to communicate with the Flashbots network. The Flashbots ```ts -const ethers = require("ethers.js"); +const { ethers } = require("ethers"); const { FlashbotsBundleProvider, } = require("@flashbots/ethers-provider-bundle"); @@ -217,7 +217,7 @@ Now that we have a private key to identify ourselves with and a Flashbots provid ```js -const ethers = require("ethers.js"); +const { ethers } = require("ethers"); const { FlashbotsBundleProvider, } = require("@flashbots/ethers-provider-bundle"); From a61b5be02f8b2b79f67c371cca4d2e34c2a08f8d Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:03:12 -0400 Subject: [PATCH 18/19] Update rpc-endpoint.mdx (#635) bundle can only have one backrun tx --- docs/flashbots-auction/advanced/rpc-endpoint.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/flashbots-auction/advanced/rpc-endpoint.mdx b/docs/flashbots-auction/advanced/rpc-endpoint.mdx index 5c5b8e33..6e633a96 100644 --- a/docs/flashbots-auction/advanced/rpc-endpoint.mdx +++ b/docs/flashbots-auction/advanced/rpc-endpoint.mdx @@ -116,8 +116,7 @@ example response: ### mev_sendBundle -`mev_sendBundle` uses a new bundle format to send bundles to MEV-Share. See the [Understanding Bundles](/flashbots-mev-share/searchers/understanding-bundles) page for more information, or check out the [Sending Bundles](/flashbots-mev-share/searchers/sending-bundles) page for a short guide. - +`mev_sendBundle` uses a new bundle format to send bundles to MEV-Share. See the [Understanding Bundles](/flashbots-mev-share/searchers/understanding-bundles) page for more information, or check out the [Sending Bundles](/flashbots-mev-share/searchers/sending-bundles) page for a short guide. Note that as of October 20, 2025, a bundle can now only contain one backrun transaction. example request: From ce713644788d228de6d2c3c71c271ec0944bae9e Mon Sep 17 00:00:00 2001 From: yi <67046731+yifuzhang95@users.noreply.github.com> Date: Tue, 4 Nov 2025 13:26:50 -0500 Subject: [PATCH 19/19] Update sending-bundles.mdx (#636) comment in code for one backrun tx per bundle --- docs/flashbots-mev-share/searchers/sending-bundles.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flashbots-mev-share/searchers/sending-bundles.mdx b/docs/flashbots-mev-share/searchers/sending-bundles.mdx index 68d3f371..812aa89b 100644 --- a/docs/flashbots-mev-share/searchers/sending-bundles.mdx +++ b/docs/flashbots-mev-share/searchers/sending-bundles.mdx @@ -86,7 +86,7 @@ const params: BundleParams = { }, body: [ {tx: "0x02...", canRevert: false}, - {tx: "0x02...", canRevert: false}, + //can only include one backrun tx ], privacy: { hints: {