Releases: Irys-xyz/irys
mainnet-3.0.4
Summary
Sets hard fork activations for Aurora and Borealis hard forks.
Aurora activates on June 23, 2026 at 12:00 UTC.
Commitment transactions are how miners register their obligations to the network: staking an address, pledging storage. They are part of how the chain knows who is responsible for what.
Until now, an encoding bug made these transactions hard to construct outside our own tooling, which kept most outside developers from building them.
Aurora corrects this. It introduces V2 commitment transactions with the fixed encoding and closes off new V1 transactions, so there is one correct format going forward. With the fix in, developers can build, sign, and submit commitment transactions from any language ecosystem.
Borealis activates on June 30, 2026 at 12:00 UTC.
Today, a miner's income arrives at two addresses: transaction fees for getting data into the submit ledger go to the miner address, while block rewards go to the reward address. After Borealis, every form of reward goes to the reward address.
Borealis also adds a new commitment transaction type that lets miners set and update their reward address directly. Previously, changing it meant re-staking the address. Now it is a single transaction.
What's Changed
- fix(p2p): prevent underflow panic in gossip rate limiter timestamp math by @JesseTheRobot in #1445
Full Changelog: mainnet-3.0.2...mainnet-3.0.4
Docker
docker pull ghcr.io/irys-xyz/irys-mainnet:3.0.4
testnet-3.0.4
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)
- (p2p) Prevent underflow panic in gossip rate limiter timestamp math (#1445)
- Commitment versioning & initial SM count
- Address -> IrysAddress
- Use CommitmentTransaction .id() getter
- Change jessedebug logs from error -> debug
- Move ecosystem file to a template
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)
- (consensus) Set aurora/borealis mainnet activation times, enable testnet borealis
- Disable packing progress logs
- Disable mdbx log
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
- Update timestamp again
- Update cargo lock
- Update lockfile
Performance
- (vdf) Optimize hot loop with d...
testnet-3.0.3
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)
- Commitment versioning & initial SM count
- Address -> IrysAddress
- Use CommitmentTransaction .id() getter
- Change jessedebug logs from error -> debug
- Move ecosystem file to a template
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)
- (consensus) Set aurora/borealis mainnet activation times, enable testnet borealis
- Disable packing progress logs
- Disable mdbx log
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
- Update timestamp again
- Update cargo lock
- Update lockfile
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip Has...
mainnet-3.0.2
Summary
Mainnet 3.0.2 builds on top of the 3.0.1 release with some core fixes to chain ID validation.
Changes
What's Changed
- feat(p2p): hard-reject handshakes from a different chain_id by @JesseTheRobot in #1435
- fix(block_producer): count test block budget by height, not blocks produced by @JesseTheRobot in #1436
- docs(block_producer): correct test-budget mechanism narrative by @JesseTheRobot in #1438
- feat(p2p): evict peers on chain_id (network) mismatch handshake rejection by @JesseTheRobot in #1437
- docs: route hotfixes through the release line, not master-first by @JesseTheRobot in #1440
- feat: release 3.0.2 by @JesseTheRobot in #1441
Full Changelog: mainnet-3.0.1...mainnet-3.0.2
Docker
docker pull ghcr.io/irys-xyz/irys-mainnet:3.0.2
testnet-3.0.2
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)
- Commitment versioning & initial SM count
- Address -> IrysAddress
- Use CommitmentTransaction .id() getter
- Change jessedebug logs from error -> debug
- Move ecosystem file to a template
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)
- Disable packing progress logs
- Disable mdbx log
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
- Update timestamp again
- Update cargo lock
- Update lockfile
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip HashMap on validation reconstruct path (#1418)
REVERTME
- Genesis commitment nonsense...
mainnet-3.0.1
Summary
Changes
Bug Fixes
- (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)
Documentation
- 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)
Features
- 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)
Miscellaneous
- 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
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip HashMap on validation reconstruct path (#1418)
Refactoring
- 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)
Reverts
- Disable for now
Testing
Docker
docker pull ghcr.io/irys-xyz/irys-mainnet:3.0.1
testnet-3.0.1
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)
- Commitment versioning & initial SM count
- Address -> IrysAddress
- Use CommitmentTransaction .id() getter
- Change jessedebug logs from error -> debug
- Move ecosystem file to a template
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)
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)
- Disable packing progress logs
- Disable mdbx log
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
- Update timestamp again
- Update cargo lock
- Update lockfile
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip HashMap on validation reconstruct path (#1418)
REVERTME
- Genesis commitment nonsense
- Don't validate genesis blocks on testnet
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 Chunk...
testnet-3.0.0
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)
- Commitment versioning & initial SM count
- Address -> IrysAddress
- Use CommitmentTransaction .id() getter
- Change jessedebug logs from error -> debug
- Move ecosystem file to a template
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)
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/
- Disable packing progress logs
- Disable mdbx log
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
- Update timestamp again
- Update cargo lock
- Update lockfile
Performance
- (vdf) Optimize hot loop with direct compress256 and copy elimination (#1214)
- (efficient-sampling) Skip HashMap on validation reconstruct path (#1418)
REVERTME
- Genesis commitment nonsense
- Don't validate genesis blocks on testnet
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 r...
mainnet-0.1.3
What's Changed
- feat: return none when data chunk not found, propagate err otherwise by @DanMacDonald in #1070
- fix: rationalise spans by @glottologist in #1072
- feat: remove gossip fallbacks for older nodes by @antouhou in #1073
- fix: add failsafe notify_one to pipeline log by @JesseTheRobot in #1078
- style(logs): change high volume cache service logs to trace by @JesseTheRobot in #1080
Full Changelog: mainnet-0.1.2...mainnet-0.1.3
mainnet-0.1.2
What's Changed
- fix: enhance errors not to lose information by @glottologist in #1014
- fix(block_validaton): add additional cache data root log by @glottologist in #1023
- feat: cuda refinement by @JesseTheRobot in #876
- feat: do not use expired ingress proofs by @antouhou in #1007
- feat: remove CacheEvictionStrategy by @JesseTheRobot in #1027
- fix(actors): enhance logging to provide more specific detail by @glottologist in #1026
- fix(api-server): integration test for supply endpoint by @glottologist in #1025
- feat: make cache service prune expired ingress proofs from the cache by @antouhou in #1024
- feat: update reth by @roberts-pumpurs in #1028
- fix: commitment cumulative fee check by @JesseTheRobot in #1033
- feat: introduce irys hardforks by @roberts-pumpurs in #1030
- fix: add genesis_timestamp == 0 guard in InitState by @JesseTheRobot in #1041
- feat: chunk pruning by @antouhou in #1036
- fix(domain): reduce memory footprint during block index load by @glottologist in #1035
- fix(mempool): add priority based eviction for pending chunk cache by @glottologist in #1038
- fix(mempool): remove permanent blacklisting for unknown anchor tx by @glottologist in #1039
- fix(block prod): oracle price update has tolerance to be accepted by @roberts-pumpurs in #1046
- fix(api): align api names and serialisation by @glottologist in #1029
- fix: convert unpledge partition_hash type to H256 by @JesseTheRobot in #1049
- feat: atomic cache updates by @antouhou in #1047
- fix(shutdown): add global 30s timeout for orderly shutdown by @glottologist in #1044
- refactor: block_pool will forward txs to block discovery by @roberts-pumpurs in #1037
- feat: custom address by @JesseTheRobot in #1052
- fix(types/canonical): condense tests by @glottologist in #1050
- feat: only generate ingress proofs for confirmed data_size by @DanMacDonald in #1054
- fix: unstake ordering properly validated by @roberts-pumpurs in #1051
- fix(data_sync/tests): fix docker cluster used for data sync tests by @glottologist in #1053
- fix: size cache poisoning and tx offset validation by @glottologist in #1045
- docs: update mainnet config, add a parser test by @JesseTheRobot in #1056
- chore: add over capacity warning to cache service by @JesseTheRobot in #1060
- ci(docker): Add release file and workflow by @glottologist in #1061
- chore(ci): fix release docker workflow by @JesseTheRobot in #1062
- ci(docker): build binary inside the docker context by @glottologist in #1063
- docs: Update mainnet docs and config template by @JesseTheRobot in #1058
- fix: add packing backlog task, don't debug format generate_full_chunk errors by @JesseTheRobot in #1064
- feat: improve error handling around invalid block migration by @DanMacDonald in #1067
- feat: move handshake and sync request into the gossip server by @antouhou in #1066
- feat: index info fallback by @antouhou in #1068
Full Changelog: mainnet-0.1.1...mainnet-0.1.2