Skip to content

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.

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.

When adopting a SafeAllowance_Transfer instance, the following parameters are required:

  1. allowanceModule (address): The address of the Allowance Module.
  2. safeProxy (address): The address of the Gnosis Safe Treasury from which tokens will be transferred.

When calling the mandate, three parameters must be provided to define the transfer:

  1. Token (address): The address of the ERC20 token to transfer.
  2. Amount (uint256): The amount of tokens to transfer.
  3. PayableTo (address): The recipient address.
  1. Preparation

    • Constructs a signature (v=1) authorizing the transfer request as the Powers contract (delegate).
  2. Module Interaction

    • Generates a direct call to the allowanceModule.
    • Calls the function executeAllowanceTransfer (selector 0x4515641a).
    • 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.
function initializeMandate(...) public override
  • Initializes the mandate configuration.
  • Sets input parameters to (address Token, uint256 Amount, address PayableTo).
function handleRequest(...) public view override returns (...)
  • Decodes transfer details.
  • Constructs the call to executeAllowanceTransfer on the Allowance Module.
Chain IDChain NameAddress