cic-stack/apps/cic-eth/tests/testdata/bancor/ContractRegistryClient.json

5708 lines
230 KiB
JSON
Raw Normal View History

2021-02-01 18:12:51 +01:00
{
"contractName": "ContractRegistryClient",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_prevOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "OwnerUpdate",
"type": "event"
},
{
"inputs": [],
"name": "acceptOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "newOwner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "onlyOwnerCanUpdateRegistry",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "prevRegistry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "registry",
"outputs": [
{
"internalType": "contract IContractRegistry",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "updateRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "restoreRegistry",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bool",
"name": "_onlyOwnerCanUpdateRegistry",
"type": "bool"
}
],
"name": "restrictRegistryUpdate",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_prevOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"OwnerUpdate\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onlyOwnerCanUpdateRegistry\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"prevRegistry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract IContractRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"restoreRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_onlyOwnerCanUpdateRegistry\",\"type\":\"bool\"}],\"name\":\"restrictRegistryUpdate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateRegistry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Base contract for ContractRegistry clients\",\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"used by a new owner to accept an ownership transfer\"},\"constructor\":{\"details\":\"initializes a new ContractRegistryClient instance\",\"params\":{\"_registry\":\"address of a contract-registry contract\"}},\"restoreRegistry()\":{\"details\":\"restores the previous contract-registry\"},\"restrictRegistryUpdate(bool)\":{\"details\":\"restricts the permission to update the contract-registry\",\"params\":{\"_onlyOwnerCanUpdateRegistry\":\"indicates whether or not permission is restricted to owner only\"}},\"transferOwnership(address)\":{\"details\":\"allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner\",\"params\":{\"_newOwner\":\"new contract owner\"}},\"updateRegistry()\":{\"details\":\"updates to the new contract-registry\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":\"ContractRegistryClient\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol\":{\"keccak256\":\"0x74caf88eff1cb113ad8277df9ba7933a6f1e0deea8fd1855157def3be833b859\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://c7793c9f245736cd8413bc8c4b5c40b67949cbee32289a16d29c83cf59396ad6\",\"dweb:/ipfs/QmWony7b1buUrGnE32gjLAnSwkBYMrJ68vUcCwDMmp3MbJ\"]},\"/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol\":{\"keccak256\":\"0x6ef69d9dcc80a8a36d5eb37783375cd5e4831c6d20c723fa6f6b6a06c0aeb53d\",\"license\":\"SEE LICENSE IN LICENSE\",\"urls\":[\"bzz-raw://5a5d087e2c5b47739615ef22e1f29749de44b4
"bytecode": "0x",
"deployedBytecode": "0x",
"immutableReferences": {},
"sourceMap": "",
"deployedSourceMap": "",
"source": "// SPDX-License-Identifier: SEE LICENSE IN LICENSE\r\npragma solidity 0.6.12;\r\nimport \"./Owned.sol\";\r\nimport \"./Utils.sol\";\r\nimport \"./interfaces/IContractRegistry.sol\";\r\n\r\n/**\r\n * @dev Base contract for ContractRegistry clients\r\n*/\r\ncontract ContractRegistryClient is Owned, Utils {\r\n bytes32 internal constant CONTRACT_REGISTRY = \"ContractRegistry\";\r\n bytes32 internal constant BANCOR_NETWORK = \"BancorNetwork\";\r\n bytes32 internal constant BANCOR_FORMULA = \"BancorFormula\";\r\n bytes32 internal constant CONVERTER_FACTORY = \"ConverterFactory\";\r\n bytes32 internal constant CONVERSION_PATH_FINDER = \"ConversionPathFinder\";\r\n bytes32 internal constant CONVERTER_UPGRADER = \"BancorConverterUpgrader\";\r\n bytes32 internal constant CONVERTER_REGISTRY = \"BancorConverterRegistry\";\r\n bytes32 internal constant CONVERTER_REGISTRY_DATA = \"BancorConverterRegistryData\";\r\n bytes32 internal constant BNT_TOKEN = \"BNTToken\";\r\n bytes32 internal constant BANCOR_X = \"BancorX\";\r\n bytes32 internal constant BANCOR_X_UPGRADER = \"BancorXUpgrader\";\r\n bytes32 internal constant CHAINLINK_ORACLE_WHITELIST = \"ChainlinkOracleWhitelist\";\r\n\r\n IContractRegistry public registry; // address of the current contract-registry\r\n IContractRegistry public prevRegistry; // address of the previous contract-registry\r\n bool public onlyOwnerCanUpdateRegistry; // only an owner can update the contract-registry\r\n\r\n /**\r\n * @dev verifies that the caller is mapped to the given contract name\r\n *\r\n * @param _contractName contract name\r\n */\r\n modifier only(bytes32 _contractName) {\r\n _only(_contractName);\r\n _;\r\n }\r\n\r\n // error message binary size optimization\r\n function _only(bytes32 _contractName) internal view {\r\n require(msg.sender == addressOf(_contractName), \"ERR_ACCESS_DENIED\");\r\n }\r\n\r\n /**\r\n * @dev initializes a new ContractRegistryClient instance\r\n *\r\n * @param _registry address of a contract-registry contract\r\n */\r\n constructor(IContractRegistry _registry) internal validAddress(address(_registry)) {\r\n registry = IContractRegistry(_registry);\r\n prevRegistry = IContractRegistry(_registry);\r\n }\r\n\r\n /**\r\n * @dev updates to the new contract-registry\r\n */\r\n function updateRegistry() public {\r\n // verify that this function is permitted\r\n require(msg.sender == owner || !onlyOwnerCanUpdateRegistry, \"ERR_ACCESS_DENIED\");\r\n\r\n // get the new contract-registry\r\n IContractRegistry newRegistry = IContractRegistry(addressOf(CONTRACT_REGISTRY));\r\n\r\n // verify that the new contract-registry is different and not zero\r\n require(newRegistry != registry && address(newRegistry) != address(0), \"ERR_INVALID_REGISTRY\");\r\n\r\n // verify that the new contract-registry is pointing to a non-zero contract-registry\r\n require(newRegistry.addressOf(CONTRACT_REGISTRY) != address(0), \"ERR_INVALID_REGISTRY\");\r\n\r\n // save a backup of the current contract-registry before replacing it\r\n prevRegistry = registry;\r\n\r\n // replace the current contract-registry with the new contract-registry\r\n registry = newRegistry;\r\n }\r\n\r\n /**\r\n * @dev restores the previous contract-registry\r\n */\r\n function restoreRegistry() public ownerOnly {\r\n // restore the previous contract-registry\r\n registry = prevRegistry;\r\n }\r\n\r\n /**\r\n * @dev restricts the permission to update the contract-registry\r\n *\r\n * @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only\r\n */\r\n function restrictRegistryUpdate(bool _onlyOwnerCanUpdateRegistry) public ownerOnly {\r\n // change the permission to update the contract-registry\r\n onlyOwnerCanUpdateRegistry = _onlyOwnerCanUpdateR
"sourcePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"ast": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"exportedSymbols": {
"ContractRegistryClient": [
21719
]
},
"id": 21720,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21516,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:56"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "./Owned.sol",
"id": 21517,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 21819,
"src": "77:21:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol",
"file": "./Utils.sol",
"id": 21518,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 22662,
"src": "100:21:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol",
"file": "./interfaces/IContractRegistry.sol",
"id": 21519,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 22832,
"src": "123:44:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21521,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21818,
"src": "268:5:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$21818",
"typeString": "contract Owned"
}
},
"id": 21522,
"nodeType": "InheritanceSpecifier",
"src": "268:5:56"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21523,
"name": "Utils",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22661,
"src": "275:5:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Utils_$22661",
"typeString": "contract Utils"
}
},
"id": 21524,
"nodeType": "InheritanceSpecifier",
"src": "275:5:56"
}
],
"contractDependencies": [
21818,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 21520,
"nodeType": "StructuredDocumentation",
"src": "171:60:56",
"text": " @dev Base contract for ContractRegistry clients"
},
"fullyImplemented": true,
"id": 21719,
"linearizedBaseContracts": [
21719,
22661,
21818,
22847
],
"name": "ContractRegistryClient",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 21527,
"mutability": "constant",
"name": "CONTRACT_REGISTRY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "288:64:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21525,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "288:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e74726163745265676973747279",
"id": 21526,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "334:18:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_014cc675742635098f3843c56f86f2875ab1c0e8ccd166d07159a5036b798b15",
"typeString": "literal_string \"ContractRegistry\""
},
"value": "ContractRegistry"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21530,
"mutability": "constant",
"name": "BANCOR_NETWORK",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "359:58:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21528,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "359:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f724e6574776f726b",
"id": 21529,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "402:15:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e13073a1961b7477f917c9e8fc77a7d64eb68a6e4f8820f41bc0991c65d90aea",
"typeString": "literal_string \"BancorNetwork\""
},
"value": "BancorNetwork"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21533,
"mutability": "constant",
"name": "BANCOR_FORMULA",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "424:58:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21531,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "424:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72466f726d756c61",
"id": 21532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "467:15:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f9aac19de3c8e04eb4d0548047a1cd61c5aaafde7cf99ed9c7ed906ce4dddf38",
"typeString": "literal_string \"BancorFormula\""
},
"value": "BancorFormula"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21536,
"mutability": "constant",
"name": "CONVERTER_FACTORY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "489:64:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21534,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "489:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e766572746572466163746f7279",
"id": 21535,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "535:18:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_01f892de917bf09cf6fd04f57ff78c6ca006205a8809769abbeb39a039d3d768",
"typeString": "literal_string \"ConverterFactory\""
},
"value": "ConverterFactory"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21539,
"mutability": "constant",
"name": "CONVERSION_PATH_FINDER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "560:73:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21537,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "560:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e76657273696f6e5061746846696e646572",
"id": 21538,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "611:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d55bb14cf5551b26acee2cc099a4125a85ce113cb3306082cd15a1b4785376f1",
"typeString": "literal_string \"ConversionPathFinder\""
},
"value": "ConversionPathFinder"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21542,
"mutability": "constant",
"name": "CONVERTER_UPGRADER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "640:72:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21540,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "640:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e7665727465725570677261646572",
"id": 21541,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "687:25:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e8cccdfec0e08322695b48c2ff60a2acb1243c72e02ec3a238fe40eefe726c01",
"typeString": "literal_string \"BancorConverterUpgrader\""
},
"value": "BancorConverterUpgrader"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21545,
"mutability": "constant",
"name": "CONVERTER_REGISTRY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "719:72:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21543,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "719:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e7665727465725265676973747279",
"id": 21544,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "766:25:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_be29ba855de63e3aeb1afb9aed4122f6a4ac386581ea1b32773e72966a3749e7",
"typeString": "literal_string \"BancorConverterRegistry\""
},
"value": "BancorConverterRegistry"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21548,
"mutability": "constant",
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "798:81:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21546,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "798:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e766572746572526567697374727944617461",
"id": 21547,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "850:29:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f47ef61fa81526eefb8475acf271ff419a87423535a77af3ef98ebc7b31c640c",
"typeString": "literal_string \"BancorConverterRegistryData\""
},
"value": "BancorConverterRegistryData"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21551,
"mutability": "constant",
"name": "BNT_TOKEN",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "886:48:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21549,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "886:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "424e54546f6b656e",
"id": 21550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "924:10:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4686149f7058d2454e334cfa4ea1a3482469c64fd3d4f50dfc69716086aee66f",
"typeString": "literal_string \"BNTToken\""
},
"value": "BNTToken"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21554,
"mutability": "constant",
"name": "BANCOR_X",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "941:46:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21552,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "941:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f7258",
"id": 21553,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "978:9:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_86ea4d05259b04f0f72cb84c9671b182b8bbe45a219bbea86edd67f80c414eb4",
"typeString": "literal_string \"BancorX\""
},
"value": "BancorX"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21557,
"mutability": "constant",
"name": "BANCOR_X_UPGRADER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "994:63:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21555,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "994:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72585570677261646572",
"id": 21556,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1040:17:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d5e7e6eba8567517cf1f8f313379e5a6dbd5dcff956b158cf65a32e6b2bb5fd8",
"typeString": "literal_string \"BancorXUpgrader\""
},
"value": "BancorXUpgrader"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21560,
"mutability": "constant",
"name": "CHAINLINK_ORACLE_WHITELIST",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1064:81:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21558,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1064:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436861696e6c696e6b4f7261636c6557686974656c697374",
"id": 21559,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1119:26:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f1d302dc7d7d6451424d658039558f1ea7e3cbf7255a10240557f430d300feb3",
"typeString": "literal_string \"ChainlinkOracleWhitelist\""
},
"value": "ChainlinkOracleWhitelist"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "7b103999",
"id": 21562,
"mutability": "mutable",
"name": "registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1154:33:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21561,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1154:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "61cd756e",
"id": 21564,
"mutability": "mutable",
"name": "prevRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1243:37:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21563,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1243:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "2fe8a6ad",
"id": 21566,
"mutability": "mutable",
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1333:38:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21565,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1333:4:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 21576,
"nodeType": "Block",
"src": "1616:51:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21572,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21569,
"src": "1633:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21571,
"name": "_only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21593,
"src": "1627:5:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$",
"typeString": "function (bytes32) view"
}
},
"id": 21573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1627:20:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21574,
"nodeType": "ExpressionStatement",
"src": "1627:20:56"
},
{
"id": 21575,
"nodeType": "PlaceholderStatement",
"src": "1658:1:56"
}
]
},
"documentation": {
"id": 21567,
"nodeType": "StructuredDocumentation",
"src": "1430:143:56",
"text": " @dev verifies that the caller is mapped to the given contract name\n @param _contractName contract name"
},
"id": 21577,
"name": "only",
"nodeType": "ModifierDefinition",
"overrides": null,
"parameters": {
"id": 21570,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21569,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21577,
"src": "1593:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21568,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1593:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1592:23:56"
},
"src": "1579:88:56",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21592,
"nodeType": "Block",
"src": "1774:87:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21583,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1793:3:56",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 21584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1793:10:56",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21586,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21579,
"src": "1817:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21585,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "1807:9:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1807:24:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1793:38:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 21589,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1833:19:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 21582,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1785:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1785:68:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21591,
"nodeType": "ExpressionStatement",
"src": "1785:68:56"
}
]
},
"documentation": null,
"id": 21593,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_only",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21580,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21579,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21593,
"src": "1737:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21578,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1737:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1736:23:56"
},
"returnParameters": {
"id": 21581,
"nodeType": "ParameterList",
"parameters": [],
"src": "1774:0:56"
},
"scope": 21719,
"src": "1722:139:56",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21617,
"nodeType": "Block",
"src": "2111:112:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21605,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "2122:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21607,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2151:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21606,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2133:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2133:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2122:39:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21610,
"nodeType": "ExpressionStatement",
"src": "2122:39:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21611,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "2172:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21613,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2205:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21612,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2187:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2187:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2172:43:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21616,
"nodeType": "ExpressionStatement",
"src": "2172:43:56"
}
]
},
"documentation": {
"id": 21594,
"nodeType": "StructuredDocumentation",
"src": "1869:153:56",
"text": " @dev initializes a new ContractRegistryClient instance\n @param _registry address of a contract-registry contract"
},
"id": 21618,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21601,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2099:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21600,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2091:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21599,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2091:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2091:18:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21603,
"modifierName": {
"argumentTypes": null,
"id": 21598,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "2078:12:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2078:32:56"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21597,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21596,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21618,
"src": "2040:27:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21595,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "2040:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2039:29:56"
},
"returnParameters": {
"id": 21604,
"nodeType": "ParameterList",
"parameters": [],
"src": "2111:0:56"
},
"scope": 21719,
"src": "2028:195:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21679,
"nodeType": "Block",
"src": "2333:892:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 21629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21623,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2403:3:56",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 21624,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2403:10:56",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 21625,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21728,
"src": "2417:5:56",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2403:19:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"id": 21628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2426:27:56",
"subExpression": {
"argumentTypes": null,
"id": 21627,
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21566,
"src": "2427:26:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2403:50:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 21630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2455:19:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 21622,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2395:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2395:80:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21632,
"nodeType": "ExpressionStatement",
"src": "2395:80:56"
},
{
"assignments": [
21634
],
"declarations": [
{
"constant": false,
"id": 21634,
"mutability": "mutable",
"name": "newRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21679,
"src": "2530:29:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21633,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "2530:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21640,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21637,
"name": "CONTRACT_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21527,
"src": "2590:17:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21636,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "2580:9:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2580:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 21635,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2562:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21639,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2562:47:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2530:79:56"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 21654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"id": 21644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21642,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2706:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 21643,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "2721:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2706:23:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21647,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2741:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21646,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2733:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21645,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2733:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2733:20:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21651,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2765:1:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21650,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2757:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21649,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2757:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21652,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2757:10:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2733:34:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2706:61:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245474953545259",
"id": 21655,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2769:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
},
"value": "ERR_INVALID_REGISTRY"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
}
],
"id": 21641,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2698:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2698:94:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21657,
"nodeType": "ExpressionStatement",
"src": "2698:94:56"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21661,
"name": "CONTRACT_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21527,
"src": "2929:17:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 21659,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2907:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addressOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 22830,
"src": "2907:21:56",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 21662,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2907:40:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21665,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2959:1:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21664,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2951:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21663,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2951:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2951:10:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2907:54:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245474953545259",
"id": 21668,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2963:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
},
"value": "ERR_INVALID_REGISTRY"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
}
],
"id": 21658,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2899:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2899:87:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21670,
"nodeType": "ExpressionStatement",
"src": "2899:87:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21671,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "3078:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21672,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3093:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3078:23:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21674,
"nodeType": "ExpressionStatement",
"src": "3078:23:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21677,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21675,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3195:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21676,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "3206:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3195:22:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21678,
"nodeType": "ExpressionStatement",
"src": "3195:22:56"
}
]
},
"documentation": {
"id": 21619,
"nodeType": "StructuredDocumentation",
"src": "2231:63:56",
"text": " @dev updates to the new contract-registry"
},
"functionSelector": "49d10b64",
"id": 21680,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "updateRegistry",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21620,
"nodeType": "ParameterList",
"parameters": [],
"src": "2323:2:56"
},
"returnParameters": {
"id": 21621,
"nodeType": "ParameterList",
"parameters": [],
"src": "2333:0:56"
},
"scope": 21719,
"src": "2300:925:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21690,
"nodeType": "Block",
"src": "3348:93:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21686,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3410:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21687,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "3421:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3410:23:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21689,
"nodeType": "ExpressionStatement",
"src": "3410:23:56"
}
]
},
"documentation": {
"id": 21681,
"nodeType": "StructuredDocumentation",
"src": "3233:65:56",
"text": " @dev restores the previous contract-registry"
},
"functionSelector": "b4a176d3",
"id": 21691,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21684,
"modifierName": {
"argumentTypes": null,
"id": 21683,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3338:9:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3338:9:56"
}
],
"name": "restoreRegistry",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21682,
"nodeType": "ParameterList",
"parameters": [],
"src": "3328:2:56"
},
"returnParameters": {
"id": 21685,
"nodeType": "ParameterList",
"parameters": [],
"src": "3348:0:56"
},
"scope": 21719,
"src": "3304:137:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21703,
"nodeType": "Block",
"src": "3738:141:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21699,
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21566,
"src": "3815:26:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21700,
"name": "_onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21694,
"src": "3844:27:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3815:56:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21702,
"nodeType": "ExpressionStatement",
"src": "3815:56:56"
}
]
},
"documentation": {
"id": 21692,
"nodeType": "StructuredDocumentation",
"src": "3449:200:56",
"text": " @dev restricts the permission to update the contract-registry\n @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only"
},
"functionSelector": "024c7ec7",
"id": 21704,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21697,
"modifierName": {
"argumentTypes": null,
"id": 21696,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3728:9:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3728:9:56"
}
],
"name": "restrictRegistryUpdate",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21695,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21694,
"mutability": "mutable",
"name": "_onlyOwnerCanUpdateRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21704,
"src": "3687:32:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21693,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3687:4:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3686:34:56"
},
"returnParameters": {
"id": 21698,
"nodeType": "ParameterList",
"parameters": [],
"src": "3738:0:56"
},
"scope": 21719,
"src": "3655:224:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21717,
"nodeType": "Block",
"src": "4151:59:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21714,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21707,
"src": "4188:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 21712,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "4169:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addressOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 22830,
"src": "4169:18:56",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 21715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4169:33:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21711,
"id": 21716,
"nodeType": "Return",
"src": "4162:40:56"
}
]
},
"documentation": {
"id": 21705,
"nodeType": "StructuredDocumentation",
"src": "3887:184:56",
"text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address"
},
"id": 21718,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addressOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21708,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21707,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21718,
"src": "4096:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21706,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4096:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4095:23:56"
},
"returnParameters": {
"id": 21711,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21710,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21718,
"src": "4142:7:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21709,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4142:7:56",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4141:9:56"
},
"scope": 21719,
"src": "4077:133:56",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
}
],
"scope": 21720,
"src": "233:3980:56"
}
],
"src": "52:4163:56"
},
"legacyAST": {
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/ContractRegistryClient.sol",
"exportedSymbols": {
"ContractRegistryClient": [
21719
]
},
"id": 21720,
"license": "SEE LICENSE IN LICENSE",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21516,
"literals": [
"solidity",
"0.6",
".12"
],
"nodeType": "PragmaDirective",
"src": "52:23:56"
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Owned.sol",
"file": "./Owned.sol",
"id": 21517,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 21819,
"src": "77:21:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/Utils.sol",
"file": "./Utils.sol",
"id": 21518,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 22662,
"src": "100:21:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/lash/src/ext/cic/grassrootseconomics/bancor-contracts/solidity/contracts/utility/interfaces/IContractRegistry.sol",
"file": "./interfaces/IContractRegistry.sol",
"id": 21519,
"nodeType": "ImportDirective",
"scope": 21720,
"sourceUnit": 22832,
"src": "123:44:56",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21521,
"name": "Owned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21818,
"src": "268:5:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Owned_$21818",
"typeString": "contract Owned"
}
},
"id": 21522,
"nodeType": "InheritanceSpecifier",
"src": "268:5:56"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 21523,
"name": "Utils",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22661,
"src": "275:5:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Utils_$22661",
"typeString": "contract Utils"
}
},
"id": 21524,
"nodeType": "InheritanceSpecifier",
"src": "275:5:56"
}
],
"contractDependencies": [
21818,
22661,
22847
],
"contractKind": "contract",
"documentation": {
"id": 21520,
"nodeType": "StructuredDocumentation",
"src": "171:60:56",
"text": " @dev Base contract for ContractRegistry clients"
},
"fullyImplemented": true,
"id": 21719,
"linearizedBaseContracts": [
21719,
22661,
21818,
22847
],
"name": "ContractRegistryClient",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 21527,
"mutability": "constant",
"name": "CONTRACT_REGISTRY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "288:64:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21525,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "288:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e74726163745265676973747279",
"id": 21526,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "334:18:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_014cc675742635098f3843c56f86f2875ab1c0e8ccd166d07159a5036b798b15",
"typeString": "literal_string \"ContractRegistry\""
},
"value": "ContractRegistry"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21530,
"mutability": "constant",
"name": "BANCOR_NETWORK",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "359:58:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21528,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "359:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f724e6574776f726b",
"id": 21529,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "402:15:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e13073a1961b7477f917c9e8fc77a7d64eb68a6e4f8820f41bc0991c65d90aea",
"typeString": "literal_string \"BancorNetwork\""
},
"value": "BancorNetwork"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21533,
"mutability": "constant",
"name": "BANCOR_FORMULA",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "424:58:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21531,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "424:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72466f726d756c61",
"id": 21532,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "467:15:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f9aac19de3c8e04eb4d0548047a1cd61c5aaafde7cf99ed9c7ed906ce4dddf38",
"typeString": "literal_string \"BancorFormula\""
},
"value": "BancorFormula"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21536,
"mutability": "constant",
"name": "CONVERTER_FACTORY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "489:64:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21534,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "489:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e766572746572466163746f7279",
"id": 21535,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "535:18:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_01f892de917bf09cf6fd04f57ff78c6ca006205a8809769abbeb39a039d3d768",
"typeString": "literal_string \"ConverterFactory\""
},
"value": "ConverterFactory"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21539,
"mutability": "constant",
"name": "CONVERSION_PATH_FINDER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "560:73:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21537,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "560:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436f6e76657273696f6e5061746846696e646572",
"id": 21538,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "611:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d55bb14cf5551b26acee2cc099a4125a85ce113cb3306082cd15a1b4785376f1",
"typeString": "literal_string \"ConversionPathFinder\""
},
"value": "ConversionPathFinder"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21542,
"mutability": "constant",
"name": "CONVERTER_UPGRADER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "640:72:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21540,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "640:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e7665727465725570677261646572",
"id": 21541,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "687:25:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e8cccdfec0e08322695b48c2ff60a2acb1243c72e02ec3a238fe40eefe726c01",
"typeString": "literal_string \"BancorConverterUpgrader\""
},
"value": "BancorConverterUpgrader"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21545,
"mutability": "constant",
"name": "CONVERTER_REGISTRY",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "719:72:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21543,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "719:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e7665727465725265676973747279",
"id": 21544,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "766:25:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_be29ba855de63e3aeb1afb9aed4122f6a4ac386581ea1b32773e72966a3749e7",
"typeString": "literal_string \"BancorConverterRegistry\""
},
"value": "BancorConverterRegistry"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21548,
"mutability": "constant",
"name": "CONVERTER_REGISTRY_DATA",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "798:81:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21546,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "798:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72436f6e766572746572526567697374727944617461",
"id": 21547,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "850:29:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f47ef61fa81526eefb8475acf271ff419a87423535a77af3ef98ebc7b31c640c",
"typeString": "literal_string \"BancorConverterRegistryData\""
},
"value": "BancorConverterRegistryData"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21551,
"mutability": "constant",
"name": "BNT_TOKEN",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "886:48:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21549,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "886:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "424e54546f6b656e",
"id": 21550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "924:10:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4686149f7058d2454e334cfa4ea1a3482469c64fd3d4f50dfc69716086aee66f",
"typeString": "literal_string \"BNTToken\""
},
"value": "BNTToken"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21554,
"mutability": "constant",
"name": "BANCOR_X",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "941:46:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21552,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "941:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f7258",
"id": 21553,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "978:9:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_86ea4d05259b04f0f72cb84c9671b182b8bbe45a219bbea86edd67f80c414eb4",
"typeString": "literal_string \"BancorX\""
},
"value": "BancorX"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21557,
"mutability": "constant",
"name": "BANCOR_X_UPGRADER",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "994:63:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21555,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "994:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "42616e636f72585570677261646572",
"id": 21556,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1040:17:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_d5e7e6eba8567517cf1f8f313379e5a6dbd5dcff956b158cf65a32e6b2bb5fd8",
"typeString": "literal_string \"BancorXUpgrader\""
},
"value": "BancorXUpgrader"
},
"visibility": "internal"
},
{
"constant": true,
"id": 21560,
"mutability": "constant",
"name": "CHAINLINK_ORACLE_WHITELIST",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1064:81:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21558,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1064:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "436861696e6c696e6b4f7261636c6557686974656c697374",
"id": 21559,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1119:26:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f1d302dc7d7d6451424d658039558f1ea7e3cbf7255a10240557f430d300feb3",
"typeString": "literal_string \"ChainlinkOracleWhitelist\""
},
"value": "ChainlinkOracleWhitelist"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "7b103999",
"id": 21562,
"mutability": "mutable",
"name": "registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1154:33:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21561,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1154:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "61cd756e",
"id": 21564,
"mutability": "mutable",
"name": "prevRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1243:37:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21563,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "1243:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "2fe8a6ad",
"id": 21566,
"mutability": "mutable",
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21719,
"src": "1333:38:56",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21565,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1333:4:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 21576,
"nodeType": "Block",
"src": "1616:51:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21572,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21569,
"src": "1633:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21571,
"name": "_only",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21593,
"src": "1627:5:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$",
"typeString": "function (bytes32) view"
}
},
"id": 21573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1627:20:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21574,
"nodeType": "ExpressionStatement",
"src": "1627:20:56"
},
{
"id": 21575,
"nodeType": "PlaceholderStatement",
"src": "1658:1:56"
}
]
},
"documentation": {
"id": 21567,
"nodeType": "StructuredDocumentation",
"src": "1430:143:56",
"text": " @dev verifies that the caller is mapped to the given contract name\n @param _contractName contract name"
},
"id": 21577,
"name": "only",
"nodeType": "ModifierDefinition",
"overrides": null,
"parameters": {
"id": 21570,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21569,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21577,
"src": "1593:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21568,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1593:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1592:23:56"
},
"src": "1579:88:56",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21592,
"nodeType": "Block",
"src": "1774:87:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21583,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1793:3:56",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 21584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1793:10:56",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21586,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21579,
"src": "1817:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21585,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "1807:9:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1807:24:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1793:38:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 21589,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1833:19:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 21582,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1785:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1785:68:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21591,
"nodeType": "ExpressionStatement",
"src": "1785:68:56"
}
]
},
"documentation": null,
"id": 21593,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_only",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21580,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21579,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21593,
"src": "1737:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21578,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1737:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1736:23:56"
},
"returnParameters": {
"id": 21581,
"nodeType": "ParameterList",
"parameters": [],
"src": "1774:0:56"
},
"scope": 21719,
"src": "1722:139:56",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21617,
"nodeType": "Block",
"src": "2111:112:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21605,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "2122:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21607,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2151:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21606,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2133:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2133:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2122:39:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21610,
"nodeType": "ExpressionStatement",
"src": "2122:39:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21611,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "2172:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21613,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2205:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21612,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2187:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21614,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2187:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2172:43:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21616,
"nodeType": "ExpressionStatement",
"src": "2172:43:56"
}
]
},
"documentation": {
"id": 21594,
"nodeType": "StructuredDocumentation",
"src": "1869:153:56",
"text": " @dev initializes a new ContractRegistryClient instance\n @param _registry address of a contract-registry contract"
},
"id": 21618,
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21601,
"name": "_registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21596,
"src": "2099:9:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21600,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2091:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21599,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2091:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2091:18:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"id": 21603,
"modifierName": {
"argumentTypes": null,
"id": 21598,
"name": "validAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22618,
"src": "2078:12:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$_t_address_$",
"typeString": "modifier (address)"
}
},
"nodeType": "ModifierInvocation",
"src": "2078:32:56"
}
],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21597,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21596,
"mutability": "mutable",
"name": "_registry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21618,
"src": "2040:27:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21595,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "2040:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2039:29:56"
},
"returnParameters": {
"id": 21604,
"nodeType": "ParameterList",
"parameters": [],
"src": "2111:0:56"
},
"scope": 21719,
"src": "2028:195:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 21679,
"nodeType": "Block",
"src": "2333:892:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 21629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 21623,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "2403:3:56",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 21624,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2403:10:56",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 21625,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21728,
"src": "2417:5:56",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2403:19:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"id": 21628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2426:27:56",
"subExpression": {
"argumentTypes": null,
"id": 21627,
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21566,
"src": "2427:26:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2403:50:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f4143434553535f44454e494544",
"id": 21630,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2455:19:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
},
"value": "ERR_ACCESS_DENIED"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_f5894269650d3e1726ed81a4f48c5b62c7dd6fa025b89d639952a7012960d666",
"typeString": "literal_string \"ERR_ACCESS_DENIED\""
}
],
"id": 21622,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2395:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21631,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2395:80:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21632,
"nodeType": "ExpressionStatement",
"src": "2395:80:56"
},
{
"assignments": [
21634
],
"declarations": [
{
"constant": false,
"id": 21634,
"mutability": "mutable",
"name": "newRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21679,
"src": "2530:29:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"typeName": {
"contractScope": null,
"id": 21633,
"name": "IContractRegistry",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 22831,
"src": "2530:17:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 21640,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21637,
"name": "CONTRACT_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21527,
"src": "2590:17:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 21636,
"name": "addressOf",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21718,
"src": "2580:9:56",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view returns (address)"
}
},
"id": 21638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2580:28:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 21635,
"name": "IContractRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22831,
"src": "2562:17:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IContractRegistry_$22831_$",
"typeString": "type(contract IContractRegistry)"
}
},
"id": 21639,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2562:47:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2530:79:56"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 21654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
},
"id": 21644,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 21642,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2706:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 21643,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "2721:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "2706:23:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21647,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2741:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
],
"id": 21646,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2733:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21645,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2733:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2733:20:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21651,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2765:1:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21650,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2757:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21649,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2757:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21652,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2757:10:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2733:34:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2706:61:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245474953545259",
"id": 21655,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2769:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
},
"value": "ERR_INVALID_REGISTRY"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
}
],
"id": 21641,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2698:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21656,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2698:94:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21657,
"nodeType": "ExpressionStatement",
"src": "2698:94:56"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 21667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21661,
"name": "CONTRACT_REGISTRY",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21527,
"src": "2929:17:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 21659,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "2907:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21660,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addressOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 22830,
"src": "2907:21:56",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 21662,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2907:40:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 21665,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2959:1:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 21664,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2951:7:56",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 21663,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2951:7:56",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 21666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2951:10:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "2907:54:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4552525f494e56414c49445f5245474953545259",
"id": 21668,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2963:22:56",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
},
"value": "ERR_INVALID_REGISTRY"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_75b9212739e68843904752f41fb54f1609594bc4b84683da2a4384aeff5c191d",
"typeString": "literal_string \"ERR_INVALID_REGISTRY\""
}
],
"id": 21658,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2899:7:56",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 21669,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2899:87:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21670,
"nodeType": "ExpressionStatement",
"src": "2899:87:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21671,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "3078:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21672,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3093:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3078:23:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21674,
"nodeType": "ExpressionStatement",
"src": "3078:23:56"
},
{
"expression": {
"argumentTypes": null,
"id": 21677,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21675,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3195:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21676,
"name": "newRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21634,
"src": "3206:11:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3195:22:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21678,
"nodeType": "ExpressionStatement",
"src": "3195:22:56"
}
]
},
"documentation": {
"id": 21619,
"nodeType": "StructuredDocumentation",
"src": "2231:63:56",
"text": " @dev updates to the new contract-registry"
},
"functionSelector": "49d10b64",
"id": 21680,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "updateRegistry",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21620,
"nodeType": "ParameterList",
"parameters": [],
"src": "2323:2:56"
},
"returnParameters": {
"id": 21621,
"nodeType": "ParameterList",
"parameters": [],
"src": "2333:0:56"
},
"scope": 21719,
"src": "2300:925:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21690,
"nodeType": "Block",
"src": "3348:93:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21686,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "3410:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21687,
"name": "prevRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21564,
"src": "3421:12:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"src": "3410:23:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21689,
"nodeType": "ExpressionStatement",
"src": "3410:23:56"
}
]
},
"documentation": {
"id": 21681,
"nodeType": "StructuredDocumentation",
"src": "3233:65:56",
"text": " @dev restores the previous contract-registry"
},
"functionSelector": "b4a176d3",
"id": 21691,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21684,
"modifierName": {
"argumentTypes": null,
"id": 21683,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3338:9:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3338:9:56"
}
],
"name": "restoreRegistry",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21682,
"nodeType": "ParameterList",
"parameters": [],
"src": "3328:2:56"
},
"returnParameters": {
"id": 21685,
"nodeType": "ParameterList",
"parameters": [],
"src": "3348:0:56"
},
"scope": 21719,
"src": "3304:137:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21703,
"nodeType": "Block",
"src": "3738:141:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 21701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 21699,
"name": "onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21566,
"src": "3815:26:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 21700,
"name": "_onlyOwnerCanUpdateRegistry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21694,
"src": "3844:27:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3815:56:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 21702,
"nodeType": "ExpressionStatement",
"src": "3815:56:56"
}
]
},
"documentation": {
"id": 21692,
"nodeType": "StructuredDocumentation",
"src": "3449:200:56",
"text": " @dev restricts the permission to update the contract-registry\n @param _onlyOwnerCanUpdateRegistry indicates whether or not permission is restricted to owner only"
},
"functionSelector": "024c7ec7",
"id": 21704,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 21697,
"modifierName": {
"argumentTypes": null,
"id": 21696,
"name": "ownerOnly",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21754,
"src": "3728:9:56",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "3728:9:56"
}
],
"name": "restrictRegistryUpdate",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21695,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21694,
"mutability": "mutable",
"name": "_onlyOwnerCanUpdateRegistry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21704,
"src": "3687:32:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 21693,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "3687:4:56",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3686:34:56"
},
"returnParameters": {
"id": 21698,
"nodeType": "ParameterList",
"parameters": [],
"src": "3738:0:56"
},
"scope": 21719,
"src": "3655:224:56",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 21717,
"nodeType": "Block",
"src": "4151:59:56",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21714,
"name": "_contractName",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21707,
"src": "4188:13:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 21712,
"name": "registry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21562,
"src": "4169:8:56",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IContractRegistry_$22831",
"typeString": "contract IContractRegistry"
}
},
"id": 21713,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "addressOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 22830,
"src": "4169:18:56",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32) view external returns (address)"
}
},
"id": 21715,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4169:33:56",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 21711,
"id": 21716,
"nodeType": "Return",
"src": "4162:40:56"
}
]
},
"documentation": {
"id": 21705,
"nodeType": "StructuredDocumentation",
"src": "3887:184:56",
"text": " @dev returns the address associated with the given contract name\n @param _contractName contract name\n @return contract address"
},
"id": 21718,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "addressOf",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 21708,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21707,
"mutability": "mutable",
"name": "_contractName",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21718,
"src": "4096:21:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 21706,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "4096:7:56",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4095:23:56"
},
"returnParameters": {
"id": 21711,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21710,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 21718,
"src": "4142:7:56",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21709,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4142:7:56",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4141:9:56"
},
"scope": 21719,
"src": "4077:133:56",
"stateMutability": "view",
"virtual": false,
"visibility": "internal"
}
],
"scope": 21720,
"src": "233:3980:56"
}
],
"src": "52:4163:56"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-10-20T08:24:47.839Z",
"devdoc": {
"details": "Base contract for ContractRegistry clients",
"kind": "dev",
"methods": {
"acceptOwnership()": {
"details": "used by a new owner to accept an ownership transfer"
},
"constructor": {
"details": "initializes a new ContractRegistryClient instance",
"params": {
"_registry": "address of a contract-registry contract"
}
},
"restoreRegistry()": {
"details": "restores the previous contract-registry"
},
"restrictRegistryUpdate(bool)": {
"details": "restricts the permission to update the contract-registry",
"params": {
"_onlyOwnerCanUpdateRegistry": "indicates whether or not permission is restricted to owner only"
}
},
"transferOwnership(address)": {
"details": "allows transferring the contract ownership the new owner still needs to accept the transfer can only be called by the contract owner",
"params": {
"_newOwner": "new contract owner"
}
},
"updateRegistry()": {
"details": "updates to the new contract-registry"
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}