• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 26136038453
67%

Build:
DEFAULT BRANCH: develop
Ran 20 May 2026 02:36AM UTC
Jobs 1
Files 1070
Run time 3min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 May 2026 06:54AM UTC coverage: 67.012% (+0.1%) from 66.898%
26136038453

push

github

web-flow
feat(consensus): Starfish hardening (#11529)

# Description of change

Bounds the size of a starfish block header to `O(committee_size)` and
adds the supporting machinery needed to keep that bound workable in
steady state. All new behavior is gated behind the
`consensus_block_restrictions` protocol-config feature flag, enabled at
protocol version 27 for Testnet/Devnet; Mainnet is unaffected.

A pre-hardening block header carried three open-ended collections that
could grow over time: acknowledgments, commit votes, and ancestor refs
through GC. The hardening makes each of them bounded both at the
verifier (rejecting non-conforming blocks) and at the proposer (capping
what it emits), and adds two pieces of state hygiene so the proposer
never accumulates more than what it is allowed to send.

### Constant-size block header

- **#11382 — bound acknowledgments and verify ancestor/ack round-gap.**
Caps acknowledgments per block at `2 * committee_size`. Verifies that
every acknowledgment and every non-own ancestor falls in the window
`[block.round - gc_depth, block.round)`, with `block_verifier` rejecting
`TooManyAcknowledgments`, `InvalidAcknowledgmentRound`,
`AcknowledgmentRoundTooOld`, `AncestorRoundTooOld`.
- **#11383 — bound block commit votes.** Caps commit votes per block at
`committee_size` (was a hardcoded 100). `take_commit_votes` and
`block_verifier` are switched to the new
`ProtocolConfig::max_commit_votes_per_block(committee_size)`; over-quota
blocks fail verification with `TooManyCommitVotes`.

Together these two pin every variable-size field on the header to
`O(committee_size)`. Concretely, the optimistic steady-state size
(`references = N` with full ancestor/ack overlap, `commit_votes = 1`) is
**unchanged** by this PR — about **2.4 KB at N=60 and 3.9 KB at N=100**
(`≈ 37·N + 186` bytes) — while the worst case is now **bounded** at
roughly **9 KB and 15 KB** respectively (`≈ 147·N + 150` bytes: up to
`3N` `BlockRef`s of 37 B in the merged ance... (continued)

829 of 834 new or added lines in 12 files covered. (99.4%)

35 existing lines in 10 files now uncovered.

151502 of 226081 relevant lines covered (67.01%)

458624.82 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
91.17
1.53% crates/iota-protocol-config/src/lib.rs
2
96.51
0.06% crates/starfish/core/src/dag_state.rs

Coverage Regressions

Lines Coverage ∆ File
8
93.91
-0.32% crates/starfish/core/src/authority_service.rs
7
91.17
1.53% crates/iota-protocol-config/src/lib.rs
7
93.54
-0.48% crates/starfish/core/src/transactions_synchronizer.rs
5
74.67
0.29% crates/iota-network/src/randomness/mod.rs
2
89.35
0.0% crates/iota-core/src/connection_monitor.rs
2
91.83
-0.1% crates/starfish/core/src/header_synchronizer.rs
1
86.11
-2.78% crates/iota-cluster-test/src/test_case/native_transfer_test.rs
1
80.25
-0.11% crates/iota-core/src/authority_server.rs
1
98.62
-0.28% crates/iota-core/src/signature_verifier.rs
1
79.44
-0.12% crates/iota-types/src/crypto.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 26136038453.1 20 May 2026 02:36AM UTC 1070
67.01
GitHub Action Run
Source Files on build 26136038453
  • Tree
  • List 1070
  • Changed 27
  • Source Changed 13
  • Coverage Changed 26
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26136038453
  • 516d9f6b on github
  • Prev Build on develop (#26070932645)
  • Next Build on develop (#26200321126)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc