SafeAllowance_Transfer
SafeAllowance_Transfer is an integration mandate that enables the Powers contract to transfer tokens from the Safe Treasury by utilizing the Allowance Module.
Overview
Section titled “Overview”This mandate acts as a specialized transfer tool. Instead of executing a generic transaction on the Safe (which requires ownership), it uses the Allowance Module mechanism. This assumes that the Powers contract has been granted an allowance as a delegate.
It allows the organization to transfer a specific amount of tokens to a recipient, deducting from the pre-approved allowance limit.
Configuration
Section titled “Configuration”When adopting a SafeAllowance_Transfer instance, the following parameters are required:
allowanceModule(address): The address of the Allowance Module.safeProxy(address): The address of the Gnosis Safe Treasury from which tokens will be transferred.
Proposing an Action
Section titled “Proposing an Action”When calling the mandate, three parameters must be provided to define the transfer:
Token(address): The address of the ERC20 token to transfer.Amount(uint256): The amount of tokens to transfer.PayableTo(address): The recipient address.
Execution Flow
Section titled “Execution Flow”-
Preparation
- Constructs a signature (
v=1) authorizing the transfer request as the Powers contract (delegate).
- Constructs a signature (
-
Module Interaction
- Generates a direct call to the
allowanceModule. - Calls the function
executeAllowanceTransfer(selector0x4515641a). - Passes the transfer details (Safe address, token, amount, recipient) and the delegate signature.
- The Allowance Module verifies the allowance and executes the transfer via the Safe.
- Generates a direct call to the
Technical Specifications
Section titled “Technical Specifications”Functions
Section titled “Functions”initializeMandate
Section titled “initializeMandate”function initializeMandate(...) public override- Initializes the mandate configuration.
- Sets input parameters to
(address Token, uint256 Amount, address PayableTo).
handleRequest
Section titled “handleRequest”function handleRequest(...) public view override returns (...)- Decodes transfer details.
- Constructs the call to
executeAllowanceTransferon the Allowance Module.
Current Deployments
Section titled “Current Deployments”| Chain ID | Chain Name | Address |
|---|---|---|