Ownership
The ownership module provides standard ERC-173 administrative control but stores the state securely within the Diamond Storage pattern to prevent collisions during upgrades.
Core Concept: ERC-173 Standard Integration
This module provides the baseline access control for the Garden. The owner (usually the user or a DAO) holds the right to manage the Garden when it is operating independently.
OwnershipFacet.sol & OwnershipBase.sol
OwnershipFacetexposes the externaltransferOwnership(address)andowner()functions.- The
transferOwnershipfunction is guarded by theonlyGardenOwnermodifier, ensuring only the current administrator can pass the baton.
OwnershipStorage.sol
Like all state variables in Blok Capital, the owner address is stored at a deterministic slot to guarantee it survives upgrades without memory corruption.
Crucial Builder Snippet: Ownership Storage Layout
/// @dev Storage slot is derived from keccak256(bytes("OwnershipStorage"))
struct Layout {
/// @notice Address of the owner. When zero, no owner is set (renounced).
address owner;
}
function layout() internal pure returns (Layout storage l) {
bytes32 position = LibStorageSlot.deriveStorageSlot(type(OwnershipStorage).name);
assembly {
l.slot := position
}
}