Skip to content

Commit

Permalink
Reorg FB auction. Move builder list to boost. (#442)
Browse files Browse the repository at this point in the history
* Reorg FB auction. Move builder list to boost.

* Fix broken links

Remove additional broken links

* use wildcard path matching for redirects
  • Loading branch information
odysseus0 authored Oct 2, 2023
1 parent f4d8dd3 commit 265890c
Show file tree
Hide file tree
Showing 39 changed files with 80 additions and 657 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ To replace a bundle, send the new bundle via `eth_sendBundle` with the same `rep

### Canceling bundles

Canceling a bundle will prevent Flashbots builders from including it on-chain. To cancel a bundle, call the [`eth_cancelBundle`](/flashbots-auction/searchers/advanced/rpc-endpoint#eth_cancelbundle) endpoint, or use the `cancelBundle` function in your preferred [Flashbots library](/flashbots-auction/searchers/libraries/ethers-js-provider).
Canceling a bundle will prevent Flashbots builders from including it on-chain. To cancel a bundle, call the [`eth_cancelBundle`](/flashbots-auction/advanced/rpc-endpoint#eth_cancelbundle) endpoint, or use the `cancelBundle` function in your preferred [Flashbots library](/flashbots-auction/libraries/ethers-js-provider).

```json
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ function uniswapWeth(uint256 _wethAmountToFirstMarket, uint256 _ethAmountToCoinb

The above smart contract code will attempt to capitalize on arbitrage opportunities. If it does not make money doing so then the transaction will fail.

For more information on how coinbase transfers are priced see the [bundle pricing page](/flashbots-auction/searchers/advanced/bundle-pricing).
For more information on how coinbase transfers are priced see the [bundle pricing page](/flashbots-auction/advanced/bundle-pricing).

## Managing payments to coinbase.address when it is a contract
Validators will occasionally have a smart contract listed as their block.coinbase address. This changes the expected behavior of making payments to block.coinbase. Specifically it costs more gas to transfer ETH to block.coinbase if it is a contract than if it is an EOA, and as such many searchers will underestimate their gas consumption and their bundles will fail for validators who use contracts instead.
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ $\Delta_{coinbase_T}$: coinbase difference from direct payment in transaction $T

Flashbots uses a dynamic threshold to classify users between the high reputation and low reputation queue. The dynamic variables are: 1) the historical time period considered to calculate reputation, 2) the cutoff reputation score which classifies a searcher as "high reputation". Using a dynamic threshold allows the builder to adapt in periods of high demand and maintain high reliability for top searchers.

A searcher can query their current reputation status using the [`flashbots_getUserStatsV2` RPC method](/flashbots-auction/searchers/advanced/rpc-endpoint#flashbots_getuserstatsv2).
A searcher can query their current reputation status using the [`flashbots_getUserStatsV2` RPC method](/flashbots-auction/advanced/rpc-endpoint#flashbots_getuserstatsv2).

## Building reputation

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ title: RPC Endpoint

import Tabs from "@theme/Tabs";
import TabItem from "@theme/TabItem";
import Hints from "../../../specs/mev-share/_hints.mdx";
import Builders from "../../../specs/mev-share/_builders.mdx";
import SendBundleSpec from "../../../specs/mev-share/_mev_sendBundle.mdx";
import Hints from "../../specs/mev-share/_hints.mdx";
import Builders from "../../specs/mev-share/_builders.mdx";
import SendBundleSpec from "../../specs/mev-share/_mev_sendBundle.mdx";

## Interact directly with the Flashbots RPC endpoint

Expand Down Expand Up @@ -259,7 +259,7 @@ example response:
### eth_cancelBundle

`eth_cancelBundle` is used to prevent a submitted bundle from being included on-chain.
See [bundle cancellations](/flashbots-auction/searchers/advanced/bundle-cancellations) for more information.
See [bundle cancellations](/flashbots-auction/advanced/bundle-cancellations) for more information.

> :information_source: `replacementUuid` must have been set when bundle was submitted.
Expand Down Expand Up @@ -479,11 +479,11 @@ example response:
:::caution
flashbots_getUserStats will be deprecated soon, use [flashbots_getUserStatsV2](/flashbots-auction/searchers/advanced/rpc-endpoint#flashbots_getuserstatsv2)
flashbots_getUserStats will be deprecated soon, use [flashbots_getUserStatsV2](/flashbots-auction/advanced/rpc-endpoint#flashbots_getuserstatsv2)
:::
The `flashbots_getUserStats` JSON-RPC method returns a quick summary of how a searcher is performing in the Flashbots ecosystem, including their [reputation-based priority](/flashbots-auction/searchers/advanced/reputation). It is currently updated once every hour and has the following payload format:
The `flashbots_getUserStats` JSON-RPC method returns a quick summary of how a searcher is performing in the Flashbots ecosystem, including their [reputation-based priority](/flashbots-auction/advanced/reputation). It is currently updated once every hour and has the following payload format:
```json
{
Expand Down Expand Up @@ -526,7 +526,7 @@ Parameters with `miner` in the name are retrofitted with Flashbots block builder
:::caution
flashbots_getBundleStats will be deprecated soon, use [flashbots_getBundleStatsV2](/flashbots-auction/searchers/advanced/rpc-endpoint#flashbots_getbundlestatsv2)
flashbots_getBundleStats will be deprecated soon, use [flashbots_getBundleStatsV2](/flashbots-auction/advanced/rpc-endpoint#flashbots_getbundlestatsv2)
:::
Expand Down Expand Up @@ -582,7 +582,7 @@ example response:
### flashbots_getUserStatsV2
The `flashbots_getUserStatsV2` JSON-RPC method returns a quick summary of how a searcher is performing in the Flashbots ecosystem, including their [reputation-based priority](/flashbots-auction/searchers/advanced/reputation). It is currently updated once every hour and has the following payload format:
The `flashbots_getUserStatsV2` JSON-RPC method returns a quick summary of how a searcher is performing in the Flashbots ecosystem, including their [reputation-based priority](/flashbots-auction/advanced/reputation). It is currently updated once every hour and has the following payload format:
```json
{
Expand Down Expand Up @@ -688,7 +688,7 @@ To authenticate your request, Flashbots endpoints require you to sign the payloa
curl -X POST -H "Content-Type: application/json" -H "X-Flashbots-Signature: <public key address>:<signature>" --data '{"jsonrpc":"2.0","method":"eth_sendBundle","params":[{see above}],"id":1}' https://relay.flashbots.net
```
Any valid ECDSA-secp256k1 key, like an arbitrary Ethereum key, can be used to sign the payload. The address associated with this key will be used by Flashbots to keep track of your [reputation](/flashbots-auction/searchers/advanced/reputation) over time and provide user statistics. You can change the key you use at any time.
Any valid ECDSA-secp256k1 key, like an arbitrary Ethereum key, can be used to sign the payload. The address associated with this key will be used by Flashbots to keep track of your [reputation](/flashbots-auction/advanced/reputation) over time and provide user statistics. You can change the key you use at any time.
The signature is calculated by taking the [EIP-191](https://eips.ethereum.org/EIPS/eip-191) hash of the json body encoded as UTF-8 bytes. Here's an example using ethers.js:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Unlike broadcasting a transaction which lands on-chain even if the transaction f

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.

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/searchers/advanced/rpc-endpoint) and the suggested strategies can be easily adapted for use with [other providers](/flashbots-auction/searchers/libraries/golang).
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).

## Does your transaction work and pay enough?

Expand All @@ -29,8 +29,8 @@ Covers:

The first two issues are grouped together as their causes, investigations, and solutions are closely related. Flashbots will not include a bundle if:

1. A transaction within the bundle reverts, unless it's specified via the [optional argument `revertingTxHashes`](/flashbots-auction/searchers/advanced/rpc-endpoint#eth_sendbundle) or it's uncled.
2. The [gas price is below the base fee](/flashbots-auction/searchers/advanced/eip1559#faq), as this would result in an invalid block if included.
1. A transaction within the bundle reverts, unless it's specified via the [optional argument `revertingTxHashes`](/flashbots-auction/advanced/rpc-endpoint#eth_sendbundle) or it's uncled.
2. The [gas price is below the base fee](/flashbots-auction/advanced/eip1559#faq), as this would result in an invalid block if included.
3. The effective priority fee is not sufficient to offset the opportunity cost of using the block space for other unrelated transactions. For instance, if your bundle is paying a 1 Gwei priority fee, but the cheapest transaction in the block is paying 2 Gwei, the builder would benefit more from discarding your bundle in favor of standard pending transactions.

As any of these conditions result in your bundle not appearing in a block, troubleshooting these issues requires _simulation_ using `eth_callBundle` RPC call. `eth_callBundle` is similar to an `eth_call` you might already be familiar with, but offers these key benefits:
Expand Down
13 changes: 0 additions & 13 deletions docs/flashbots-auction/builder-list.md

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ The Alchemy SDK makes getting started, shipping builds, and accessing support fa

Benefits of the Alchemy SDK include providing:

**1. Automatic management of your Flashbots reputation** - the SDK takes on the work of actively, and manually, managing your reputation. Learn more about reputation [here](/flashbots-auction/searchers/advanced/reputation#querying-reputation)
**1. Automatic management of your Flashbots reputation** - the SDK takes on the work of actively, and manually, managing your reputation. Learn more about reputation [here](/flashbots-auction/advanced/reputation#querying-reputation)

**2. A superset of the ethers.js Provider library plus the suite of Alchemy APIs** - the Alchemy Provider exposes all Flashbots JSON-RPC endpoints. The Flashbots API can be used natively with the core EVM APIs as well as the suite of Alchemy APIs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ _These libraries are provided and maintained by third-parties rather than Flashb

The Golang libraries provide high-level access to the `eth_sendBundle` and `eth_callBundle` RPC endpoints on the Flashbots builder.

Flashbots exposes several specialized JSON-RPC endpoints, such as [`eth_sendBundle`](/flashbots-auction/searchers/advanced/rpc-endpoint/#eth_sendbundle) and [`eth_callBundle`](/flashbots-auction/searchers/advanced/rpc-endpoint/#eth_callbundle). Since these are non-standard endpoints, ethers.js and other libraries do not natively support these requests (like `getTransactionCount`).
Flashbots exposes several specialized JSON-RPC endpoints, such as [`eth_sendBundle`](/flashbots-auction/advanced/rpc-endpoint/#eth_sendbundle) and [`eth_callBundle`](/flashbots-auction/advanced/rpc-endpoint/#eth_callbundle). Since these are non-standard endpoints, ethers.js and other libraries do not natively support these requests (like `getTransactionCount`).

Golang libraries:

Expand Down
12 changes: 6 additions & 6 deletions docs/flashbots-auction/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ We've noted with deep concern about the rise of exclusive transaction routing in
- July 2020: Formation of MEV-Ship Research Collective.
- November 2020: Formation of Flashbots Research Organization and proposal of [Flashbots Auction architecture](https://ethresear.ch/t/flashbots-frontrunning-the-mev-crisis/8251).
- January 2021: Flashbots Auction Alpha (v0.1) made available for miners and searchers to adopt.
- May 2021: [Flashbots Auction Alpha (v0.2)](/flashbots-auction/releases/alpha-v0.2) made available for miners and searchers to adopt.
- August 2021: [Flashbots Auction Alpha (v0.3)](/flashbots-auction/releases/alpha-v0.3) made available for miners and searchers to adopt.
- September 2021: [Flashbots Auction Alpha (v0.4)](/flashbots-auction/releases/alpha-v0.4) made available for miners and searchers to adopt.
- February 2022: [Flashbots Auction Alpha (v0.5)](/flashbots-auction/releases/alpha-v0.5) made available for miners and searchers to adopt.
- February, 2022: [Flashbots Auction Alpha (v0.6)](/flashbots-auction/releases/alpha-v0.6) made available for miners and searchers to adopt.
- May 2021: Flashbots Auction Alpha (v0.2) made available for miners and searchers to adopt.
- August 2021: Flashbots Auction Alpha (v0.3) made available for miners and searchers to adopt.
- September 2021: Flashbots Auction Alpha (v0.4) made available for miners and searchers to adopt.
- February 2022: Flashbots Auction Alpha (v0.5) made available for miners and searchers to adopt.
- February, 2022: Flashbots Auction Alpha (v0.6) made available for miners and searchers to adopt.

## How does it work?

Expand Down Expand Up @@ -116,7 +116,7 @@ Searchers create bundles with information from various sources and send them to

Searchers submit bundles directly to block builders, bypassing the p2p network. This approach ensures `Pre-trade privacy` as the transactions remain unseen by the rest of the network until they are included in a block. Searchers express their inclusion bids through Ethereum transactions, either as a gas price or as a direct ETH transfer to the coinbase address. Opting for direct payments over gas price allows users to condition their payments on the success of their transaction, thereby eliminating the need to pay for unsuccessful bids.

See the [searcher quick-start guide](/flashbots-auction/searchers/quick-start) to learn how to get started.
See the [searcher quick-start guide](/flashbots-auction/quick-start) to learn how to get started.

### Block Builders

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ To access the Flashbots network you will need three things:
- [Alchemy](https://docs.alchemy.com/docs/how-to-send-a-private-transaction-on-ethereum?a=fb) provides a convenient way to dispatch individual transactions to Flashbots.
3. A "bundle" comprising your transactions

When you send bundles to Flashbots, they are signed with your key, which allows us to confirm your identity and accumulate your [reputation](/flashbots-auction/searchers/advanced/reputation) over time. Reputation system is set up to protect the infrastructure from attacks like DDoS. Searcheres with higher reputation will have better access to the network especially during times of high congestion.
When you send bundles to Flashbots, they are signed with your key, which allows us to confirm your identity and accumulate your [reputation](/flashbots-auction/advanced/reputation) over time. Reputation system is set up to protect the infrastructure from attacks like DDoS. Searcheres with higher reputation will have better access to the network especially during times of high congestion.

It's crucial to understand that this key **does not** manage any funds and does **not** have to be the main Ethereum key used for authenticating transactions. Its only function is to establish your identity with Flashbots. You can use any ECDSA-secp256k1 key for this purpose.

Expand Down Expand Up @@ -210,7 +210,7 @@ That's it!

Congrats! You should now have everything you need to start sending transactions to the Flashbots network.

- If you are looking to interact with Flashbots without using one of the libraries, check out the [RPC endpoint documentation](/flashbots-auction/searchers/advanced/rpc-endpoint) and other advanced concepts.
- For examples of advanced usage of Flashbots, check out the [example searchers](/flashbots-auction/searchers/example-searchers/simple-arbitrage-bot).
- For additional tools, check out the [searcher libraries](/flashbots-auction/searchers/libraries/ethers-js-provider).
- If you are looking to interact with Flashbots without using one of the libraries, check out the [RPC endpoint documentation](/flashbots-auction/advanced/rpc-endpoint) and other advanced concepts.
- For examples of advanced usage of Flashbots, check out the [example searchers](/flashbots-auction/example-searchers/simple-arbitrage-bot).
- For additional tools, check out the [searcher libraries](/flashbots-auction/libraries/ethers-js-provider).
- For potential MEV opportunities, check out the [MEV job board](https://github.com/flashbots/mev-job-board) 🤠
Loading

0 comments on commit 265890c

Please sign in to comment.