Whitelisted Actions
To interact with the SAFE to perform whitelisted actions, an account with the CURATOR role must send an ABI-encoded transaction to the roles modifier of the SAFE (every Metavault has its own and will be shared and available at different api endpoints).
function execTransactionWithRole(
address to,
uint256 value,
bytes calldata data,
Operation operation,
bytes32 roleKey,
bool shouldRevert
)Key Parameters:
to: The target contract address where the action will be executed (e.g., Spectra market contracts,…)data: The encoded function call containing the specific action and its parametersroleKey: The role identifier that determines which permissions are checked (CURATOR_ROLE for liquidity management actions)
Timelocked Actions
Timelocked actions, whether whitelisted (smaller delay) or default time-locked actions (any actions), the curator must encode and send its transaction through the delay module using the execTransactionFromModule function.
/// @dev Adds a transaction to the queue (same as avatar interface so that this can be placed between other modules and the avatar).
/// @param to Destination address of module transaction
/// @param value Ether value of module transaction
/// @param data Data payload of module transaction
/// @param operation Operation type of module transaction
/// @return success Whether or not the call was successfully queued for execution
/// @notice Can only be called by enabled modules
function execTransactionFromModule(
address to,
uint256 value,
bytes calldata data,
Operation operation
) public returns (bool success);
Each delay module has its specific timelock after which the transaction becomes executable by calling executeNextTx. Anyone can call this method to execute the actions ready to be executed.
Spectra backend might facilitate the execution of such transactions in the coming iterations.
/// @dev Executes the next transaction only if the cooldown has passed and the transaction has not expired
/// @param to Destination address of module transaction
/// @param value Ether value of module transaction
/// @param data Data payload of module transaction
/// @param operation Operation type of module transaction
/// @notice The txIndex used by this function is always 0
function executeNextTx(
address to,
uint256 value,
bytes calldata data,
Operation operation
) public;Key Parameters:
to: The target contract address where the action will be executeddata: The encoded function call containing the specific action and its parametersoperation: UseCall(0) for all operations -DelegateCallare not authorized
Curator Permission Scope
For a list of whitelisted permissions and constraints, see the Tokens Approvals table below.
An API endpoint is available to check on the available permissions set in the roles modifiers and delay module.
Pausing the Vault
The vault can be paused at two different levels, providing granular control over system operations:
1. Vault-Level Pause (AsyncVault)
Scope: Affects only the underlying infrastructure vault
Access: Controlled by the SAFE
Functions:
pause()andunpause()functionsImpact: Prevents all user deposit and withdrawal actions in the vault while maintaining curator access to the SAFE
2. System-Level Pause (SAFE Modules)
Scope: Affects the entire metavault system
Method: Disable the delay module and roles modifier module from the SAFE
Access: Only SAFE account owners (typically multisig signers)
Impact: Completely disconnects all access control mechanisms, leaving only direct SAFE account access for emergency administration
Emergency Response: The system-level pause provides the highest security level, effectively isolating the vault from all automated operations and requiring manual intervention through the SAFE.
Tokens Approvals
Here is the list of allowed approvals
Contract
Allowed Targets
Constraints
underlying (e.g USDC)
pts, zaps, interest-bearing tokens, spectra 4626 wrapper
only approvals for underlying of approved markets to their respective
Interest-bearing tokens (e.g. Morpho Vault USDC)
pts, zaps, wrappers, pools
only approvals for underlying of approved markets
Markets LP tokens
zaps
only approvals for lp tokens of approved markets
Vault Share
spectra 4626 wrapper (the IBT of the market)
Principal Tokens Functions
Function
Allowed Targets
Constraints
claimYield
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
claimYieldInIBT
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
redeem
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
redeemForIBT
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
deposit
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
depositIBT
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
withdraw
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
withdrawIBT
only pts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
Liquidity Zaps Functions
Function
Allowed Targets
Constraints
addLiquidityWithWrap
liquidity zap
only enabled markets
addLiquidityWithAssets
liquidity zap
only enabled markets
addLiquidityWithIBT
liquidity zap
only enabled markets
removeLiquidity
liquidity zap
only enabled markets
redeemLiquidityUnderlying
liquidity zap
only enabled markets
redeemLiquidityIBT
liquidity zap
only enabled markets
Interest Bearing Tokens Functions
Function
Allowed Targets
Constraints
redeem
only ibts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
deposit
only ibts of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
Spectra ERC4626 Wrappers Functions
Function
Allowed Targets
Constraints
wrap
only wrappers of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
unwrap
only wrappers of enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
Spectra Markets Functions
Function
Allowed Targets
Constraints
add_liquidity
only enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
remove_liquidity
only enabled markets
the receiver of the tokens is restricted to the Metavault’s SAFE
Revocation & Emergency Management
The MetaVault platform implements a comprehensive oversight system to address curator misconduct and emergency situations, ensuring user asset protection at all times.
Revocation Triggers
The system monitors for the following critical issues that may warrant curator access revocation:
Settlement Failures: Curator failure to prepare the Safe with sufficient assets before settlement calls
Economic Harm: Execution of transactions that exceed defined loss thresholds or cause significant financial damage
System Abuse: Misuse of timelocked default calls or submission of spam transactions that disrupt operations
Revocation Process
When revocation triggers are activated, the following emergency response protocol is initiated. The ADMIN disconnects all curator access control modules from the SAFE.
Last updated