Skip to content

v1.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Sep 20:04
Immutable release. Only release title and notes can be modified.
9a84fa7

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

Contract ABI
Create3Factory Create3Factory.json
DotnsContentResolver DotnsContentResolver.json
DotnsCostModelRegistry DotnsCostModelRegistry.json
DotnsFlatPricing DotnsFlatPricing.json
DotnsNameEscrow DotnsNameEscrow.json
DotnsNameWhitelist DotnsNameWhitelist.json
DotnsPopController DotnsPopController.json
DotnsPopLens DotnsPopLens.json
DotnsPopResolver DotnsPopResolver.json
DotnsProtocolRegistry DotnsProtocolRegistry.json
DotnsRegistrar DotnsRegistrar.json
DotnsRegistrarController DotnsRegistrarController.json
DotnsRegistry DotnsRegistry.json
DotnsResolver DotnsResolver.json
DotnsReverseResolver DotnsReverseResolver.json
IDotnsContentResolver IDotnsContentResolver.json
IDotnsController IDotnsController.json
IDotnsCostModelRegistry IDotnsCostModelRegistry.json
IDotnsNameEscrow IDotnsNameEscrow.json
IDotnsNameWhitelist IDotnsNameWhitelist.json
IDotnsPopController IDotnsPopController.json
IDotnsPopControllerLegacy IDotnsPopControllerLegacy.json
IDotnsPopLens IDotnsPopLens.json
IDotnsPopResolver IDotnsPopResolver.json
IDotnsPricing IDotnsPricing.json
IDotnsProtocolRegistry IDotnsProtocolRegistry.json
IDotnsRegistrar IDotnsRegistrar.json
IDotnsRegistrarController IDotnsRegistrarController.json
IDotnsRegistry IDotnsRegistry.json
IDotnsResolver IDotnsResolver.json
IDotnsReverseResolver IDotnsReverseResolver.json
ILabelStore ILabelStore.json
IPopRules IPopRules.json
IStoreFactory IStoreFactory.json
IUserStore IUserStore.json
LabelStore LabelStore.json
PopRules PopRules.json
StoreFactory StoreFactory.json
UserStore UserStore.json

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 DotnsPopLens is now 0x309C5ff21f9082A53211500c6f33cA2a21024Ae4)
  • 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 .testnet TLD, so it suits .testnet networks only. Not for a production chain.
  • dotns-genesis-paseo.json - registry initialised with the .paseo TLD, 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))) removed
  • IDotnsPopController.reserveBaseName: reserveBaseName(((string,address,bytes),string)) removed
  • IDotnsPopController.reserveBaseNameOnly: reserveBaseNameOnly((address,string)) removed
  • IDotnsPopController.reserveLiteName: reserveLiteName((string,address,bytes)) removed
  • IDotnsPopController.reservedBaseLabelOf: reservedBaseLabelOf(bytes32) removed
  • IDotnsPopLens.fullNameCountOf: fullNameCountOf(address) removed
  • IDotnsPopLens.fullNamesOf: fullNamesOf(address,uint256,uint256) removed
  • IDotnsPopLens.liteNameCountOf: liteNameCountOf(address) removed
  • IDotnsPopLens.liteNamesOf: liteNamesOf(address,uint256,uint256) removed
  • IDotnsPopResolver.fullClaim: fullClaim(bytes32) removed
  • IDotnsPopResolver.liteLink: liteLink(bytes32) removed
  • IDotnsPopResolver.setLiteLink: setLiteLink(bytes32,bytes32) removed
  • IPopRules.personhoodOf: personhoodOf(address) removed
  • IDotnsPopController.BaseNameClaimed event: BaseNameClaimed(bytes32,address,string) removed
  • IDotnsPopController.LiteNameReserved event: LiteNameReserved(bytes32,address,string) removed
  • IDotnsPopController.LiteToFullLinked event: LiteToFullLinked(bytes32,bytes32) removed
  • IDotnsPopController.StandaloneNameRegistered event: StandaloneNameRegistered(bytes32,address,string) removed
  • IDotnsPopResolver.LiteLinkUpdated event: LiteLinkUpdated(bytes32,bytes32) removed
Other ABI changes (28)
  • IDotnsPopControllerLegacy: new contract
  • IDotnsPopController.issueDeviceName: issueDeviceName((string,address,bytes)) added
  • IDotnsPopController.issueDeviceNameWithReservation: issueDeviceNameWithReservation(((string,address,bytes),string)) added
  • IDotnsPopController.issuePersonhoodName: issuePersonhoodName((string,address,(uint8,string,bytes))) added
  • IDotnsPopController.reservePersonhoodName: reservePersonhoodName((address,string)) added
  • IDotnsPopController.reservedLabelOf: reservedLabelOf(bytes32) added
  • IDotnsPopLens.nameCountOf: nameCountOf(address) added
  • IDotnsPopLens.namesOf: namesOf(address,uint256,uint256) added
  • IDotnsPopResolver.deviceLabelhashOf: deviceLabelhashOf(bytes32) added
  • IDotnsPopResolver.personhoodNodeOf: personhoodNodeOf(bytes32) added
  • IDotnsPopResolver.setDeviceLink: setDeviceLink(bytes32,bytes32) added
  • IPopRules.popStatusOf: popStatusOf(address) added
  • IDotnsPopController.DeviceNameIssued event: DeviceNameIssued(bytes32,address,string) added
  • IDotnsPopController.DeviceNameLinked event: DeviceNameLinked(bytes32,bytes32) added
  • IDotnsPopController.PersonhoodNameIssued event: PersonhoodNameIssued(bytes32,address,string) added
  • IDotnsPopController.ReservationClaimed event: ReservationClaimed(bytes32,address) added
  • IDotnsPopController.ReservationEvicted event: ReservationEvicted(bytes32,address) added
  • IDotnsPopResolver.DeviceLinkUpdated event: DeviceLinkUpdated(bytes32,bytes32) added
  • IDotnsPopController.DeviceNameAlreadyIssued error: DeviceNameAlreadyIssued() added
  • IDotnsPopController.DeviceNameNotOwned error: DeviceNameNotOwned(address,bytes32) added
  • IDotnsPopController.InvalidDeviceLabel error: InvalidDeviceLabel() added
  • IDotnsPopController.InvalidPersonhoodLabel error: InvalidPersonhoodLabel() added
  • IDotnsPopController.PersonhoodNameUnavailable error: PersonhoodNameUnavailable() added
  • IDotnsPopController.BaseNameAlreadyRegistered error: BaseNameAlreadyRegistered() removed
  • IDotnsPopController.InvalidBaseLabel error: InvalidBaseLabel() removed
  • IDotnsPopController.InvalidLiteLabel error: InvalidLiteLabel() removed
  • IDotnsPopController.LiteLabelNotOwnedByUser error: LiteLabelNotOwnedByUser(address,bytes32) removed
  • IDotnsPopController.LiteNameAlreadyIssued error: 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, fullClaim become requiredTier, deviceLabelhash, personhoodNode, and the controller's request structs rename their fields too.
  • IDotnsPopLens.Name: drops deadline; pending claims never lapse.
  • PopStatus / LinkKind: values are unchanged on the wire; PopLite / PopFull become Devicehood / Personhood, and LinkKind.LiteUsername becomes LinkKind.DeviceName, for Solidity code and clients that hardcode the labels.
  • PopRules revert strings: the PopError messages 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

Full Changelog: v0.8.0...v1.0.0