Skip to content

NiPoPoW: align proof construction, length-prefixed parsing, and validation - #2461

Open
a-shannon wants to merge 34 commits into
ergoplatform:v6.0.6from
a-shannon:fix/nipopow-coordinated-hardening-v605-public
Open

NiPoPoW: align proof construction, length-prefixed parsing, and validation#2461
a-shannon wants to merge 34 commits into
ergoplatform:v6.0.6from
a-shannon:fix/nipopow-coordinated-hardening-v605-public

Conversation

@a-shannon

@a-shannon a-shannon commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Reject non-canonical interlink runs before proof construction.
  • Build and verify interlink membership against the full header extension tree and root.
  • Validate proof parameters and bound declared parser resources.
  • Version cached proof bytes for the root-binding cutover.
  • Reject non-boolean continuous mode bytes.
  • Add complete cross-runtime proof fixtures shared with sigma-rust.

Invariant

A proof is accepted only when its structural parameters are valid, its declared lengths stay within the configured resource bounds, and every disclosed interlink is authenticated by the header's full extension root.

Base and coordination

This Draft targets v6.0.5. PR #2416 carries that release branch toward master.

Companion Rust work is tracked in:

Validation

  • ergoCore/test: 138 passed, 2 ignored.
  • Focused NiPoPoW and serialization checks: 47/47.
  • Cross-runtime interoperability fixtures: 10/10.
  • UTXO and digest serializer suites: 49/49 each, with 1 existing ignored case in each suite.

Independent maintainer review and upstream CI are pending.

Additional coordinated drafts

tum231990 and others added 30 commits June 12, 2026 09:56
…-param-bounds

Validate NiPoPoW proof parameters
Reject proofs whose header chain contains invalid Autolykos PoW before bootstrap headers are applied.

Add regression coverage demonstrating that rejected proof headers are not inserted into history.
Restore the v6.0.5 node and integration-test builds under fatal unused-import warnings.
…ated-pow-levels

Validate NiPoPoW proof header PoW
…-inbound-params

Reject invalid inbound NiPoPoW parameters
…tput-matching

Preserve asset issuance with token burn requests
…buffer-limit

Bound per-peer outbound buffering
…p-connection-cleanup

Close all live connections for blacklisted IPs
@a-shannon

Copy link
Copy Markdown
Contributor Author

CI follow-up at 30501433372cce493dd6ed471357aaffdb06818e:

  • The additive commit changes only three NiPoPoW test files; production behavior is unchanged.
  • ergo-core passes on Scala 2.11, 2.12, and 2.13. The wallet matrix and complete node test job also pass.
  • The integration job passed 12/13. UtxoStateNodesSyncSpec.scala:42 observed two height-6 heads at its convergence assertion. The same integration job passed on the immediately preceding head, ab5d3c9360bdf8a61963551389cd2b14219ba081.

An integration rerun requires upstream repository permissions.

@a-shannon
a-shannon marked this pull request as ready for review August 6, 2026 22:39
@a-shannon

Copy link
Copy Markdown
Contributor Author

Review acknowledgement: many thanks to Muadib for the thorough initial security review, the reproducible test cases, and the independent re-audit of this exact head (a2d30905). The re-audit reports the prior P0/P1 findings for this surface remediated and gives this revision an APPROVE (residual nit) verdict. Formal maintainer review and applicable CI remain separate gates.

@a-shannon a-shannon changed the title NiPoPoW: align proof construction, framing, and validation NiPoPoW: align proof construction, length-prefixed parsing, and validation Aug 10, 2026
@kushti
kushti changed the base branch from v6.0.5 to v6.0.6 August 31, 2026 17:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants