Mev-boost: A middleware server written in Go

Related tags

Network mev-boost
Overview

mev-boost

A middleware server written in Go, that sits between an ethereum PoS consensus client and an execution client. It allows consensus clients to outsource block construction to third party block builders as well as fallback to execution clients. See ethresearch post for the high level architecture.

Implementation Plan

A summary of consensus client changes can be found here.

milestone 1 - kintsugi testnet

simple middleware logic with minimal consensus client changes, simple networking, no authentication, and manual safety mechanism

middleware behavior

  • middleware sends feeRecipient to relay with direct engine_forkchoiceUpdatedV1 request at beginning of block
  • middleware fetches signed payloads from relay using unauthenticated getPayloadHeader request
  • middleware selects best payload that matches expected payloadId and requests signature from consensus client, this requires passing header object to the consensus client and flagging that it should be returned to the middleware once signed
  • middleware returns signed block + initial payload header to relay with direct request

required client modifications

milestone 2 - security & reputation

cleanup consensus client and add security fallbacks

middleware behavior

  • add middleware module for verifying previous relay payload validity and accuracy with hard or statistical blacklist (may require modifications to execution client)
  • add middleware module for subscribing to 3rd party relay monitoring service

required client modifications

  • in event of middleware crash, consensus client must be able to bypass the middleware to reach a local or remote execution client

milestone 3 - authentication & privacy (optional)

add authentication and p2p comms mechanisms to prevent validator deanonymization

middleware behavior

  • middleware signs feeRecipient message and gossips over p2p at regular interval
  • middleware gossips signed block + initial payload header over p2p

required client modifications

milestone 4 - configurations (optional)

add optional configurations to provide alternative guarantees

  • consider adding direct engine_forkchoiceUpdatedV1 call to relay for syncing state
  • consider returning full payload directly to validator as optimization
  • consider adding merkle proof of payment to shift verification requirements to the relay

API Docs

relay_proposePayloadV1

Request

Response

  • result: object
    • status: enum - "VALID" | "INVALID" | "SYNCING"
    • latestValidHash: DATA|null, 32 Bytes - the hash of the most recent valid block in the branch defined by payload and its ancestors
    • validationError: String|null - a message providing additional details on the validation error if the payload is deemed INVALID
  • error: code and message set in case an exception happens while executing the payload.

engine_executePayloadV1

Request

Response

  • result: object
    • status: enum - "VALID" | "INVALID" | "SYNCING"
    • latestValidHash: DATA|null, 32 Bytes - the hash of the most recent valid block in the branch defined by payload and its ancestors
    • validationError: String|null - a message providing additional details on the validation error if the payload is deemed INVALID
  • error: code and message set in case an exception happens while executing the payload.

engine_forkchoiceUpdatedV1

Request

Response

  • result: object
    • status: enum - "SUCCESS" | "SYNCING"
    • payloadId: DATA|null, 8 Bytes - identifier of the payload build process or null
  • error: code and message set in case an exception happens while updating the forkchoice or initiating the payload build process.

engine_getPayloadV1

Request

  • method: engine_getPayloadV1
  • params:
    1. payloadId: DATA, 8 Bytes - Identifier of the payload build process

Response

  • result: ExecutionPayloadV1
  • error: code and message set in case an exception happens while getting the payload.

Build

make build

and then run it with:

./mev-boost

Test

make test

Lint

We use revive as a linter. You need to install it with go install github.com/mgechev/revive@latest

make lint
Comments
  • Do you want to run a builder?

    Do you want to run a builder?

    So, we heard you want to run a builder! Tell us more :)

    The builder API specification is open and every validator can select their own builders. However, there are still open questions that we need to resolve with the humans in the ethereum ecosystem to get a permissionless and fully decentralized design. Following the plan towards proposer/builder separation we are researching and prototyping solutions for decentralization. Coming next is the addition of independent block builders to the Flashbots relay. You can find the initial Relay API specification here, which outlines how builders can interact with the Flashbots Relay.

    Tell us more about who you are, what is your role in the ecosystem, how will you profit from running a builder, how are you going to contribute to answer the open questions, in order to get us to the trustless proposer/builder separation. Leave a comment in this issue so we can talk about collaboration.

    builder community 
    opened by come-maiz 26
  • Upcoming mev-boost release: v1.4.0

    Upcoming mev-boost release: v1.4.0

    A number of improvements have accumulated since the last release (v1.3.2 on September 22, 2022), and it's time to think about the next release v1.4.0!

    These are the already merged changes since the last release:

    • https://github.com/flashbots/mev-boost/compare/v1.3.2...main

    Would love to hear any comments, concerns, thoughts!

    The process would be:

    1. merge any remaining PRs that we want in the release
    2. test for a few some time on testnets (Goerli, Sepolia) in partnership with node operators
    3. release
    next up testing 
    opened by metachris 21
  • Run gocritic linter

    Run gocritic linter

    📝 Summary

    Run gocritic linter and fix warnings

    ⛱ Motivation and Context

    Improve code quality

    📚 References

    According to Effective Go switch is more idiomatic than if-else chain

    ✅ I have run these commands

    • [x] make lint
    • [x] make test-race
    • [x] go mod tidy
    next up code complete in review :mag: 
    opened by estensen 20
  • Frequent

    Frequent "no bid received"

    Environment

    We're rocking 2500 validators with..

    Lighthouse: v2.5.1
    mev-boost: v0.7.10
    Network: prater
    Relay: https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da[email protected]
    

    Issue

    About 60% of the proposals fallback to local EE (the other 40% are successfully built via mev-boost).

    When it happens, we see these errors in Lighthouse:

    Aug 21 14:02:25.958 INFO Requesting blinded header from connected builder, parent_hash: ..., pubkey: ..., slot: Slot(...), service: exec
    Aug 21 14:02:26.258 INFO No payload provided by connected builder. Attempting to propose through local execution engine, service: exec
    

    And these errors in mev-boost:

    time="2022-08-21T14:02:26Z" level=info msg="no bid received" method=getHeader module=service parentHash=0xdffccc7de563f586e027d563c7e5df860155d2c0aecc87f392aac8aece7e9fc4 pubkey=0x884fcee670d202053d48e64561d3f53f8478fa682f6f2a9676db082c8aa409e3b9fc6f132665d1f968758346a612c8cd slot=3715212
    time="2022-08-21T14:02:26Z" level=info msg="http: GET /eth/v1/builder/header/3715212/0xdffccc7de563f586e027d563c7e5df860155d2c0aecc87f392aac8aece7e9fc4/0x884fcee670d202053d48e64561d3f53f8478fa682f6f2a9676db082c8aa409e3b9fc6f132665d1f968758346a612c8cd 204" duration=0.096443931 method=GET module=service path=/eth/v1/builder/header/3715212/0xdffccc7de563f586e027d563c7e5df860155d2c0aecc87f392aac8aece7e9fc4/0x884fcee670d202053d48e64561d3f53f8478fa682f6f2a9676db082c8aa409e3b9fc6f132665d1f968758346a612c8cd
    

    Notes

    • Reproduced on Sepolia with Flashbots' relay (2 weeks ago)
    • We run a custom-built VC (instead of Lighthouse's), but correct me if I'm wrong, since VC isn't involved in the bidding flow, it's unlikely to be the culprit?

    Does anyone else have this issue as frequently or at all? Thanks 🙏

    opened by moshe-blox 16
  • Remove use of `engine_forkchoiceUpdatedV1`

    Remove use of `engine_forkchoiceUpdatedV1`

    Currently engine_forkchoiceUpdatedV1 is used to communicate to relays the feeRecipient that a validator will be using. As a side effect, a lot of unnecessary information is communicated to the relays.

    I propose two potential alternatives:

    1. builder_getPayloadHeader(hash, feeRecipient) -> PayloadHeader
    2. builder_preparePayload(hash, feeRecipient) -> uint64 + builder_getPayloadHeader(payloadId) -> PayloadHeader

    I don't know if I have enough of an understanding of the latency of 1) to choose it over 2), but it is naively my preference.

    opened by lightclient 15
  • accept gzip encoding

    accept gzip encoding

    📝 Summary

    From a discussion with @zeroecco on how to lower bandwidth on the blocknative relay we came to the idea that we could utilize well known compression like gzip, but only if requests coming from mev-boost specified that.

    Minimum transmittable unit is 1500 Bytes total w/ 1250 Bytes realistically usable and a block is around ~12KB, gzip will compress ~60% to ~6Kb which would be a packet reduction from 10 to 5 for the total packet train. This also reduces time to last packet and bandwidth, which could be 1 - 5ms based on response time at this size.

    If a system doesn't have this enabled the content-encoding will simply be ignored. On top of that, this improvement will really only be visible for GetPayload response.

    To benefit from this in your relay or other components make sure you configure your reverse proxy [HA Proxy, NGINX, etc] to support gzip!

    ⛱ Motivation and Context

    I want to go fast

    📚 References

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding

    https://www.rfc-editor.org/rfc/rfc2616#section-3.5

    ✅ I have run these commands

    • [x] make lint
    • [x] make test-race
    • [x] go mod tidy
    next up discuss in development 
    opened by dmarzzz 12
  • Recently proposed blocks

    Recently proposed blocks

    I'd like to discuss the idea of adding a method to relay API that returns blocks that have recently been proposed using relay.

    Goal

    The goal is to understand whether MEV-Boost was used to build a particular block and which relay was used for it. This is useful for participants such as staking pools to organize monitoring after validators that are operated by a third party.

    Proposed solution

    The goal can be achieved by adding a method that returns a block if it has been proposed using the current relay. Blocks can be stored in memory, and the stored number can be limited. Data for the last 32 slots should be enough for a third-party service to collect data about the last proposed blocks. All necessary data can be collected after a successful call to relay_proposeBlindedBlockV1 method.

    relay_getProposedBlindedBlockV1

    Request

    • method: relay_getProposedBlindedBlockV1
    • params:
      1. slot: slot number

    Response

    • result: ProposedBlock
    • error: code and message set in case an exception happens while performing the request.

    Types

    ProposedBlock

    Specification

    • Relay software MUST return proposed block if it has been proposed using the relay in the last 32 slots, otherwise return -32004: Unknown block.

    Alternatives

    This may not be the best solution, and I suggest discuss how to achieve the goal. Since Flashbots has a centralized API (blocks.flashbots.net) and probably want to support it after the Merge, I assume you may have a vision of collecting such data.

    relay 
    opened by avsetsin 12
  • SIGILL: illegal instruction

    SIGILL: illegal instruction

    Since version 0.7.10 I'm getting the following error when trying to run -help or -version..

    SIGILL: illegal instruction
    PC=0x6db7ae m=0 sigcode=2
    signal arrived during cgo execution
    instruction bytes: 0xf3 0x4c 0xf 0x38 0xf6 0xcf 0x66 0x4c 0xf 0x38 0xf6 0xd5 0xc4 0xe2 0xc3 0xf6
    
    goroutine 1 [syscall, locked to thread]:
    runtime.cgocall(0x6bda00, 0xc00013dba8)
    	/usr/local/go/src/runtime/cgocall.go:157 +0x5c fp=0xc00013db80 sp=0xc00013db48 pc=0x4097bc
    github.com/supranational/blst/bindings/go._Cfunc_blst_sk_to_pk2_in_g1(0x0, 0xc00012a240, 0xc000132ce0)
    	_cgo_gotypes.go:1317 +0x45 fp=0xc00013dba8 sp=0xc00013db80 pc=0x66f7e5
    github.com/supranational/blst/bindings/go.(*_Ctype_struct___4).From(...)
    	/home/ethereum/go/pkg/mod/github.com/supranational/[email protected]/bindings/go/blst.go:219
    github.com/flashbots/go-boost-utils/bls.PublicKeyFromSecretKey(...)
    	/home/ethereum/go/pkg/mod/github.com/flashbots/[email protected]/bls/bls.go:40
    github.com/flashbots/mev-boost/server.init()
    	/home/ethereum/go/pkg/mod/github.com/flashbots/[email protected]/server/mock_relay.go:25 +0xec fp=0xc00013dbf0 sp=0xc00013dba8 pc=0x6bb1cc
    runtime.doInit(0x990f40)
    	/usr/local/go/src/runtime/proc.go:6222 +0x126 fp=0xc00013dd20 sp=0xc00013dbf0 pc=0x4491e6
    runtime.doInit(0x98f000)
    	/usr/local/go/src/runtime/proc.go:6199 +0x71 fp=0xc00013de50 sp=0xc00013dd20 pc=0x449131
    runtime.doInit(0x98a600)
    	/usr/local/go/src/runtime/proc.go:6199 +0x71 fp=0xc00013df80 sp=0xc00013de50 pc=0x449131
    runtime.main()
    	/usr/local/go/src/runtime/proc.go:233 +0x1d3 fp=0xc00013dfe0 sp=0xc00013df80 pc=0x43c373
    runtime.goexit()
    	/usr/local/go/src/runtime/asm_amd64.s:1571 +0x1 fp=0xc00013dfe8 sp=0xc00013dfe0 pc=0x468ac1
    
    rax    0x0
    rbx    0x7f9f20
    rcx    0x7f99a0
    rdx    0x7817fc679976fff5
    rdi    0xc25f1572e1a87b0e
    rsi    0x7f9ea0
    rbp    0x2b7cd71362065849
    rsp    0x7ffc88619968
    r8     0x1f36a914d1d1ca54
    r9     0xe3f09cc9f448ab2c
    r10    0x53ae4ce3194e4adf
    r11    0x988f6b1f351f9469
    r12    0xf0030d9fa553ae92
    r13    0x8e738258ad84f1f6
    r14    0x685276af035ca2f
    r15    0x0
    rip    0x6db7ae
    rflags 0x10246
    cs     0x33
    fs     0x0
    gs     0x0
    
    

    I did not get this error with the previous two versions. How can I resolve this problem?

    opened by Jor-Tech 10
  • Open-source relay - which license to use?

    Open-source relay - which license to use?

    We will open source our mev-boost relay!

    (ETA early September)

    For context, this is our Ropsten relay: https://builder-relay-ropsten.flashbots.net (see also the Relay API Documentation)

    What's your opinions on the license we should use, and why?

    See also https://choosealicense.com/licenses

    Note: We were strongly considering AGPL, which would oblige anyone making changes to publish them as well, in order to foster a thriving development ecosystem around the mev-boost relays.

    brainstorming relay 
    opened by metachris 9
  • Reflect relays statuses in `status` endpoint

    Reflect relays statuses in `status` endpoint

    I think mev-boost status endpoint should call status endpoints for each relays and return OK if at least one returned OK. Otherwise it should return KO (503?).

    enhancement brainstorming 
    opened by tbenr 9
  • Simplify spec, update based on recent discussions

    Simplify spec, update based on recent discussions

    I took a stab at updating the spec based on our recent discussions about the spec. I need to update sequence diagram and the process overview, but I think it's relatively straightforward.

    A few notes:

    • I removed the concept of builder vs. relay methods and combined them. The CL can ignore things like feeRecipientDiff and signatures, or it can use that info to compare against it's local payload. I think this really simplifies things a lot.
    • I decided to go with SSZ encoding the block because it simplifies the spec a lot and is already the form that the builder will need it in to validate the signature.
    opened by lightclient 9
  • Capella decode and fallback to bellatrix

    Capella decode and fallback to bellatrix

    📝 Summary

    More context in https://github.com/flashbots/mev-boost/pull/411.

    As part of https://github.com/flashbots/mev-boost/issues/392 this PR attempts to decode the getPayload call with capella types (from attestant) and then decode with bellatrix types (from go-boost-utils) as a fallback.

    ⛱ Motivation and Context

    📚 References

    waiting on https://github.com/attestantio/go-builder-client/pull/2 as attestant types don't have support for capella yet for relay responses.


    ✅ I have run these commands

    • [x] make lint
    • [x] make test-race
    • [x] go mod tidy
    opened by avalonche 0
  • ✨ Refactoring mev-boost

    ✨ Refactoring mev-boost

    Description

    Server

    In the process of implementing features such as the relay selection, I faced some issues related to the current architecture of the server package.

    I have identified the following potential refactors that, once implemented, would make granular updates easier for developers:

    • Add a cache package
      • It would hold the bid cache specific types and methods
    • Add an internal/testing package
      • It would hold the mocked types and mock relay
    • Add a package for relay-dedicated components
      • It would hold relay entries types and methods
    • Move client methods in a dedicated package
      • It would hold all methods used to make requests currently in the utils.go file
    • Refactor the mocked relay and associated tests

    CLI

    In my opinion, I also think that the current implementation of the CLI could be improved by taking advantage of the combined powers of Cobra and Viper. Using this combination in a good way could lead to the usage of configuration files for mev-boost, which can be used by future features.

    Discussion

    I would like to have your opinion / critisims about these. If you have any a question or need more details, please ask.

    opened by 0xpanoramix 1
  • Allow operating a builder with no fee and no payout TX

    Allow operating a builder with no fee and no payout TX

    Rationale

    Why should this feature exist?

    • when the builder doesn't collect any fee it is very enificient to create a payout TX on every block. some validators use a contract which consumes 70-100k gas so without the payout TX the total block value will be higher.

    What are the use-cases?

    • operating a builder that doesn't collect block fees.

    Implementation

    Do you have ideas regarding the implementation of this feature?

    • yes the simulation checks -
      • if the coinbase address is the same as the validator's address
      • the coinbase balance difference is the same as the bid value

    Are you willing to implement this feature?

    • yes

    cc @Ruteri

    opened by krasi-georgiev 4
  • Validator level relay configuration

    Validator level relay configuration

    Given our infrastructure, we have begun exploring enabling validator level configuration of relays for a single instance of MEV-Boost. This was originally raised in https://github.com/flashbots/mev-boost/issues/154 .

    We are currently developing a document and POC to prove out the ideas in the doc and will publish both here once we have some level of verification for the community to assess...

    opened by beetrootkid 2
  • Replace go-boost-utils types with Attestant types

    Replace go-boost-utils types with Attestant types

    📝 Summary

    Pr for issue #404, replacing with types from attestant to reduce maintenance for go-boost-utils

    ⛱ Motivation and Context

    📚 References


    ✅ I have run these commands

    • [x] make lint
    • [x] make test-race
    • [x] go mod tidy
    opened by avalonche 4
  • feature-request: Weighted relays

    feature-request: Weighted relays

    Diversify relay usage

    There is a community driven pressure to diversify the relays, mostly because having a single relay control a big percentage of the block production gives that relay powers to censor or delay some transactions.

    Right now if a user wants to avoid using a relayer due to those concerns it has to avoid including this relay when setting up mev-boost. The problem with this approach is that the user is now deprived from any offers from the relay, even when those offers are on-off opportunities that doesn't affect regular block production.

    Adding weights to relays would allow users to give priority to relays who align with their principles while still having access to other relays in case they have a good offer. It allows expressing intents like "use relayer Y unless X pays double".

    Better risk management

    Weighted relays would also allow users to include "less trusted" relays but only when these relays have substantial better offers, expressing things like "I don't fully trust relay X but if it pays ten times more I'm willing to take the chances".

    opened by Agusx1211 3
Releases(v1.4.0)
  • v1.4.0(Nov 9, 2022)

    Major improvements

    Minor Improvements

    New Contributors



    Usage

    $ mev-boost -help
    Usage of mev-boost:
      -addr string
            listen-address for mev-boost server (default "localhost:18550")
      -debug
            shorthand for '-loglevel debug'
      -genesis-fork-version string
            use a custom genesis fork version
      -goerli
            use Goerli
      -json
            log in JSON format instead of text
      -log-no-version
            disables adding the version to every log entry
      -log-service string
            add a 'service=...' tag to all log messages
      -loglevel string
            minimum loglevel: trace, debug, info, warn/warning, error, fatal, panic (default "info")
      -mainnet
            use Mainnet (default true)
      -min-bid float
            minimum bid to accept from a relay [eth]
      -relay value
            a single relay, can be specified multiple times
      -relay-check
            check relay status on startup and on the status API call
      -relay-monitor value
            a single relay monitor, can be specified multiple times
      -relay-monitors string
            relay monitor urls - single entry or comma-separated list (scheme://host)
      -relays string
            relay urls - single entry or comma-separated list (scheme://pubkey@host)
      -request-timeout-getheader int
            timeout for getHeader requests to the relay [ms] (default 950)
      -request-timeout-getpayload int
            timeout for getPayload requests to the relay [ms] (default 4000)
      -request-timeout-regval int
            timeout for registerValidator requests [ms] (default 3000)
      -sepolia
            use Sepolia
      -version
            only print version
    

    Using multiple -relay flags (and -mainnet is now used by default):

    mev-boost -relay-check \
        -relay https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net \
        -relay https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com \
        -relay https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io \
        -relay https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec0[email protected]
    

    Setting a minimum bid value of 0.02 ETH:

    mev-boost \
        -min-bid 0.02 \
        -relay https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net \
        -relay https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c1[email protected]
    

    Setting a minimum bid value

    Using the -min-bid flag to set a minimum bid value will incur a small opportunity cost and increase the chance of building local mempool blocks. These are the chances per value of building a local block (based on median payload values during the past two weeks):

    min-bid | % chance for building a local block -- | -- 0.1 ETH | 97.2% 0.06 ETH | 50% 0.03 ETH | 13.5% 0.02 ETH | 2.3% 0.01 ETH | 0.01%

    Source code(tar.gz)
    Source code(zip)
    checksums.txt(509 bytes)
    mev-boost_1.4.0_darwin_amd64.tar.gz(5.81 MB)
    mev-boost_1.4.0_darwin_arm64.tar.gz(5.46 MB)
    mev-boost_1.4.0_linux_amd64.tar.gz(5.26 MB)
    mev-boost_1.4.0_linux_arm64.tar.gz(4.88 MB)
    mev-boost_1.4.0_windows_amd64.tar.gz(5.47 MB)
  • v1.3.2(Sep 22, 2022)

    Summary

    Most important updates:

    • getPayload requests are sent only to the relay(s) which had the bid (not to every relay as before)
    • Enhanced logging which simplifies debugging, in particular on errors
    • Improved e2e testing with the EF test data. Fixed potential issue with voluntary exits.
    • -debug cli argument to enable debug logs

    What's Changed

    • fixed this annoying flaky test in https://github.com/flashbots/mev-boost/pull/327
    • Parallel relay check in https://github.com/flashbots/mev-boost/pull/325
    • pretty print relays on startup in https://github.com/flashbots/mev-boost/pull/332
    • Added -debug flag (shorthand for -loglevel debug) in https://github.com/flashbots/mev-boost/pull/331
    • log version on getHeader and getPayload in https://github.com/flashbots/mev-boost/pull/328
    • add e2e test with known signed-blinded-beacon-block in https://github.com/flashbots/mev-boost/pull/326
    • getpayload: log request body on error in https://github.com/flashbots/mev-boost/pull/333
    • cleanup relay-status check in https://github.com/flashbots/mev-boost/pull/335
    • Dependency updates, fix SignedVoluntaryExit in https://github.com/flashbots/mev-boost/pull/338
    • getPayload only to origin relays in https://github.com/flashbots/mev-boost/pull/342

    Testing

    • Live testing of release candidate by Kiln.fi on Sepolia 🙏
    • CI and manual testing

    Signed off by

    @avalonche @kailinr @metachris


    Full Changelog: https://github.com/flashbots/mev-boost/compare/v1.3.1...v1.3.2

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost


    Usage

    $ mev-boost -help
    Usage of mev-boost:
      -addr string
            listen-address for mev-boost server (default "localhost:18550")
      -debug
            shorthand for '-loglevel debug'
      -genesis-fork-version string
            use a custom genesis fork version
      -goerli
            use Goerli
      -json
            log in JSON format instead of text
      -kiln
            use Kiln
      -loglevel string
            minimum loglevel: trace, debug, info, warn/warning, error, fatal, panic (default "info")
      -mainnet
            use Mainnet
      -relay-check
            check relay status on startup and on the status API call
      -relay-monitors string
            relay monitor urls - single entry or comma-separated list (scheme://host)
      -relays string
            relay urls - single entry or comma-separated list (scheme://pubkey@host)
      -request-timeout-getheader int
            timeout for getHeader requests to the relay [ms] (default 950)
      -request-timeout-getpayload int
            timeout for getPayload requests to the relay [ms] (default 4000)
      -request-timeout-regval int
            timeout for registerValidator requests [ms] (default 3000)
      -ropsten
            use Ropsten
      -sepolia
            use Sepolia
      -version
            only print version
    
    Source code(tar.gz)
    Source code(zip)
    checksums.txt(509 bytes)
    mev-boost_1.3.2_darwin_amd64.tar.gz(5.44 MB)
    mev-boost_1.3.2_darwin_arm64.tar.gz(5.14 MB)
    mev-boost_1.3.2_linux_amd64.tar.gz(4.92 MB)
    mev-boost_1.3.2_linux_arm64.tar.gz(4.58 MB)
    mev-boost_1.3.2_windows_amd64.tar.gz(5.03 MB)
  • v1.3.1(Sep 16, 2022)

    What's Changed

    • Fix getPayload bug when deposit is included (by updating to go-boost-utils v1.1.1) in https://github.com/flashbots/mev-boost/pull/324 / https://github.com/flashbots/mev-boost/pull/322

    Thanks to @lightclient @terencechain @tbenr @StefanBratanov @tersec for collaboration on the solution ⭐

    Minor improvements

    • additional getPayload logging by @metachris in https://github.com/flashbots/mev-boost/pull/321

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v1.2.1...v1.3.1

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
    checksums.txt(509 bytes)
    mev-boost_1.3.1_darwin_amd64.tar.gz(5.38 MB)
    mev-boost_1.3.1_darwin_arm64.tar.gz(5.08 MB)
    mev-boost_1.3.1_linux_amd64.tar.gz(4.87 MB)
    mev-boost_1.3.1_linux_arm64.tar.gz(4.54 MB)
    mev-boost_1.3.1_windows_amd64.tar.gz(4.98 MB)
  • v1.2.1(Sep 14, 2022)

    Enhancements

    • -relay-check on startup: only log error if relays have errors (but don't fail) by @metachris in https://github.com/flashbots/mev-boost/pull/313
    • Add linter action by @estensen in https://github.com/flashbots/mev-boost/pull/307
    • ci cleanup and add golangci-lint to 'make clean' by @metachris in https://github.com/flashbots/mev-boost/pull/315
    • Log relay and value of received bids by @pietjepuk2 in https://github.com/flashbots/mev-boost/pull/305
    • Add SECURITY.md by @avalonche in https://github.com/flashbots/mev-boost/pull/302

    Changelog

    • ea15462 v1.2.1
    • b808c82 only log relay monitors on startup if provided
    • b00546b Add SECURITY.md (#302)
    • 8c8e7a9 WIP: (Feedback wanted) Log relay and value of received bids (#305)
    • aa7388f ci cleanup and add golangci-lint to 'make clean' (#315)
    • a718e39 Add linter action (#307)
    • 7bcc2ab only error if relays on startup have errors (#313)
    • c5344c2 goreleaser: prepare headers of release info
    • 70a8404 readme: improved installing instructions
    • 3b6406d v1.2.1-dev

    New Contributors

    • @pietjepuk2 made their first contribution in https://github.com/flashbots/mev-boost/pull/305

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v1.2.0...v1.2.1

    Source code(tar.gz)
    Source code(zip)
    checksums.txt(509 bytes)
    mev-boost_1.2.1_darwin_amd64.tar.gz(4.85 MB)
    mev-boost_1.2.1_darwin_arm64.tar.gz(4.58 MB)
    mev-boost_1.2.1_linux_amd64.tar.gz(4.41 MB)
    mev-boost_1.2.1_linux_arm64.tar.gz(4.11 MB)
    mev-boost_1.2.1_windows_amd64.tar.gz(4.50 MB)
  • v1.2.0(Sep 13, 2022)

    What's Changed

    • binary builds as release attachments by @franciscodiazydiaz and @metachris in https://github.com/flashbots/mev-boost/pull/289
    • additional getPayload logging by @metachris in https://github.com/flashbots/mev-boost/pull/309
    • reproducible builds by @metachris in https://github.com/flashbots/mev-boost/pull/310

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v1.1.0...v1.2.0

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
    checksums.txt(509 bytes)
    mev-boost_1.2.0_darwin_amd64.tar.gz(4.85 MB)
    mev-boost_1.2.0_darwin_arm64.tar.gz(4.58 MB)
    mev-boost_1.2.0_linux_amd64.tar.gz(4.41 MB)
    mev-boost_1.2.0_linux_arm64.tar.gz(4.11 MB)
    mev-boost_1.2.0_windows_amd64.tar.gz(4.50 MB)
  • v1.0.0(Sep 12, 2022)

    What's Changed

    • getHeader request timeout 950ms, allow setting timeouts individually for different requests by @metachris in https://github.com/flashbots/mev-boost/pull/290
    • Added note on configuration modifications for consensus clients by @fiiiu in https://github.com/flashbots/mev-boost/pull/291
    • readme typo by @kailinr in https://github.com/flashbots/mev-boost/pull/283
    • fix readme portable instructions by @metachris in https://github.com/flashbots/mev-boost/pull/288
    • Add relay monitor URLs by @avalonche in https://github.com/flashbots/mev-boost/pull/296
    • cleanup empty -relay-monitors handling by @metachris in https://github.com/flashbots/mev-boost/pull/300
    • fix endless loop on sending validations to relay monitor by @metachris in https://github.com/flashbots/mev-boost/pull/306

    New Contributors

    • @fiiiu made their first contribution in https://github.com/flashbots/mev-boost/pull/291

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.8.2...v1.0.0

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.8.2(Aug 31, 2022)

    What's Changed

    • portable blst build in docker images by @metachris - https://hub.docker.com/r/flashbots/mev-boost/tags
    • ignore bids with 0 value by @metachris in https://github.com/flashbots/mev-boost/pull/261
    • Use blockhash as tiebreaker for equal bids by @metachris in https://github.com/flashbots/mev-boost/pull/238
    • Parse slot/gas as uint64 in test code to prevent downcasting by @jtraglia in https://github.com/flashbots/mev-boost/pull/252
    • getPayload: error if payload parts are missing by @metachris in https://github.com/flashbots/mev-boost/pull/276
    • Documentation Update - README - Part 1 by @kailinr in https://github.com/flashbots/mev-boost/pull/254
    • feat: add dependabot support by @0xpanoramix in https://github.com/flashbots/mev-boost/pull/263
    • Check unchecked errors by @estensen in https://github.com/flashbots/mev-boost/pull/272

    New Contributors

    • @kailinr made their first contribution in https://github.com/flashbots/mev-boost/pull/254
    • @dmarzzz made their first contribution in https://github.com/flashbots/mev-boost/pull/264
    • @estensen made their first contribution in https://github.com/flashbots/mev-boost/pull/272

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.10...v0.8.2

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.10(Aug 15, 2022)

    What's Changed

    • Upgrade go-boost-utils to v0.3.5 by @Ruteri in https://github.com/flashbots/mev-boost/pull/249
    • getHeader: verify that pubkey in message is the relay-key we trust by @metachris in https://github.com/flashbots/mev-boost/pull/239
    • Upgrade from ioutil to os by @Ruteri in https://github.com/flashbots/mev-boost/pull/248
    • Respond to validator registration as soon as a single relay returns OK by @Ruteri in https://github.com/flashbots/mev-boost/pull/234
    • Adjust mergemock integration test cleanup by @Ruteri in https://github.com/flashbots/mev-boost/pull/235
    • readme cleanup by @metachris in https://github.com/flashbots/mev-boost/pull/236
    • Update table of contents & fix typo by @jtraglia in https://github.com/flashbots/mev-boost/pull/240
    • Fix data race in service test by @0xpanoramix in https://github.com/flashbots/mev-boost/pull/242

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.9...v0.7.10

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.8(Aug 3, 2022)

    What's Changed

    • -goerli flag by @metachris in https://github.com/flashbots/mev-boost/pull/228
    • if no payload is received, log which relays sent the corresponding bid by @metachris in https://github.com/flashbots/mev-boost/pull/229
    • Add the audit report by @elopio in https://github.com/flashbots/mev-boost/pull/223
    • readme update, remove goerli sf5 by @metachris in https://github.com/flashbots/mev-boost/pull/226

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.7...v0.7.8

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.7(Jul 20, 2022)

    What's Changed

    • allow go install github.com/flashbots/mev-boost by @metachris in https://github.com/flashbots/mev-boost/pull/214
    • Update instructions for running local ETH2 Beacon/Execution chain pair by @sourdzl in https://github.com/flashbots/mev-boost/pull/187
    • print usage when run without args (fails because it needs a network) by @metachris in https://github.com/flashbots/mev-boost/pull/216
    • We have a logo now :) by @thegostep in https://github.com/flashbots/mev-boost/pull/217
    • support for goerli-shadow-fork-5 by @metachris in https://github.com/flashbots/mev-boost/pull/218
    • server read + readheader timeout by @metachris in https://github.com/flashbots/mev-boost/pull/212

    New Contributors

    • @sourdzl made their first contribution in https://github.com/flashbots/mev-boost/pull/187

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.6...v0.7.7

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.6(Jul 15, 2022)

    • Added -version flag
    • fixed version in the Docket images

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.4...v0.7.5

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.5(Jul 15, 2022)

    What's Changed

    • Disallow indefinite http client timeout by @avalonche in https://github.com/flashbots/mev-boost/pull/210
    • Disallow unknown json fields in payload by @avalonche in https://github.com/flashbots/mev-boost/pull/211
    • Remove redundant signature check by @terencechain in https://github.com/flashbots/mev-boost/pull/209
    • Send version in User-Agent header by @metachris in https://github.com/flashbots/mev-boost/pull/213

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.4...v0.7.5

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.4(Jul 14, 2022)

    What's Changed

    • Handle unhandled errors by @terencechain in https://github.com/flashbots/mev-boost/pull/195
    • Move mergemock-integration to separate bash script by @jtraglia in https://github.com/flashbots/mev-boost/pull/193
    • Cleanup makefile by @jtraglia in https://github.com/flashbots/mev-boost/pull/194
    • Add redirect checks by @avalonche in https://github.com/flashbots/mev-boost/pull/205
    • Document the machine setup for installing mev-boost by @elopio in https://github.com/flashbots/mev-boost/pull/204
    • Default MaxHeaderSize to 4kb by @avalonche in https://github.com/flashbots/mev-boost/pull/206
    • RelayEntry arg support by @metachris in https://github.com/flashbots/mev-boost/pull/208

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.3...v0.7.4

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost

    Source code(tar.gz)
    Source code(zip)
  • v0.7.3(Jul 6, 2022)

    What's Changed

    • Add verifications in getHeader handler by @0xpanoramix in https://github.com/flashbots/mev-boost/pull/182
    • status-check: proxy relay check until first responds ok, enabled with… by @metachris in https://github.com/flashbots/mev-boost/pull/185
    • update go-boost-utils to v0.2.0 by @metachris in https://github.com/flashbots/mev-boost/pull/188
    • Fix some things I noticed when reviewing by @jtraglia in https://github.com/flashbots/mev-boost/pull/191
    • getHeader 204 (no content) by @metachris in https://github.com/flashbots/mev-boost/pull/190

    New Contributors

    • @jtraglia made their first contribution in https://github.com/flashbots/mev-boost/pull/191

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.0...v0.7.3

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost/tags

    Source code(tar.gz)
    Source code(zip)
  • v0.7.2(Jul 6, 2022)

    What's Changed

    • Add verifications in getHeader handler by @0xpanoramix in https://github.com/flashbots/mev-boost/pull/182
    • status-check: proxy relay check until first responds ok, enabled with… by @metachris in https://github.com/flashbots/mev-boost/pull/185
    • update go-boost-utils to v0.2.0 by @metachris in https://github.com/flashbots/mev-boost/pull/188 (issue reported by @jtraglia)

    Full Changelog: https://github.com/flashbots/mev-boost/compare/v0.7.0...v0.7.2

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost/tags

    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Jun 30, 2022)

    Updates https://github.com/flashbots/mev-boost/compare/v0.6.0...v0.7.0:

    • json logging (-json), and custom loglevel (-loglevel): #175 (@metachris)
    • registerValidator: remove signature check, leave up for relay: #176 (@metachris)
    • Simplify OK responses across handlers: #171 (@0xpanoramix)
    • improved error and ok response (with error handling): #177 (@metachris)
    • Add relays statuses calls in boost status endpoint: #172 (@0xpanoramix)

    Updated images are available on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost/tags

    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Jun 24, 2022)

    Updates https://github.com/flashbots/mev-boost/compare/v0.5.0...v0.6.0:

    • Returns correct error structs: #166
    • Disable server timeout: #165
    • Prepare sepolia genesis fork version: #168 (new -sepolia flag)

    Updated images on Docker Hub: https://hub.docker.com/r/flashbots/mev-boost/tags

    Source code(tar.gz)
    Source code(zip)
Owner
Flashbots
Flashbots
server-to-server sync application, written in go/golang.

svcpy: server to server copy a basic server-to-server copy application. on a single binary, it can be a server or a client. example usage: on the serv

Mert Akengin 0 Nov 4, 2021
Pape-server - A small server written in golang to serve a random wallpaper.

pape-server I like to inject custom CSS themes into a lot of websites and electron apps, however browsers don't let websites access local disk through

null 0 Dec 31, 2021
Server - Dupman server written in Go

server dupman server written in Go Requirements Go (>=1.17) Installation Usage C

dupman 9 Feb 22, 2022
HTTP API traffic recording and replay middleware based on GoReplay, can be used for migration and refactoring testing

gorc HTTP API traffic recording and replay middleware based on GoReplay, can be used for migration and refactoring testing. English | 中文 Requirements

Jioby 2 Feb 13, 2022
The seed repository for your Flamego middleware modules

seed This repository contains seed files that almost every repository of Flamego middleware module should have. Using the content Create an empty repo

Flamego 1 Dec 11, 2021
Header Block is a middleware plugin for Traefik to block request and response headers which regex matched by their name and/or value

Header Block is a middleware plugin for Traefik to block request and response headers which regex matched by their name and/or value Conf

null 3 May 24, 2022
Log4Shell is a middleware plugin for Traefik which blocks JNDI attacks based on HTTP header values.

Log4Shell Mitigation Log4Shell is a middleware plugin for Traefik which blocks JNDI attacks based on HTTP header values. Related to the Log4J CVE: htt

Traefik Labs 35 Dec 20, 2022
Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks

firewall Middleware for Blocking IP ranges by inserting CIDR Blocks and searching IPs through those blocks. Features Easy to use Efficient and Fast Co

Golang libraries for everyone 6 Oct 9, 2022
SubCenter is a middleware that integrate task subscriptions and real-time push

Subscription Center SubCenter是一个集成各种任务并进行实时推送的中间件,本身不提供数据与推送服务。

Zhimin Sun 6 Oct 31, 2022
🧬 fiber middleware to automatically generate RESTful API documentation with Swagger

Swagger fiber middleware to automatically generate RESTful API documentation with Swagger Usage Add comments to your API source code, See Declarative

Fiber 126 Jan 1, 2023
A Language Server Protocol (LSP) server for Jsonnet

Jsonnet Language Server Warning: This project is in active development and is likely very buggy. A Language Server Protocol (LSP) server for Jsonnet.

Jack Baldry 16 Nov 22, 2022
The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the processor

server-pubsub The server-pubsub is the main backend of DATAVOC project that manages all the other web-server modules of the same project such as the p

null 0 Dec 3, 2021
Server and client implementation of the grpc go libraries to perform unary, client streaming, server streaming and full duplex RPCs from gRPC go introduction

Description This is an implementation of a gRPC client and server that provides route guidance from gRPC Basics: Go tutorial. It demonstrates how to u

Joram Wambugu 0 Nov 24, 2021
Cert bound sts server - Certificate Bound Tokens using Security Token Exchange Server (STS)

Certificate Bound Tokens using Security Token Exchange Server (STS) Sample demonstration of Certificate Bound Tokens acquired from a Security Token Ex

null 0 Jan 2, 2022
Echo-server - An HTTP echo server designed for testing applications and proxies

echo-server An HTTP echo server designed for testing applications and proxies. R

Erik Cavalcanti 6 Dec 20, 2022
Broadcast-server - A simple Go server that broadcasts any data/stream

broadcast A simple Go server that broadcasts any data/stream usage data You can

Zack 57 Oct 21, 2022
Videos2gether-server - Server for the Realtime video streaming app Videos2Gether

Videos Together server Server source code for the https://videos2gether.com Arch

Tiago Taquelim 0 Jan 9, 2022
JPRQ Customizer is a customizer that helps to use the JPRQ server code and make it compatible with your own server with custom subdomain and domain

JPRQ Customizer is a customizer that helps to use the JPRQ server code and make it compatible with your own server with custom subdomain and domain.You can upload the generated directory to your web server and expose user localhost to public internet. You can use this to make your local machine a command center for your ethical hacking purpose ;)

Abir Ghosh 1 Jan 19, 2022
Envoy-eds-server - Envoy EDS server is a working Envoy Discovery Service implementation

envoy-eds-server Intro Envoy EDS server is a working Envoy Discovery Service imp

Radu Crisan 2 Apr 2, 2022