Testnet Only Version, don't deploy to mainnet environment
Release Notes
Changes compared with the latest mainnet release v2.7.1.
๐ Highlights
Main Features enable after 83,600,000 on testnet
- Reward Automation (Reward 2.0)
- Dynamic Gas Limit Change
- Consensus Penalty V2
- Gas2500x tiered gas price
Other highlights
- Support Fast Sync (10x faster)
- New p2p discovery stack: discv4 with ENR (EIP-868), discv5, and DNS discovery (EIP-1459)
- New eth sub-protocols: xdc/164 handshake with fork ID (EIP-2364) and xdc/165 transaction fetcher (EIP-2464)
- Prague / Osaka EIPs implemented, including EIP-7702 set code transactions. They are not scheduled on testnet in this release (
PragueBlock/OsakaBlockare unset).
โจ New Features
Blockchain & Consensus
- Reward 2.0: reward automation, fixed reward per node (per capita), float reward parameters and updated reward parameters.
- Reward files are saved during Seal for the block miner.
- Consensus Penalty V2 (consecutive penalty upgrade).
- Dynamic gas limit, with a configurable miner gas limit.
- Gas2500x fork:
- Underpriced transactions are dropped from the pool when a gas tier fork activates.
- Raised the gas tip ceiling, the default max gas price oracle price and
RPCTxFeeCap. - The default max fee cap is worked out at the next block.
- Total minted rewards are recorded on-chain (smart contract), with an API.
- Added the SyncInfo pool.
TIPEpochHalvingswitch (not scheduled).- Chain config is now centralized, with stricter genesis startup checks and a CLI flag to handle config mismatches.
EVM & Protocol (EIPs)
- EIP-7702 set code transactions (Prague), including txpool protection.
- EIP-2935 (historical block hashes), EIP-7623 (higher calldata cost).
- EIP-7825 (tx gas limit cap), EIP-7823 / EIP-7883 (MODEXP bounds and gas cost), EIP-7939 (CLZ opcode), EIP-7934 (RLP block size limit), EIP-8024, EIP-7954 (larger max contract size).
- EIP-7910
eth_config/XDPoS_getConfig. - Osaka fork groundwork.
JSON-RPC Enhancements
- Added new RPC APIs:
XDPoS_getRewardByAccountXDPoS_getConfig- An endpoint that returns the signing tx count for an epoch
eth_simulateV1(withMaxUsedGas)eth_getStorageValuesdebug_accountRange,debug_intermediateRootsgetHeaderBy*APIs
XDPoS_getMasternodesByNumbertakes an epoch number and supports TipUpgradeReward.- Block and state overrides for
eth_call,eth_estimateGas,eth_createAccessListanddebug_traceCall. - Block timestamp in
eth_getTransactionByHash. - Added support for:
finalizedblock tag- Decimal block numbers
- JWT authentication
- Custom AuthRPC endpoints (
--authrpc-*) - Configurable HTTP/WebSocket request limits, batch limits and
eth_calltimeout - Configurable WebSocket message size
eth_getLogsblock range and address limits (rpc.rangelimit)
ethclientimprovements:eth_simulateV1, tracing methods,BlobBaseFee,EstimateGasAt*,PeerCountand more.
Tracing
- Live chain tracing with hooks, and tx-level tracer hooks.
- Native tracers: callTracer, prestateTracer (with diffMode), flatCallTracer (parity style), 4byte and multiplexing tracer.
- The goja JS tracer replaces duktape.
debug_traceCalland tracing now support XDC special (non-EVM) transactions.
Networking (P2P)
- New p2p node representation (enode / ENR), with better IPv6 support and DNS names in enode URLs.
- Discovery v4 with ENR (EIP-868), discovery v5 (v5.1 wire protocol) and DNS discovery (EIP-1459).
- New dial scheduler, server-side connection retry limit, and peer whitelist/blacklist.
- Fork ID is announced over ENR, and eth/62 and eth/63 are removed.
- xdc/164 handshake with fork ID (EIP-2364) and xdc/165 transaction fetcher (EIP-2464).
- Sanity checks for unbounded and malformed propagated blocks.
- Metrics for bandwidth, throughput and discv5 traffic.
- Brought
cmd/devp2pin line with upstream (crawler, discv4 UDP reachability check, protocol test suite).
Node & Tooling
- Sync status logger and structured V2 consensus config log at startup.
delete-all-bad-blocksflag;start.shacceptsSYNC_MODEandGC_MODE.- Grafana Pyroscope integration; configurable influxdb interval.
- Ledger Nano Gen5 / Ledger Flex, and full 32-bit chain ID support for Trezor.
- abigen v2.
puppethsupports the v3 private chain generator.
โก Performance Improvements
- Big optimizations to Trie storage and synchronization:
- Snap sync changes ported, with faster snapshot generation
- Read caching layer
- More memory for holding state trie
- Fewer memory allocations
- Better range proof generation
- Faster iterators and trie commits
- State now uses uint256, plus a state journal wrapper and a global hasher pool.
- Faster EVM interpreter loop and PUSH opcodes; configurable jumpdest analysis cache.
- Transaction pool: read locks, fewer allocations, faster pending tx ordering.
- Faster blockchain import and downloader.
- Better RPC subscription and notification throughput; logs are fetched asynchronously.
- Shorter test runs across the project.
๐ Stability & Bug Fixes
Consensus & Rewards
- Reward standby nodes are taken from the historical epoch snapshot.
- Candidate status uses the consensus stake ordering.
- Missing V2 gap snapshots are repaired at startup; XDPoS snapshots are cleaned up on
SetHead. - Fixed staking loss for an epoch when a checkpoint lands during sync.
- Fixed the signingTX mempool flood; signer txs use the pending nonce.
- Timeouts are verified from epochInfo.
- SyncInfo is no longer rejected when the sender has no TC yet.
- Fixed several reward distribution edge cases, including a zero value in recorded minted tokens.
Networking & Sync
- Fixed downloader race conditions, sync falling behind, and lagging heads being treated as stalling peers.
- Imports are split at gaps; the common ancestor search is capped at the local head.
- Fixed the peer unregister flood and the broadcaster stopping after send errors.
- Removed the per-peer dual-connection mechanism.
- Fixed goroutine leaks and deadlocks across p2p and discovery.
- Better HTTP/WebSocket timeout handling.
Transaction Pool & Miner
- Fixed a
Syncdeadlock, a journal data race and head-event subscription leaks. - Added DoS defenses and EIP-2681 checks.
- Fixed the global MinGasPrice override and the gasPrice override at checkpoints.
- Fixed a timer handshake deadlock in the miner worker.
RPC
- Fixed many JSON-RPC edge cases and compatibility issues (Prague encoding, legacy chain ID, yParity).
- Clearer error reporting.
- More stable WebSocket connections.
- Fixed batch request handling.
- Better client shutdown synchronization.
Core & Tracing
- Fixed
--set-headrewinding too far; dangling/orphan blocks are cleaned up onSetHead. - Fixed chain indexer reorg issues and delivery of removed reorg logs.
- Fixed invalid Merkle root generation and genesis configuration problems.
- Fixed nonce errors, null entries and dropped frames in block traces.
- Stopped negative fees during RPC calls.
๐ Security
- JWT authentication for authenticated RPC endpoints; the engine API is not exposed on unauthenticated endpoints.
- Deprecated and insecure APIs are off by default.
- Removed the legacy
personalnamespace. - Removed the deprecated
shhand swarm APIs. - Removed the public XDCx / XDCxlending APIs.
- Configurable request and method-name limits to reduce abuse.
- Non-EIP-155 replay-protected transactions are rejected by default.
๐งน Maintenance
- Updated cryptography libraries (
gnark-cryptov0.18.1, bn256 synced from geth). - Updated bootnodes and configs for Mainnet, Testnet and Devnet.
- Refactored many internal packages.
- Removed deprecated components:
- LES/light client support
- Faucet
- Legacy database components and XDCx mongodb support
- Ethash PoW remnants
- Slave mode and static/trusted node list files
- Better CLI usability and shell auto-completion.
- Added
make quick-testand more developer tooling. - Build upgraded to Go 1.25.12, golangci-lint v2.12.2 and execution-spec-tests v5.1.0.
- Updated CI/CD pipelines and deployment workflows.
๐ Documentation
- Added documentation for:
- JSON-RPC APIs
XDCValidatorcontract- Tiered gas price in Solidity
- Improved developer documentation.
- Updated outdated links and examples.
๐ Upstream Synchronization
This release brings in a large set of upstream Ethereum changes across:
- RPC
- Trie
- State database
- Downloader
- P2P networking and discovery
- Transaction pool
- EVM
- Tracing
- EthClient
- Accounts & ABI
- Cryptography
- Node networking
- Performance optimizations
- Code quality and linting
๐ Overall
This release focuses on:
- Reward automation, penalty V2, dynamic gas limit and the Gas2500x tier
- Better node stability
- Better RPC compatibility
- Faster sync
- Lower memory use
- Better tracing and debugging
- A modern p2p discovery and networking stack
- Better security defaults
- Up-to-date developer tooling
- Continued alignment with upstream Ethereum
Full Changelog: v2.7.1...v2.9.0-testnet