Skip to content

feat(L1): validate hinted Nitro attestations - #399

Merged
leopoldjoy merged 4 commits into
mainfrom
feat/nitro-validator-c3
Aug 12, 2026
Merged

feat(L1): validate hinted Nitro attestations#399
leopoldjoy merged 4 commits into
mainfrom
feat/nitro-validator-c3

Conversation

@leopoldjoy

@leopoldjoy leopoldjoy commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

  • replace the Registry legacy NitroEnclaveVerifier immutable and two-argument ZK registration API with INitroValidator and registerSigner(bytes,bytes,bytes)
  • enforce Base freshness, 48-byte non-debug PCR0, and 65-byte uncompressed secp256k1 public-key policy after hinted validation
  • preserve proxy storage, signer/proposer behavior, TEEVerifier behavior, and the legacy verifier deployment for rollback
  • validate predeployed Registry immutables before ProxyAdmin upgrades

Deployment

  • add nitroValidator to deploy config, SystemDeploy inputs/outputs, artifacts, and development scripts
  • SystemDeploy.upgrade accepts a predeployed TEEProverRegistry implementation, validates its validator and factory immutables, and upgrades the existing proxy
  • the legacy NitroEnclaveVerifier proofSubmitter is deliberately left unchanged; existing deployments remain rollback-ready and fresh deployments must prepare it before a legacy rollback
  • checked-in nitroValidator config values remain zero until the C2 stack is deployed for each environment; populate the address before a multiproof deployment or upgrade

Testing

  • real AWS-signed hinted attestation through P384Verifier, CertManager, NitroValidator, and the Registry wrapper
  • mocked dependency-revert propagation plus real-validator integration and gas coverage
  • owner/manager authorization, freshness boundaries, PCR0/debug policy, key format and signer derivation
  • standard ProxyAdmin upgrade from a 0.5.0 Registry with owner, manager, game type, proposers, signer set, and image hash preserved
  • invalid embedded-validator rejection for prebuilt Registry upgrades
  • full suite: 1,286 passed, 0 failed, 1 skipped
  • just snapshots and just semver-lock
  • source size check: TEEProverRegistry runtime 8,298 bytes

Stack

@linear

linear Bot commented Aug 11, 2026

Copy link
Copy Markdown

CHAIN-4838

Base automatically changed from feat/nitro-validator-c2 to main August 11, 2026 23:05
@cb-heimdall

cb-heimdall commented Aug 11, 2026

Copy link
Copy Markdown
Collaborator

✅ Heimdall Review Status

Requirement Status More Info
Reviews 1/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

leopoldjoy and others added 2 commits August 12, 2026 00:09
Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
Comment thread interfaces/L1/proofs/tee/ITEEProverRegistry.sol Outdated
Comment thread scripts/deploy/SystemDeploy.s.sol Outdated
Comment thread scripts/deploy/SystemDeploy.s.sol Outdated
Comment thread scripts/deploy/SystemDeploy.s.sol Outdated
Comment thread scripts/libraries/Types.sol Outdated
Comment thread scripts/multiproof/DeployRiscZeroStack.s.sol
Comment thread src/L1/proofs/tee/TEEProverRegistry.sol Outdated
Comment thread src/L1/proofs/tee/TEEProverRegistry.sol
Comment thread test/L1/proofs/TEEProverRegistry.t.sol Outdated
Comment thread test/L1/proofs/TEEProverRegistry.t.sol Outdated
Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
@leopoldjoy
leopoldjoy requested a review from jackchuma August 12, 2026 15:24
Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
@leopoldjoy
leopoldjoy merged commit 7015f34 into main Aug 12, 2026
6 checks passed
@leopoldjoy
leopoldjoy deleted the feat/nitro-validator-c3 branch August 12, 2026 18:27
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.

4 participants