witnet-solidity-bridge
Version:
Witnet Solidity Bridge contracts for EVM-compatible chains
947 lines • 285 kB
JSON
{
"contractName": "WitOracleRadonRequestFactoryModals",
"abi": [
{
"inputs": [],
"name": "InvalidInitialization",
"type": "error"
},
{
"inputs": [],
"name": "NotInitializing",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "by",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "master",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "clone",
"type": "address"
}
],
"name": "Cloned",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint64",
"name": "version",
"type": "uint64"
}
],
"name": "Initialized",
"type": "event"
},
{
"inputs": [],
"name": "base",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "class",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "cloned",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "witOracle",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "specs",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_commonRetrievalHash",
"type": "bytes32"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "buildRadonRequestModal",
"outputs": [
{
"internalType": "contract IWitOracleRadonRequestModal",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_commonRetrievalHash",
"type": "bytes32"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "determineAddress",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_commonRetrievalHash",
"type": "bytes32"
},
{
"internalType": "bytes15",
"name": "_crowdAttestationTallyHash",
"type": "bytes15"
}
],
"name": "initialize",
"outputs": [
{
"internalType": "contract IWitOracleRadonRequestModal",
"name": "",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "initialized",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getCrowdAttestationTally",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReduceOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "cborArgs",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDataResultType",
"outputs": [
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "url",
"type": "string"
}
],
"name": "getDataSourceArgsCount",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDataSourcesAggregator",
"outputs": [
{
"components": [
{
"internalType": "enum Witnet.RadonReduceOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"components": [
{
"internalType": "enum Witnet.RadonFilterOpcodes",
"name": "opcode",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "cborArgs",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonFilter[]",
"name": "filters",
"type": "tuple[]"
}
],
"internalType": "struct Witnet.RadonReducer",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRadonModalRetrieval",
"outputs": [
{
"components": [
{
"internalType": "uint8",
"name": "argsCount",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonRetrievalMethods",
"name": "method",
"type": "uint8"
},
{
"internalType": "enum Witnet.RadonDataTypes",
"name": "dataType",
"type": "uint8"
},
{
"internalType": "string",
"name": "url",
"type": "string"
},
{
"internalType": "string",
"name": "body",
"type": "string"
},
{
"internalType": "string[2][]",
"name": "headers",
"type": "string[2][]"
},
{
"internalType": "bytes",
"name": "radonScript",
"type": "bytes"
}
],
"internalType": "struct Witnet.RadonRetrieval",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string[]",
"name": "modalArgs",
"type": "string[]"
},
{
"internalType": "string[]",
"name": "modalUrls",
"type": "string[]"
}
],
"name": "verifyRadonRequest",
"outputs": [
{
"internalType": "Witnet.RadonHash",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"by\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"master\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"clone\",\"type\":\"address\"}],\"name\":\"Cloned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"base\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"buildRadonRequestModal\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestModal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"class\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"cloned\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"determineAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCrowdAttestationTally\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataResultType\",\"outputs\":[{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"}],\"name\":\"getDataSourceArgsCount\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDataSourcesAggregator\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Witnet.RadonReduceOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"components\":[{\"internalType\":\"enum Witnet.RadonFilterOpcodes\",\"name\":\"opcode\",\"type\":\"uint8\"},{\"internalType\":\"bytes\",\"name\":\"cborArgs\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonFilter[]\",\"name\":\"filters\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Witnet.RadonReducer\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRadonModalRetrieval\",\"outputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"argsCount\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonRetrievalMethods\",\"name\":\"method\",\"type\":\"uint8\"},{\"internalType\":\"enum Witnet.RadonDataTypes\",\"name\":\"dataType\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"url\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"body\",\"type\":\"string\"},{\"internalType\":\"string[2][]\",\"name\":\"headers\",\"type\":\"string[2][]\"},{\"internalType\":\"bytes\",\"name\":\"radonScript\",\"type\":\"bytes\"}],\"internalType\":\"struct Witnet.RadonRetrieval\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_commonRetrievalHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes15\",\"name\":\"_crowdAttestationTallyHash\",\"type\":\"bytes15\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"contract IWitOracleRadonRequestModal\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"specs\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"modalArgs\",\"type\":\"string[]\"},{\"internalType\":\"string[]\",\"name\":\"modalUrls\",\"type\":\"string[]\"}],\"name\":\"verifyRadonRequest\",\"outputs\":[{\"internalType\":\"Witnet.RadonHash\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"witOracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"class()\":{\"notice\":\"Returns the name of the actual contract implementing the logic of this Witnet appliance.\"},\"cloned()\":{\"notice\":\"Tells whether this contract is a clone of `self()`\"},\"getCrowdAttestationTally()\":{\"notice\":\"=============================================================================================================== --- IWitOracleRadonRequestModal -------------------------------------------------------------------------------\"},\"initialized()\":{\"notice\":\"Tells whether a WitOracleRequest or a WitOracleRequestTemplate has been properly initialized.\"},\"specs()\":{\"notice\":\"Returns the ERC-165 id of the minimal functionality expected for this appliance.\"},\"witOracle()\":{\"notice\":\"Reference to the Witnet Request Board that all templates built out from this factory will refer to.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol\":\"WitOracleRadonRequestFactoryModals\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol\":{\"keccak256\":\"0xd0f8e429111741babddd598e5aa390e8848c4e153272f43731719a2b8fbcde6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9dd0e2c180eb42840345fb0892c20f3ceb377cb0e53d92f4817d55993a2d0ab0\",\"dweb:/ipfs/QmYwqScKvMV1pGdoUFRG7kQG98fHZ5p5bQkaoQCFbwbxwf\"]},\"project:/contracts/interfaces/IWitAppliance.sol\":{\"keccak256\":\"0xd207ca54a1049445a3d99eea497d9b34c6dbdd44d771eee825e4c031bd2f447e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f81de32d868ff2881ed6fe97cc897e40b4b11d23cbe53a0e23cf3e68f9c0f0a3\",\"dweb:/ipfs/QmeeXmzmK5MAzt7Hf5DB2L81efKtTzZg9VbQ8sUiTqEk5c\"]},\"project:/contracts/interfaces/IWitOracle.sol\":{\"keccak256\":\"0x26cbe2074c0b3f545a46d95fad5e2280b67edcd958e4ae0b88f3a018aa11b805\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5324bac61f65e3edb01c88b9b75ca17affd593be88da5753a93b3f5304d3f479\",\"dweb:/ipfs/QmcVmNV6smbFiPaxvuN8ShkqbDZsT1wfjnF7f3qs6ke7QG\"]},\"project:/contracts/interfaces/IWitOracleAppliance.sol\":{\"keccak256\":\"0xcd8e57eca7f8042c85a83264e2ff6d1cd7a9f1521831736d7f57bcc7800642e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c639668e9439d60770b5df77436088ae7bd0aeb1d1be446552a98b6c29138f0\",\"dweb:/ipfs/QmbN3f5YuKMSd2j9tjay3VEkiYibGWpbfbwRNyrxA8k4o4\"]},\"project:/contracts/interfaces/IWitOracleRadonRegistry.sol\":{\"keccak256\":\"0x437bbb89129311bd1cc8f6becd333df46109ec53b24d3159be942b225614071f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef9bcdf4a73cb126885478c994821b7fe2b87d9221b767b4c9342b89b0d6550a\",\"dweb:/ipfs/QmXzZXPMxjSiFpcEnhg6CjLFNxGCpDZt22xpUh7VHxNTGd\"]},\"project:/contracts/interfaces/IWitOracleRadonRequestModal.sol\":{\"keccak256\":\"0x60b777e63700ed42d7e4b88c8e12db4b5220adb10d2ecc618c8c2a99a09eccee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b70b584cba3caa113e95aef31dbf5d5ae78042907c159e3ca25e3420d3b5b3f\",\"dweb:/ipfs/QmRThmU5vd8aVX2iK33pfmp6SKgfqgnC9VpT6Ruk1EwyVB\"]},\"project:/contracts/libs/Bech32.sol\":{\"keccak256\":\"0x14618323a0efe7586c20906a2e9cee7ad63baa976ff231c57f7f2d7d3707fb8b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a19f05fe84047a7a6d3d6fc39972b432e6e536aa70472386a9d7a6d9aab64a64\",\"dweb:/ipfs/QmcHwUY66yjiotRH4Q3kbRvSzcHyLQ1yHL3KbtQKiMhtZE\"]},\"project:/contracts/libs/Secp256k1.sol\":{\"keccak256\":\"0xbe686002da5004ff39dd70709f3820eba2afe9323ae9cb894009c161e4b1a666\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18fab91775216de0707cea9ad285b10be09127461a13432fea358bf9cb2a0c2e\",\"dweb:/ipfs/QmeRUGsgstnM4hxM9hpkBf3L6cE5btirEaowcMxmuw3utj\"]},\"project:/contracts/libs/Witnet.sol\":{\"keccak256\":\"0x1d446c3e534e40e676d1763bfb2897fadfac8afed904ab757843d7d6770b0a6c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://338fb1073f17d64e8d31bfe492d9475ce906788ee08e6489ce30413f91dc1328\",\"dweb:/ipfs/QmPe5QX2AGTnQFjse1Xttq4ZYWwYAiXoySb5VUui3PqPhk\"]},\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0x8e07aebe2954ab3e6f2d8eceedb12db7cf915c1f3e8630f4fa9999cecb1c78ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed6c54cc901183d61546e8fd15bd5ea8ef238ebc915642946071d435dd7481ea\",\"dweb:/ipfs/Qmcaqta7YjUSBbBUGqoh44bsCS6UqqoyHjBuz4qnKBShXM\"]},\"project:/contracts/libs/WitnetCBOR.sol\":{\"keccak256\":\"0xd99308373575cc10fb7f2ceb0f6a8625f3911275c1fa27811fae498d98d03d97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4909a999d7b660a2dc54ca957b6eccfa523e2765fc4d6a2574dee7d5cd67b43\",\"dweb:/ipfs/QmWGQT4KDcfSFe1hcHVoWx6E4PhYMaod5iLpJCWBEeShzh\"]},\"project:/contracts/patterns/Clonable.sol\":{\"keccak256\":\"0x9a2dbc814306f60263fe736b88aeabc44fc241d3bed132e8dd76a3684dd825f7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e665de5be06c9227c49f9466d24f798d4bed1a2db66d4d1368dcd9fc663c1b3a\",\"dweb:/ipfs/QmRjY2CHTGp1eyi9XPeTKr4WnPCzXbtk2285kdy2bJVCYA\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]}},\"version\":1}",
"bytecode": "0x",
"deployedBytecode": "0x",
"immutableReferences": {},
"generatedSources": [],
"deployedGeneratedSources": [],
"sourceMap": "",
"deployedSourceMap": "",
"source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"../../interfaces/IWitOracle.sol\";\r\nimport \"../../interfaces/IWitOracleAppliance.sol\";\r\nimport \"../../interfaces/IWitOracleRadonRequestModal.sol\";\r\n\r\nimport \"../../patterns/Clonable.sol\";\r\n\r\nabstract contract WitOracleRadonRequestFactoryModals\r\n is\r\n Clonable,\r\n IWitOracleAppliance,\r\n IWitOracleRadonRequestModal \r\n{\r\n function specs() virtual override public view returns (bytes4) {\r\n return (\r\n initialized()\r\n ? type(IWitOracleRadonRequestModal).interfaceId\r\n : bytes4(0xebb91556) // bytes4(keccak256(abi.encodePacked(\"buildRadonRequestModal(bytes32,bytes15)\")))\r\n ^ bytes4(0xa646ccc1) // bytes4(keccak256(abi.encodePacked(\"determineAddress(bytes32,bytes15)\")))\r\n );\r\n }\r\n\r\n /// @notice Reference to the Witnet Request Board that all templates built out from this factory will refer to.\r\n address immutable public override(IWitOracleAppliance, IWitOracleRadonRequestModal) witOracle;\r\n\r\n IWitOracleRadonRegistry internal immutable __witOracleRadonRegistry;\r\n bytes16 internal immutable __radonAggregateHash;\r\n \r\n struct Storage {\r\n /// @notice Radon retrieval common to all data providers.\r\n bytes32 radonRetrieveHash;\r\n /// @notice Crowd attestation tally.\r\n bytes16 radonTallyHash;\r\n }\r\n Storage private __storage;\r\n\r\n constructor(address _witOracle) {\r\n _require(_witOracle != address(0) && _witOracle.code.length > 0, \"inexistent Wit/Oracle\");\r\n witOracle = _witOracle;\r\n __witOracleRadonRegistry = IWitOracle(witOracle).registry();\r\n __radonAggregateHash = bytes16(__witOracleRadonRegistry.verifyRadonReducer(\r\n Witnet.RadonReducer({\r\n opcode: Witnet.RadonReduceOpcodes.Mode,\r\n filters: new Witnet.RadonFilter[](0)\r\n })\r\n ));\r\n }\r\n\r\n function buildRadonRequestModal(\r\n bytes32 _commonRetrievalHash, \r\n bytes15 _crowdAttestationTallyHash\r\n ) \r\n virtual\r\n external\r\n notOnClones\r\n returns (IWitOracleRadonRequestModal)\r\n {\r\n return WitOracleRadonRequestFactoryModals(\r\n __cloneDeterministic(_determineSaltAndPepper(\r\n _commonRetrievalHash,\r\n _crowdAttestationTallyHash\r\n ))\r\n ).initialize(\r\n _commonRetrievalHash,\r\n _crowdAttestationTallyHash\r\n );\r\n }\r\n\r\n function determineAddress(\r\n bytes32 _commonRetrievalHash,\r\n bytes15 _crowdAttestationTallyHash\r\n )\r\n virtual //override\r\n external view\r\n notOnClones\r\n returns (address)\r\n {\r\n return address(uint160(uint256(keccak256(\r\n abi.encodePacked(\r\n bytes1(0xff),\r\n address(this),\r\n _determineSaltAndPepper(\r\n _commonRetrievalHash,\r\n _crowdAttestationTallyHash\r\n ),\r\n keccak256(_cloneBytecode())\r\n )\r\n ))));\r\n }\r\n\r\n function initialize(\r\n bytes32 _commonRetrievalHash,\r\n bytes15 _crowdAttestationTallyHash\r\n )\r\n virtual\r\n public \r\n initializer\r\n returns (IWitOracleRadonRequestModal)\r\n { \r\n assert(__witOracleRadonRegistry.lookupRadonRetrievalArgsCount(_commonRetrievalHash) >= 1);\r\n __witOracleRadonRegistry.isVerifiedRadonReducer(_crowdAttestationTallyHash);\r\n __storage.radonRetrieveHash = _commonRetrievalHash;\r\n __storage.radonTallyHash = _crowdAttestationTallyHash;\r\n return IWitOracleRadonRequestModal(address(this));\r\n }\r\n\r\n\r\n // ================================================================================================================\r\n /// --- Clonable implementation and override ----------------------------------------------------------------------\r\n\r\n /// @notice Tells whether a WitOracleRequest or a WitOracleRequestTemplate has been properly initialized.\r\n function initialized()\r\n virtual override(Clonable)\r\n public view\r\n returns (bool)\r\n {\r\n return __storage.radonRetrieveHash != bytes32(0);\r\n }\r\n\r\n\r\n /// ===============================================================================================================\r\n /// --- IWitOracleRadonRequestModal -------------------------------------------------------------------------------\r\n \r\n function getCrowdAttestationTally()\r\n virtual override\r\n external view \r\n onlyOnClones\r\n returns (Witnet.RadonReducer memory)\r\n {\r\n return __witOracleRadonRegistry.lookupRadonReducer(\r\n __storage.radonTallyHash\r\n );\r\n }\r\n\r\n function getDataResultType()\r\n virtual override\r\n external view \r\n onlyOnClones\r\n returns (Witnet.RadonDataTypes)\r\n {\r\n return __witOracleRadonRegistry.lookupRadonRetrievalResultDataType(\r\n __storage.radonRetrieveHash\r\n );\r\n }\r\n\r\n function getDataSourceArgsCount(string calldata url)\r\n virtual override\r\n external view\r\n onlyOnClones\r\n returns (uint8)\r\n {\r\n return _max(\r\n WitnetBuffer.argsCountOf(abi.encode(url)),\r\n __witOracleRadonRegistry.lookupRadonRetrievalArgsCount(__storage.radonRetrieveHash)\r\n );\r\n }\r\n\r\n function getDataSourcesAggregator() \r\n virtual override\r\n external view\r\n onlyOnClones\r\n returns (Witnet.RadonReducer memory)\r\n {\r\n return __witOracleRadonRegistry.lookupRadonReducer(\r\n __radonAggregateHash\r\n );\r\n }\r\n\r\n function getRadonModalRetrieval() \r\n virtual override\r\n external view \r\n onlyOnClones\r\n returns (Witnet.RadonRetrieval memory)\r\n {\r\n return __witOracleRadonRegistry.lookupRadonRetrieval(\r\n __storage.radonRetrieveHash\r\n );\r\n }\r\n\r\n function verifyRadonRequest(\r\n string[] calldata modalArgs,\r\n string[] calldata modalUrls\r\n ) \r\n virtual override\r\n external \r\n onlyOnClones\r\n returns (Witnet.RadonHash)\r\n {\r\n bytes32 _retrieveHash = __storage.radonRetrieveHash;\r\n uint8 _commonRetrieveArgsCount = __witOracleRadonRegistry.lookupRadonRetrievalArgsCount(__storage.radonRetrieveHash);\r\n for (uint _ix; _ix < modalUrls.length; _ix ++) {\r\n _require(\r\n _max(WitnetBuffer.argsCountOf(abi.encode(modalUrls[_ix])), _commonRetrieveArgsCount) == modalArgs.length,\r\n \"mismatching args\"\r\n );\r\n }\r\n return __witOracleRadonRegistry.verifyRadonRequest(\r\n _retrieveHash,\r\n modalArgs,\r\n modalUrls,\r\n __radonAggregateHash,\r\n __storage.radonTallyHash\r\n );\r\n }\r\n\r\n\r\n /// ===============================================================================================================\r\n /// --- Internal methods ------------------------------------------------------------------------------------------\r\n\r\n function _determineSaltAndPepper(\r\n bytes32 _commonRetrievalHash, \r\n bytes15 _crowdAttestationTally\r\n )\r\n virtual internal view\r\n returns (bytes32)\r\n {\r\n return keccak256(\r\n abi.encodePacked(\r\n __SELF,\r\n _commonRetrievalHash,\r\n _crowdAttestationTally\r\n )\r\n );\r\n }\r\n\r\n function _max(uint8 a, uint8 b) internal pure returns (uint8) {\r\n return (a >= b ? a : b);\r\n }\r\n}",
"sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\core\\base\\WitOracleRadonRequestFactoryModals.sol",
"ast": {
"absolutePath": "project:/contracts/core/base/WitOracleRadonRequestFactoryModals.sol",
"exportedSymbols": {
"Bech32": [
31372
],
"Clonable": [
45518
],
"IWitAppliance": [
26514
],
"IWitOracle": [
26581
],
"IWitOracleAppliance": [
26593
],
"IWitOracleRadonRegistry": [
27394
],
"IWitOracleRadonRequestModal": [
27541
],
"Initializable": [
267
],
"Secp256k1": [
32535
],
"WitOracleRadonRequestFactoryModals": [
16188
],
"Witnet": [
40741
],
"WitnetBuffer": [
42631
],
"WitnetCBOR": [
44174
]
},
"id": 16189,
"license": "MIT",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 15745,
"literals": [
"solidity",
">=",
"0.8",
".0",
"<",
"0.9",
".0"
],
"nodeType": "PragmaDirective",
"src": "35:31:39"
},
{
"absolutePath": "project:/contracts/interfaces/IWitOracle.sol",
"file": "../../interfaces/IWitOracle.sol",
"id": 15746,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 16189,
"sourceUnit": 26582,
"src": "70:41:39",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/interfaces/IWitOracleAppliance.sol",
"file": "../../interfaces/IWitOracleAppliance.sol",
"id": 15747,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 16189,
"sourceUnit": 26594,
"src": "113:50:39",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/interfaces/IWitOracleRadonRequestModal.sol",
"file": "../../interfaces/IWitOracleRadonRequestModal.sol",
"id": 15748,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 16189,
"sourceUnit": 27542,
"src": "165:58:39",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "project:/contracts/patterns/Clonable.sol",
"file": "../../patterns/Clonable.sol",
"id": 15749,
"nameLocation": "-1:-1:-1",
"nodeType": "ImportDirective",
"scope": 16189,
"sourceUnit": 45519,
"src": "227:37:39",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": true,
"baseContracts": [
{
"baseName": {
"id": 15750,
"name": "Clonable",
"nameLocations": [
"338:8:39"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 45518,
"src": "338:8:39"
},
"id": 15751,
"nodeType": "InheritanceSpecifier",
"src": "338:8:39"
},
{
"baseName": {
"id": 15752,
"name": "IWitOracleAppliance",
"nameLocations": [
"357:19:39"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26593,
"src": "357:19:39"
},
"id": 15753,
"nodeType": "InheritanceSpecifier",
"src": "357:19:39"
},
{
"baseName": {
"id": 15754,
"name": "IWitOracleRadonRequestModal",
"nameLocations": [
"387:27:39"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 27541,
"src": "387:27:39"
},
"id": 15755,
"nodeType": "InheritanceSpecifier",
"src": "387:27:39"
}
],
"canonicalName": "WitOracleRadonRequestFactoryModals",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": false,
"id": 16188,
"linearizedBaseContracts": [
16188,
27541,
26593,
26514,
45518,
267
],
"name": "WitOracleRadonRequestFactoryModals",
"nameLocation": "286:34:39",
"nodeType": "ContractDefinition",
"nodes": [
{
"baseFunctions": [
26478
],
"body": {
"id": 15779,
"nodeType": "Block",
"src": "487:368:39",
"statements": [
{
"expression": {
"components": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 15761,
"name": "initialized",
"nodeType": "Identifier",
"overloadedDeclarations": [
15989
],
"referencedDeclaration": 15989,
"src": "520:11:39",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$",
"typeString": "function () view returns (bool)"
}
},
"id": 15762,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "520:13:39",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 15775,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"hexValue": "30786562623931353536",
"id": 15769,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "625:10:39",
"typeDescriptions": {
"typeIdentifier": "t_rational_3954775382_by_1",
"typeString": "int_const 3954775382"
},
"value": "0xebb91556"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_3954775382_by_1",
"typeString": "int_const 3954775382"
}
],
"id": 15768,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "618:6:39",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes4_$",
"typeString": "type(bytes4)"
},
"typeName": {
"id": 15767,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "618:6:39",
"typeDescriptions": {}
}
},
"id": 15770,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "618:18:39",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "^",
"rightExpression": {
"arguments": [
{
"hexValue": "30786136343663636331",
"id": 15773,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "749:10:39",
"typeDescriptions": {
"typeIdentifier": "t_rational_2789657793_by_1",
"typeString": "int_const 2789657793"
},
"value": "0xa646ccc1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_2789657793_by_1",
"typeString": "int_const 2789657793"
}
],
"id": 15772,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "742:6:39",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes4_$",
"typeString": "type(bytes4)"
},
"typeName": {
"id": 15771,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "742:6:39",
"typeDescriptions": {}
}
},
"id": 15774,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "742:18:39",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "618:142:39",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"id": 15776,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
"src": "520:240:39",
"trueExpression": {
"expression": {
"arguments": [
{
"id": 15764,
"name": "IWitOracleRadonRequestModal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 27541,
"src": "558:27:39",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IWitOracleRadonRequestModal_$27541_$",
"typeString": "type(contract IWitOracleRadonRequestModal)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_contract$_IWitOracleRadonRequestModal_$27541_$",
"typeString": "type(contract IWitOracleRadonRequestModal)"
}
],
"id": 15763,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 4294967269,
"src": "553:4:39",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 15765,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "553:33:39",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_contract$_IWitOracleRadonRequestModal_$27541",
"typeString": "type(contract IWitOracleRadonRequestModal)"
}
},
"id": 15766,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "587:11:39",
"memberName": "interfaceId",
"nodeType": "MemberAccess",
"src": "553:45:39",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
}
],
"id": 15777,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "505:342:39",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"functionReturnParameters": 15760,
"id": 15778,
"nodeType": "Return",
"src": "498:349:39"
}
]
},
"functionSelector": "adb7c3f7",
"id": 15780,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "specs",
"nameLocation": "433:5:39",
"nodeType": "FunctionDefinition",
"overrides": {
"id": 15757,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "449:8:39"
},
"parameters": {
"id": 15756,
"nodeType": "ParameterList",
"parameters": [],
"src": "438:2:39"
},
"returnParameters": {
"id": 15760,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 15759,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 15780,
"src": "479:6:39",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"typeName": {
"id": 15758,
"name": "bytes4",
"nodeType": "ElementaryTypeName",
"src": "479:6:39",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"visibility": "internal"
}
],
"src": "478:8:39"
},
"scope": 16188,
"src": "424:431:39",
"stateMutability": "view",
"virtual": true,
"visibility": "public"
},
{
"baseFunctions": [
26592,
27540
],
"constant": false,
"documentation": {
"id": 15781,
"nodeType": "StructuredDocumentation",
"src": "863:111:39",
"text": "@notice Reference to the Witnet Request Board that all templates built out from this factory will refer to."
},
"functionSelector": "1014d375",
"id": 15786,
"mutability": "immutable",
"name": "witOracle",
"nameLocation": "1064:9:39",
"nodeType": "VariableDeclaration",
"overrides": {
"id": 15785,
"nodeType": "OverrideSpecifier",
"overrides": [
{
"id": 15783,
"name": "IWitOracleAppliance",
"nameLocations": [
"1014:19:39"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 26593,
"src": "1014:19:39"
},
{
"id": 15784,
"name": "IWitOracleRadonRequestModal",
"nameLocations": [
"1035:2