testnet-4.0.0
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
Changes
Bug Fixes
- (config) Enable config wide defaults for ip (#1003)
- (mempool) Add additional logging to silent tx rejections/skips (#1011)
- (merkle) Align naming (#1005)
- (mempool) Correct naming (#1013)
- Submodule database size (#1015)
- Make reward curve operations genesis time relative (#1017)
- Extend timeout for reth RPC proxy
- (api-server) Add balance endpoint (#1019)
- (api-server) Add total supply endpoint (#1020)
- (mempool) Monitor mempool handle for panics (#1008)
- Skip commitment anchor validation on epoch blocks (#1021)
- Build_current_commitment_snapshot_from_index uses block tree start (#1022)
- Enhance errors not to lose information (#1014)
- (block_validaton) Add additional cache data root log (#1023)
- (actors) Enhance logging to provide more specific detail (#1026)
- (api-server) Integration test for supply endpoint (#1025)
- Commitment cumulative fee check (#1033)
- Add genesis_timestamp == 0 guard in InitState (#1041)
- (domain) Reduce memory footprint during block index load (#1035)
- (mempool) Add priority based eviction for pending chunk cache (#1038)
- (mempool) Remove permanent blacklisting for unknown anchor tx (#1039)
- (block prod) Oracle price update has tolerance to be accepted (#1046)
- (api) Align api names and serialisation (#1029)
- Convert unpledge partition_hash type to H256 (#1049)
- (shutdown) Add global 30s timeout for orderly shutdown (#1044)
- (types/canonical) Condense tests (#1050)
- Unstake ordering properly validated (#1051)
- (data_sync/tests) Fix docker cluster used for data sync tests (#1053)
- Size cache poisoning and tx offset validation (#1045)
- Add packing backlog task, don't debug format generate_full_chunk errors (#1064)
- Rationalise spans (#1072)
- Add failsafe notify_one to pipeline log (#1078)
- (peer) Additional observability (#1082)
- (logging) Ensure telemetry flush on all shutdown paths (#1077)
- (flaky_tests) Fix race condition on promotion (#1087)
- (supply) Refactor supply calculation to use whole chain (#1090)
- (obs) Add block timestamps to logs (#1108)
- (docker) Added reduced release image and scripts for cluster (#1074)
- Make valid ingress proof anchor blockhash range inclusive (#1125)
- Duplicate ingress proof signers (#1128)
- Mempool performs a dedup on ingress proofs (#1131)
- All block transactions stored in the block tree for migration (#1122)
- Replace rug/gmp-mpfr-sys with pure-Rust num-bigfloat (#1135)
- Watch individual c_src files in irys-c build script (#1140)
- Remove project-level linker config
- Peer id and health check naming consistency (#1146)
- (logging) Use a self hosted stack for monitoring instead of Axiom (#1105)
- Ask the source of the header for the block body first (#1152)
- (tempo) Add sensible tempo limits (#1160)
- (tracing) Add missing spans (#1161)
- (observability) Resolve Tempo span drops and local-blocks WAL loop (#1168)
- Flaky tests (#1171)
- Update cargo.lock
- Exclude confirmed txs from submit selection (#1224)
- Avoid block_discovery panic after block validation rejection (#1235)
- (ci) Replace envsubst with node for prompt templating (#1238)
- Ring recompilation (#1252)
- Unify edition to 2024 via workspace inheritance (#1261)
- Devnet fixes (#1253)
- (oracle) Add the json feature in for bundler (#1385)
- Promotion candidate pruning (#1387)
- (ci) Cargo-llvm-cov install (#1379)
- (build) Pass git metadata via env vars for Docker builds (#1386)
- (storage) Map OneYear/ThirtyDay ledgers to storage modules (#1406)
- (chunk-ingress, p2p) Divergence post-mortem fixes for overload cascades (#1394)
- Block pool race (#1417)
- (p2p) Break body-pull circuit-breaker cascade (#1412)
- Small metrics followup for #1412
- Validation (#1425)
- (ci) Drop literal expression from docker-setup input description (#1427)
- (release) Disable git-cliff GitHub remote fetch (panics on flaky API) (#1428)
- CI flakes and irys-reth test memory cap (#1430)
- (block_producer) Count test block budget by height, not blocks produced (#1436)
- Backport CI hardening and tooling fixes from gateway (#1444)
- (p2p) Prevent underflow panic in gossip rate limiter timestamp math (#1445)
- Clock drift/monotonic timers (#1402)
- Align genesis cascade activation with the epoch-layer predicate (#1448)
- (vdf) Limit run-ahead via reset-seed confirmation gate (#1449)
- (multiversion-tests) Clamp data tx prefix_size to data_size (#1454)
- (block-producer) Reject sub-difficulty solutions before production (#1452)
- (vdf) Re-anchor VDF on network-partition recovery (#1457)
- (consensus) Prevent Submit-expiry vs promotion double-pay + ingress-proof cache delete (#1456)
Documentation
- Add a deployment guide for mainnet beta nodes (#1012)
- Update mainnet beta deployment guide to include trusted peers
- Update auto stake and pledge section
- Update deployment guide for full node (non mining) configuration
- PoW finality doc
- Update mainnet config, add a parser test (#1056)
- Update mainnet docs and config template (#1058)
- Adding a authoring hardforks doc
- Update TOC
- Update README.md
- Add docs for EVM tx gas limits (#1107)
- Add note to .cargo/config.toml
- Enrich version enum doc comments (#1237)
- (block_producer) Correct test-budget mechanism narrative (#1438)
- Route hotfixes through the release line, not master-first (#1440)
Features
- Make axiom OTLP config optional (#1006)
- Use
is_rightmost_chunkto confirmdata_sizeinCachedDataRoots(#991) - Add custom Compact impl for Base64 (#1009)
- Add hard coded mainnet config values (#995)
- Derive block rewards from consensus block_time (#1018)
- Cuda refinement (#876)
- Do not use expired ingress proofs (#1007)
- Remove CacheEvictionStrategy (#1027)
- Make cache service prune expired ingress proofs from the cache (#1024)
- Update reth (#1028)
- Introduce irys hardforks (#1030)
- Chunk pruning (#1036)
- Atomic cache updates (#1047)
- Custom address (#1052)
- Only generate ingress proofs for confirmed data_size (#1054)
- Improve error handling around invalid block migration (#1067)
- Move handshake and sync request into the gossip server (#1066)
- Index info fallback (#1068)
- Return none when data chunk not found, propagate err otherwise (#1070)
- Remove gossip fallbacks for older nodes (#1073)
- Tweak commitment_tx_signature_signing_serialization (#1081)
- More granular handshakes (#1084)
- Add a CommitmentTransactionV2 (#1085)
- Nextest measurement wrapper (#1091)
- Add failure tracking & test filtering to xtask test (#1093)
- Block bodies (#1057)
- Add hardfork for deprecating V1 commitment transactions (#1088)
- Commitment type v2 (#1095)
- Add sane config defaults for parts of the NodeConfig (#1100)
- Add extra defaults
- Return none instead of error when reading a chunk that hasn't been written (#1102)
- Enable aurora & tweak CommitmentPriceInfo (#1103)
- Decouple testnet and testing config (#1109)
- Status endpoint (#1099)
- Peer ids (#1110)
- Move peer_id into the db (#1112)
- Align testnet consensus config, add recall range invariant (#1116)
- Sync diagnostics (#1117)
- Consensus hash for handshakes (#1129)
- Better sync crash heuristics (#1132)
- Perf tweaks (#1133)
- Update reward address commitment type (#1115)
- Migrate BlockIndex to MDBX and add term ledger validation (#1104)
- Sealed blocks (#1097)
- Set expected_genesis_hash at runtime on genesis node (#1139)
- Add self-contained Docker cluster tooling (#1134)
- (p2p) Add circuit breaker to p2p client (#963)
- Changed peer id location (#1138)
- Better block cache for block bodies (#1145)
- Chunk upload throughput and observability improvements (#1148)
- Add cross-node request lifecycle tracing and observability improvements (#1156)
- Simplify the client (#1153)
- Add custom URL support to IrysApiClient (#1165)
- Move integration tests (#1174)
- Improved nextest monitoring (#1172)
- Version bump of crates/chain/Cargo.toml to 3.0.0
- Gossip wire types (#1184)
- (bench) Add criterion benchmarks and CI workflow (#1221)
- Run mode (#1228)
- Check database schema version on startup (#1223)
- Perm ledger expiry for testnet (#1201)
- (multiversion-tests) Add cross-version integration test harness (#1207)
- VDF throttling (#1239)
- Sccache ci migration (#1229)
- Build versioning (#1260)
- Cascade hardfork — term ledgers (OneYear/ThirtyDay) and height-aware pricing (#1166)
- Genesis CLI (#1380)
- Wait_for_evm_block in mine_block and wait_for_block_at_height (#1391)
- Gate ingress proofs on submit ledger confirmation (#1390)
- Bundle_format -> metadata_format (#1401)
- (metrics) Expose MDBX metrics via Reth's /metrics endpoint (#1409)
- Vdf progress (#1411)
- VDF stall detection logic tweaks (#1413)
- Preval perf (#1414)
- (snapshot) Portable chain-state import/export tooling (#1419)
- More debug-utils
- Improve coverage gh-pages
- Obs follow-ups and Reth metrics bind hardening (#1426)
- Release process (#1393)
- Move from deployment/ to release/
- Improved multiversion tests (#1404)
- Per-version frozen release branches + tag-trust rebuild provenance (#1434)
- (p2p) Hard-reject handshakes from a different chain_id (#1435)
- (p2p) Evict peers on chain_id (network) mismatch handshake rejection (#1437)
- Release 3.0.2 (#1441)
- (chain) VDF throughput check at node startup (#1424)
- Network partition recovery: deep reorg support + integration tests (#1405)
- (release) Gate releases on green CI for the release/.x merge-base (#1443)
- (consensus) Set aurora/borealis mainnet activation times, enable testnet borealis
- (consensus) Add prefix_hash to data tx and fold into ledger tx_root (#1450)
- (consensus) Reject zero-size, oversized-prefix, and foreign-chain-id transactions (#1451)
- (backport) Pin genesis EVM state root (genesis_evm_state) + init-state fail-fast guard (#1455)
- (ledgers) Anchor slot expiry to last write (Cascade-gated) (#1458)
- Add handshake-peer-info to the handshake process
- Release 4.0.0
- (reth-bridge) Airdrop peer-set balances in genesis EVM state dump
Miscellaneous
- Tweak submodule paths
- Add extra info to the
DoNotRegenerateerror - Update mainnet config
- Add total cost logging for automatic stake & pledge
- Add over capacity warning to cache service (#1060)
- (docker) Add release file and workflow (#1061)
- (ci) Fix release docker workflow (#1062)
- (docker) Build binary inside the docker context (#1063)
- Gitignore ecosystem.config.js
- Add docker-in-docker for devcontainer
- Claude.md and a skill for writing integration tests (#1141)
- Add .worktrees to .gitignore
- Add gitignore for .claude/local, add CLAUDE.md instruction to read it (#1158)
- Sync cleanup (#1157)
- Rust version update (#1164)
- Update reth to 1.11.1 (#1162)
- (design) Extract design documents (#1212)
- (CI) Don't cancel in progress jobs on master
- (consensus) Set testnet aurora activation timestamp
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip HashMap on validation reconstruct path (#1418)
Refactoring
- Block_pool will forward txs to block discovery (#1037)
- Only staked nodes produce ingress proofs (#1118)
- Simplify block validation tracker (#1120)
- Propagate an error if block tree rejects a block (#1137)
- Block tree metadata simplification (#1143)
- Migration lifecycle simplification (#1136)
- Simplify block index - remove service layer, atomic persistence, accept SealedBlock (#1151)
- Extract ChunkIngressService from mempool (#1155)
- Simplify node startup (#1169)
- Extract non-pool responsibilities from the mempool (#1159)
- (shadow-tx) Consolidate tx creation logic onto ShadowTransaction (#1215)
- (p2p) Reduce data cloning in gossip subsystem (#1249)
- (telemetry) Remove Axiom log broadcasting (#1420)
- (block_tree) Compute reorg split via parent-walk LCA (#1432)
Testing
Release
- Bump irys-chain to 3.0.3
- 3.0.4
Docker
docker pull ghcr.io/irys-xyz/irys-testnet:4.0.0