Skip to main content

Owner Data Module

@perfect-abstractions/compose/access/Owner/Data/OwnerDataMod.sol

Helper functions for owner storage, reads, and owner check based on ERC-173

Key Features
  • requireOwner() guards by requiring msg.sender is the stored owner.
  • setContractOwner has no access control validation (Trusted initialization only).
  • Emits OwnershipTransferred from setContractOwner with previousOwner == address(0).
Module Usage

You can use modules to wrap around you own project logic while using the default Compose building blocks. Modules provides all the necessary internal helpers for maximum integration.

See Facets & Modules for more information.

Storage​

State Variables​

PropertyTypeDescriptionSTORAGE_POSITIONbytes32Owner storage position within the diamond (Value: keccak256("erc173.owner"))

OwnerStorage​

Definition
/** storage-location: erc8042:erc173.owner */
struct OwnerStorage {
address owner;
}

Functions​

getStorage​

Returns a pointer to the OwnerStorage struct.

function getStorage() pure returns (OwnerStorage storage s);

Returns:

PropertyTypeDescriptionsOwnerStorage storageThe struct in storage.

owner​

Get the address of the owner

function owner() view returns (address);

Returns:

PropertyTypeDescription-addressThe stored owner, or address(0) if never set or cleared.

requireOwner​

Verify if the message sender is the current diamond owner. Useful for gating specify logic inside your own facets.

function requireOwner() view;

Reverts:

PropertyTypeDescriptionOwnerUnauthorizedAccounterrorCaller is not the current owner.

setContractOwner​

Writes the inital owner address to storage and emits OwnershipTransferred(address(0), _initialOwner).

There is no msg.sender or role check performed. Use only from trusted initialization code, or wrap with your own checks in a facet.

function setContractOwner(address _initialOwner);

Parameters:

PropertyTypeDescription_initialOwneraddressThe address of the initial owner.

Events​

Errors​

Best Practices​

Integration Notes​

OwnerStorage is located at keccak256("erc173.owner") inside the diamond.

All Compose Owner contracts use that slot, so owner() and transfer logic observe the same address.

Last updated:

Newsletter

Get notified about releases, feature announcements, and technical deep-dives on building smart contracts with Compose.

No spam. Unsubscribe anytime.