UNPKG

@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
{ "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"