Execution Manager

The ExecutionManager contract is a proxy contract to manage protocol calls.

Methods

call()

function call(address target, bytes calldata payload)

Parameter Name
Type
Description

target

address

contract address to target

payload

bytes calldata

payload to call target method with encoded parameters

multiCall()

function multiCall(address[] calldata targets, bytes[] calldata payloads, bool[] calldata allowErrors)

Parameter Name
Type
Description

targets

address[] calldata

contract addresses to targets

payloads

bytes[] calldata

payloads to call target method with encoded parameters

allowErrors

bool[] calldata

true if multiCall allowed to proceed given an error

ABI

Execution Manager ABI
{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "payload",
          "type": "bytes"
        }
      ],
      "name": "call",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "bytes[]",
          "name": "payloads",
          "type": "bytes[]"
        },
        {
          "internalType": "bool[]",
          "name": "allowErrors",
          "type": "bool[]"
        }
      ],
      "name": "multiCall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x",
    "sourceMap": "",
    "linkReferences": {}
  },
  "methodIdentifiers": {
    "call(address,bytes)": "1b8b921d",
    "multiCall(address[],bytes[],bool[])": "8c5ef5b3"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"}],\"name\":\"call\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"targets\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"payloads\",\"type\":\"bytes[]\"},{\"internalType\":\"bool[]\",\"name\":\"allowErrors\",\"type\":\"bool[]\"}],\"name\":\"multiCall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/IExecutionManager.sol\":\"IExecutionManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@chainlink/=lib/chainlink/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\"]},\"sources\":{\"src/interfaces/IExecutionManager.sol\":{\"keccak256\":\"0x5ac59a01e9601420e63bf0dfd3227aad12c2c43460a6425022298a216d51bec8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04fa65b57b3ac2787670400aece04a9c63742f84010ad0c5519d5850480ad326\",\"dweb:/ipfs/QmWnCcddBzzYVkKcxN566ms6JXzZGo4SMJK1mqDhFt3UmP\"]},\"src/protocol/libraries/types/DataTypes.sol\":{\"keccak256\":\"0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa\",\"dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "target",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "payload",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "call",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address[]",
              "name": "targets",
              "type": "address[]"
            },
            {
              "internalType": "bytes[]",
              "name": "payloads",
              "type": "bytes[]"
            },
            {
              "internalType": "bool[]",
              "name": "allowErrors",
              "type": "bool[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "multiCall",
          "outputs": [
            {
              "internalType": "bytes[]",
              "name": "results",
              "type": "bytes[]"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        ":@chainlink/=lib/chainlink/",
        ":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
        ":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        ":chainlink/=lib/chainlink/integration-tests/contracts/ethereum/src/",
        ":ds-test/=lib/forge-std/lib/ds-test/src/",
        ":forge-std/=lib/forge-std/src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/interfaces/IExecutionManager.sol": "IExecutionManager"
      },
      "libraries": {}
    },
    "sources": {
      "src/interfaces/IExecutionManager.sol": {
        "keccak256": "0x5ac59a01e9601420e63bf0dfd3227aad12c2c43460a6425022298a216d51bec8",
        "urls": [
          "bzz-raw://04fa65b57b3ac2787670400aece04a9c63742f84010ad0c5519d5850480ad326",
          "dweb:/ipfs/QmWnCcddBzzYVkKcxN566ms6JXzZGo4SMJK1mqDhFt3UmP"
        ],
        "license": "MIT"
      },
      "src/protocol/libraries/types/DataTypes.sol": {
        "keccak256": "0x0103c43499e5226d36906042a1723a3ee6ee18ba607cbffc9e776d4dc47edc10",
        "urls": [
          "bzz-raw://550191b44b6ddfe84d81bd5ded46e1ab3ac493399adfca3634fd8348a4a087fa",
          "dweb:/ipfs/QmeoHga9azsBkTRdnzH9USs51JduGR2tgge5YmGW8dJ2Tq"
        ],
        "license": "AGPL-3.0"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/interfaces/IExecutionManager.sol",
    "id": 47215,
    "exportedSymbols": {
      "DataTypes": [
        65280
      ],
      "IExecutionManager": [
        47214
      ]
    },
    "nodeType": "SourceUnit",
    "src": "32:436:105",
    "nodes": [
      {
        "id": 47187,
        "nodeType": "PragmaDirective",
        "src": "32:23:105",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 47189,
        "nodeType": "ImportDirective",
        "src": "57:70:105",
        "nodes": [],
        "absolutePath": "src/protocol/libraries/types/DataTypes.sol",
        "file": "../protocol/libraries/types/DataTypes.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 47215,
        "sourceUnit": 65281,
        "symbolAliases": [
          {
            "foreign": {
              "id": 47188,
              "name": "DataTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 65280,
              "src": "66:9:105",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 47214,
        "nodeType": "ContractDefinition",
        "src": "129:339:105",
        "nodes": [
          {
            "id": 47198,
            "nodeType": "FunctionDefinition",
            "src": "163:104:105",
            "nodes": [],
            "functionSelector": "1b8b921d",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "call",
            "nameLocation": "172:4:105",
            "parameters": {
              "id": 47194,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47191,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "185:6:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47198,
                  "src": "177:14:105",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 47190,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "177:7:105",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 47193,
                  "mutability": "mutable",
                  "name": "payload",
                  "nameLocation": "208:7:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47198,
                  "src": "193:22:105",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 47192,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "193:5:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "176:40:105"
            },
            "returnParameters": {
              "id": 47197,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47196,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 47198,
                  "src": "253:12:105",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 47195,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "253:5:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "252:14:105"
            },
            "scope": 47214,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 47213,
            "nodeType": "FunctionDefinition",
            "src": "273:193:105",
            "nodes": [],
            "functionSelector": "8c5ef5b3",
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "multiCall",
            "nameLocation": "282:9:105",
            "parameters": {
              "id": 47208,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47201,
                  "mutability": "mutable",
                  "name": "targets",
                  "nameLocation": "320:7:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47213,
                  "src": "301:26:105",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 47199,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "301:7:105",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 47200,
                    "nodeType": "ArrayTypeName",
                    "src": "301:9:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 47204,
                  "mutability": "mutable",
                  "name": "payloads",
                  "nameLocation": "354:8:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47213,
                  "src": "337:25:105",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 47202,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "337:5:105",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 47203,
                    "nodeType": "ArrayTypeName",
                    "src": "337:7:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 47207,
                  "mutability": "mutable",
                  "name": "allowErrors",
                  "nameLocation": "388:11:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47213,
                  "src": "372:27:105",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bool_$dyn_calldata_ptr",
                    "typeString": "bool[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 47205,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "372:4:105",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 47206,
                    "nodeType": "ArrayTypeName",
                    "src": "372:6:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                      "typeString": "bool[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "291:114:105"
            },
            "returnParameters": {
              "id": 47212,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 47211,
                  "mutability": "mutable",
                  "name": "results",
                  "nameLocation": "457:7:105",
                  "nodeType": "VariableDeclaration",
                  "scope": 47213,
                  "src": "442:22:105",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 47209,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "442:5:105",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 47210,
                    "nodeType": "ArrayTypeName",
                    "src": "442:7:105",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "441:24:105"
            },
            "scope": 47214,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IExecutionManager",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "linearizedBaseContracts": [
          47214
        ],
        "name": "IExecutionManager",
        "nameLocation": "139:17:105",
        "scope": 47215,
        "usedErrors": []
      }
    ],
    "license": "MIT"
  },
  "id": 105
}

Last updated