Skip to content

feat(val): re-align VAL-2 checked insertion with merged leanSpec#1185 - #59

Merged
adust09 merged 1 commit into
mainfrom
feat/val2-track-upstream-1185
Jul 20, 2026
Merged

feat(val): re-align VAL-2 checked insertion with merged leanSpec#1185#59
adust09 merged 1 commit into
mainfrom
feat/val2-track-upstream-1185

Conversation

@adust09

@adust09 adust09 commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Summary

Upstream leanEthereum/leanSpec#1185 (closes #1184, merged as ae104fab) now enforces the dual-key separation the formalization found unenforced: the registry loader rejects a manifest whose attestation and proposal public keys coincide, before any secret key is decoded. This PR re-aligns the Lean model with the merged fix, as planned when addChecked was introduced in #58.

Changes

  • addChecked now mirrors the merged shape: it compares public keys instead of PRF seeds, with the Arklib-side derivation entering as the publicKeyOf parameter (the repo's crypto-as-parameter pattern).
  • addChecked_wellFormed is proved for every derivation — distinct public keys imply distinct secret keys by congruence alone, no cryptographic assumption needed.
  • New addChecked_seed_distinct preserves the OTS-reuse core of #1184: for derivations that fingerprint the master seed, an accepted entry's two keys have distinct seeds, so one slot's proposal + attestation signatures can never consume overlapping one-time-signature state.
  • Registry.lean module docstring and the catalog's VAL-2 entry drop the stale "upstream does not enforce" caveat: WellFormed is now established by construction at load time.

Verification

lake build succeeds (35 jobs), no sorry, no new axioms.

Upstream leanEthereum/leanSpec#1185 (closes #1184) now rejects a
manifest whose attestation and proposal public keys coincide, at load
time and without touching secret bytes. The model's addChecked
previously compared PRF seeds as a placeholder for the invited fix;
re-align it with the merged shape:

- addChecked now compares public keys, with the Arklib-side derivation
  entering as the publicKeyOf parameter (the repo's crypto-as-parameter
  pattern).
- addChecked_wellFormed holds for every derivation: distinct public
  keys imply distinct secret keys by congruence alone.
- addChecked_seed_distinct keeps the OTS-reuse core of #1184: for
  seed-fingerprinting derivations an accepted entry's keys have
  distinct master seeds.
- Registry.lean and catalog docstrings drop the stale 'upstream does
  not enforce' caveat: WellFormed is established by construction since
  #1185.
@adust09
adust09 merged commit 0edfae7 into main Jul 20, 2026
1 check passed
@adust09
adust09 deleted the feat/val2-track-upstream-1185 branch July 20, 2026 11:23
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.

1 participant