MetaInfo
Mandatory Update Required: Yes
Target Audience: all BSC Chapel testnet node operators, MEV builders and sentry operators
Procedure: simply binary replacement should be good
Schedule(Timeline): before 2026-10-29 02:30:00 AM UTC
Changelog
v0.1.3 is for BSC Chapel testnet Jenner hardfork.
Key Changes:
- BEP-702: Compliant Asset Standard: introduces CAS20, a native token standard for stablecoins and tokenized assets, implemented as stateful precompiles. Compliance controls include shared allow/blocklists, transfer policies, pausing, and separate mint, burn and seizure roles. Token creation requires separate activation by a governance-appointed administrator.
- BEP-703: Payment Lane: reserves 5% of block gas by default for eligible BNB transfers and transactions to listed payment contracts, keeping capacity available for payments during congestion. The ratio and contract list can be changed through governance.
- BEP-706: Millisecond Timestamp: exposes millisecond block time to smart contracts through precompile
0x70, supporting applications that need sub-second timing.block.timestampremains in seconds. - BEP-675 Enhancements (no hard fork required): faster BidBlock encoding/decoding over gRPC. RLP-encoded binary payloads avoid JSON parsing and hex conversion, reducing serialization overhead and payload size for large blocks and blob sidecars. Validation and builder revocation improvements include rejecting BidBlocks with a zero state root, revoking local
SendBidBlockaccess on cross-validator bad-block evidence, persisting revocations across restarts, and adding bad BidBlock and revocation metrics.
Procedure: when upgrading from v0.1.3, check the RPC changes below, then replace the binary and restart before the hard fork.
- BEP-706 RPC change: in
eth_call,eth_estimateGas,debug_traceCallandeth_simulateV1,blockOverrides.prevRandao, when supplied, must encode a millisecond remainder (0–999) as a 32-byte hex value. This check applies immediately after upgrading, even before Jenner activates.timeremains in seconds; overriding onlytimeresets the millisecond remainder to zero.
What's Changed
- chore: schedule testnet Jenner activation and update Reth dependencies to v0.1.3
- evm: CAS20 stateful precompiles (BEP-702)
- feat: add Payment Lane (BEP-703)
- feat: add the millisecond timestamp precompile at 0x70 (BEP-706)
- feat(evm): price the double-sign evidence precompile per input byte at Jenner
- feat: add the BEP-675 BidBlock gRPC service
- feat(miner): persist BidBlock revocations across restarts
- fix(mev): align gRPC defaults and preserve active revocation deadlines
- fix(miner): match go-bsc BidBlock signing hashes
- fix(miner): record the sealed hash on BidBlock import revocation
- fix(miner): make Payment Lane caching work during block production
- fix(parlia): split the vote pool and complete vote admission checks
- fix(parlia): resolve epoch checkpoints by parent hash and harden vote journal writes
- fix(block_import): bound concurrent ancestor recoveries and preserve partial progress
- fix: refine new-payload/FCU flow to avoid memory accumulation
- fix(network): route GetBlocksByRange requests to block announcers
- blobtx: improve blob storage and live-sync validation
- fix(pruner): fix pruning limits
- fix(rpc): correct CAS20 handling of state overrides
- fix: resolve in-memory parent headers for multi-block eth_simulateV1
- fix: address consensus, mining and RPC issues found during QA
- fix: align transaction tip floors and resolve finality RPC tags
- feat: add optional minimal storage mode
Full Changelog: v0.1.2...v0.1.3