Skip to main content

Resource Registry

The Notareum Resource Registry is the on-chain system for registering, identifying, and aliasing blockchain resources. It provides a deterministic resource ID scheme, six built-in resource types, and a human-readable alias system. The registry is implemented as the NotareumNotaRegistry contract and serves as the authoritative source of truth for resource identity and verification status.

The role of the registry

The registry is a trust anchor. Once a resource is registered, any party can independently compute its canonical resourceId and look up its on-chain record. Verification status, attesting validators, and metadata are all queryable. Aliases provide ENS-like usability within the Notareum namespace, so users see treasury.nota instead of a raw hex string.

Resource ID computation

Every resource is identified by a deterministic bytes32 ID computed from three inputs:
Identifiers MUST be encoded as UTF-8 bytes. The same computation runs in SDKs and on-chain. TypeScript reference:
Two resources with the same identifier but different chain IDs produce different resource IDs and are treated as distinct.

Well-known resource types

The registry ships with six built-in types, defined as uint8 public constant values in the contract. Governance can add types through addResourceType(uint8 typeId, string name) (gated by ROLE_PROTOCOL_ADMIN). This lets the protocol support new asset categories like DIDs, domains, or real-world assets without redeploying contracts.

Registration

Registration rules:
  • identifier MUST NOT be empty.
  • Each (resourceType, chainId, identifier) triple MUST be unique; duplicates revert with ResourceAlreadyExists.
  • The caller becomes the owner of the resource.
  • proofHash is a bytes32 commitment that MAY be bytes32(0) at registration.
  • If alias_ is non-empty, alias registration runs atomically.
  • New resources start at verificationStatus = UNVERIFIED, verificationLevel = BASIC.
TypeScript SDK call:

Verification status

Resources transition through five states: Only the NotareumVerificationEngine may change status as part of the verification workflow (via ROLE_OPERATOR). Owners may directly revoke their own resources.

Verification levels

See Verification Engine for complete quorum rules.

Alias system

Aliases are human-readable strings mapped to resource IDs. Rules:
  • Globally unique across all resources.
  • Each resource may have at most one alias.
  • Registration costs aliasFee NOTA, transferred to the fee collector.
  • Permanent: cannot be transferred or deleted.
  • Convention is <name>.nota, but no suffix is enforced.

NotaResource struct

registeredAt is set once at registration. updatedAt advances on status changes and proof hash updates.

Lifecycle summary

Security considerations

Identifier uniqueness. Two resources with the same identifier but different chain IDs are distinct. Callers MUST supply the correct chain ID. Alias squatting. Aliases are first-come, first-served. The protocol does not adjudicate trademark disputes. UIs MUST NOT present an alias as authoritative identity without also checking verification status. Ownership transfer. Resource ownership is not transferable in v1.0. The owner field is permanent. This prevents hostile takeover of verified resources.