Skip to content

Add transferName to the registry - #73

Open
charlesHetterich wants to merge 1 commit into
mainfrom
registry-transfer-name
Open

Add transferName to the registry#73
charlesHetterich wants to merge 1 commit into
mainfrom
registry-transfer-name

Conversation

@charlesHetterich

@charlesHetterich charlesHetterich commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

What

transferName(name, newOwner) — package owners can hand a name to a new account. Owner-gated, freeze-respecting, rejects the zero address as a fat-finger guard (deliberately giving a name up = transferring to a burn address, which locks the name at its current versions: publishing can only claim never-versioned names, so a burned name can't be squatted).

deploy-registry --upgrade — the in-place upgrade flow: deploys the freshly built implementation, dry-runs setCode (surfacing UnauthorizedAdmin cleanly), submits, and verifies the implementation pointer flipped while the contract count is unchanged. Impl salt bumped to @cdm/registry-impl.2.

Testing

  • 4 new MockHost unit tests (ownership handoff + old-owner lockout, non-owner/unregistered rejection, zero-address guard, freeze gating) and the new selector in the dispatch-lock test — 33 registry tests total.
  • e2e: publish → transfer → new owner verified → old owner rejected, green against a live dev node (26 e2e tests).
  • ABI drift test covers the new entry; pnpm check green.

Design note: a full "release for anyone to pick up" was considered and deliberately NOT added — re-claimable trusted names are a supply-chain vector (npm-style). If release semantics are ever wanted, the follow-up should pair them with cdm install warning on owner changes.

transferName(name, newOwner) lets a package owner hand a name to a new
account: owner-gated, freeze-respecting, zero-address transfers rejected
as a fat-finger guard (deliberately giving a name up = transferring to a
burn address, which locks it at its current versions — publishing can
only claim never-versioned names).

deploy-registry gains --upgrade: deploys the freshly built
implementation and repoints the existing proxy via setCode, verifying
the implementation pointer flipped and the contract count is unchanged.
Impl salt bumped to @cdm/registry-impl.2.

Rehearsed on a local preview net (84 packages intact, transferName
verified through the upgraded proxy), then performed for real on paseo:
0xc1a73a4f93fde65b1cb1680baead248073566cb0 upgraded in place,
implementation 0x54e0dedf5c4ac607f319bb90969b32fa9e717f25 ->
0x2de972839247bb9a6ea1447393aa990e3e18671f, all 65 packages intact —
the registry's first production setCode upgrade.
@charlesHetterich charlesHetterich changed the title Add transferName to the registry; first in-place paseo upgrade Add transferName to the registry Aug 6, 2026
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