Testnet Only Version, don't deploy to mainnet environment
Release Notes
Changes compared with the previous testnet release v2.9.3-testnet. For the full list of changes since mainnet v2.7.1, see the v2.9.1-testnet, v2.9.2-testnet and v2.9.3-testnet release notes.
Important
Hard fork: Prague activates on testnet at block 87633000. Every testnet node, masternodes and RPC nodes alike, must run v3.0.0-testnet before that block. A node still on v2.9.x will fork off the chain at the activation block.
๐ Highlights
- The Prague fork is enabled on testnet at block
87633000. - From Prague, non-zero calldata bytes cost 16 gas (EIP-2028) instead of 68. This lets the canonical Multicall3 creation transaction fit in its fixed 1,000,000 gas limit (#2706).
- EIP-7702 set-code transactions now reject
gasPricecombined withauthorizationList, so a delegation is no longer silently dropped.
โ Prague Fork on Testnet (#2811)
PragueBlockis set to87633000inparamsand in the embeddedgenesis/testnet.json. The other testnet fork blocks and the XDPoS V2 config are the same as in v2.9.3-testnet.- From the activation block, testnet nodes enable the Prague rules that already ship in the code:
- EIP-7702 set-code transactions (type
0x04) are accepted by the txpool and the EVM. - The EIP-7623 calldata floor cost.
- The EIP-2537 BLS12-381 precompiles (
0x0bโ0x11). - EIP-2935 parent block hashes are stored in the history contract.
- Multicall3 is installed at
0xcA11bde05977b3631167028862bE2a173976CA11.
- EIP-7702 set-code transactions (type
- The fork-order check now places Prague and Osaka after
DynamicGasLimitBlock,TIPUpgradeRewardBlockandTIPUpgradePenaltyBlock(all83600000). This matches the testnet block numbers. - The testnet fork ID now lists
87633000as its final fork.
๐ Stability & Bug Fixes
Gas & Calldata Pricing (#2710)
- The intrinsic gas now charges the EIP-2028 price of 16 gas per non-zero calldata byte from Prague. Blocks before Prague keep 68 gas (
params.TxDataNonZeroGasFrontier), so historical blocks are processed exactly as before. - The EIP-3860 initcode word cost is still gated on EIP-1559.
- The simulated backend's
EstimateGasnow raises the gas limit when a transaction is below the EIP-7623 data floor, just as it already does for the intrinsic gas. Before, it gave up instead.
RPC: EIP-7702 Fee Fields (#2716, #2717)
eth_sendTransaction,eth_signTransactionandeth_fillTransactionnow returnboth gasPrice and authorizationList specified. Before, they built a legacy transaction without the authorization list and reported success. Ported from go-ethereum ethereum#35320.eth_simulateV1rejects the same combination. It also rejects anauthorizationListon a simulated header without a base fee (authorizationList requires a base fee). Before, the returned block held a legacy transaction while the state root reflected the set-code execution.eth_call,debug_traceCall,eth_estimateGasandeth_createAccessListare unchanged.
Chain Rewind (#2707)
DeleteDanglingHashesnow returns iterator errors. Before, a header sweep that the database aborted on an I/O error looked complete, soSetHeadcould leave orphaned headers, TD entries and canonical markers above the new head. The existingFailed to rewind blockcrit log now stops the node instead (closes #2604).
๐งน Maintenance
- Version bumped to
v3.0.0-testnet. - CI now includes the uppercase
XDCxpackages when it selects tests (#2712). - New tests for the Prague intrinsic gas, the data-floor gas estimation, the EIP-7702 fee-field checks and the aborted dangling-hash sweep.
Full Changelog: v2.9.3-testnet...v3.0.0-testnet