github XinFinOrg/XDPoSChain v3.0.0-testnet-2

pre-release2 hours ago

Testnet Only Version, don't deploy to mainnet environment

Release Notes

Changes since the previous testnet release, v3.0.0-testnet-1. For the full Prague release notes, see v3.0.0-testnet.

Important

New hard fork: TIPProportionalReward activates on testnet at block 84733000, expected around 2026-10-30 07:40 UTC at the current ~2.05 s block time. Every testnet node (masternodes and RPC nodes) must run v3.0.0-testnet-2 before block 84733000. Nodes still on v3.0.0-testnet-1 or older will compute different rewards and fork off the chain at the first reward checkpoint after activation.

Warning

No downgrade after upgrading: this release stores the fixed-reward fork under the new key tipFixedRewardBlock. Older binaries don't know that key, so they treat the fixed-reward fork as unset. Once a node has run this release, don't start an older binary on the same data directory. If you need to go back, restore a backup taken before the upgrade.

⛓ Proportional Reward Fork on Testnet (#2869, #2907)

  • Once TIPProportionalReward is active, each masternode, protector and observer is paid perNodeReward × min(sign, signSlots) / signSlots for the rewarded epoch. The unearned share is not minted.
  • TIPProportionalRewardBlock is set to 84733000 in params and in the embedded genesis/testnet.json. Testnet hasn't reached that height yet, so upgraded nodes restart on their existing data directory.
  • tipUpgradeRewardBlock is renamed to tipFixedRewardBlock. The legacy key is still accepted, so testnet keeps its fixed-reward activation at 83600000 without any migration.
  • The reward model is chosen at the paying checkpoint, but the epoch it pays is two epochs earlier. So the first checkpoint at or after 84733000 already pays an epoch from before activation using the new model.
  • The testnet fork ID now lists 84733000 as its final fork.

🛠 Config and Fork Validation

  • Built-in configs now set the Constantinople, Petersburg and Istanbul blocks explicitly. Execution is unchanged (#2777).
  • Chain configs are rejected if they skip a fork that their rules depend on (#2772), or if their XDPoS schedule doesn't satisfy 0 < gap < epoch (#2822, #2820).
  • Fork validation is added to the state transition (#2781).
  • An Amsterdam fork switch is added, with the EIP-7954 code size raise moved under it (#2756, #2757). It isn't scheduled on testnet or mainnet.

🐛 Fixes

  • traceTx stops when the caller cancels the request (#2790).
  • simulateV1 rejects overrides of owned accounts (#2812).
  • Access lists are kept when a transaction uses gasPrice (#2713).
  • Pending filter hash responses work again (#2714).
  • The datadir lock is released when node initialization fails (#2803).
  • A stale highestQC block now logs a warning instead of an error (#2808).
  • The import command opens the chain database only once (#2749), and reports a malformed block at its position (#2813).
  • The executed marker is evicted together with the state it guards (#2748).
  • Several data races are fixed in p2p, countdown, testlog and simulations (#2799, #2800, #2827, #2831).

🧹 Maintenance

  • Downloaded Go is bumped to 1.25.14, and golangci-lint to 2.15.0 (#2816, #2817).
  • Dead code is removed, including the bmt package and the MongoDB/BSON leftovers (#2798, #2805, #2806, #2814).
  • abigen v1 output is stable, and the contract bindings are regenerated (#2784, #2789).
  • Version bumped to v3.0.0-testnet-2.

Full Changelog: v3.0.0-testnet-1...v3.0.0-testnet-2

Don't miss a new XDPoSChain release

NewReleases is sending notifications on new releases.