Ownership
El módulo de propiedad (ownership) proporciona el control administrativo estándar ERC-173, pero almacena el estado de forma segura dentro del patrón Diamond Storage para evitar colisiones durante las actualizaciones.
El módulo de propiedad (ownership) proporciona el control administrativo estándar ERC-173, pero almacena el estado de forma segura dentro del patrón Diamond Storage para evitar colisiones durante las actualizaciones.
Concepto Central: Integración del Estándar ERC-173#
Este módulo proporciona el control de acceso base para el Garden. El propietario (normalmente el usuario o una DAO) tiene el derecho de gestionar el Garden cuando opera de forma independiente.
OwnershipFacet.sol y OwnershipBase.sol#
OwnershipFacetexpone las funciones externastransferOwnership(address)yowner().- La función
transferOwnershipestá protegida por el modificadoronlyGardenOwner, asegurando que solo el administrador actual pueda transferir el control.
OwnershipStorage.sol#
Como todas las variables de estado en Blok Capital, la dirección del propietario se almacena en un slot determinista para garantizar que sobreviva a las actualizaciones sin corrupción de memoria.
Fragmento crucial para Builders: Disposición del Almacenamiento de Ownership
/// @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
}
}