EIP-0045: Native STARK Proof Verification Opcode - #103
Open
a-shannon wants to merge 2 commits into
Open
Conversation
Author
|
Superseded: the 159-test Poseidon1/Ext16 prototype summary no longer describes this PR. Current scope and status are in the PR body and implementation PR #1116. |
arkadianet
added a commit
to arkadianet/Aegis-USE
that referenced
this pull request
Jul 17, 2026
The Aegis bridge is the trustless verifyStark settlement design (dev-docs/sidechain/stark-settlement-design.md): an on-chain STARK proof that the posted SideChainState transition is the honest Aegis chain's, replacing committee trust entirely. With that decision made, keeping the attester federation machinery on main misrepresents the trust model of the public-facing bridge — so the committee path (S1a-S1d, red-reviewed SOUND) is retired, not evolved. It stays fully recoverable at git tag attester-bridge-final. Removed: the aegis-attest crate (k-of-n signing substrate), the S1b node attestation service (aegis-node attest.rs, --attester-key, the /aegis/v1/attest/tip route), the rotatable AttestRegistry.es contract (S1d) and its compile/validate/injection surface + tests. Kept: the peg-in deposit->mint consensus substrate (bridge-agnostic, still inert), the wallet keystore, and SideChainState.es itself — its transition-constrained shape (digest-swap defense, height/rate/endowment guards) is exactly where the verifyStark predicate plugs in, so its authority is reduced to a clearly-marked, deliberately unsatisfiable placeholder slot (sigmaProp(false); placeholder tree 284 -> 210 B, pin updated). Docs carry short retirement notes instead of scrubbed history; mainnet activation of the trustless bridge awaits upstream EIP-0045 (ergoplatform/eips#103, sigmastate-interpreter#1116).
a-shannon
force-pushed
the
eip-0045-native-stark-verifier
branch
from
July 19, 2026 19:39
ea62e50 to
777b9c2
Compare
a-shannon
force-pushed
the
eip-0045-native-stark-verifier
branch
from
July 20, 2026 16:34
777b9c2 to
f32d498
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
EIP-0045 specifies
VerifyStark(0xB9), a consensus-native ErgoScriptoperation that verifies one bounded STARK receipt in one ordinary transaction.
The rewrite replaces the original parameterized research design with a stable
four-child ABI and immutable, content-addressed verifier profiles activated by
authenticated network generations.
This PR fixes the architecture and closes the first profile's B1-B3 identity.
It does not propose network activation; B4-B8 remain open.
Stable ABI
There is no
vmType,costParams, query count, Merkle depth, script-selectedcryptographic parameter, or proof-declared work estimate.
Main design decisions
binding chain, profile, guest program, executing contract, and application
payload. When an application relies on state, replay, amount, destination,
nullifier, or aggregate-root fields, the contract must bind those fields to
the actual Ergo transaction and the guest must bind its proof to the exact
payload fields it relies on. Neither check substitutes for the other.
verifier algorithm, binary-data artifact, and transport/payload shape.
profileIdselects a vetted verifier already compiled into a node release;a profile cannot install runtime data, native code, or a dynamic plugin.
A new profile still requires an authenticated network activation. A later
zkVM or verifier revision may use a new profile ID without changing the
opcode only if it preserves every global invariant: the four-child ABI,
ErgoStatementV1, bounded direct transport, precharge order, lifecycle andquarantine, v0-v4+ fallback, exception taxonomy, and monotone costing.
Incompatible global semantics require a separate EIP or opcode.
resolved before heavy children, parsing, or cryptography. Cost is not derived
from untrusted proof or script declarations. A profile must prove equal
bounded cost across every accepted proof shape or price the worst accepted
shape; shape-dependent charging requires a different schedule and evaluation
design.
quarantined in an authenticated generation snapshot. Missing host support is
an unavailable capability, never a permissive fallback.
structurally rejecting the new opcode. v4+ completes deterministic recursive
materialization over the entire tree, including dead branches, before
evaluation can begin.
validation; bounded mempool/API concurrency, memory, queueing, and replay
controls protect validators from unpaid invalid-proof work.
First profile candidate
The initial profile targets stock RISC Zero v3.0.5 succinct receipts using
BabyBear/Ext4/Poseidon2. It accepts only the reviewed outermost shipping
controls: lifts for segment exponents 15 through 22, join, and resolve. The
allowlist is outermost-only; exact final claim equality and empty assumptions
remain mandatory.
Its current security estimate is about 95 conjectured classical bits under the
stated toy model, below 128. This is model-dependent, is not a proven lower
bound, may be materially lower under more conservative analysis, and is not an
end-to-end post-quantum-security claim.
Closed B1-B3 values:
deffb2cb231f98a348cbd166d5f1c43315661ccd8bd212099f16f238d0fe8946;profileId:23c4a123ffb33a1c8db89436fe0e7972bd8e4e289459ee5fd71be5440607d383.The exact package is embedded under
eip-0045/profile-v1/, so review of B1-B3does not depend on an unpublished external repository. Its Apache-2.0 license
and notice accompany the adapted RISC Zero material and are excluded from the
identity inputs.
The generic V1 statement format has an arithmetic payload ceiling of
2_147_483_488 = 2^31 - 1 - 159bytes. Every compiled profile must choose andenforce a separately reviewed, resource-safe limit at or below that ceiling;
the first profile remains fixed at 16,384 bytes.
Remaining activation gates
ordered positives: lifts 15-22, terminal join, explicit-root terminal
resolve, and zero-root resolve followed by terminal join, plus isolated
negatives. The unpublished foundation fixes 62 groups and 254 executions;
exact schema publication, digest binding, 254 materialization identities,
and 508 agreeing Rust/JVM results remain open;
validation update;
deterministic artifacts and archived verification results; fresh
challenge-bound shipping-prover receipts for all eleven B4 shapes without
requiring proof-byte equality; Rust/JVM differential agreement; and
independent consensus and cryptographic reviews;
before activation (without constraining received/historical block decoding),
admission controller, block/mempool/candidate/reorg integration, stress
tests, and testnet evidence.
Review focus
rules.
Implementation: ergoplatform/sigmastate-interpreter#1116