Important
Deployable on decaf since 2026-11-03. Supersedes 0.6.3.17.
docker pull ghcr.io/espressosystems/espresso-network/espresso-node:0.7.0.5
Operator actions for decaf since 0.6.3.17
No operator action required.
Compare: 0.6.3.17...0.7.0.5
What's Changed
- refactor(node): share node bootstrap between init paths by @bfish713 in #4952
- Add tokio runtime metrics by @twittner in #4978
- chore(deps): update rustls to 0.23.45 for RUSTSEC-2026-0285 by @sveitser in #4984
- Add Protobuf Config module V2 APIs by @imabdulbasit in #4912
- Bind epoch in timeout certificate commitment. by @twittner in #4928
- refactor(api): abstract the API's consensus dependency by @bfish713 in #4953
- fix(orchestrator): don't require a builder URL by @bfish713 in #4989
- Trigger fetch for missing certificate2 in light client proofs by @imabdulbasit in #4985
- Remove builder and its infra by @imabdulbasit in #4939
- Downgrade pruner logs level from warn to info by @imabdulbasit in #4988
- feat(release): misc improvements from first use by @sveitser in #4982
- fix binary upgrade tests on CI :drop the builder from the base tag compose by @imabdulbasit in #4994
- add database module v2 endpoints by @imabdulbasit in #4913
- fix: smoke test tx flake by @sveitser in #4980
- Generate the v2 API code into OUT_DIR instead of committing it by @imabdulbasit in #5003
- feat(new-protocol): upgrade mechanism and V0_7 LargeBlock upgrade by @bfish713 in #4909
- Anchor catchup at the epochs we hold by @twittner in #4945
- perf: VID and commitment optimizations for the production path by @mrain in #4910
- stop re-including transactions a node already saw in a block by @imabdulbasit in #5006
- add availability module v2 endpoints by @imabdulbasit in #4926
- feat(node): light-client follower context by @bfish713 in #4954
- fix(l1): stop proposal validation waiting on a stale local L1 view by @sveitser in #5010
- fix(release): restrict tracker commands to users with write access by @sveitser in #5028
- fix(node): follower upgrade-cert type mismatch by @sveitser in #5029
- feat(process-metrics): log CPU features and SHA-256 speed at startup by @sveitser in #5027
- fix(release): remove lock, run from main by @sveitser in #5032
- Build every block of a view from the same transactions by @twittner in #5033
- remove the hotshot-events stream and its service crate by @imabdulbasit in #5018
- Remove the legacy HotShot test harness, examples and dev-only tasks by @bfish713 in #5017
- Ah/reject non epoch root state cert by @alysiahuggins in #4970
- feat(header): propose l1_head a few blocks behind the local head by @sveitser in #5013
- fix(new-protocol): size block and message limits from the chain's max block size by @sveitser in #5022
- Prove conditional progress and deadlock freedom by @twittner in #4873
- Remove the legacy -> new-protocol cutover path by @bfish713 in #5035
- Add block and fee merklized state v2 endpoints by @imabdulbasit in #4946
- feat(node): --follower-peers runs the sequencer as a light-client follower by @bfish713 in #4955
- drop slow tests that need the removed 0.5 to 0.6 cutover by @imabdulbasit in #5060
- share the reconstructed block payload behind an arc by @imabdulbasit in #5062
- test(slow-tests): drop the 0.5 -> 0.6 cutover stake-table tests by @bfish713 in #5058
- feat(bench): simple whole network benchmark on CI by @sveitser in #5059
- skip payloads and decide events on non-query nodes by @imabdulbasit in #5055
- fix(query-service): summarize waiting callbacks in fetch dedup log by @lukaszrzasik in #5063
- delete tests that only exercise pre-0.6 protocol versions by @imabdulbasit in #5048
- fix(bench): staircase improvements by @sveitser in #5067
- test(slow-tests): run the remaining slow tests on the new protocol by @bfish713 in #5064
- Add metrics for pruned height and improve logging by @imabdulbasit in #5070
- Keep vote and proposal marks to the decide floor by @twittner in #5036
- Optimize merklized state pruning query by @imabdulbasit in #5072
- Enforce monotonic views and epochs by @twittner in #5000
- Record a Cert1 that arrives behind the current view by @twittner in #5023
- return an error when the node drops a submitted transaction by @imabdulbasit in #5077
- test(new-protocol): reproduce timeout vote split at epoch boundary by @lukaszrzasik in #4962
- Fix state pruning: stop state pruning query from rescanning older rows by @imabdulbasit in #5083
- Fix build. by @twittner in #5091
- fix(query-service): keep the state pruner behind the state loop by @lukaszrzasik in #5053
- test(new-protocol): read boundary epoch from consensus state by @lukaszrzasik in #5094
- fix(new-protocol): drop upgrade votes from inadmissible epochs by @lukaszrzasik in #5009
- Consensus pruning: check consensus storage usage every 5m off the write lock by @imabdulbasit in #5096
- chore: update rustfmt by @sveitser in #5107
- chore: rust 1.97.1 -> 1.99 by @sveitser in #5106
- feat(release): show containing tag for release branch commits by @sveitser in #5105
- test(hotshot-testing): default TestDescription to protocol 0.6 by @lukaszrzasik in #5108
- fix(explorer-api): return 404/400 instead of 500 for explorer errors by @fkrell in #5103
- keep the dedup window as long as the resend ttl by @imabdulbasit in #5078
- Add protobuf V2 state signature API by @imabdulbasit in #4996
- send each transaction to the next leaders once, resend after their turn by @imabdulbasit in #5099
- restore the anchor's cert2 on restart by @imabdulbasit in #5122
- check proto formatting and backward compatibility in CI by @imabdulbasit in #5114
- test(node): light-client follower follows the chain end-to-end by @bfish713 in #4956
- fix(reward): reuse an epoch's reward result when its boundary reapplies by @bfish713 in #5043
- feat(block): keep VID dispersal size predictable by @sveitser in #5068
- perf(types): use ARMv8 SHA-256 instructions on aarch64 by @sveitser in #5123
- Add protobuf V2 submit API by @imabdulbasit in #4997
- perf: block building benchmark by @sveitser in #5130
- Add protobuf V2 explorer API by @imabdulbasit in #4998
- fix(new-protocol): carry an obtained payload in the decide by @bfish713 in #5129
- fix(new-protocol): verify and apply timeout certs once per view by @bfish713 in #4723
- Check timeout cert on a proposal following its parent by @twittner in #5131
- keep all the stake tables in the light client database by @imabdulbasit in #5132
- ci: build bench branches by @sveitser in #5134
- test(node): run the mock-version API tests on the new protocol by @bfish713 in #5045
- Hold proposals by view and commitment by @twittner in #5046
- fix(vid): bound AvidmGf2 ns_lens by the share's shard size by @bfish713 in #5115
- fix(new-protocol): check VID ns_lens and the ns table against the payload by @bfish713 in #5121
- feat: aws benchmarks by @sveitser in #5069
- Add payload hash index for
da_proposal2andvid_share2tables by @imabdulbasit in #5139 - skip reward proofs while the state loop is below the tree height by @imabdulbasit in #5140
- refactor(request-response): typed per-caller response waiters by @bfish713 in #4643
- feat(header): drop the builder commitment from the 0.7 header by @bfish713 in #4991
- light client: Reduced Info Logging by @jjeangal in #5138
- perf: aws bench bbr3, sqlite, clients, pruning by @sveitser in #5146
- sign and relay light client states off the event loop by @imabdulbasit in #5056
- run the node, light-client and reward tests at protocol 0.6 by @imabdulbasit in #5049
- Remove unnecessarily tight constraint on sqlx version by @jbearer in #5160
- [Bot] Update AGENTS.md by @github-actions[bot] in #5163
- fix(node): state loop reads pruned leaves and snapshots from peers by @lukaszrzasik in #5089
- fix(light-client-api): rebuild header proofs for pruned roots by @sveitser in #5166
- Rework and extend lean spec. by @twittner in #5118
- chore(dev-node): always run protocol 0.6 by @bfish713 in #5171
- test(query-service): run tests on a synthetic new-protocol chain by @bfish713 in #5147
- feat(node): read a snapshot by root when its header is pruned by @lukaszrzasik in #5150
- test(types): pin the legacy leaf reference tests to 0.1 by @lukaszrzasik in #5169
- fix(new-protocol): deliver external messages on arrival by @sveitser in #5173
- chore(genesis): configure decaf 0.6 -> 0.7 upgrade (voting only) by @sveitser in #5178
- [Backport release-0.7.0] keep the anchor's cert2 when garbage collecting decided views by @github-actions[bot] in #5194
- [Backport release-0.7.0] discard pooled postgres connections left inside a transaction by @github-actions[bot] in #5196
- [Backport release-0.7.0] fix(new-protocol): queue children on a missing parent instead of stubbing them by @github-actions[bot] in #5204
- [Backport release-0.7.0] write the decided cert2 only with the leaves it finalizes by @github-actions[bot] in #5209
- [Backport release-0.7.0] fix(node): skip reward proofs before reading the boundary leaf by @github-actions[bot] in #5236
- [Backport release-0.7.0] fall back to a leaf proof when a header proof hits pruned state by @github-actions[bot] in #5239
- [Backport release-0.7.0] fix(catchup): verify pre-epoch leaf chains against the genesis stake table by @github-actions[bot] in #5247
- [Backport release-0.7.0] bound namespace proof range fetches with
FETCH_TIMEOUTby @github-actions[bot] in #5207 - [Backport release-0.7.0] fix(query-service): fetch VID common for leaves backfilled without it by @github-actions[bot] in #5230
- [Backport release-0.7.0] tolerate a pruned epoch boundary leaf when persisting reward proofs by @github-actions[bot] in #5257
- [Backport release-0.7.0] fetch pruned leaves in the state loop through the light client by @github-actions[bot] in #5262
- [Backport release-0.7.0] register a validator with a reused schnorr key as unauthenticated by @github-actions[bot] in #5264
- [Backport release-0.7.0] keep the light client database under the node storage path by @github-actions[bot] in #5284
- [Backport release-0.7.0] fix(new-protocol): reconstruct a certified block without our own share by @github-actions[bot] in #5291
- [Backport release-0.7.0] perf(catchup): race providers, HTTP after request-response by @github-actions[bot] in #5292
- [Backport release-0.7.0] update webpki-roots: 1.0.8 -> 1.0.10 by @github-actions[bot] in #5322
- [Backport release-0.7.0] fix(deps): bump quinn-proto for RUSTSEC-2026-0338..0342 by @github-actions[bot] in #5325
- [Backport release-0.7.0] chore: fix RUSTSEC-2026-0349 by @github-actions[bot] in #5324
- [Backport release-0.7.0] update webpki-root-certs: 1.0.8 -> 1.0.10 by @github-actions[bot] in #5336
- [Backport release-0.7.0] chore(deps): bump ctutils to 0.4.5 for RUSTSEC-2026-0385 by @github-actions[bot] in #5364
- [Backport release-0.7.0] serve the light client api on every sql query node by @github-actions[bot] in #5395
- [Backport release-0.7.0] feat(node): start the state loop at a recent epoch boundary by @github-actions[bot] in #5403
Full Changelog: 0.6.3.17...0.7.0.5