Every Protocol Periphery
Every Protocol enables intuitive, collaborative, secure, and rewarding onchain co-creation.
Every Protocol introduces the Object Token (or simply, object) — a next-gen token with structure, semantics, and interoperability. Each object has a kind, is minted from a set, and is composed of elements. Objects can interact with one another through relations defined at the kind level. Every aspect of an object can be created or developed by anyone, unlocking true onchain collaboration.
This repository hosts periphery contracts of the Every Protocol.
License
Every Protocol Periphery is licensed under the MIT License (MIT), See LICENSE.
Contents
Constraints
State Variables
MAX_KIND_ELEMENTS
uint256 constant MAX_KIND_ELEMENTS = 16;
MAX_KIND_RELATIONS
uint256 constant MAX_KIND_RELATIONS = 16;
MAX_RELATION_ADJACENCIES
uint256 constant MAX_RELATION_ADJACENCIES = 16;
IdScheme
State Variables
SYSTEM_OBJECT_MAX
0~16 are reserved for system objects
uint64 constant SYSTEM_OBJECT_MAX = 16;
PLAIN_OBJECT_UNSPECIFIED
uint64 constant PLAIN_OBJECT_UNSPECIFIED = 0;
PLAIN_OBJECT_MIN
uint64 constant PLAIN_OBJECT_MIN = 1;
PLAIN_OBJECT_USER_MIN
uint64 constant PLAIN_OBJECT_USER_MIN = 1;
PLAIN_OBJECT_MAX
uint64 constant PLAIN_OBJECT_MAX = 0xFFFFFFFF_FFFFFFFE;
PLAIN_OBJECT_ANY
uint64 constant PLAIN_OBJECT_ANY = 0xFFFFFFFF_FFFFFFFF;
SEMANTIC_OBJECT_MIN
uint64 constant SEMANTIC_OBJECT_MIN = 1;
SEMANTIC_OBJECT_SYSTEM_MAX
uint64 constant SEMANTIC_OBJECT_SYSTEM_MAX = 16;
SEMANTIC_OBJECT_USER_MIN
uint64 constant SEMANTIC_OBJECT_USER_MIN = 17;
SEMANTIC_OBJECT_MAX
uint64 constant SEMANTIC_OBJECT_MAX = 0x0000FFFF_FFFFFFFE;
KindIds
State Variables
SET
uint64 constant SET = 1;
KIND
uint64 constant KIND = 2;
RELATION
uint64 constant RELATION = 3;
VALUE
uint64 constant VALUE = 4;
UNIQUE
uint64 constant UNIQUE = 5;
USER_START
uint64 constant USER_START = 17;
SetIds
State Variables
SET
uint64 constant SET = 1;
KIND
uint64 constant KIND = 2;
RELATION
uint64 constant RELATION = 3;
VALUE
uint64 constant VALUE = 4;
UNIQUE
uint64 constant UNIQUE = 5;
USER_START
uint64 constant USER_START = 17;
RelationIds
State Variables
USER_START
uint64 constant USER_START = 17;
ValueIds
State Variables
NATIVE
uint64 constant NATIVE = 0;
USER_START
uint64 constant USER_START = 17;
UniqueIds
State Variables
USER_START
uint64 constant USER_START = 17;
Revisions
State Variables
UNSPECIFIED
uint32 constant UNSPECIFIED = 0;
LATEST
uint32 constant LATEST = 0;
INITIAL
uint32 constant INITIAL = 1;
Contents
Contents
- IElementRegistry
- IKindRegistry
- IObjectAuthorization
- IObjectInteraction
- IObjectMinter
- IOmniRegistry
- IRelationRegistry
- ISetRegistry
- IUniqueRegistry
- IValueRegistry
IElementRegistry
Inherits: IValueRegistry, IUniqueRegistry
Element registration and management
IKindRegistry
Interface for managing and registering object kinds
Functions
kindRegister
Registers a new kind
function kindRegister(bytes32 code, bytes32 data, ElementType[] memory elemSpec, uint64[] memory rels)
external
returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
code | bytes32 | Code hash of the kind |
data | bytes32 | Data hash of the kind |
elemSpec | ElementType[] | Element type layout for objects of this kind |
rels | uint64[] | Supported relation IDs |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | New kind ID |
desc | Descriptor | Descriptor after registration |
kindUpdate
Updates code and/or data of an existing kind
function kindUpdate(uint64 id, bytes32 code, bytes32 data) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
code | bytes32 | New code hash (0 = skip) |
data | bytes32 | New data hash (0 = skip) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
kindUpdate
Updates supported relations of an existing kind
function kindUpdate(uint64 id, uint64[] memory rels) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
rels | uint64[] | Updated relation list |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
kindUpdate
Updates code, data, and relations of an existing kind
function kindUpdate(uint64 id, bytes32 code, bytes32 data, uint64[] memory rels)
external
returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
code | bytes32 | New code hash (0 = skip) |
data | bytes32 | New data hash (0 = skip) |
rels | uint64[] | Updated relation list |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
kindUpgrade
Upgrades kind/set revision of an existing kind
function kindUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
kindRev | uint32 | New kind revision (0 = skip) |
setRev | uint32 | New set revision (0 = skip) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after upgrade |
kindTouch
Touches a kind (bumps revision with no content changes)
function kindTouch(uint64 id) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after touch |
kindTransfer
Transfers ownership of a kind
function kindTransfer(uint64 id, address to) external returns (address from);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
to | address | New owner address |
Returns
Name | Type | Description |
---|---|---|
from | address | Previous owner address |
kindRevision
Resolves and validates a specific revision
function kindRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
rev0 | uint32 | Revision to check (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Valid revision number (0 if not found) |
kindDescriptor
Returns the descriptor at a given revision
function kindDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at that revision |
kindSnapshot
Returns descriptor and elements at a specific revision
function kindSnapshot(uint64 id, uint32 rev0) external view returns (Descriptor memory desc, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the revision |
elems | bytes32[] | Element hashes of the kind at the revision |
kindOwner
Returns the current owner of a kind
function kindOwner(uint64 id) external view returns (address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
Returns
Name | Type | Description |
---|---|---|
owner | address | Owner address |
kindSota
Returns the latest descriptor and current owner of a kind
function kindSota(uint64 id) external view returns (Descriptor memory desc, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Latest descriptor |
owner | address | Current owner address |
kindStatus
Checks whether all specified kinds are active (rev > 0)
function kindStatus(uint64[] memory ids) external view returns (bool active);
Parameters
Name | Type | Description |
---|---|---|
ids | uint64[] | List of kind IDs |
Returns
Name | Type | Description |
---|---|---|
active | bool | True if all specified kinds exist and are active |
kindAdmit
Checks whether a kind at a given revision admits a specific relation
function kindAdmit(uint64 kind, uint32 rev, uint64 rel) external view returns (bool admit, uint32 relRev);
Parameters
Name | Type | Description |
---|---|---|
kind | uint64 | Kind ID |
rev | uint32 | Kind revision (0 = latest) |
rel | uint64 | Relation ID to check |
Returns
Name | Type | Description |
---|---|---|
admit | bool | Whether the relation is admitted |
relRev | uint32 | Specific relation revision admitted (0 = latest) |
Events
KindRegistered
Emitted when a new kind is registered
event KindRegistered(
uint64 id, Descriptor desc, bytes32 code, bytes32 data, ElementType[] elemSpec, uint64[] rels, address owner
);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
desc | Descriptor | Descriptor after registration |
code | bytes32 | Code hash associated with the kind |
data | bytes32 | Data hash associated with the kind |
elemSpec | ElementType[] | Element type layout for objects of this kind |
rels | uint64[] | Supported relation IDs |
owner | address | Owner address of the kind |
KindUpdated
Emitted when a kind is updated
event KindUpdated(uint64 id, Descriptor desc, bytes32 code, bytes32 data, uint64[] rels);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
desc | Descriptor | Updated descriptor |
code | bytes32 | Updated code hash |
data | bytes32 | Updated data hash |
rels | uint64[] | Updated supported relations |
KindUpgraded
Emitted when a kind is upgraded
event KindUpgraded(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
desc | Descriptor | Descriptor after upgrade |
KindTouched
Emitted when a kind is touched (revision bump only)
event KindTouched(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
desc | Descriptor | Descriptor after touch |
KindTransferred
Emitted when kind ownership is transferred
event KindTransferred(uint64 id, address from, address to);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Kind ID |
from | address | Previous owner |
to | address | New owner |
IObjectAuthorization
Handles fine-grained authorization for object relations.
Grants control who can initiate (from
) or accept (to
) object-to-object relations,
scoped by direction, relation ID, kind, and set.
Functions
grantFrom
Issues a grant to allow initiating relations from a tail object
function grantFrom(uint128 tail, RelationGrant memory grant) external;
Parameters
Name | Type | Description |
---|---|---|
tail | uint128 | Tail object ID |
grant | RelationGrant | Grant details |
revokeFrom
Revokes a previously issued from
grant
function revokeFrom(uint128 tail, uint32 grantId) external;
Parameters
Name | Type | Description |
---|---|---|
tail | uint128 | Tail object ID |
grantId | uint32 | Grant ID to revoke |
grantTo
Issues a grant to allow accepting relations to a head object
function grantTo(uint128 head, RelationGrant memory grant) external;
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Head object ID |
grant | RelationGrant | Grant details |
revokeTo
Revokes a previously issued to
grant
function revokeTo(uint128 head, uint32 grantId) external;
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Head object ID |
grantId | uint32 | Grant ID to revoke |
allowFrom
Checks whether a sender is authorized to initiate a relation from a tail object
function allowFrom(uint32 grantId, address sender, uint128 tail, uint64 rel, uint64 headKind, uint64 headSet)
external
view
returns (bool allowed);
Parameters
Name | Type | Description |
---|---|---|
grantId | uint32 | Grant ID to check |
sender | address | Address attempting the action |
tail | uint128 | Tail object ID |
rel | uint64 | Relation ID |
headKind | uint64 | Kind ID of the target (head) object |
headSet | uint64 | Set ID of the target (head) object |
Returns
Name | Type | Description |
---|---|---|
allowed | bool | True if authorized |
allowTo
Checks whether a sender is authorized to accept a relation to a head object
function allowTo(uint32 grantId, address sender, uint128 head, uint64 rel, uint64 tailKind, uint64 tailSet)
external
view
returns (bool allowed);
Parameters
Name | Type | Description |
---|---|---|
grantId | uint32 | Grant ID to check |
sender | address | Address attempting the action |
head | uint128 | Head object ID |
rel | uint64 | Relation ID |
tailKind | uint64 | Kind ID of the source (tail) object |
tailSet | uint64 | Set ID of the source (tail) object |
Returns
Name | Type | Description |
---|---|---|
allowed | bool | True if authorized |
Events
GrantFrom
Emitted when a grant is issued to authorize initiating a relation from a tail object
event GrantFrom(uint128 tail, RelationGrant grant);
Parameters
Name | Type | Description |
---|---|---|
tail | uint128 | Tail object ID (initiator) |
grant | RelationGrant | Grant definition |
RevokeFrom
Emitted when a grant from a tail object is revoked
event RevokeFrom(uint128 tail, uint32 grantId);
Parameters
Name | Type | Description |
---|---|---|
tail | uint128 | Tail object ID (initiator) |
grantId | uint32 | ID of the revoked grant |
GrantTo
Emitted when a grant is issued to authorize accepting a relation to a head object
event GrantTo(uint128 head, RelationGrant grant);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Head object ID (receiver) |
grant | RelationGrant | Grant definition |
RevokeTo
Emitted when a grant to a head object is revoked
event RevokeTo(uint128 head, uint32 grantId);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Head object ID (receiver) |
grantId | uint32 | ID of the revoked grant |
IObjectInteraction
Handles object interactions via directed relations (arcs).
Encodings
- SID : {uint64 set | uint64 id} → uint128
- Node : {uint64 data | uint32 _ | uint32 grant | uint64 set | uint64 id} → uint256
- Arc : {uint64 data | uint64 rel | uint64 set | uint64 id} → uint256
Functions
relate
Links a tail object to a head object through a relation
function relate(uint256 tail, uint64 rel, uint256 head) external;
Parameters
Name | Type | Description |
---|---|---|
tail | uint256 | Encoded tail node |
rel | uint64 | Relation ID |
head | uint256 | Encoded head node |
unrelate
Unlinks a tail object from a head object
function unrelate(uint256 tail, uint64 rel, uint256 head) external;
Parameters
Name | Type | Description |
---|---|---|
tail | uint256 | Encoded tail node |
rel | uint64 | Relation ID |
head | uint256 | Encoded head node |
Events
Related
Emitted when a tail is linked to a head through a relation
event Related(uint128 head, Descriptor desc, uint256 arc);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Encoded SID of the head object |
desc | Descriptor | Descriptor of the head after the relation |
arc | uint256 | Encoded incoming arc |
Related
Emitted when multiple tails are linked to a head
event Related(uint128 head, Descriptor desc, uint256[] arcs);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Encoded SID of the head object |
desc | Descriptor | Descriptor of the head after the relations |
arcs | uint256[] | Array of encoded incoming arcs |
Unrelated
Emitted when a tail is unlinked from a head
event Unrelated(uint128 head, Descriptor desc, uint256 arc);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Encoded SID of the head object |
desc | Descriptor | Descriptor of the head after unlinking |
arc | uint256 | Encoded incoming arc |
Unrelated
Emitted when multiple tails are unlinked from a head
event Unrelated(uint128 head, Descriptor desc, uint256[] arcs);
Parameters
Name | Type | Description |
---|---|---|
head | uint128 | Encoded SID of the head object |
desc | Descriptor | Descriptor of the head after unlinking |
arcs | uint256[] | Array of encoded incoming arcs |
IObjectMinter
Interface for minting objects with configurable policies
Functions
mint
Mint an object (public permission)
function mint(address to, address set, uint64 id) external payable;
Parameters
Name | Type | Description |
---|---|---|
to | address | The recipient address |
set | address | The set address |
id | uint64 | The object ID to mint |
mint
Mint an object with additional data
function mint(address to, address set, uint64 id, bytes memory data) external payable;
Parameters
Name | Type | Description |
---|---|---|
to | address | The recipient address |
set | address | The set address |
id | uint64 | The object ID to mint |
data | bytes | Additional mint data |
mint
Mint an object with allowlist proof
function mint(address to, address set, uint64 id, bytes memory auth, uint32 policy) external payable;
Parameters
Name | Type | Description |
---|---|---|
to | address | The recipient address |
set | address | The set address |
id | uint64 | The object ID to mint |
auth | bytes | ABI-encoded authorization data (see IMintAuthArgument) |
policy | uint32 | The policy index being used |
mint
Mint an object with allowlist proof and additional data
function mint(address to, address set, uint64 id, bytes memory data, bytes memory auth, uint32 policy)
external
payable;
Parameters
Name | Type | Description |
---|---|---|
to | address | The recipient address |
set | address | The set address |
id | uint64 | The object ID to mint |
data | bytes | Additional mint data |
auth | bytes | ABI-encoded authorization data (see IMintAuthArgument) |
policy | uint32 | The policy index being used |
mintPolicyAdd
Add a new mint policy (callable only by set contracts)
function mintPolicyAdd(MintPolicy memory policy) external returns (uint32 index);
Parameters
Name | Type | Description |
---|---|---|
policy | MintPolicy | The policy details to add |
Returns
Name | Type | Description |
---|---|---|
index | uint32 | The assigned policy index |
mintPolicyDisable
Disable a mint policy (callable only by set contracts)
function mintPolicyDisable(uint32 index) external;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | The policy index to disable |
mintPolicyEnable
Enable a mint policy (callable only by set contracts)
function mintPolicyEnable(uint32 index) external;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | The policy index to enable |
mintPolicyCount
Get number of mint policies for a set
function mintPolicyCount(address set) external view returns (uint256 count);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address to query |
Returns
Name | Type | Description |
---|---|---|
count | uint256 | Number of policies |
mintPolicyGet
Get mint policy by index
function mintPolicyGet(address set, uint32 index) external view returns (MintPolicy memory policy);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address |
index | uint32 | Policy index |
Returns
Name | Type | Description |
---|---|---|
policy | MintPolicy | The mint policy details |
mintPolicySearch
Search for applicable mint policy with permission mask
function mintPolicySearch(address set, uint64 id, uint8 mask) external view returns (MintPolicy memory policy);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address |
id | uint64 | The object ID to check |
mask | uint8 | Bitmask indicating which MintPermissionType values are included. Each bit corresponds to a permission type (e.g., bit 0 = Public, bit 1 = Allowlist, etc.). |
Returns
Name | Type | Description |
---|---|---|
policy | MintPolicy | The first matching mint policy |
mintPolicySearch
Search for applicable mint policy with offset and permission mask
function mintPolicySearch(address set, uint64 id, uint8 mask, uint32 offset)
external
view
returns (MintPolicy memory policy);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address |
id | uint64 | The object ID to check |
mask | uint8 | Bitmask indicating which MintPermissionType values are included. Each bit corresponds to a permission type (e.g., bit 0 = Public, bit 1 = Allowlist, etc.). |
offset | uint32 | Starting policy index to search from |
Returns
Name | Type | Description |
---|---|---|
policy | MintPolicy | The first matching mint policy |
Events
MintPolicyEnabled
Emitted when a mint policy is enabled
event MintPolicyEnabled(address set, MintPolicy policy);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address the policy applies to |
policy | MintPolicy | The enabled policy details |
MintPolicyDisabled
Emitted when a mint policy is disabled
event MintPolicyDisabled(address set, MintPolicy policy);
Parameters
Name | Type | Description |
---|---|---|
set | address | The set address the policy applies to |
policy | MintPolicy | The disabled policy details |
ObjectMinted
Emitted when an object is successfully minted
event ObjectMinted(
address set,
uint64 id,
address operator,
address to,
address currency,
uint96 payment,
address fundsRecipient,
uint96 funds,
address feeRecipient,
uint96 fee
);
Parameters
Name | Type | Description |
---|---|---|
set | address | The address of the set contract the object is minted from |
id | uint64 | The ID of the minted object within the set |
operator | address | The address that initiated the mint (usually msg.sender) |
to | address | The recipient address receiving the minted object |
currency | address | The address of the payment token (native or ERC20) |
payment | uint96 | The total payment (includes both fee and funds) |
fundsRecipient | address | The address receiving the creator or project revenue |
funds | uint96 | The amount sent to the fundsRecipient |
feeRecipient | address | The address receiving the protocol fee |
fee | uint96 | The amount sent to the feeRecipient |
IOmniRegistry
Inherits: IRelationRegistry, IObjectAuthorization, IObjectInteraction
Interface for object interactions
IRelationRegistry
Interface for registering and managing relations
Functions
relationRegister
Registers a new relation
function relationRegister(address code, bytes32 data, RelationRule memory rule, Adjacency[] memory adjs)
external
returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
code | address | Optional logic contract address |
data | bytes32 | Hash of the relation’s associated data |
rule | RelationRule | Rule defining the behavior and constraints of the relation |
adjs | Adjacency[] | Array of tail kind admissibility and degree limits |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | New relation ID |
desc | Descriptor | Descriptor after registration |
relationUpdate
Updates the data hash of a relation
function relationUpdate(uint64 id, bytes32 data) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
data | bytes32 | New data hash |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
relationUpdate
Updates the data hash and adjacency configuration of a relation
function relationUpdate(uint64 id, bytes32 data, Adjacency[] memory adjs) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
data | bytes32 | New data hash |
adjs | Adjacency[] | New array of adjacency rules |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
relationUpgrade
Upgrades the kind or set revision of a relation
function relationUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
kindRev | uint32 | New kind revision (0 = no change) |
setRev | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after upgrade |
relationTouch
Touches a relation (bumps revision without modifying content)
function relationTouch(uint64 id) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after touch |
relationTransfer
Transfers ownership of a relation to a new address
function relationTransfer(uint64 id, address to) external returns (address from);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
to | address | New owner address |
Returns
Name | Type | Description |
---|---|---|
from | address | Previous owner address |
relationRevision
Resolves and validates a revision number
function relationRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
rev0 | uint32 | Requested revision (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Validated revision (0 if not found) |
relationDescriptor
Returns descriptor of a relation at a specific revision
function relationDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the specified revision |
relationSnapshot
Returns descriptor and packed elements at a specific revision
function relationSnapshot(uint64 id, uint32 rev0)
external
view
returns (Descriptor memory desc, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the revision |
elems | bytes32[] | Elements at the revision |
relationOwner
Gets the current owner of a relation
function relationOwner(uint64 id) external view returns (address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
Returns
Name | Type | Description |
---|---|---|
owner | address | Address of the current owner |
relationSota
Returns the latest descriptor and current owner of a relation
function relationSota(uint64 id) external view returns (Descriptor memory desc, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Latest descriptor |
owner | address | Current owner |
relationStatus
Checks whether all specified relations are active (rev > 0)
function relationStatus(uint64[] memory ids) external view returns (bool active);
Parameters
Name | Type | Description |
---|---|---|
ids | uint64[] | Array of relation IDs |
Returns
Name | Type | Description |
---|---|---|
active | bool | True if all are valid and active |
relationRule
Returns the rule definition for a relation
function relationRule(uint64 id) external view returns (RelationRule memory rule);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
Returns
Name | Type | Description |
---|---|---|
rule | RelationRule | Possession and linkage rule for the relation |
relationAdmit
Checks if a relation admits a specific kind as tail
function relationAdmit(uint64 id, uint32 rev, uint64 kind)
external
view
returns (bool admit, uint48 effKind, uint16 effDegs, uint48 totalKind, uint16 totalDegs);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
rev | uint32 | Revision to check |
kind | uint64 | Tail kind ID to evaluate |
Returns
Name | Type | Description |
---|---|---|
admit | bool | Whether the kind is admitted |
effKind | uint48 | Matched kind (0 = wildcard match) |
effDegs | uint16 | Degree bounds for the matched kind |
totalKind | uint48 | Special marker for total-kind (2^48-1 if defined) |
totalDegs | uint16 | Degree bounds for the total-kind |
Events
RelationRegistered
Emitted when a new relation is registered
event RelationRegistered(
uint64 id, Descriptor desc, address code, bytes32 data, RelationRule rule, Adjacency[] adjs, address owner
);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the relation |
desc | Descriptor | Descriptor of the relation |
code | address | Optional logic contract address |
data | bytes32 | Hash of the associated metadata or logic |
rule | RelationRule | Relation rule defining interaction logic |
adjs | Adjacency[] | List of admitted tail kinds and degree constraints |
owner | address | Address of the relation's owner |
RelationUpdated
Emitted when a relation is updated
event RelationUpdated(uint64 id, Descriptor desc, bytes32 data);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the relation |
desc | Descriptor | Updated descriptor |
data | bytes32 | New data hash |
RelationUpgraded
Emitted when a relation is upgraded (kind/set revision bumped)
event RelationUpgraded(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the relation |
desc | Descriptor | Descriptor after upgrade |
RelationTouched
Emitted when a relation is touched (revision incremented without content change)
event RelationTouched(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the relation |
desc | Descriptor | Descriptor after touch |
RelationTransferred
Emitted when ownership of a relation is transferred
event RelationTransferred(uint64 id, address from, address to);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the relation |
from | address | Previous owner |
to | address | New owner |
ISetRegistry
Interface for registering and managing sets
Functions
setRegister
Registers a new set
function setRegister(bytes32 data) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | Hash of external content (e.g. metadata or schema) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | ID of the new set |
desc | Descriptor | Descriptor after registration |
setUpdate
Updates the data hash of an existing set
function setUpdate(bytes32 data) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | New data hash |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | ID of the updated set |
desc | Descriptor | Updated descriptor |
setUpgrade
Upgrades the kind or set revision
function setUpgrade(uint32 kindRev, uint32 setRev) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
kindRev | uint32 | New kind revision (0 to skip) |
setRev | uint32 | New set revision (0 to skip) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | ID of the set |
desc | Descriptor | Descriptor after upgrade |
setTouch
Touches a set (increments revision without any changes)
function setTouch() external returns (uint64 id, Descriptor memory desc);
Returns
Name | Type | Description |
---|---|---|
id | uint64 | ID of the set |
desc | Descriptor | Descriptor after touch |
setRevision
Resolves and validates a specific revision
function setRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
rev0 | uint32 | Requested revision (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Validated revision (0 if not found) |
setDescriptor
Returns the descriptor at a given revision
function setDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor of the set at the specified revision |
setSnapshot
Returns descriptor and elements of a set at a specific revision
function setSnapshot(uint64 id, uint32 rev0) external view returns (Descriptor memory desc, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the revision |
elems | bytes32[] | Packed element list |
setOwner
Returns the current owner of a set
function setOwner(uint64 id) external view returns (address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
Returns
Name | Type | Description |
---|---|---|
owner | address | Owner address |
setSota
Returns the latest descriptor and current owner
function setSota(uint64 id) external view returns (Descriptor memory desc, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Latest descriptor |
owner | address | Current owner |
setStatus
Checks whether all provided set IDs are active
function setStatus(uint64[] memory ids) external view returns (bool active);
Parameters
Name | Type | Description |
---|---|---|
ids | uint64[] | List of set IDs |
Returns
Name | Type | Description |
---|---|---|
active | bool | True if all sets have a revision > 0 |
setContract
Returns the contract address associated with a set
function setContract(uint64 id) external view returns (address code);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
Returns
Name | Type | Description |
---|---|---|
code | address | Address of the deployed contract |
Events
SetRegistered
Emitted when a new set is registered
event SetRegistered(uint64 id, Descriptor desc, address code, bytes32 data, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the new set |
desc | Descriptor | Set descriptor after registration |
code | address | Address of the associated set contract |
data | bytes32 | Hash of the associated matter (external content) |
owner | address | Owner address of the set |
SetUpdated
Emitted when a set is updated
event SetUpdated(uint64 id, Descriptor desc, bytes32 data);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the set |
desc | Descriptor | Updated descriptor |
data | bytes32 | New data hash |
SetUpgraded
Emitted when a set is upgraded
event SetUpgraded(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the set |
desc | Descriptor | Descriptor after upgrade |
SetTouched
Emitted when a set is touched (revision bumped without content change)
event SetTouched(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the set |
desc | Descriptor | Descriptor after touch |
IUniqueRegistry
Interface for registering and managing uniques
Functions
uniqueRegister
Registers a new unique token
function uniqueRegister(address code, bytes32 data, TokenStandard std, uint8 decimals, string memory symbol)
external
returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
code | address | Address of the token contract |
data | bytes32 | Hash of the associated matter |
std | TokenStandard | Token standard (e.g. ERC721) |
decimals | uint8 | Number of decimals |
symbol | string | Display symbol (max 30 characters) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | ID of the new unique |
desc | Descriptor | Descriptor after registration |
uniqueUpdate
Updates the data hash of a unique
function uniqueUpdate(uint64 id, bytes32 data) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
data | bytes32 | New data hash |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
uniqueUpdate
Updates the data hash and symbol of a unique
function uniqueUpdate(uint64 id, bytes32 data, string memory symbol) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
data | bytes32 | New data hash |
symbol | string | New display symbol (max 30 characters) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
uniqueUpgrade
Upgrades the kind and/or set revision of a unique
function uniqueUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
kindRev | uint32 | New kind revision (0 = no change) |
setRev | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after upgrade |
uniqueTouch
Bumps the revision of a unique with no content change
function uniqueTouch(uint64 id) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after touch |
uniqueTransfer
Transfers ownership of a unique token
function uniqueTransfer(uint64 id, address to) external returns (address from);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
to | address | Address of the new owner |
Returns
Name | Type | Description |
---|---|---|
from | address | Address of the previous owner |
uniqueRevision
Resolves and validates a revision
function uniqueRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
rev0 | uint32 | Requested revision (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Resolved revision (0 = not found) |
uniqueDescriptor
Returns the descriptor at a given revision
function uniqueDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the specified revision |
uniqueSnapshot
Returns descriptor and elements at a specific revision
function uniqueSnapshot(uint64 id, uint32 rev0)
external
view
returns (Descriptor memory desc, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the revision |
elems | bytes32[] | Elements at the revision |
uniqueOwner
Returns the current owner of a unique
function uniqueOwner(uint64 id) external view returns (address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
Returns
Name | Type | Description |
---|---|---|
owner | address | Address of the current owner |
uniqueSota
Returns the latest descriptor and current owner
function uniqueSota(uint64 id) external view returns (Descriptor memory desc, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Latest descriptor |
owner | address | Address of the current owner |
uniqueStatus
Checks whether all given uniques are active (revision > 0)
function uniqueStatus(uint64[] memory ids) external view returns (bool active);
Parameters
Name | Type | Description |
---|---|---|
ids | uint64[] | List of unique IDs |
Returns
Name | Type | Description |
---|---|---|
active | bool | True if all exist and are active |
Events
UniqueRegistered
Emitted when a new unique is registered
event UniqueRegistered(uint64 id, Descriptor desc, address code, bytes32 data, TokenSpec spec, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
desc | Descriptor | Descriptor of the unique |
code | address | Token contract address |
data | bytes32 | Hash of the underlying asset (e.g., image, model, metadata) |
spec | TokenSpec | Token specification (standard, decimals, and symbol) |
owner | address | Address of the initial owner |
UniqueUpdated
Emitted when a unique is updated
event UniqueUpdated(uint64 id, Descriptor desc, bytes32 data, TokenSpec spec);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
desc | Descriptor | Updated descriptor (same ID, new revision) |
data | bytes32 | New data hash representing the updated asset |
spec | TokenSpec | Updated or unchanged token specification |
UniqueUpgraded
Emitted when a unique is upgraded to a new revision
event UniqueUpgraded(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
desc | Descriptor | Descriptor after the upgrade (revised kind/set refs) |
UniqueTouched
Emitted when a unique is touched (revision bumped with no content change)
event UniqueTouched(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
desc | Descriptor | Descriptor after touch (updated revision only) |
UniqueTransferred
Emitted when ownership of a unique is transferred
event UniqueTransferred(uint64 id, address from, address to);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Unique ID |
from | address | Previous owner's address |
to | address | New owner's address |
IValueRegistry
Interface for registering and managing values
Functions
valueRegister
Registers a new value token
function valueRegister(address code, bytes32 data, TokenStandard std, uint8 decimals, string memory symbol)
external
returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
code | address | Token contract address |
data | bytes32 | Hash of the underlying matter or metadata |
std | TokenStandard | Token standard (e.g. ERC20) |
decimals | uint8 | Token's decimal precision |
symbol | string | Display symbol (max 30 characters) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | New value ID |
desc | Descriptor | Descriptor after registration |
valueUpdate
Updates the data hash of an existing value
function valueUpdate(uint64 id, bytes32 data) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
data | bytes32 | New data hash |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor (revision bumped) |
valueUpdate
Updates the data hash and symbol of an existing value
function valueUpdate(uint64 id, bytes32 data, string memory symbol) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
data | bytes32 | New data hash |
symbol | string | New display symbol |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Updated descriptor |
valueUpgrade
Upgrades the kind/set revision of a value
function valueUpgrade(uint64 id, uint32 kindRev0, uint32 setRev0) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
kindRev0 | uint32 | New kind revision (0 = no change) |
setRev0 | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after upgrade |
valueTouch
Touches a value, bumping its revision without changing its content
function valueTouch(uint64 id) external returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor after touch |
valueTransfer
Transfers ownership of a value to a new address
function valueTransfer(uint64 id, address to) external returns (address from);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
to | address | Address to transfer ownership to |
Returns
Name | Type | Description |
---|---|---|
from | address | Address of the previous owner |
valueRevision
Resolves and validates a revision of a value
function valueRevision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
rev0 | uint32 | Requested revision (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Validated revision (0 = not found) |
valueDescriptor
Returns the descriptor of a value at a specific revision
function valueDescriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the given revision |
valueSnapshot
Returns descriptor and elements of a value at a specific revision
function valueSnapshot(uint64 id, uint32 rev0) external view returns (Descriptor memory desc, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
rev0 | uint32 | Revision to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Descriptor at the given revision |
elems | bytes32[] | Element values at the given revision |
valueOwner
Returns the current owner of a value
function valueOwner(uint64 id) external view returns (address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
Returns
Name | Type | Description |
---|---|---|
owner | address | Current owner's address |
valueSota
Returns the latest descriptor and current owner of a value
function valueSota(uint64 id) external view returns (Descriptor memory desc, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Value ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | Latest descriptor |
owner | address | Current owner's address |
valueStatus
Checks whether all specified values are active (revision > 0)
function valueStatus(uint64[] memory ids) external view returns (bool active);
Parameters
Name | Type | Description |
---|---|---|
ids | uint64[] | Array of value IDs |
Returns
Name | Type | Description |
---|---|---|
active | bool | True if all values exist and are active |
Events
ValueRegistered
Emitted when a new value is registered
event ValueRegistered(uint64 id, Descriptor desc, address code, bytes32 data, TokenSpec spec, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the newly registered value |
desc | Descriptor | Descriptor of the value |
code | address | Token contract address |
data | bytes32 | Hash of the underlying asset or metadata |
spec | TokenSpec | Token specification (standard, decimals, symbol) |
owner | address | Address of the initial owner |
ValueUpdated
Emitted when a value is updated
event ValueUpdated(uint64 id, Descriptor desc, bytes32 data, TokenSpec spec);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the value |
desc | Descriptor | Updated descriptor (with bumped revision) |
data | bytes32 | New hash of the asset or metadata |
spec | TokenSpec | Updated or unchanged token specification |
ValueUpgraded
Emitted when a value is upgraded (revision of kind/set updated)
event ValueUpgraded(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the value |
desc | Descriptor | Descriptor after upgrade |
ValueTouched
Emitted when a value is touched (revision bump only, no content change)
event ValueTouched(uint64 id, Descriptor desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the value |
desc | Descriptor | Descriptor after touch |
ValueTransferred
Emitted when ownership of a value is transferred
event ValueTransferred(uint64 id, address from, address to);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the value |
from | address | Previous owner address |
to | address | New owner address |
Contents
IERC20MetadataMinimal
Functions
name
function name() external view returns (string memory);
symbol
function symbol() external view returns (string memory);
decimals
function decimals() external view returns (uint8);
IERC7572
Functions
contractURI
function contractURI() external view returns (string memory);
Events
ContractURIUpdated
event ContractURIUpdated();
Contents
IInteroperable
Inherits: IERC165
Interface for set contracts that support object-level interoperability
Enables a set to react to registry lifecycle events and object interactions. These callbacks are invoked before the respective action is finalized. The protocol requires that the callback returns the expected value for the action to proceed.
Functions
onSetRegister
Called before a set is registered
function onSetRegister(uint64 set, Descriptor memory od) external returns (bytes4 selector);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
od | Descriptor | Descriptor of the set |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onSetRegister.selector |
onSetUpdate
Called before a set is updated
function onSetUpdate(uint64 set, Descriptor memory od) external returns (bytes4 selector);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
od | Descriptor | Updated descriptor |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onSetUpdate.selector |
onSetUpgrade
Called before a set is upgraded
function onSetUpgrade(uint64 set, Descriptor memory od) external returns (bytes4 selector);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
od | Descriptor | Descriptor after upgrade |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onSetUpgrade.selector |
onSetTouch
Called before a set is touched (revision bump with no content change)
function onSetTouch(uint64 set, Descriptor memory od) external returns (bytes4 selector);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
od | Descriptor | Descriptor after touch |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onSetTouch.selector |
onObjectRelate
Called before an object from this set is linked to another object
function onObjectRelate(uint64 id, uint64 rel, uint64 data, uint64 tailSet, uint64 tailId, uint64 tailKind)
external
returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Head object ID (belongs to this set) |
rel | uint64 | Relation ID |
data | uint64 | Optional relation data (uint64 encoded) |
tailSet | uint64 | Set ID of the tail object |
tailId | uint64 | ID of the tail object |
tailKind | uint64 | Kind ID of the tail object |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Updated descriptor of the head object |
onObjectUnrelate
Called before an object from this set is unlinked from another object
function onObjectUnrelate(uint64 id, uint64 rel, uint64 data, uint64 tailSet, uint64 tailId, uint64 tailKind)
external
returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Head object ID (belongs to this set) |
rel | uint64 | Relation ID |
data | uint64 | Optional relation data (uint64 encoded) |
tailSet | uint64 | Set ID of the tail object |
tailId | uint64 | ID of the tail object |
tailKind | uint64 | Kind ID of the tail object |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Updated descriptor of the head object |
onObjectTransfer
Called before ownership of an object from this set is transferred as part of a relation or unrelation operation.
function onObjectTransfer(uint64 id, address from, address to) external returns (bytes4 selector);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | ID of the object being transferred |
from | address | Current owner |
to | address | New owner |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onObjectTransfer.selector to proceed |
IObjectMinterAdmin
Interface for managing mint policies on the object minter
All functions apply to the set represented by the calling contract and must be access-controlled
Functions
addMintPolicy
Adds a new mint policy for the set represented by the calling contract
function addMintPolicy(MintPolicy memory policy) external returns (uint32 index);
Parameters
Name | Type | Description |
---|---|---|
policy | MintPolicy | The policy configuration to add |
Returns
Name | Type | Description |
---|---|---|
index | uint32 | Assigned policy index |
disableMintPolicy
Disables a mint policy for the set represented by the calling contract
function disableMintPolicy(uint32 index) external;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | Index of the policy to disable |
enableMintPolicy
Enables a mint policy for the set represented by the calling contract
function enableMintPolicy(uint32 index) external;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | Index of the policy to enable |
IRemoteMintable
Inherits: IERC165
Interface for set contracts that support minting via an external ObjectMinter
Functions
onObjectMint
Called by ObjectMinter after payment is collected but before finalizing the mint
If id0
is 0, the contract must assign and return a new object ID.
If id0
is non-zero, the contract must validate and return the same ID.
function onObjectMint(address operator, address to, uint64 id0, uint256 context, bytes memory data)
external
returns (bytes4 selector, uint64 id);
Parameters
Name | Type | Description |
---|---|---|
operator | address | Address that initiated the mint (typically msg.sender) |
to | address | Recipient of the newly minted object |
id0 | uint64 | Requested object ID (0 = assign automatically) |
context | uint256 | Packed 256-bit context data (see MintingContext) |
data | bytes | Optional arbitrary payload passed for custom logic |
Returns
Name | Type | Description |
---|---|---|
selector | bytes4 | Must return onObjectMint.selector to confirm success |
id | uint64 | Finalized object ID to be minted |
objectMinter
Returns the address of the ObjectMinter contract
function objectMinter() external view returns (address minter);
Returns
Name | Type | Description |
---|---|---|
minter | address | The ObjectMinter address |
ISet
Inherits: IERC165
Minimal interface for set contracts
Functions
upgrade
Upgrade an object to a new kind or set revision
function upgrade(uint64 id, uint32 kindRev0, uint32 setRev0) external returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
kindRev0 | uint32 | New kind revision (0 = no change) |
setRev0 | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor after upgrade |
touch
Touch an object to increment revision without content change
function touch(uint64 id) external returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor after touch |
transfer
Transfer ownership of an object
function transfer(uint64 id, address to) external;
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
to | address | Address of the new owner |
uri
Get URI template for metadata
Client should replace {id}
and {rev}
placeholders
function uri() external view returns (string memory uri_);
Returns
Name | Type | Description |
---|---|---|
uri_ | string | URI template string |
owner
Get current owner of an object
function owner(uint64 id) external view returns (address owner_);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
owner_ | address | Current owner address |
revision
Resolve and validate a revision number
function revision(uint64 id, uint32 rev0) external view returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision to check (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Valid revision (0 if invalid) |
descriptor
Get descriptor at a specific revision
function descriptor(uint64 id, uint32 rev0) external view returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor at that revision |
elements
Get elements at a specific revision
function elements(uint64 id, uint32 rev0) external view returns (bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
elems | bytes32[] | Elements array at that revision |
sota
Get the latest descriptor and current owner
function sota(uint64 id) external view returns (Descriptor memory od, address owner_);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor at the specified revision |
owner_ | address | Current owner (not historical) |
snapshot
Get descriptor and elements at a specific revision
function snapshot(uint64 id, uint32 rev0) external view returns (Descriptor memory od, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor at the specified revision |
elems | bytes32[] | Elements at the specified revision |
Events
Created
Emitted when a new object is created
event Created(uint64 id, Descriptor od, bytes32[] elems, address owner);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
od | Descriptor | Object descriptor |
elems | bytes32[] | Elements of the object |
owner | address | Initial owner |
Updated
Emitted when an object is updated
event Updated(uint64 id, Descriptor od, bytes32[] elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
od | Descriptor | Updated descriptor |
elems | bytes32[] | Updated elements |
Upgraded
Emitted when an object is upgraded
event Upgraded(uint64 id, Descriptor od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
od | Descriptor | Descriptor after upgrade |
Touched
Emitted when an object is touched (bumped without content change)
event Touched(uint64 id, Descriptor od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
od | Descriptor | Latest descriptor |
Destroyed
Emitted when an object is destroyed
event Destroyed(uint64 id, Descriptor od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
od | Descriptor | Descriptor before destruction |
Transferred
Emitted when ownership is transferred
event Transferred(uint64 id, address from, address to);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
from | address | Previous owner |
to | address | New owner |
ISetRegistryAdmin
Interface for privileged set registration and upgrade operations
All methods operate on the set represented by the calling contract and must be access-controlled
Functions
registerSet
Registers the set represented by the calling contract
function registerSet(bytes32 data) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | Content hash (e.g., metadata or schema) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Newly assigned set ID |
desc | Descriptor | Descriptor of the registered set |
updateSet
Updates the content hash for the set represented by the calling contract
function updateSet(bytes32 data) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | New content hash |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Updated descriptor |
upgradeSet
Upgrades the kind or set revision of the set represented by the calling contract
Pass 0 to skip updating either revision
function upgradeSet(uint32 kindRev0, uint32 setRev0) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
kindRev0 | uint32 | New kind revision (0 = no change) |
setRev0 | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Descriptor after upgrade |
touchSet
Increments the revision of the set represented by the calling contract
function touchSet() external returns (uint64 id, Descriptor memory desc);
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Descriptor after revision bump |
ISoke
Interface for accessing the core registry contracts
Functions
setRegistry
Returns the address of the Set Registry contract
function setRegistry() external view returns (address setr);
Returns
Name | Type | Description |
---|---|---|
setr | address | Address of the Set Registry |
omniRegistry
Returns the address of the Omni Registry contract
function omniRegistry() external view returns (address omnir);
Returns
Name | Type | Description |
---|---|---|
omnir | address | Address of the Omni Registry |
kindRegistry
Returns the address of the Kind Registry contract
function kindRegistry() external view returns (address kindr);
Returns
Name | Type | Description |
---|---|---|
kindr | address | Address of the Kind Registry |
elementRegistry
Returns the address of the Element Registry contract
function elementRegistry() external view returns (address elemr);
Returns
Name | Type | Description |
---|---|---|
elemr | address | Address of the Element Registry |
Contents
Counter48
Counter for objects with IDs from 1 to type(uint48).max inclusive
State Variables
MIN_ID
uint48 constant MIN_ID = 1;
MAX_ID
uint48 constant MAX_ID = type(uint48).max - 1;
Functions
initialize
function initialize(Counter storage counter, uint48 initial) internal;
increase
function increase(Counter storage counter) internal returns (uint48 previous);
decrease
function decrease(Counter storage counter) internal returns (uint48 previous);
current
function current(Counter storage counter) internal view returns (uint48);
Errors
Overflow
error Overflow();
Underflow
error Underflow();
InvalidInitial
error InvalidInitial();
Structs
Counter
struct Counter {
uint48 value;
}
Counter64
Counter for objects with IDs from 1 to type(uint64).max inclusive
State Variables
MIN_ID
uint64 constant MIN_ID = 1;
MAX_ID
uint64 constant MAX_ID = type(uint64).max - 1;
Functions
initialize
function initialize(Counter storage counter, uint64 initial) internal;
increment
function increment(Counter storage counter) internal returns (uint64 previous);
decrement
function decrement(Counter storage counter) internal returns (uint64 previous);
current
function current(Counter storage counter) internal view returns (uint64);
Errors
Overflow
error Overflow();
Underflow
error Underflow();
InvalidInitial
error InvalidInitial();
Structs
Counter
struct Counter {
uint64 value;
}
Packing
Functions
pack_uint8x16
function pack_uint8x16(uint8[] memory array) internal pure returns (bytes32 packed);
unpack_uint8x16
function unpack_uint8x16(bytes32 packed) internal pure returns (uint8[] memory array);
pack_uint64x4
function pack_uint64x4(uint64[] memory array) internal pure returns (bytes32 packed);
unpack_uint64x4
function unpack_uint64x4(bytes32 packed) internal pure returns (uint64[] memory array);
pack_uint64x16
function pack_uint64x16(uint64[] memory array) internal pure returns (bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3);
unpack_uint64x16
function unpack_uint64x16(bytes32 p0, bytes32 p1, bytes32 p2, bytes32 p3)
internal
pure
returns (uint64[] memory array);
_pack4
function _pack4(uint64[] memory a, uint256 offset) private pure returns (bytes32 out);
_unpack4
function _unpack4(bytes32 b, uint64[] memory a, uint256 offset) private pure;
Semver
Functions
pack
function pack(uint8 storage_, uint8 major, uint8 minor, uint8 patch) internal pure returns (uint32 semver);
unpack
function unpack(uint32 semver) internal pure returns (uint8 storage_, uint8 major, uint8 minor, uint8 patch);
Snapshots
Library for storing object revisions
Functions
semver
function semver() external pure returns (uint32 version);
create
function create(Storage storage $, uint64 id, Descriptor memory desc, bytes32[] memory elems, address owner) external;
update
function update(Storage storage $, uint64 id, bytes32[] memory elems) external returns (Descriptor memory);
upgrade
function upgrade(Storage storage $, uint64 id, uint32 kindRev, uint32 setRev, uint256 count)
external
returns (Descriptor memory);
touch
function touch(Storage storage $, uint64 id, uint256 count) external returns (Descriptor memory);
transfer
function transfer(Storage storage $, uint64 id, address to) external returns (address from);
ownerOf
function ownerOf(Storage storage $, uint64 id) external view returns (address);
revisionOf
function revisionOf(Storage storage $, uint64 id) external view returns (uint32);
revisionAt
function revisionAt(Storage storage $, uint64 id, uint32 rev0) external view returns (uint32);
descriptorAt
function descriptorAt(Storage storage $, uint64 id, uint32 rev0) external view returns (Descriptor memory);
elementsAt
function elementsAt(Storage storage $, uint64 id, uint32 rev0, uint256 num) external view returns (bytes32[] memory);
elementAt
function elementAt(Storage storage $, uint64 id, uint32 rev0, uint256 index) external view returns (bytes32);
sotaOf
function sotaOf(Storage storage $, uint64 id) external view returns (Descriptor memory desc, address owner);
snapshotAt
function snapshotAt(Storage storage $, uint64 id, uint32 rev0, uint256 num)
external
view
returns (Descriptor memory, bytes32[] memory);
statusOf
function statusOf(Storage storage $, uint64[] memory ids) external view returns (bool);
_requireStatus
function _requireStatus(Storage storage $, uint64 id) private view returns (Status memory);
_requireRevision
function _requireRevision(Storage storage $, uint64 id, uint32 rev0) private view returns (uint32);
_validateDescriptor
function _validateDescriptor(Descriptor memory desc) private pure;
_makeRevisionKey
function _makeRevisionKey(uint64 id, uint32 rev) private pure returns (uint256);
Errors
InvalidId
error InvalidId();
InvalidOwner
error InvalidOwner();
InvalidKindId
error InvalidKindId();
InvalidSetId
error InvalidSetId();
InvalidRevision
error InvalidRevision();
InvalidKindRevision
error InvalidKindRevision();
InvalidSetRevision
error InvalidSetRevision();
InvalidElements
error InvalidElements();
InvalidFieldIndex
error InvalidFieldIndex();
RecordExists
error RecordExists(uint64 id);
RecordNotExist
error RecordNotExist(uint64 id);
RecordNotActive
error RecordNotActive(uint64 id);
RevisionNotExist
error RevisionNotExist(uint64 id, uint32 rev);
Unauthorized
error Unauthorized(uint64 id, address visitor);
Structs
Status
Object record tracking ownership and latest revision
struct Status {
address owner;
uint32 latest;
}
Revision
Revision record containing descriptor and elements
struct Revision {
Descriptor desc;
bytes32[16] elems;
}
Storage
struct Storage {
mapping(uint256 => Status) sota;
mapping(uint256 => Revision) revisions;
}
Contents
- Descriptor
- DescriptorPacked
- DescriptorLib
- ElementType
- ElementLib
- MatterForm
- MatterSpec
- MatterSpecPacked
- MatterContent
- MatterHash
- MintPolicy
- MintPolicyStatus
- MintPermissionType
- MintPermissionData
- MintPermissionLib
- MintContext
- MintContextLib
- Adjacency
- SID
- Node
- Arc
- RelationInitiator
- RelationTerminator
- RelationGrant
- RelationOwnerShift
- RelationRule
- RelationLib
- TokenStandard
- TokenType
- TokenSpec
- TokenSpecPacked
- TokenLib
- TokenSpecAccessors
Descriptor
struct Descriptor {
uint32 traits;
uint32 rev;
uint32 kindRev;
uint32 setRev;
uint64 kindId;
uint64 setId;
}
DescriptorPacked
type DescriptorPacked is bytes32;
DescriptorLib
Functions
pack
function pack(Descriptor memory d) internal pure returns (DescriptorPacked);
unpack
function unpack(DescriptorPacked packed) internal pure returns (Descriptor memory d);
traits
function traits(DescriptorPacked packed) internal pure returns (uint32);
rev
function rev(DescriptorPacked packed) internal pure returns (uint32);
kindRev
function kindRev(DescriptorPacked packed) internal pure returns (uint32);
setRev
function setRev(DescriptorPacked packed) internal pure returns (uint32);
kindId
function kindId(DescriptorPacked packed) internal pure returns (uint64);
setId
function setId(DescriptorPacked packed) internal pure returns (uint64);
ElementType
enum ElementType {
None,
Info,
Value,
Unique,
Object,
List,
Table,
Perm,
Json,
Wasm,
Image,
Model
}
ElementLib
Structs
ElementValueRef
Reference to a fungible token value instance
struct ElementValueRef {
uint16 rev;
uint48 tok;
uint192 amount;
}
ElementUniqueRef
Reference to a unique token instance
struct ElementUniqueRef {
uint16 rev;
uint48 tok;
uint64 id;
uint128 amount;
}
ElementObjectRef
Reference to an object instance
struct ElementObjectRef {
uint128 _reserved;
uint64 set;
uint64 id;
}
MatterForm
enum MatterForm {
None,
List,
Table,
Perm,
Json,
Wasm,
Image,
Model
}
MatterSpec
struct MatterSpec {
MatterForm form;
bytes31 mime;
}
MatterSpecPacked
type MatterSpecPacked is bytes32;
MatterContent
struct MatterContent {
MatterSpecPacked spec;
bytes blob;
}
MatterHash
type MatterHash is bytes32;
MintPolicy
Defines the access and payment rules for minting objects
struct MintPolicy {
uint32 index;
MintPolicyStatus status;
MintPermissionType perm;
uint16 limit;
uint32 tag;
address recipient;
address currency;
uint96 price;
uint64 idStart;
uint64 idEnd;
uint64 saleStart;
uint64 saleEnd;
bytes32 data;
}
MintPolicyStatus
Indicates the current status of a mint policy
enum MintPolicyStatus {
None,
Enabled,
Disabled
}
MintPermissionType
Access modes used to restrict who can mint
enum MintPermissionType {
Public,
Allowlist,
AllowTable
}
MintPermissionData
Encoded permission data tied to a policy
For Public: must be bytes32(0)
For Allowlist / AllowTable: must be a Merkle root
type MintPermissionData is bytes32;
MintPermissionLib
Encodes, decodes, and verifies mint auth data for each permission type.
Functions
allowList_Encode
function allowList_Encode(bytes32[] memory proof) internal pure returns (bytes memory auth);
allowList_Decode
function allowList_Decode(bytes memory auth) internal pure returns (bytes32[] memory proof);
allowList_Leaf
function allowList_Leaf(address user) internal pure returns (bytes32);
allowTable_Encode
function allowTable_Encode(uint96 price, uint16 limit, bytes32[] memory proof)
internal
pure
returns (bytes memory auth);
allowTable_Decode
function allowTable_Decode(bytes memory auth)
internal
pure
returns (uint96 price, uint16 limit, bytes32[] memory proof);
allowTable_Leaf
function allowTable_Leaf(address user, uint96 price, uint16 limit) internal pure returns (bytes32);
MintContext
Struct representing packed minting context
Layout (MSB → LSB): [uint64 _reserved | uint64 idStart | uint64 idEnd | uint32 policy | uint32 tag]
struct MintContext {
uint64 _reserved;
uint64 idStart;
uint64 idEnd;
uint32 policy;
uint32 tag;
}
MintContextLib
Utility library for packing/unpacking MintContext into a uint256 word
Functions
pack
Packs a MintContext struct into a single uint256
function pack(MintContext memory ctx) internal pure returns (uint256 packed);
Parameters
Name | Type | Description |
---|---|---|
ctx | MintContext | The MintContext struct |
Returns
Name | Type | Description |
---|---|---|
packed | uint256 | The packed uint256 representation |
pack
Packs individual context fields into a uint256 (with _reserved = 0)
function pack(uint32 policy, uint32 tag, uint64 idStart, uint64 idEnd) internal pure returns (uint256 packed);
Parameters
Name | Type | Description |
---|---|---|
policy | uint32 | Policy index |
tag | uint32 | Custom user tag |
idStart | uint64 | Inclusive object ID start |
idEnd | uint64 | Exclusive object ID end |
Returns
Name | Type | Description |
---|---|---|
packed | uint256 | The packed uint256 representation |
unpack
Unpacks a packed uint256 into a MintContext struct
function unpack(uint256 packed) internal pure returns (MintContext memory ctx);
Parameters
Name | Type | Description |
---|---|---|
packed | uint256 | The packed uint256 |
Returns
Name | Type | Description |
---|---|---|
ctx | MintContext | The unpacked MintContext struct |
Adjacency
Represents a constraint on the acceptable number of objects by kind in a relation. A maximum of 16 adjacencies can be specified per relation.
Adjacencies are typically specified in a row, with kinds ordered in ascending order.
struct Adjacency {
uint16 degs;
uint48 kind;
}
Properties
Name | Type | Description |
---|---|---|
degs | uint16 | Encodes minimum and maximum degree constraints. minDeg = (degs & 0x8000) >> 15, maxDeg = degs & 0x7FFF |
kind | uint48 | Kind ID of the related object. 0 = any other kind, 0xFFFFFFFFFFFF = total, [1, 2^48 - 2] = specific kind ID |
SID
struct SID {
uint64 set;
uint64 id;
}
Node
struct Node {
uint64 data;
uint32 _reserved;
uint32 grant;
uint64 set;
uint64 id;
}
Arc
struct Arc {
uint64 data;
uint64 rel;
uint64 set;
uint64 id;
}
RelationInitiator
Defines who is authorized to initiate a relation
enum RelationInitiator {
Owner,
Preset,
ValueHolder,
UniqueHolder,
ObjectHolder,
Eligible,
Anyone
}
RelationTerminator
Defines who is allowed to call unrelate()
enum RelationTerminator {
TailOwner,
HeadOwner,
Either,
Neither,
Anyone,
Nobody
}
RelationGrant
Describes a granted permission to initiate a relation
struct RelationGrant {
uint32 id;
uint8 status;
RelationInitiator initiator;
uint16 reserved;
uint64 rel;
uint64 kind;
uint64 set;
bytes32 extra;
}
RelationOwnerShift
Defines how ownership of the tail object changes during relate/unrelate
enum RelationOwnerShift {
Retain,
TransferToTailOwner,
TransferToHeadOwner,
TransferToCaller,
TransferToPreset,
TransferToBurned,
TransferToResolved,
TransferToIntended,
HoldForTailOwner,
HoldForHeadOwner,
HoldForCaller,
HoldForPreset,
HoldForBurned,
HoldForResolved,
HoldPending
}
RelationRule
Defines relation lifecycle rules: who can relate/unrelate and how ownership shifts
struct RelationRule {
uint8 version;
RelationOwnerShift relateShift;
RelationTerminator terminator;
RelationOwnerShift unrelateShift;
uint64 unrelateDelay;
bytes20 extra;
}
RelationLib
Functions
packPresetData
Pack a preset delegate address into bytes32
function packPresetData(address delegate) internal pure returns (bytes32);
packEligibleData
Pack an eligible contract address into bytes32
function packEligibleData(address contract_) internal pure returns (bytes32);
packValueHolderData
Pack a value token holder spec (value index + amount) into bytes32
function packValueHolderData(uint64 index, uint128 amount) internal pure returns (bytes32);
packUniqueHolderData
Pack a unique token holder spec (unique index + amount=1) into bytes32
function packUniqueHolderData(uint64 index, uint128 amount) internal pure returns (bytes32);
packObjectHolderData
Pack an object token holder spec (set + id + amount=1) into bytes32
function packObjectHolderData(uint64 set, uint64 id) internal pure returns (bytes32);
Structs
RelationInitiatorDataHolder
Data for Holder-based authorization
struct RelationInitiatorDataHolder {
uint64 set;
uint64 id;
uint128 amount;
}
TokenStandard
enum TokenStandard {
None,
Native,
ERC20,
ERC721,
ERC1155
}
TokenType
enum TokenType {
None,
Value,
Unique,
Object
}
TokenSpec
struct TokenSpec {
TokenStandard std;
uint8 decimals;
bytes30 symbol;
}
TokenSpecPacked
type TokenSpecPacked is bytes32;
TokenLib
Functions
pack
function pack(TokenStandard std, uint8 decimals, bytes30 symbol) internal pure returns (bytes32);
unpack
function unpack(bytes32 t) internal pure returns (TokenSpec memory);
toBytes30
function toBytes30(string memory s) internal pure returns (bytes30 out);
toString
function toString(bytes30 symbol) internal pure returns (string memory);
TokenSpecAccessors
Functions
std
function std(bytes32 t) internal pure returns (uint8);
decimals
function decimals(bytes32 t) internal pure returns (uint8);
symbol
function symbol(bytes32 t) internal pure returns (bytes30);
std
function std(TokenSpecPacked t) internal pure returns (uint8);
decimals
function decimals(TokenSpecPacked t) internal pure returns (uint8);
symbol
function symbol(TokenSpecPacked t) internal pure returns (bytes30);
Contents
Interoperable
Inherits: IInteroperable, ISetRegistryAdmin
State Variables
_setRegistry
address internal _setRegistry;
_omniRegistry
address internal _omniRegistry;
_kindRegistry
address internal _kindRegistry;
_elemRegistry
address internal _elemRegistry;
_setId
uint64 internal _setId;
_setRev
uint32 internal _setRev;
Functions
onlySetRegistry
modifier onlySetRegistry();
onlyOmniRegistry
modifier onlyOmniRegistry();
constructor
constructor(address setr);
registerSet
Registers the set represented by the calling contract
function registerSet(bytes32 data) external override returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | Content hash (e.g., metadata or schema) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Newly assigned set ID |
desc | Descriptor | Descriptor of the registered set |
updateSet
Updates the content hash for the set represented by the calling contract
function updateSet(bytes32 data) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
data | bytes32 | New content hash |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Updated descriptor |
upgradeSet
Upgrades the kind or set revision of the set represented by the calling contract
Pass 0 to skip updating either revision
function upgradeSet(uint32 kindRev0, uint32 setRev0) external returns (uint64 id, Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
kindRev0 | uint32 | New kind revision (0 = no change) |
setRev0 | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Descriptor after upgrade |
touchSet
Increments the revision of the set represented by the calling contract
function touchSet() external returns (uint64 id, Descriptor memory desc);
Returns
Name | Type | Description |
---|---|---|
id | uint64 | Set ID |
desc | Descriptor | Descriptor after revision bump |
onSetRegister
Called before a set is registered
function onSetRegister(uint64 set, Descriptor memory meta) external virtual override onlySetRegistry returns (bytes4);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
meta | Descriptor |
Returns
Name | Type | Description |
---|---|---|
<none> | bytes4 | selector Must return onSetRegister.selector |
onSetUpdate
Called before a set is updated
function onSetUpdate(uint64 set, Descriptor memory meta) external virtual override onlySetRegistry returns (bytes4);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
meta | Descriptor |
Returns
Name | Type | Description |
---|---|---|
<none> | bytes4 | selector Must return onSetUpdate.selector |
onSetUpgrade
Called before a set is upgraded
function onSetUpgrade(uint64 set, Descriptor memory meta) external virtual override onlySetRegistry returns (bytes4);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
meta | Descriptor |
Returns
Name | Type | Description |
---|---|---|
<none> | bytes4 | selector Must return onSetUpgrade.selector |
onSetTouch
Called before a set is touched (revision bump with no content change)
function onSetTouch(uint64 set, Descriptor memory meta) external virtual override onlySetRegistry returns (bytes4);
Parameters
Name | Type | Description |
---|---|---|
set | uint64 | Set ID |
meta | Descriptor |
Returns
Name | Type | Description |
---|---|---|
<none> | bytes4 | selector Must return onSetTouch.selector |
supportsInterface
Query if a contract implements an interface
Interface identification is specified in ERC-165. This function uses less than 30,000 gas.
function supportsInterface(bytes4 interfaceId) external pure virtual override returns (bool supported);
Parameters
Name | Type | Description |
---|---|---|
interfaceId | bytes4 |
Returns
Name | Type | Description |
---|---|---|
supported | bool | true if the contract implements interfaceID and interfaceID is not 0xffffffff, false otherwise |
Errors
InvalidRegistryAddress
error InvalidRegistryAddress();
CallerNotSetRegistry
error CallerNotSetRegistry();
CallerNotOmniRegistry
error CallerNotOmniRegistry();
RemoteMintable
Inherits: IRemoteMintable, IObjectMinterAdmin
State Variables
_objectMinter
address internal _objectMinter;
Functions
onlyObjectMinter
modifier onlyObjectMinter();
constructor
constructor(address minter);
addMintPolicy
Adds a new mint policy for the set represented by the calling contract
function addMintPolicy(MintPolicy memory policy) external override returns (uint32 index);
Parameters
Name | Type | Description |
---|---|---|
policy | MintPolicy | The policy configuration to add |
Returns
Name | Type | Description |
---|---|---|
index | uint32 | Assigned policy index |
disableMintPolicy
Disables a mint policy for the set represented by the calling contract
function disableMintPolicy(uint32 index) external override;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | Index of the policy to disable |
enableMintPolicy
Enables a mint policy for the set represented by the calling contract
function enableMintPolicy(uint32 index) external override;
Parameters
Name | Type | Description |
---|---|---|
index | uint32 | Index of the policy to enable |
onObjectMint
Called by ObjectMinter after payment is collected but before finalizing the mint
If id0
is 0, the contract must assign and return a new object ID.
If id0
is non-zero, the contract must validate and return the same ID.
function onObjectMint(address operator, address to, uint64 id0, uint256 context, bytes memory data)
external
override
onlyObjectMinter
returns (bytes4 supported, uint64 id);
Parameters
Name | Type | Description |
---|---|---|
operator | address | Address that initiated the mint (typically msg.sender) |
to | address | Recipient of the newly minted object |
id0 | uint64 | Requested object ID (0 = assign automatically) |
context | uint256 | Packed 256-bit context data (see MintingContext) |
data | bytes | Optional arbitrary payload passed for custom logic |
Returns
Name | Type | Description |
---|---|---|
supported | bytes4 | selector Must return onObjectMint.selector to confirm success |
id | uint64 | Finalized object ID to be minted |
objectMinter
Returns the address of the ObjectMinter contract
function objectMinter() external view override returns (address);
Returns
Name | Type | Description |
---|---|---|
<none> | address | minter The ObjectMinter address |
supportsInterface
Query if a contract implements an interface
Interface identification is specified in ERC-165. This function uses less than 30,000 gas.
function supportsInterface(bytes4 interfaceId) external pure virtual override returns (bool);
Parameters
Name | Type | Description |
---|---|---|
interfaceId | bytes4 |
Returns
Name | Type | Description |
---|---|---|
<none> | bool | true if the contract implements interfaceID and interfaceID is not 0xffffffff, false otherwise |
_mint
function _mint(address operator, address to, uint64 id0, uint256 context, bytes memory data)
internal
virtual
returns (uint64 id);
Errors
InvalidObjectMinterAddress
error InvalidObjectMinterAddress();
ObjectIdNotSpecified
error ObjectIdNotSpecified();
CallerNotObjectMinter
error CallerNotObjectMinter();
SetBase
Inherits: ISet
State Variables
ID_MAX
uint64 private constant ID_MAX = type(uint64).max - 1;
_objects
mapping(uint64 => ObjectData) private _objects;
Functions
onlyObjectOwner
modifier onlyObjectOwner(uint64 id);
upgrade
Upgrade an object to a new kind or set revision
function upgrade(uint64 id, uint32 kindRev0, uint32 setRev0)
external
override
onlyObjectOwner(id)
returns (Descriptor memory desc);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
kindRev0 | uint32 | New kind revision (0 = no change) |
setRev0 | uint32 | New set revision (0 = no change) |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | od Descriptor after upgrade |
touch
Touch an object to increment revision without content change
function touch(uint64 id) external override onlyObjectOwner(id) returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor after touch |
transfer
Transfer ownership of an object
function transfer(uint64 id, address to) external override onlyObjectOwner(id);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
to | address | Address of the new owner |
uri
Get URI template for metadata
Client should replace {id}
and {rev}
placeholders
function uri() external view override returns (string memory uri_);
Returns
Name | Type | Description |
---|---|---|
uri_ | string | URI template string |
owner
Get current owner of an object
function owner(uint64 id) external view override returns (address owner_);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
owner_ | address | Current owner address |
revision
Resolve and validate a revision number
function revision(uint64 id, uint32 rev0) external view override returns (uint32 rev);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision to check (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
rev | uint32 | Valid revision (0 if invalid) |
descriptor
Get descriptor at a specific revision
function descriptor(uint64 id, uint32 rev0) external view override returns (Descriptor memory od);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor at that revision |
elements
Get elements at a specific revision
function elements(uint64 id, uint32 rev0) external view override returns (bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
elems | bytes32[] | Elements array at that revision |
sota
Get the latest descriptor and current owner
function sota(uint64 id) external view override returns (Descriptor memory desc, address owner_);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
Returns
Name | Type | Description |
---|---|---|
desc | Descriptor | od Descriptor at the specified revision |
owner_ | address | Current owner (not historical) |
snapshot
Get descriptor and elements at a specific revision
function snapshot(uint64 id, uint32 rev0)
external
view
override
returns (Descriptor memory od, bytes32[] memory elems);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Object ID |
rev0 | uint32 | Revision number to query (0 = latest) |
Returns
Name | Type | Description |
---|---|---|
od | Descriptor | Descriptor at the specified revision |
elems | bytes32[] | Elements at the specified revision |
supportsInterface
Query if a contract implements an interface
Interface identification is specified in ERC-165. This function uses less than 30,000 gas.
function supportsInterface(bytes4 interfaceId) external pure virtual override returns (bool);
Parameters
Name | Type | Description |
---|---|---|
interfaceId | bytes4 |
Returns
Name | Type | Description |
---|---|---|
<none> | bool | true if the contract implements interfaceID and interfaceID is not 0xffffffff, false otherwise |
_create
function _create(uint64 id, Descriptor memory od, bytes32[] memory elems, address owner_)
internal
returns (Descriptor memory);
_upgrade
function _upgrade(uint64 id, uint32 kindRev0, uint32 setRev0) internal returns (Descriptor memory);
_update
function _update(uint64 id, bytes32[] memory elems) internal returns (Descriptor memory);
_touch
function _touch(uint64 id) internal returns (Descriptor memory);
_transfer
function _transfer(uint64 id, address to) internal returns (address from);
_ownerOf
function _ownerOf(uint64 id) internal view returns (address);
_decriptor
function _decriptor(uint64 id, uint32 rev0) internal view returns (Descriptor memory);
_revision
function _revision(uint64 id, uint32 rev0) internal view virtual returns (uint32 rev);
_elements
function _elements(uint64 id, uint32 rev0) internal view returns (bytes32[] memory elems);
_sota
function _sota(uint64 id) internal view returns (Descriptor memory od, address owner_);
_snapshot
function _snapshot(uint64 id, uint32 rev0) internal view returns (Descriptor memory od, bytes32[] memory elems);
_postCreate
function _postCreate(uint64 id, Descriptor memory od, bytes32[] memory elems, address owner_) internal virtual;
_postUpgrade
function _postUpgrade(uint64 id, Descriptor memory od, uint32 kindRev0, uint32 setRev0) internal virtual;
_postUpdate
function _postUpdate(uint64 id, Descriptor memory od, bytes32[] memory elems) internal virtual;
_postTouch
function _postTouch(uint64 id, Descriptor memory od) internal virtual;
_postTransfer
function _postTransfer(uint64 id, address from, address to) internal virtual;
_kindRevision
function _kindRevision(uint64 kindId, uint32 kindRev0) internal view virtual returns (uint32);
_setRevision
function _setRevision(uint64 setId, uint32 setRev0) internal view virtual returns (uint32);
_uri
function _uri() internal view virtual returns (string memory);
Errors
CallerNotObjectOwner
error CallerNotObjectOwner();
InvalidObjectId
error InvalidObjectId();
InvalidKindRevision
error InvalidKindRevision();
InvalidSetRevision
error InvalidSetRevision();
InvalidUpgradeRevision
error InvalidUpgradeRevision();
ObjectAlreadyExists
error ObjectAlreadyExists();
ObjectNotFound
error ObjectNotFound();
RevisionNotStored
error RevisionNotStored();
RevisionNotFound
error RevisionNotFound();
KindRevisionNotFound
error KindRevisionNotFound();
SetRevisionNotFound
error SetRevisionNotFound();
Structs
ObjectData
struct ObjectData {
Descriptor desc;
address owner;
bytes32[] elements;
}
SetERC1155Compat
Inherits: SetBase, IERC1155, IERC1155MetadataURI, IERC7572
State Variables
_approvals
mapping(address => mapping(address => bool)) private _approvals;
Functions
balanceOf
Get the balance of an account's tokens.
function balanceOf(address account, uint256 id) external view override returns (uint256);
Parameters
Name | Type | Description |
---|---|---|
account | address | |
id | uint256 |
Returns
Name | Type | Description |
---|---|---|
<none> | uint256 | The _owner's balance of the token type requested |
balanceOfBatch
Get the balance of multiple account/token pairs
function balanceOfBatch(address[] memory accounts, uint256[] memory ids) public view returns (uint256[] memory);
Parameters
Name | Type | Description |
---|---|---|
accounts | address[] | |
ids | uint256[] |
Returns
Name | Type | Description |
---|---|---|
<none> | uint256[] | The _owner's balance of the token types requested (i.e. balance for each (owner, id) pair) |
setApprovalForAll
Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
MUST emit the ApprovalForAll event on success.
function setApprovalForAll(address operator, bool approved) public;
Parameters
Name | Type | Description |
---|---|---|
operator | address | |
approved | bool |
isApprovedForAll
Queries the approval status of an operator for a given owner.
function isApprovedForAll(address account, address operator) public view returns (bool);
Parameters
Name | Type | Description |
---|---|---|
account | address | |
operator | address |
Returns
Name | Type | Description |
---|---|---|
<none> | bool | True if the operator is approved, false if not |
safeTransferFrom
Transfers _value
amount of an _id
from the _from
address to the _to
address specified (with safety call).
*Caller must be approved to manage the tokens being transferred out of the _from
account (see "Approval" section of the standard).
- MUST revert if
_to
is the zero address. - MUST revert if balance of holder for token
_id
is lower than the_value
sent. - MUST revert on any other error.
- MUST emit the
TransferSingle
event to reflect the balance change (see "Safe Transfer Rules" section of the standard). - After the above conditions are met, this function MUST check if
_to
is a smart contract (e.g. code size > 0). If so, it MUST callonERC1155Received
on_to
and act appropriately (see "Safe Transfer Rules" section of the standard).*
function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data) public;
Parameters
Name | Type | Description |
---|---|---|
from | address | |
to | address | |
id | uint256 | |
amount | uint256 | |
data | bytes |
safeBatchTransferFrom
Transfers _values
amount(s) of _ids
from the _from
address to the _to
address specified (with safety call).
*Caller must be approved to manage the tokens being transferred out of the _from
account (see "Approval" section of the standard).
- MUST revert if
_to
is the zero address. - MUST revert if length of
_ids
is not the same as length of_values
. - MUST revert if any of the balance(s) of the holder(s) for token(s) in
_ids
is lower than the respective amount(s) in_values
sent to the recipient. - MUST revert on any other error.
- MUST emit
TransferSingle
orTransferBatch
event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard). - Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
- After the above conditions for the transfer(s) in the batch are met, this function MUST check if
_to
is a smart contract (e.g. code size > 0). If so, it MUST call the relevantERC1155TokenReceiver
hook(s) on_to
and act appropriately (see "Safe Transfer Rules" section of the standard).*
function safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) public;
Parameters
Name | Type | Description |
---|---|---|
from | address | |
to | address | |
ids | uint256[] | |
amounts | uint256[] | |
data | bytes |
uri
Returns the URI for token type id
.
If the \{id\}
substring is present in the URI, it must be replaced by
clients with the actual token type ID.
function uri(uint256 id) public view override returns (string memory);
contractURI
function contractURI() external view override returns (string memory);
supportsInterface
Query if a contract implements an interface
Interface identification is specified in ERC-165. This function uses less than 30,000 gas.
function supportsInterface(bytes4 interfaceId) external pure virtual override(IERC165, SetBase) returns (bool);
Parameters
Name | Type | Description |
---|---|---|
interfaceId | bytes4 |
Returns
Name | Type | Description |
---|---|---|
<none> | bool | true if the contract implements interfaceID and interfaceID is not 0xffffffff, false otherwise |
_supportsInterface
function _supportsInterface(bytes4 interfaceId) internal pure returns (bool);
_uri
function _uri() internal view virtual override returns (string memory);
_uri
function _uri(uint64 id, uint32 rev) internal view virtual returns (string memory);
_safeTransferFrom
function _safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes memory data) internal;
_safeBatchTransferFrom
function _safeBatchTransferFrom(
address from,
address to,
uint256[] memory ids,
uint256[] memory amounts,
bytes memory data
) internal;
_setApprovalForAll
function _setApprovalForAll(address owner, address operator, bool approved) internal;
_balanceOf
function _balanceOf(address account, uint256 id) internal view returns (uint256);
_postCreate
function _postCreate(uint64 id, Descriptor memory desc, bytes32[] memory elems, address owner)
internal
virtual
override;
_postUpgrade
function _postUpgrade(uint64 id, Descriptor memory desc, uint32 kindRev, uint32 setRev) internal virtual override;
_postUpdate
function _postUpdate(uint64 id, Descriptor memory desc, bytes32[] memory elems) internal virtual override;
_postTouch
function _postTouch(uint64 id, Descriptor memory desc) internal virtual override;
_postTransfer
function _postTransfer(uint64 id, address from, address to) internal virtual override;
_baseURI
function _baseURI() internal view virtual returns (string memory);
Errors
InvalidTransferAmount
error InvalidTransferAmount();
TransferFromIncorrectOwner
error TransferFromIncorrectOwner();
LengthMismatch
error LengthMismatch();
ZeroAddress
error ZeroAddress();
SelfApproval
error SelfApproval();
NotOwnerNorApproved
error NotOwnerNorApproved();
SetERC1155
Inherits: SetERC1155Compat
State Variables
_minted
uint64 internal _minted;
_initialDesc
Descriptor internal _initialDesc;
Functions
constructor
constructor(uint64 kindId, uint32 kindRev, uint64 setId, uint32 setRev);
mint
function mint(address to, bytes32[] memory elems) external returns (uint64 id, Descriptor memory desc);
update
function update(uint64 id, bytes32[] memory elems) external onlyObjectOwner(id) returns (Descriptor memory desc);
_kindRevision
function _kindRevision(uint64 kindId, uint32 kindRev0) internal view virtual override returns (uint32);
_setRevision
function _setRevision(uint64 setId, uint32 setRev0) internal view virtual override returns (uint32);
_baseURI
function _baseURI() internal view virtual override returns (string memory);
Errors
UnsupportedKindId
error UnsupportedKindId();
UnsupportedKindRevision
error UnsupportedKindRevision();
UnsupportedSetId
error UnsupportedSetId();
UnsupportedSetRevision
error UnsupportedSetRevision();
SetFullFeatured
Inherits: Ownable, Interoperable, RemoteMintable, SetERC1155Compat
State Variables
_kindId
uint64 public _kindId;
_kindRev
uint32 public _kindRev;
Functions
constructor
constructor(address owner, address minter, address setr, uint64 kindId, uint32 kindRev)
Ownable(owner)
Interoperable(setr)
RemoteMintable(minter);
onObjectRelate
function onObjectRelate(uint64 id, uint64 rel, uint64 data, uint64 tailSet, uint64 tailId, uint64 tailKind)
external
override
returns (Descriptor memory desc);
onObjectUnrelate
function onObjectUnrelate(uint64 id, uint64 rel, uint64 data, uint64 tailSet, uint64 tailId, uint64 tailKind)
external
override
returns (Descriptor memory desc);
onObjectTransfer
function onObjectTransfer(uint64 id, address from, address to) external override returns (bytes4);
supportsInterface
function supportsInterface(bytes4 interfaceId)
public
pure
override(SetERC1155Compat, Interoperable, RemoteMintable)
returns (bool);
_mint
function _mint(address operator, address to, uint64 id0, uint256 context, bytes memory data)
internal
virtual
override
returns (uint64 id);
_kindRevision
function _kindRevision(uint64 kindId, uint32 kindRev0) internal view virtual override returns (uint32);
_setRevision
function _setRevision(uint64 setId, uint32 setRev0) internal view virtual override returns (uint32);
_baseURI
function _baseURI() internal view virtual override returns (string memory);
Errors
ObjectIdUnspecified
error ObjectIdUnspecified();
UnsupportedKindId
error UnsupportedKindId();
UnsupportedKindRevision
error UnsupportedKindRevision();
UnsupportedSetId
error UnsupportedSetId();
UnsupportedSetRevision
error UnsupportedSetRevision();
CurrentOwnerMismatch
error CurrentOwnerMismatch();
SetMinimal
Inherits: SetBase
State Variables
_minted
uint64 internal _minted;
_initialDesc
Descriptor internal _initialDesc;
Functions
constructor
constructor(uint64 kindId, uint32 kindRev, uint64 setId, uint32 setRev);
mint
function mint(address to, bytes32[] memory elems) external returns (uint64 id, Descriptor memory desc);
update
function update(uint64 id, bytes32[] memory elems) external onlyObjectOwner(id) returns (Descriptor memory desc);
_kindRevision
function _kindRevision(uint64 kindId, uint32 kindRev0) internal view virtual override returns (uint32);
_setRevision
function _setRevision(uint64 setId, uint32 setRev0) internal view virtual override returns (uint32);
_uri
function _uri() internal view virtual override returns (string memory);
Errors
MintSpecificIdUnsupported
error MintSpecificIdUnsupported();
UnsupportedKindId
error UnsupportedKindId();
UnsupportedKindRevision
error UnsupportedKindRevision();
UnsupportedSetId
error UnsupportedSetId();
UnsupportedSetRevision
error UnsupportedSetRevision();