@etherisc/gif-contracts
Version:
This repository holds the GIF core contracts and tools to develop, test and deploy GIF instances.
1,466 lines (1,465 loc) • 845 kB
JSON
{
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contractName",
"type": "bytes32"
}
],
"name": "LogContractDeregistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "bytes32",
"name": "contractName",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isNew",
"type": "bool"
}
],
"name": "LogContractRegistered",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "bytes32",
"name": "release",
"type": "bytes32"
}
],
"name": "LogReleasePrepared",
"type": "event"
},
{
"inputs": [],
"name": "MAX_CONTRACTS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "_contracts",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "_contractsInRelease",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "idx",
"type": "uint256"
}
],
"name": "contractName",
"outputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "contracts",
"outputs": [
{
"internalType": "uint256",
"name": "_numberOfContracts",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "deregister",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "deregisterInRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "ensureSender",
"outputs": [
{
"internalType": "bool",
"name": "_senderMatches",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "getContract",
"outputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
}
],
"name": "getContractInRelease",
"outputs": [
{
"internalType": "address",
"name": "_addr",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRelease",
"outputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "registry",
"type": "address"
}
],
"name": "initialize",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_initialRelease",
"type": "bytes32"
}
],
"name": "initializeRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_newRelease",
"type": "bytes32"
}
],
"name": "prepareRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "register",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_release",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "_contractName",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_contractAddress",
"type": "address"
}
],
"name": "registerInRelease",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "release",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "startBlock",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
}
],
"allSourcePaths": {
"10": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol",
"21": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Address.sol",
"22": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Context.sol",
"27": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
"37": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IAccess.sol",
"44": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol",
"80": "contracts/modules/RegistryController.sol",
"88": "contracts/shared/CoreController.sol"
},
"ast": {
"absolutePath": "contracts/modules/RegistryController.sol",
"exportedSymbols": {
"Address": [
26374
],
"Context": [
24074
],
"CoreController": [
14924
],
"EnumerableSet": [
19390
],
"IAccess": [
21938
],
"IRegistry": [
21750
],
"Initializable": [
18432
],
"RegistryController": [
10665
],
"Strings": [
23075
]
},
"id": 10666,
"license": "Apache-2.0",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 10108,
"literals": [
"solidity",
"0.8",
".2"
],
"nodeType": "PragmaDirective",
"src": "39:22:80"
},
{
"absolutePath": "contracts/shared/CoreController.sol",
"file": "../shared/CoreController.sol",
"id": 10109,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 10666,
"sourceUnit": 14925,
"src": "63:38:80",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/etherisc/gif-interface@3b0002a/contracts/modules/IRegistry.sol",
"file": "@etherisc/gif-interface/contracts/modules/IRegistry.sol",
"id": 10110,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 10666,
"sourceUnit": 21751,
"src": "103:65:80",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/proxy/utils/Initializable.sol",
"file": "@openzeppelin/contracts/proxy/utils/Initializable.sol",
"id": 10111,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 10666,
"sourceUnit": 18433,
"src": "170:63:80",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/Strings.sol",
"file": "@openzeppelin/contracts/utils/Strings.sol",
"id": 10112,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 10666,
"sourceUnit": 23076,
"src": "234:51:80",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.7.3/contracts/utils/structs/EnumerableSet.sol",
"file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol",
"id": 10113,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 10666,
"sourceUnit": 19391,
"src": "286:65:80",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 10114,
"name": "IRegistry",
"nodeType": "IdentifierPath",
"referencedDeclaration": 21750,
"src": "389:9:80"
},
"id": 10115,
"nodeType": "InheritanceSpecifier",
"src": "389:9:80"
},
{
"baseName": {
"id": 10116,
"name": "CoreController",
"nodeType": "IdentifierPath",
"referencedDeclaration": 14924,
"src": "404:14:80"
},
"id": 10117,
"nodeType": "InheritanceSpecifier",
"src": "404:14:80"
}
],
"contractDependencies": [
14924,
18432,
21750,
24074
],
"contractKind": "contract",
"fullyImplemented": true,
"id": 10665,
"linearizedBaseContracts": [
10665,
14924,
18432,
24074,
21750
],
"name": "RegistryController",
"nameLocation": "363:18:80",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 10121,
"libraryName": {
"id": 10118,
"name": "EnumerableSet",
"nodeType": "IdentifierPath",
"referencedDeclaration": 19390,
"src": "431:13:80"
},
"nodeType": "UsingForDirective",
"src": "425:49:80",
"typeName": {
"id": 10120,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 10119,
"name": "EnumerableSet.Bytes32Set",
"nodeType": "IdentifierPath",
"referencedDeclaration": 18996,
"src": "449:24:80"
},
"referencedDeclaration": 18996,
"src": "449:24:80",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
"typeString": "struct EnumerableSet.Bytes32Set"
}
}
},
{
"constant": true,
"documentation": {
"id": 10122,
"nodeType": "StructuredDocumentation",
"src": "480:105:80",
"text": " @dev Save number of items to iterate through\n Currently we have < 20 contracts."
},
"functionSelector": "24042a0a",
"id": 10125,
"mutability": "constant",
"name": "MAX_CONTRACTS",
"nameLocation": "614:13:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "590:43:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10123,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "590:7:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"hexValue": "313030",
"id": 10124,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "630:3:80",
"typeDescriptions": {
"typeIdentifier": "t_rational_100_by_1",
"typeString": "int_const 100"
},
"value": "100"
},
"visibility": "public"
},
{
"constant": false,
"documentation": {
"id": 10126,
"nodeType": "StructuredDocumentation",
"src": "640:74:80",
"text": " @dev Current release\n We use semantic versioning."
},
"functionSelector": "86d1a69f",
"id": 10128,
"mutability": "mutable",
"name": "release",
"nameLocation": "734:7:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "719:22:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 10127,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "719:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "48cd4cb1",
"id": 10130,
"mutability": "mutable",
"name": "startBlock",
"nameLocation": "767:10:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "752:25:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 10129,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "752:7:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "4a941e5e",
"id": 10136,
"mutability": "mutable",
"name": "_contracts",
"nameLocation": "896:10:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "784:122:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
"typeString": "mapping(bytes32 => mapping(bytes32 => address))"
},
"typeName": {
"id": 10135,
"keyType": {
"id": 10131,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "792:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "784:104:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
"typeString": "mapping(bytes32 => mapping(bytes32 => address))"
},
"valueType": {
"id": 10134,
"keyType": {
"id": 10132,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "825:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "817:70:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 10133,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "856:7:80",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
}
},
"visibility": "public"
},
{
"constant": false,
"functionSelector": "69923515",
"id": 10140,
"mutability": "mutable",
"name": "_contractsInRelease",
"nameLocation": "998:19:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "912:105:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"typeName": {
"id": 10139,
"keyType": {
"id": 10137,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "920:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "912:78:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 10138,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "945:7:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "public"
},
{
"constant": false,
"id": 10145,
"mutability": "mutable",
"name": "_contractNames",
"nameLocation": "1111:14:80",
"nodeType": "VariableDeclaration",
"scope": 10665,
"src": "1023:102:80",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Bytes32Set_$18996_storage_$",
"typeString": "mapping(bytes32 => struct EnumerableSet.Bytes32Set)"
},
"typeName": {
"id": 10144,
"keyType": {
"id": 10141,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1031:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1023:79:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Bytes32Set_$18996_storage_$",
"typeString": "mapping(bytes32 => struct EnumerableSet.Bytes32Set)"
},
"valueType": {
"id": 10143,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 10142,
"name": "EnumerableSet.Bytes32Set",
"nodeType": "IdentifierPath",
"referencedDeclaration": 18996,
"src": "1056:24:80"
},
"referencedDeclaration": 18996,
"src": "1056:24:80",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Bytes32Set_$18996_storage_ptr",
"typeString": "struct EnumerableSet.Bytes32Set"
}
}
},
"visibility": "private"
},
{
"body": {
"id": 10189,
"nodeType": "Block",
"src": "1204:605:80",
"statements": [
{
"expression": {
"id": 10154,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 10152,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14801,
"src": "1256:9:80",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IRegistry_$21750",
"typeString": "contract IRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 10153,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "1268:4:80",
"typeDescriptions": {
"typeIdentifier": "t_contract$_RegistryController_$10665",
"typeString": "contract RegistryController"
}
},
"src": "1256:16:80",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IRegistry_$21750",
"typeString": "contract IRegistry"
}
},
"id": 10155,
"nodeType": "ExpressionStatement",
"src": "1256:16:80"
},
{
"expression": {
"id": 10158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 10156,
"name": "release",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10128,
"src": "1490:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 10157,
"name": "_initialRelease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10147,
"src": "1500:15:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "1490:25:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 10159,
"nodeType": "ExpressionStatement",
"src": "1490:25:80"
},
{
"expression": {
"id": 10167,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 10160,
"name": "_contracts",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10136,
"src": "1525:10:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_bytes32_$_t_address_$_$",
"typeString": "mapping(bytes32 => mapping(bytes32 => address))"
}
},
"id": 10163,
"indexExpression": {
"id": 10161,
"name": "release",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10128,
"src": "1536:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1525:19:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 10164,
"indexExpression": {
"hexValue": "496e7374616e63654f70657261746f7253657276696365",
"id": 10162,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1545:25:80",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_893eee863631637173ead46f1c66388136d13bfeb40cdedfb3bfe4f34f933544",
"typeString": "literal_string \"InstanceOperatorService\""
},
"value": "InstanceOperatorService"
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1525:46:80",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 10165,
"name": "_msgSender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 24064,
"src": "1574:10:80",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
"typeString": "function () view returns (address)"
}
},
"id": 10166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1574:12:80",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1525:61:80",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 10168,
"nodeType": "ExpressionStatement",
"src": "1525:61:80"
},
{
"expression": {
"arguments": [
{
"baseExpression": {
"id": 10172,
"name": "_contractNames",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10145,
"src": "1614:14:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Bytes32Set_$18996_storage_$",
"typeString": "mapping(bytes32 => struct EnumerableSet.Bytes32Set storage ref)"
}
},
"id": 10174,
"indexExpression": {
"id": 10173,
"name": "release",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10128,
"src": "1629:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1614:23:80",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Bytes32Set_$18996_storage",
"typeString": "struct EnumerableSet.Bytes32Set storage ref"
}
},
{
"hexValue": "496e7374616e63654f70657261746f7253657276696365",
"id": 10175,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1639:25:80",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_893eee863631637173ead46f1c66388136d13bfeb40cdedfb3bfe4f34f933544",
"typeString": "literal_string \"InstanceOperatorService\""
},
"value": "InstanceOperatorService"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_Bytes32Set_$18996_storage",
"typeString": "struct EnumerableSet.Bytes32Set storage ref"
},
{
"typeIdentifier": "t_stringliteral_893eee863631637173ead46f1c66388136d13bfeb40cdedfb3bfe4f34f933544",
"typeString": "literal_string \"InstanceOperatorService\""
}
],
"expression": {
"id": 10169,
"name": "EnumerableSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 19390,
"src": "1596:13:80",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_EnumerableSet_$19390_$",
"typeString": "type(library EnumerableSet)"
}
},
"id": 10171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "add",
"nodeType": "MemberAccess",
"referencedDeclaration": 19014,
"src": "1596:17:80",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$18996_storage_ptr_$_t_bytes32_$returns$_t_bool_$",
"typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)"
}
},
"id": 10176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1596:69:80",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 10177,
"nodeType": "ExpressionStatement",
"src": "1596:69:80"
},
{
"expression": {
"id": 10182,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"id": 10178,
"name": "_contractsInRelease",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10140,
"src": "1675:19:80",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 10180,
"indexExpression": {
"id": 10179,
"name": "release",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10128,
"src": "1695:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1675:28:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"hexValue": "31",
"id": 10181,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1706:1:80",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "1675:32:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10183,
"nodeType": "ExpressionStatement",
"src": "1675:32:80"
},
{
"expression": {
"id": 10187,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 10184,
"name": "startBlock",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10130,
"src": "1777:10:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"expression": {
"id": 10185,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "1790:5:80",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 10186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "number",
"nodeType": "MemberAccess",
"src": "1790:12:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1777:25:80",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 10188,
"nodeType": "ExpressionStatement",
"src": "1777:25:80"
}
]
},
"functionSelector": "56bbc19d",
"id": 10190,
"implemented": true,
"kind": "function",
"modifiers": [
{
"id": 10150,
"modifierName": {
"id": 10149,
"name": "initializer",
"nodeType": "IdentifierPath",
"referencedDeclaration": 18352,
"src": "1192:11:80"
},
"nodeType": "ModifierInvocation",
"src": "1192:11:80"
}
],
"name": "initializeRegistry",
"nameLocation": "1141:18:80",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 10148,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 10147,
"mutability": "mutable",
"name": "_initialRelease",
"nameLocation": "1168:15:80",
"nodeType": "VariableDeclaration",
"scope": 10190,
"src": "1160:23:80",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 10146,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1160:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"visibility": "internal"
}
],
"src": "1159:25:80"
},
"returnParameters": {
"id": 10151,
"nodeType": "ParameterList",
"parameters": [],
"src": "1204:0:80"
},
"scope": 10665,
"src": "1132:677:80",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"baseFunctions": [
21737
],
"body": {
"id": 10210,
"nodeType": "Block",
"src": "1951:91:80",
"statements": [
{
"expression": {
"id": 10208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 10200,
"name": "_senderMatches",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10198,
"src": "1961:14:80",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"components": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 10206,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 10201,
"name": "sender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10192,
"src": "1979:6:80",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"id": 10203,
"name": "release",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10128,
"src": "2011:7:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"id": 10204,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 10194,
"src": "2020:13:80",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"