Purpose
The Registry module provides role-based access control and permissions management for digital assets. It defines who can perform specific actions on assets through a system of roles and addresses.
How It Works
- Registry Keys: Unique identifiers linking registry entries to specific NFT assets
- Registry Entries: Contain roles and addresses that can perform those roles
- Roles: Define different types of permissions (Servicer, Controller, Custodian, etc.)
- Addresses: Blockchain addresses assigned to specific roles
Key Messages/Actions
MsgRegisterNFT
Registers a new NFT in the registry with specified roles and addresses.
protobufmessage MsgRegisterNFT { string authority = 1; RegistryKey key = 2; repeated RolesEntry roles = 3; }
MsgGrantRole
Grants a role to one or more addresses.
protobufmessage MsgGrantRole { string authority = 1; RegistryKey key = 2; RegistryRole role = 3; repeated string addresses = 4; }
MsgRevokeRole
Revokes a role from one or more addresses.
protobufmessage MsgRevokeRole { string authority = 1; RegistryKey key = 2; RegistryRole role = 3; repeated string addresses = 4; }
MsgUnregisterNFT
Unregisters an NFT from the registry.
protobufmessage MsgUnregisterNFT { string authority = 1; RegistryKey key = 2; }
Registry Roles
- REGISTRY_ROLE_SERVICER: Maintains and services underlying assets
- REGISTRY_ROLE_SUBSERVICER: Assists servicers with limited administrative capabilities
- REGISTRY_ROLE_CONTROLLER: Has administrative control over registry entries
- REGISTRY_ROLE_CUSTODIAN: Holds and safeguards underlying assets
- REGISTRY_ROLE_BORROWER: Can borrow against underlying assets
- REGISTRY_ROLE_ORIGINATOR: Creates and originates underlying assets