fix!: bind wallet+payload into typehash, store signed nonce, write renewals #1

Merged
peersky merged 1 commit from fix/record-lifecycle-typehash into main 2026-09-07 08:36:04 +00:00
Owner
  • _TYPEHASH gains address wallet and bytes32 payload; _validateRecord
    encodes them, closing register() front-run via wallet swap
  • renewRecord() routes through _setRecord and requires signed record to
    match resolved id and wallet (idMismatch/walletMismatch errors)
  • _setRecord requires record.nonce > stored nonce and persists signed
    value: renewal replay dead, deleteName bump effective, first
    registration needs nonce >= 1
  • nameToId hygiene: delete old name mapping before write; skip zero
    names so nameless records don't collide on nameToId[0]
  • Record gains bytes32 payload, stored per id, returned by resolveRecord

BREAKING CHANGE: registrar signature typehash changed; existing signing
infrastructure must re-sign with new registerName(...,address wallet,
bytes32 payload) schema and nonces starting at 1.

- _TYPEHASH gains address wallet and bytes32 payload; _validateRecord encodes them, closing register() front-run via wallet swap - renewRecord() routes through _setRecord and requires signed record to match resolved id and wallet (idMismatch/walletMismatch errors) - _setRecord requires record.nonce > stored nonce and persists signed value: renewal replay dead, deleteName bump effective, first registration needs nonce >= 1 - nameToId hygiene: delete old name mapping before write; skip zero names so nameless records don't collide on nameToId[0] - Record gains bytes32 payload, stored per id, returned by resolveRecord BREAKING CHANGE: registrar signature typehash changed; existing signing infrastructure must re-sign with new registerName(...,address wallet, bytes32 payload) schema and nonces starting at 1.
fix!: bind wallet+payload into typehash, store signed nonce, write renewals
Some checks failed
CI / test (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
c6525fcd57
- _TYPEHASH gains address wallet and bytes32 payload; _validateRecord
  encodes them, closing register() front-run via wallet swap
- renewRecord() routes through _setRecord and requires signed record to
  match resolved id and wallet (idMismatch/walletMismatch errors)
- _setRecord requires record.nonce > stored nonce and persists signed
  value: renewal replay dead, deleteName bump effective, first
  registration needs nonce >= 1
- nameToId hygiene: delete old name mapping before write; skip zero
  names so nameless records don't collide on nameToId[0]
- Record gains bytes32 payload, stored per id, returned by resolveRecord

BREAKING CHANGE: registrar signature typehash changed; existing signing
infrastructure must re-sign with new registerName(...,address wallet,
bytes32 payload) schema and nonces starting at 1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T43qZEXdPmGfhqbQC8N5n7
peersky force-pushed fix/record-lifecycle-typehash from c6525fcd57
Some checks failed
CI / test (pull_request) Has been cancelled
CI / lint (pull_request) Has been cancelled
to 93985f0bd8
All checks were successful
CI / lint (pull_request) Successful in 46s
CI / test (pull_request) Successful in 54s
2026-09-07 05:01:28 +00:00
Compare
peersky force-pushed fix/record-lifecycle-typehash from 93985f0bd8
All checks were successful
CI / lint (pull_request) Successful in 46s
CI / test (pull_request) Successful in 54s
to c6f79c4fcc
All checks were successful
CI / test (pull_request) Successful in 55s
CI / lint (pull_request) Successful in 56s
2026-09-07 05:06:29 +00:00
Compare
peersky deleted branch fix/record-lifecycle-typehash 2026-09-07 08:36:04 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
peeramid-labs/multipass!1
No description provided.