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 |
---|---|---|
| address | contract address to target |
| 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 |
---|---|---|
| address[] calldata | contract addresses to targets |
| bytes[] calldata | payloads to call target method with encoded parameters |
| 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