Roles

  • Spool Admin - Deployer of the SpoolAccessControl contract.

  • Smart Vault Integrator - Grants permission to integrate a new Smart Vault into the Spool Ecosystem.

  • Smart Vault Admin - Grants permission to manage rewards on Smart Vaults.

  • Guard Allowlist Manager - Grants permission to manage allowlists with AllowlistGuard for a Smart Vault.

  • Master Wallet Manager - Grants permission to manage assets on the Master Wallet.

  • Smart Vault Manager - Marks a contract as a Smart Vault Manager.

  • Risk Provider - Grants permission to act as a Risk Provider.

  • Allocation Provider - Grants permission to act as an Allocation Provider.

  • Pauser - Grants permission to pause the system.

  • Unpauser - Grants permission to unpause the system.

  • Reward Pool Admin - Grants permission to manage the rewards payment pool.

  • Swapper Admin - Grants permission to manage the swapper.

  • Reallocator - Grants permission to reallocate Smart Vaults.

  • Strategy - Grants permission to be used as a Strategy.

  • Admin Role Strategy - Grants permission to manage the "Strategy" role.

Please see the code extract below detailing the above roles.


 * @dev Grants permission to:
 * - acts as a default admin for other roles,
 * - can whitelist an action with action manager,
 * - can manage asset group registry.
 *
 * Is granted to the deployer of the SpoolAccessControl contract.
 *
 * Equals to the DEFAULT_ADMIN_ROLE of the OpenZeppelin AccessControl.
 */
bytes32 constant ROLE_SPOOL_ADMIN = 0x00;

/**
 * @dev Grants permission to integrate a new smart vault into the Spool ecosystem.
 *
 * Should be granted to smart vault factory contracts.
 */
bytes32 constant ROLE_SMART_VAULT_INTEGRATOR = keccak256("ROLE_SMART_VAULT_INTEGRATOR");

/**
 * @dev Grants permission to manage rewards on smart vaults.
 * TODO
 */
bytes32 constant ROLE_SMART_VAULT_ADMIN = keccak256("SMART_VAULT_ADMIN");

/**
 * @dev Grants permission to manage allowlists with AllowlistGuard for a smart vault.
 *
 * Should be granted to whoever is in charge of maintaining allowlists with AllowlistGuard for a smart vault.
 */
bytes32 constant ROLE_GUARD_ALLOWLIST_MANAGER = keccak256("GUARD_ALLOWLIST_MANAGER");

/**
 * @dev Grants permission to manage assets on master wallet.
 *
 * Should be granted to:
 * - the SmartVaultManager contract,
 * - the StrategyRegistry contract.
 */
bytes32 constant ROLE_MASTER_WALLET_MANAGER = keccak256("MASTER_WALLET_MANAGER");

/**
 * @dev Marks a contract as a smart vault manager.
 *
 * Should be granted to the SmartVaultManager contract.
 */
bytes32 constant ROLE_SMART_VAULT_MANAGER = keccak256("SMART_VAULT_MANAGER");

/**
 * @dev Grants permission to act as a risk provider.
 *
 * Should be granted to whoever is allowed to provide risk scores.
 */
bytes32 constant ROLE_RISK_PROVIDER = keccak256("RISK_PROVIDER");

/**
 * @dev Grants permission to act as an allocation provider.
 *
 * Should be granted to contracts that are allowed to calculate allocations.
 */
bytes32 constant ROLE_ALLOCATION_PROVIDER = keccak256("ALLOCATION_PROVIDER");

/**
 * @dev Grants permission to pause the system.
 */
bytes32 constant ROLE_PAUSER = keccak256("SYSTEM_PAUSER");

/**
 * @dev Grants permission to unpause the system.
 */
bytes32 constant ROLE_UNPAUSER = keccak256("SYSTEM_UNPAUSER");

/**
 * @dev Grants permission to manage rewards payment pool.
 */
bytes32 constant ROLE_REWARD_POOL_ADMIN = keccak256("ROLE_REWARD_POOL_ADMIN");

/**
 * @dev Grants permission to manage the swapper.
 */
bytes32 constant ROLE_SWAPPER_ADMIN = keccak256("SWAPPER_ADMIN");

/**
 * @dev Grants permission to reallocate smart vaults.
 */
bytes32 constant ROLE_REALLOCATOR = keccak256("REALLOCATOR");

/**
 * @dev Grants permission to be used as a strategy.
 */
bytes32 constant ROLE_STRATEGY = keccak256("STRATEGY");

/**
 * @dev Grants permission to manage role ROLE_STRATEGY.
 */
bytes32 constant ADMIN_ROLE_STRATEGY = keccak256("ADMIN_STRATEGY");

Last updated