Skip to content

v0.1.2

Pre-release
Pre-release

Choose a tag to compare

@chee-chyuan chee-chyuan released this 20 Aug 06:38
968d07d

Description

This release ships the BEP-675 BidBlock (mev_sendBidBlock) MEV path, in which builders submit fully-built blocks rather than bid bundles, together with a state-root correctness fix that affects the Pasteur hardfork transition, and the move to the bnb-chain/reth v0.1.2 dependency release.

Pasteur itself was implemented in v0.1.0 and scheduled for BSC mainnet in v0.1.1 at 2026-08-25 02:30:00 AM UTC (unix 1787625000). That timing is unchanged here.

⚠️ Note

  1. Pasteur transition state root. Four sites committed state straight to the DB without announcing it to the incremental state-root pipeline, so a block could commit a root describing the pre-write state — upgrade_system_contract (contract code → codeHash, which is what runs at a hardfork transition), apply_history_storage_account (EIP-2935), and distribute_incoming (zeroing SYSTEM_ADDRESS, and crediting the validator reward). On bsc-qanet the un-fixed behaviour split the cluster at the Pasteur transition: geth rejected the block with invalid merkle root. This fix is not in v0.1.1.
  2. BidBlock is opt-in. The new inbound builder path is gated by BidBlockEnabled and by per-builder permission; a node that does not enable it is not exposed to the new admission path.
  3. No binaries are attached to this release. Use the ghcr.io image published on the tag, or build from the v0.1.2 tag.

MetaInfo

Mandatory Update Required: No
Target Audience: developers, mainnet and testnet operators
Procedure: simply binary replacement should be good
Schedule(Timeline): no scheduled upgrade timeline

What's Changed

BEP-675 MEV BidBlock

  • feat: BEP-675 BidBlock (SendBidBlock) MEV path by @chee-chyuan in #415
  • feat(miner): switch BidBlock to zero-simulate (broadcast-then-verify) by @chee-chyuan in #419
  • fix(miner): give bid simulation the full block-interval delay window by @chee-chyuan in #424
  • fix(bep675): adopt bsc #3742 BidBlock signing hash + tx-root check by @chee-chyuan in #455
  • rpc: mev_sendBidBlock admission path, mev_getBidBlockPermission, admin_setBidBlockPermission, BidBlockEnabled exposed via mev_params; geth's -38007/-38008 error codes with synchronous payload verification
  • consensus: BidBlock system-tx validation and BlockTimeUpperCheck pre-seal gate
  • miner: builder permission manager with revocation of dishonest builders; intake queue, consumer loop and build cycle with state-root verification; selection at the slot deadline
  • miner: blob-sidecar validation and blob-KZG proof verification before broadcast; double-sign gap closed on the winning BidBlock path; pre-seal cascading header checks, post-import average-gas-price floor, stale-entry eviction, vote-attestation refresh at selection
  • compatibility with go-bsc: unsigned system-tx wire format, BlobSidecar JSON shape, simBid recommit, canBeInterrupted semantics and NoInterruptLeftOver defaults
  • mev: legacy SendBid winners tagged with block MEV info; bid-simulation preemption instrumented for the thrash ratio

State-root correctness

  • evm: report direct state writes to the state hook, so the system-contract upgrade at a hardfork transition commits the correct state root (see Note 1)
  • evm: reject the coinbase address as a contract address; use the effective gas price for the system-tx check

Dependencies

  • chore(deps): bump reth to v0.1.2 by @chee-chyuan in #471

    Brings geth RPC parity (noopTracer, muxTracer, getTransactionDataAndReceipt, eth_getLogs topic-position handling, totalDifficulty on header responses, pending-block log filters rejected), --rpc.batchrequestlimit, and an h2 bump for GHSA-q83h-524g-xf6h.

RPC

  • rpc: honour --http.api/--ws.api for the BSC namespaces

Tests

  • ef-tests: BidBlock execution harness covering build/execute round-trip and the execution gate
  • miner: BidBlock broadcast timing and cross-path double-sign race coverage; test signing keys generated rather than embedded

Full Changelog: v0.1.1...v0.1.2