github XinFinOrg/XDPoSChain v2.9.0-testnet

pre-release3 hours ago

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 / OsakaBlock are 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.
  • TIPEpochHalving switch (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_getRewardByAccount
    • XDPoS_getConfig
    • An endpoint that returns the signing tx count for an epoch
    • eth_simulateV1 (with MaxUsedGas)
    • eth_getStorageValues
    • debug_accountRange, debug_intermediateRoots
    • getHeaderBy* APIs
  • XDPoS_getMasternodesByNumber takes an epoch number and supports TipUpgradeReward.
  • Block and state overrides for eth_call, eth_estimateGas, eth_createAccessList and debug_traceCall.
  • Block timestamp in eth_getTransactionByHash.
  • Added support for:
    • finalized block tag
    • Decimal block numbers
    • JWT authentication
    • Custom AuthRPC endpoints (--authrpc-*)
    • Configurable HTTP/WebSocket request limits, batch limits and eth_call timeout
    • Configurable WebSocket message size
    • eth_getLogs block range and address limits (rpc.rangelimit)
  • ethclient improvements: eth_simulateV1, tracing methods, BlobBaseFee, EstimateGasAt*, PeerCount and 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_traceCall and 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/devp2p in 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-blocks flag; start.sh accepts SYNC_MODE and GC_MODE.
  • Grafana Pyroscope integration; configurable influxdb interval.
  • Ledger Nano Gen5 / Ledger Flex, and full 32-bit chain ID support for Trezor.
  • abigen v2.
  • puppeth supports 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 Sync deadlock, 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-head rewinding too far; dangling/orphan blocks are cleaned up on SetHead.
  • 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 personal namespace.
  • Removed the deprecated shh and 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-crypto v0.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-test and 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
    • XDCValidator contract
    • 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

Don't miss a new XDPoSChain release

NewReleases is sending notifications on new releases.