RelationRegistry
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
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 |
meta | Descriptor | desc Descriptor after registration |
relationUpdate
Updates the data hash of a relation
function relationUpdate(uint64 id, bytes32 data) external override returns (Descriptor memory meta);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
data | bytes32 | New data hash |
Returns
Name | Type | Description |
---|---|---|
meta | Descriptor | desc 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
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
data | bytes32 | New data hash |
adjs | Adjacency[] |
Returns
Name | Type | Description |
---|---|---|
meta | Descriptor | desc 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
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 |
---|---|---|
meta | Descriptor | desc Descriptor after upgrade |
relationTouch
Touches a relation (bumps revision without modifying content)
function relationTouch(uint64 id) external override returns (Descriptor memory meta);
Parameters
Name | Type | Description |
---|---|---|
id | uint64 | Relation ID |
Returns
Name | Type | Description |
---|---|---|
meta | Descriptor | desc 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
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 override 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 override 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
override
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 override 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 override 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 override 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 override 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
override
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 |
_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;
}