Repository navigation
dotNS v1.0.0 is the release for the first mainnet launch. It renames the Proof of Personhood surface from lite/full to devicehood / device names (stem.NN) and personhood / personhood names, and keeps the gateway pallet's current entrypoints working through IDotnsPopControllerLegacy.
dotNS ABI Package
Contracts
Download
- All ABIs (zip): dotns-abis-v1.0.0.zip
- Individual ABIs: Each contract ABI is also attached as a separate artifact
Usage
import LabelStoreAbi from "./abis/LabelStore.json";
import RegistrarAbi from "./abis/DotnsRegistrar.json";Deployments
| Network | Chain id | Runs |
|---|---|---|
| paseo-assethub | 420420417 | v1.0.0, upgraded in place on 2026-10-06 |
| previewnet | 420420417 | v0.8.0, upgrade pending |
Paseo Asset Hub Next was upgraded from v0.8.0 in place: DotnsRegistry, PopRules, DotnsPopResolver and DotnsPopController kept their proxy addresses, and the PoP lens moved to 0x309C5ff21f9082A53211500c6f33cA2a21024Ae4. Resolve it through the protocol registry's popLens key; the old lens no longer serves PoP reads. A network's protocol registry protocolVersion() returns the release it runs, and deployments:verify --tag v1.0.0 checks the chain against this release (Verifying a release).
- Addresses: deployments.json (recorded at release time; Paseo's
DotnsPopLensis now0x309C5ff21f9082A53211500c6f33cA2a21024Ae4) - Release contents: release-manifest.json
- Code identity: codehashes.json (stripped-metadata build hashes of this release's contracts; input to upgrade checks)
Genesis
Pallet-revive genesis state, for a chain that should carry dotNS from block zero
rather than deploying it afterwards.
- dotns-genesis-testnet.json - registry initialised with the
.testnetTLD, so it suits .testnet networks only. Not for a production chain. - dotns-genesis-paseo.json - registry initialised with the
.paseoTLD, so it suits .paseo networks only. Not for a production chain.
Previewnet uses .testnet, Paseo Asset Hub Next V2 uses .paseo.
- dotns-genesis-addresses.json - the address set a chain booted from any of these genesis files carries. deployments.json records the live networks instead, and the two can differ where a live network has moved a contract.
Addresses changed since v0.8.0 on: paseo-assethub. Update any pinned copy before upgrading.
Networks added since v0.8.0: previewnet.
Breaking ABI changes since v0.8.0
The gateway pallet's entrypoints listed as removed from IDotnsPopController (reserveLiteName, reserveBaseName, registerBaseName, and the InvalidLiteLabel / InvalidBaseLabel errors) are still served by DotnsPopController with the same selectors, through IDotnsPopControllerLegacy. They will be removed in a later release.
IDotnsPopController.registerBaseName:registerBaseName((string,address,(uint8,string,bytes)))removedIDotnsPopController.reserveBaseName:reserveBaseName(((string,address,bytes),string))removedIDotnsPopController.reserveBaseNameOnly:reserveBaseNameOnly((address,string))removedIDotnsPopController.reserveLiteName:reserveLiteName((string,address,bytes))removedIDotnsPopController.reservedBaseLabelOf:reservedBaseLabelOf(bytes32)removedIDotnsPopLens.fullNameCountOf:fullNameCountOf(address)removedIDotnsPopLens.fullNamesOf:fullNamesOf(address,uint256,uint256)removedIDotnsPopLens.liteNameCountOf:liteNameCountOf(address)removedIDotnsPopLens.liteNamesOf:liteNamesOf(address,uint256,uint256)removedIDotnsPopResolver.fullClaim:fullClaim(bytes32)removedIDotnsPopResolver.liteLink:liteLink(bytes32)removedIDotnsPopResolver.setLiteLink:setLiteLink(bytes32,bytes32)removedIPopRules.personhoodOf:personhoodOf(address)removedIDotnsPopController.BaseNameClaimedevent:BaseNameClaimed(bytes32,address,string)removedIDotnsPopController.LiteNameReservedevent:LiteNameReserved(bytes32,address,string)removedIDotnsPopController.LiteToFullLinkedevent:LiteToFullLinked(bytes32,bytes32)removedIDotnsPopController.StandaloneNameRegisteredevent:StandaloneNameRegistered(bytes32,address,string)removedIDotnsPopResolver.LiteLinkUpdatedevent:LiteLinkUpdated(bytes32,bytes32)removed
Other ABI changes (28)
IDotnsPopControllerLegacy: new contractIDotnsPopController.issueDeviceName:issueDeviceName((string,address,bytes))addedIDotnsPopController.issueDeviceNameWithReservation:issueDeviceNameWithReservation(((string,address,bytes),string))addedIDotnsPopController.issuePersonhoodName:issuePersonhoodName((string,address,(uint8,string,bytes)))addedIDotnsPopController.reservePersonhoodName:reservePersonhoodName((address,string))addedIDotnsPopController.reservedLabelOf:reservedLabelOf(bytes32)addedIDotnsPopLens.nameCountOf:nameCountOf(address)addedIDotnsPopLens.namesOf:namesOf(address,uint256,uint256)addedIDotnsPopResolver.deviceLabelhashOf:deviceLabelhashOf(bytes32)addedIDotnsPopResolver.personhoodNodeOf:personhoodNodeOf(bytes32)addedIDotnsPopResolver.setDeviceLink:setDeviceLink(bytes32,bytes32)addedIPopRules.popStatusOf:popStatusOf(address)addedIDotnsPopController.DeviceNameIssuedevent:DeviceNameIssued(bytes32,address,string)addedIDotnsPopController.DeviceNameLinkedevent:DeviceNameLinked(bytes32,bytes32)addedIDotnsPopController.PersonhoodNameIssuedevent:PersonhoodNameIssued(bytes32,address,string)addedIDotnsPopController.ReservationClaimedevent:ReservationClaimed(bytes32,address)addedIDotnsPopController.ReservationEvictedevent:ReservationEvicted(bytes32,address)addedIDotnsPopResolver.DeviceLinkUpdatedevent:DeviceLinkUpdated(bytes32,bytes32)addedIDotnsPopController.DeviceNameAlreadyIssuederror:DeviceNameAlreadyIssued()addedIDotnsPopController.DeviceNameNotOwnederror:DeviceNameNotOwned(address,bytes32)addedIDotnsPopController.InvalidDeviceLabelerror:InvalidDeviceLabel()addedIDotnsPopController.InvalidPersonhoodLabelerror:InvalidPersonhoodLabel()addedIDotnsPopController.PersonhoodNameUnavailableerror:PersonhoodNameUnavailable()addedIDotnsPopController.BaseNameAlreadyRegisterederror:BaseNameAlreadyRegistered()removedIDotnsPopController.InvalidBaseLabelerror:InvalidBaseLabel()removedIDotnsPopController.InvalidLiteLabelerror:InvalidLiteLabel()removedIDotnsPopController.LiteLabelNotOwnedByUsererror:LiteLabelNotOwnedByUser(address,bytes32)removedIDotnsPopController.LiteNameAlreadyIssuederror:LiteNameAlreadyIssued()removed
Breaking changes the ABI diff does not show
- Decoded struct fields: clients that decode structs by field name must read the new names:
NameDetail.tier,liteLink,fullClaimbecomerequiredTier,deviceLabelhash,personhoodNode, and the controller's request structs rename their fields too. IDotnsPopLens.Name: dropsdeadline; pending claims never lapse.PopStatus/LinkKind: values are unchanged on the wire;PopLite/PopFullbecomeDevicehood/Personhood, andLinkKind.LiteUsernamebecomesLinkKind.DeviceName, for Solidity code and clients that hardcode the labels.PopRulesrevert strings: thePopErrormessages changed wording.
What's Changed
- chore: Update legal warning by @charlesHetterich in #313
- chore: replace the code owners with the people who can approve by @re-gius in #314
- chore: record the live testnet manifests by @re-gius in #315
- fix(security): minor security bugs by @GHkrishna in #307
- ci: gate the release genesis key behind the releases environment by @re-gius in #316
- chore: add SPDX copyright attribution and a NOTICE file by @re-gius in #317
- chore: ci optimisations by @GHkrishna in #318
- feat(release): build a Next V2 genesis and publish its address set by @mordamax in #320
- fix(release): ignore embedded metadata in changedset, list breaking changes first by @GHkrishna in #323
- feat: rename lite/full to device and personhood names, with legacy gateway entrypoints by @re-gius in #321
New Contributors
- @charlesHetterich made their first contribution in #313
Full Changelog: v0.8.0...v1.0.0