RelationRegistry

Git Source

Inherits: IRelationRegistry, OmniRegistryErrors, Soke, RelationAdjacencies

Relation registration and management

State Variables

RELATIONREGISTRY_STORAGE_LOCATION

Deterministic storage slot per ERC-7201

keccak256(abi.encode(uint256(keccak256("every.storage.RelationRegistry")) - 1)) & ~bytes32(uint256(0xff))

bytes32 private constant RELATIONREGISTRY_STORAGE_LOCATION =
    0xb889e63ac5a7d4985910c5a264fb181e381a8a3f46d10618004be5e9438ffc00;

Functions

_getRelationRegistryStorage

function _getRelationRegistryStorage() private pure returns (RelationRegistryStorage storage $);

__RelationRegistry_init

function __RelationRegistry_init() internal onlyInitializing;

relationRegister

Registers a new relation

function relationRegister(address code, bytes32 data, RelationRule memory rule, Adjacency[] memory adjs)
    external
    override
    returns (uint64 id, Descriptor memory meta);

Parameters

NameTypeDescription
codeaddressOptional logic contract address
databytes32Hash of the relation’s associated data
ruleRelationRuleRule defining the behavior and constraints of the relation
adjsAdjacency[]Array of tail kind admissibility and degree limits

Returns

NameTypeDescription
iduint64New relation ID
metaDescriptordesc Descriptor after registration

relationUpdate

Updates the data hash of a relation

function relationUpdate(uint64 id, bytes32 data) external override returns (Descriptor memory meta);

Parameters

NameTypeDescription
iduint64Relation ID
databytes32New data hash

Returns

NameTypeDescription
metaDescriptordesc Updated descriptor

relationUpdate

Updates the data hash of a relation

function relationUpdate(uint64 id, bytes32 data, Adjacency[] memory adjs)
    external
    override
    returns (Descriptor memory meta);

Parameters

NameTypeDescription
iduint64Relation ID
databytes32New data hash
adjsAdjacency[]

Returns

NameTypeDescription
metaDescriptordesc Updated descriptor

relationUpgrade

Upgrades the kind or set revision of a relation

function relationUpgrade(uint64 id, uint32 kindRev, uint32 setRev) external override returns (Descriptor memory meta);

Parameters

NameTypeDescription
iduint64Relation ID
kindRevuint32New kind revision (0 = no change)
setRevuint32New set revision (0 = no change)

Returns

NameTypeDescription
metaDescriptordesc Descriptor after upgrade

relationTouch

Touches a relation (bumps revision without modifying content)

function relationTouch(uint64 id) external override returns (Descriptor memory meta);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
metaDescriptordesc Descriptor after touch

relationTransfer

Transfers ownership of a relation to a new address

function relationTransfer(uint64 id, address to) external override returns (address from);

Parameters

NameTypeDescription
iduint64Relation ID
toaddressNew owner address

Returns

NameTypeDescription
fromaddressPrevious owner address

relationRevision

Resolves and validates a revision number

function relationRevision(uint64 id, uint32 rev0) external view override returns (uint32 rev);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Requested revision (0 = latest)

Returns

NameTypeDescription
revuint32Validated revision (0 if not found)

relationDescriptor

Returns descriptor of a relation at a specific revision

function relationDescriptor(uint64 id, uint32 rev0) external view override returns (Descriptor memory desc);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at the specified revision

relationSnapshot

Returns descriptor and packed elements at a specific revision

function relationSnapshot(uint64 id, uint32 rev0)
    external
    view
    override
    returns (Descriptor memory desc, bytes32[] memory elems);

Parameters

NameTypeDescription
iduint64Relation ID
rev0uint32Revision to query (0 = latest)

Returns

NameTypeDescription
descDescriptorDescriptor at the revision
elemsbytes32[]Elements at the revision

relationOwner

Gets the current owner of a relation

function relationOwner(uint64 id) external view override returns (address owner);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
owneraddressAddress of the current owner

relationSota

Returns the latest descriptor and current owner of a relation

function relationSota(uint64 id) external view override returns (Descriptor memory desc, address owner);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
descDescriptorLatest descriptor
owneraddressCurrent owner

relationStatus

Checks whether all specified relations are active (rev > 0)

function relationStatus(uint64[] memory ids) external view override returns (bool active);

Parameters

NameTypeDescription
idsuint64[]Array of relation IDs

Returns

NameTypeDescription
activeboolTrue if all are valid and active

relationRule

Returns the rule definition for a relation

function relationRule(uint64 id) external view override returns (RelationRule memory rule);

Parameters

NameTypeDescription
iduint64Relation ID

Returns

NameTypeDescription
ruleRelationRulePossession 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
    override
    returns (bool admit, uint48 effKind, uint16 effDegs, uint48 totalKind, uint16 totalDegs);

Parameters

NameTypeDescription
iduint64Relation ID
revuint32Revision to check
kinduint64Tail kind ID to evaluate

Returns

NameTypeDescription
admitboolWhether the kind is admitted
effKinduint48Matched kind (0 = wildcard match)
effDegsuint16Degree bounds for the matched kind
totalKinduint48Special marker for total-kind (2^48-1 if defined)
totalDegsuint16Degree bounds for the total-kind

_relationAdmit

function _relationAdmit(uint64 id, uint32 rev, uint64 kind)
    internal
    view
    virtual
    returns (bool admit, uint48 effKind, uint16 effDegs, uint48 totalKind, uint16 totalDegs);

_relationRule

function _relationRule(uint64 id) internal view virtual returns (RelationRule memory rule);

_kindOfRelationRevision

Returns the latest revision of the Kind-of-Value object

function _kindOfRelationRevision() private view returns (uint32);

_setOfRelationRevision

Returns the latest revision of the Set-of-Value object

function _setOfRelationRevision() private view returns (uint32);

Structs

RelationRegistryStorage

Note: storage-location: erc7201:every.storage.RelationRegistry

struct RelationRegistryStorage {
    Counter48.Counter counter;
    Snapshots.Storage relations;
}