Skip to main content

CAD034: Curated Registry

Overview

In many contexts, it is necessary to have a curated registry of authorised entities. Example use cases:

  • A list of members in a DAO or membership organisation
  • A list of verified Tokens for use in end user wallets

CAD34 defines a generic, extensible interface for such registries, in order to support flexible tools and administration of registries that follow the standard.

Design goals:

  • Support for any kind of unique ID / entity
  • Integration with teh CAD22 trust monitor model
  • Support for flexible administrative control at a per-registry level
  • Support for a single Actor hosting many registries

Key functions

Create Registry

(call registry-actor (create-registry controller {:optional :metadata}))

Where:

  • controller is a trust monitor for registry actions
  • An arbitrary metadata map may be provided, which will be attached to the registry

The registry actor MUST enforce that only a caller allowed to use the :create-registry action is able to execute this, otherwise MUST fail with a :TRUST error.

If permitted, the registry actor MUST creates a registry with the given metadata, and returns a new registry ID.

Delete Registry

(call registry-actor (delete-registry registry-id))

The registry actor MUST enforce that only a caller allowed to use the :delete-registry action is able to execute this, otherwise MUST fail with a :TRUST error.

If permitted, the registry actor MUST delete the entire registry.

The registry actor MUST NOT re-issue the same registry ID for any newly created registry.

An administrator of the registry actor MAY re-instate the registry, but will have to restore this from off-chain information.

Register

(call registry-actor (register subject metadata))

If successful, the call MUST add subject to the given registry with the given metadata.

If the subject already exists, the call MUST replace the metadata for the given subject.