Skip to content

Governor_ExecuteProposal

Governor_ExecuteProposal is an executive mandate that enables the execution of governance proposals on a configured Governor contract. It provides a mechanism to execute proposals that have succeeded in the governance process.

This mandate provides a mechanism to:

  • Execute governance proposals that have succeeded
  • Validate proposal state before execution
  • Execute proposal actions directly
  • Integrate with standard governance frameworks
  • Track proposal execution

When adopting a Governor_ExecuteProposal instance, one parameter must be provided:

  1. governorContract (address): The address of the Governor contract to execute proposals on

When calling the mandate, four parameters must be provided:

  1. targets (address[]): Array of target contract addresses for the proposal
  2. values (uint256[]): Array of ETH values to send with each call
  3. calldatas (bytes[]): Array of encoded function call data
  4. description (string): Human-readable description of the proposal
  1. Parameter Validation

    • Verifies governor contract is configured
    • Validates proposal parameters
    • Checks array length consistency
    • Ensures description is not empty
  2. Proposal Validation

    • Gets proposal ID from governor contract
    • Validates proposal exists
    • Checks proposal state is “Succeeded”
    • Ensures proposal is ready for execution
  3. Proposal Execution

    • Returns proposal actions for direct execution
    • Bypasses governor contract execution
    • Executes actions directly
  4. State Management

    • Records proposal execution
    • Updates governance state
    • Tracks execution history
mapping(bytes32 mandateHash => address governorContract) public governorContracts;
function initializeMandate(
uint16 index,
string memory nameDescription,
bytes memory inputParams,
bytes memory config
) public override
  • Initializes mandate with configuration parameters
  • Sets up Governor contract address
  • Configures proposal execution parameters
function handleRequest(
address caller,
address powers,
uint16 mandateId,
bytes memory mandateCalldata,
uint256 nonce
) public view virtual override returns (
uint256 actionId,
address[] memory targets,
uint256[] memory values,
bytes[] memory calldatas
)
  • Processes the proposal execution request
  • Validates proposal parameters and state
  • Prepares proposal actions for execution
  • Returns execution data
  1. Configuration Errors

    • “Governor_ExecuteProposal: Governor contract not configured”
    • Invalid governor contract address
  2. Parameter Errors

    • “Governor_ExecuteProposal: No targets provided”
    • “Governor_ExecuteProposal: Targets and values length mismatch”
    • “Governor_ExecuteProposal: Targets and calldatas length mismatch”
    • “Governor_ExecuteProposal: Description cannot be empty”
  3. Proposal Errors

    • “Governor_ExecuteProposal: Proposal not found”
    • “Governor_ExecuteProposal: Proposal not succeeded”
    • Invalid proposal state
  4. Validation Errors

    • Zero address governor contract
    • Empty targets array
    • Mismatched array lengths
    • Empty description
Chain IDChain NameAddress
421614Arbitrum Sepolia0xa797799EE0C6FA7d9b76eF52e993288a04982267
11155420Optimism Sepolia0xa797799EE0C6FA7d9b76eF52e993288a04982267
11155111Ethereum Sepolia0xa797799EE0C6FA7d9b76eF52e993288a04982267