UNPKG

@gnosis.pm/pm-contracts

Version:

Collection of smart contracts for the Gnosis prediction market platform

897 lines (896 loc) 98.9 kB
{ "contractName": "SignedMessageOracleFactory", "abi": [ { "constant": true, "inputs": [], "name": "signedMessageOracleMasterCopy", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [ { "name": "_signedMessageOracleMasterCopy", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "creator", "type": "address" }, { "indexed": false, "name": "signedMessageOracle", "type": "address" }, { "indexed": false, "name": "oracle", "type": "address" } ], "name": "SignedMessageOracleCreation", "type": "event" }, { "constant": false, "inputs": [ { "name": "descriptionHash", "type": "bytes32" }, { "name": "v", "type": "uint8" }, { "name": "r", "type": "bytes32" }, { "name": "s", "type": "bytes32" } ], "name": "createSignedMessageOracle", "outputs": [ { "name": "signedMessageOracle", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"signedMessageOracleMasterCopy\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"descriptionHash\",\"type\":\"bytes32\"},{\"name\":\"v\",\"type\":\"uint8\"},{\"name\":\"r\",\"type\":\"bytes32\"},{\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"createSignedMessageOracle\",\"outputs\":[{\"name\":\"signedMessageOracle\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_signedMessageOracleMasterCopy\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"creator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"signedMessageOracle\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"SignedMessageOracleCreation\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Stefan George - <stefan@gnosis.pm>\",\"methods\":{\"createSignedMessageOracle(bytes32,uint8,bytes32,bytes32)\":{\"details\":\"Creates a new signed message oracle contract\",\"params\":{\"descriptionHash\":\"Hash identifying off chain event description\",\"r\":\"Signature parameter\",\"s\":\"Signature parameter\",\"v\":\"Signature parameter\"},\"return\":\"Oracle contract\"}},\"title\":\"Signed message oracle factory contract - Allows to create signed message oracle contracts\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol\":\"SignedMessageOracleFactory\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/Oracle.sol\":{\"keccak256\":\"0xf4d12f4a59c17e66dfa6791188f621a8914e2038a4e3f72d6fc9fb903ca8e18e\",\"urls\":[\"bzzr://a477ccd203e677cc904b1a4f8fcc85251c5b5e09c5c10eed27e01318584b16d1\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracle.sol\":{\"keccak256\":\"0x0707787e68ac6a5efa4f74cbaee26a233d300803283fb61b699121fd8714367a\",\"urls\":[\"bzzr://e30da975b38e3a97a15b3a5354721a381fb5c2544154a00bee84620e834d55b5\"]},\"/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol\":{\"keccak256\":\"0xb6c2d86453adba1f62e27d7869b10a062af2278c0161740e2c9cf152c6908ae1\",\"urls\":[\"bzzr://69dbf71f482862f40f4bd379ff03a7017be25a93ea79cb6d99f2d9c69b23eef3\"]},\"@gnosis.pm/util-contracts/contracts/Proxy.sol\":{\"keccak256\":\"0xeab0e83a9ec9e7f052c0455a11577061ec6d1994db08dae429abd6faaabf6555\",\"urls\":[\"bzzr://b2c1273d4ec30e2f9e768eea8c510f8493a7359b03e01923d93eea86b57ec145\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b506040516020806107d88339810180604052602081101561003057600080fd5b8101908080519060200190929190505050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610747806100916000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063515dc0be1461003b578063655d086214610085575b600080fd5b610043610114565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d26004803603608081101561009b57600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610139565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585858560405161016d90610306565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018460ff1660ff16815260200183815260200182815260200195505050505050604051809103906000f0801580156101e1573d6000803e3d6000fd5b509050600060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610243573d6000803e3d6000fd5b5050506020604051035190503373ffffffffffffffffffffffffffffffffffffffff167f7be438e4a33b832fcd7adccf30167ee27bd3e693a5ff6daf7fcf98fb2163b7a28383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a250949350505050565b610408806103148339019056fe608060405234801561001057600080fd5b5060405160a080610408833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018484848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b50505060206040510351600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836002819055505050505050610261806101a76000396000f3fe60806040526004361061004a5760003560e01c8063238ac9331461009857806327793f87146100ef57806385dcee931461011a578063a619486e14610145578063c65fb3801461019c575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad6101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fb57600080fd5b506101046101f1565b6040518082815260200191505060405180910390f35b34801561012657600080fd5b5061012f6101f7565b6040518082815260200191505060405180910390f35b34801561015157600080fd5b5061015a6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a857600080fd5b506101b1610222565b604051808215151515815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff168156fea165627a7a723058208dd95513738f71dc20ab0d04fd182f45d40c5ba14d50156d9ba2cb878e91e5570029a165627a7a723058205edf0ab992498980ef997288e046b516171b422446bf86f7d7a0ddb4f4fcd0840029", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063515dc0be1461003b578063655d086214610085575b600080fd5b610043610114565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6100d26004803603608081101561009b57600080fd5b8101908080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050610139565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168585858560405161016d90610306565b808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018460ff1660ff16815260200183815260200182815260200195505050505050604051809103906000f0801580156101e1573d6000803e3d6000fd5b509050600060018686868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610243573d6000803e3d6000fd5b5050506020604051035190503373ffffffffffffffffffffffffffffffffffffffff167f7be438e4a33b832fcd7adccf30167ee27bd3e693a5ff6daf7fcf98fb2163b7a28383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a250949350505050565b610408806103148339019056fe608060405234801561001057600080fd5b5060405160a080610408833981018060405260a081101561003057600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505084600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100a457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018484848460405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610142573d6000803e3d6000fd5b50505060206040510351600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836002819055505050505050610261806101a76000396000f3fe60806040526004361061004a5760003560e01c8063238ac9331461009857806327793f87146100ef57806385dcee931461011a578063a619486e14610145578063c65fb3801461019c575b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050366000803760008036600084600019f43d6000803e8060008114610093573d6000f35b3d6000fd5b3480156100a457600080fd5b506100ad6101cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100fb57600080fd5b506101046101f1565b6040518082815260200191505060405180910390f35b34801561012657600080fd5b5061012f6101f7565b6040518082815260200191505060405180910390f35b34801561015157600080fd5b5061015a6101fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101a857600080fd5b506101b1610222565b604051808215151515815260200191505060405180910390f35b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055481565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600460009054906101000a900460ff168156fea165627a7a723058208dd95513738f71dc20ab0d04fd182f45d40c5ba14d50156d9ba2cb878e91e5570029a165627a7a723058205edf0ab992498980ef997288e046b516171b422446bf86f7d7a0ddb4f4fcd0840029", "sourceMap": "219:1252:24:-;;;548:162;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:162:24;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;548:162:24;;;;;;;;;;;;;;;;673:30;641:29;;:62;;;;;;;;;;;;;;;;;;548:162;219:1252;;;;;;", "deployedSourceMap": "219:1252:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;219:1252:24;;;;;;;;;;;;;;;;;;;;;;;;445:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;993:476;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;993:476:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;445:56;;;;;;;;;;;;;:::o;993:476::-;1116:39;1258:29;;;;;;;;;;;1290:15;1307:1;1310;1313;1221:94;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1221:94:24;1171:146;;1327:14;1344:35;1354:15;1371:1;1374;1377;1344:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1344:35:24;;;;;;;;1327:52;;1422:10;1394:68;;;1434:19;1455:6;1394:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;993:476;;;;;;;:::o;219:1252::-;;;;;;;;:::o", "source": "pragma solidity ^0.5.0;\nimport \"../Oracles/SignedMessageOracle.sol\";\n\n\n/// @title Signed message oracle factory contract - Allows to create signed message oracle contracts\n/// @author Stefan George - <stefan@gnosis.pm>\ncontract SignedMessageOracleFactory {\n\n /*\n * Events\n */\n event SignedMessageOracleCreation(address indexed creator, SignedMessageOracle signedMessageOracle, address oracle);\n\n /*\n * Storage\n */\n SignedMessageOracle public signedMessageOracleMasterCopy;\n\n /*\n * Public functions\n */\n constructor(SignedMessageOracle _signedMessageOracleMasterCopy)\n public\n {\n signedMessageOracleMasterCopy = _signedMessageOracleMasterCopy;\n }\n\n /// @dev Creates a new signed message oracle contract\n /// @param descriptionHash Hash identifying off chain event description\n /// @param v Signature parameter\n /// @param r Signature parameter\n /// @param s Signature parameter\n /// @return Oracle contract\n function createSignedMessageOracle(bytes32 descriptionHash, uint8 v, bytes32 r, bytes32 s)\n public\n returns (SignedMessageOracle signedMessageOracle)\n {\n signedMessageOracle = SignedMessageOracle(address(new SignedMessageOracleProxy(address(signedMessageOracleMasterCopy), descriptionHash, v, r, s)));\n address oracle = ecrecover(descriptionHash, v, r, s);\n emit SignedMessageOracleCreation(msg.sender, signedMessageOracle, oracle);\n }\n}\n", "sourcePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol", "ast": { "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracleFactory.sol", "exportedSymbols": { "SignedMessageOracleFactory": [ 5101 ] }, "id": 5102, "nodeType": "SourceUnit", "nodes": [ { "id": 5032, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:24" }, { "absolutePath": "/home/alan/src/github.com/gnosis/pm-contracts/contracts/Oracles/SignedMessageOracle.sol", "file": "../Oracles/SignedMessageOracle.sol", "id": 5033, "nodeType": "ImportDirective", "scope": 5102, "sourceUnit": 5031, "src": "24:44:24", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ 4910 ], "contractKind": "contract", "documentation": "@title Signed message oracle factory contract - Allows to create signed message oracle contracts\n @author Stefan George - <stefan@gnosis.pm>", "fullyImplemented": true, "id": 5101, "linearizedBaseContracts": [ 5101 ], "name": "SignedMessageOracleFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, "documentation": null, "id": 5041, "name": "SignedMessageOracleCreation", "nodeType": "EventDefinition", "parameters": { "id": 5040, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 5035, "indexed": true, "name": "creator", "nodeType": "VariableDeclaration", "scope": 5041, "src": "326:23:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5034, "name": "address", "nodeType": "ElementaryTypeName", "src": "326:7:24", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 5037, "indexed": false, "name": "signedMessageOracle", "nodeType": "VariableDeclaration", "scope": 5041, "src": "351:39:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" }, "typeName": { "contractScope": null, "id": 5036, "name": "SignedMessageOracle", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5030, "src": "351:19:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 5039, "indexed": false, "name": "oracle", "nodeType": "VariableDeclaration", "scope": 5041, "src": "392:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5038, "name": "address", "nodeType": "ElementaryTypeName", "src": "392:7:24", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "325:82:24" }, "src": "292:116:24" }, { "constant": false, "id": 5043, "name": "signedMessageOracleMasterCopy", "nodeType": "VariableDeclaration", "scope": 5101, "src": "445:56:24", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" }, "typeName": { "contractScope": null, "id": 5042, "name": "SignedMessageOracle", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5030, "src": "445:19:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "value": null, "visibility": "public" }, { "body": { "id": 5052, "nodeType": "Block", "src": "631:79:24", "statements": [ { "expression": { "argumentTypes": null, "id": 5050, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 5048, "name": "signedMessageOracleMasterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5043, "src": "641:29:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 5049, "name": "_signedMessageOracleMasterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5045, "src": "673:30:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "src": "641:62:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "id": 5051, "nodeType": "ExpressionStatement", "src": "641:62:24" } ] }, "documentation": null, "id": 5053, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 5046, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 5045, "name": "_signedMessageOracleMasterCopy", "nodeType": "VariableDeclaration", "scope": 5053, "src": "560:50:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" }, "typeName": { "contractScope": null, "id": 5044, "name": "SignedMessageOracle", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5030, "src": "560:19:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "value": null, "visibility": "internal" } ], "src": "559:52:24" }, "returnParameters": { "id": 5047, "nodeType": "ParameterList", "parameters": [], "src": "631:0:24" }, "scope": 5101, "src": "548:162:24", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { "id": 5099, "nodeType": "Block", "src": "1161:308:24", "statements": [ { "expression": { "argumentTypes": null, "id": 5081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 5066, "name": "signedMessageOracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5064, "src": "1171:19:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 5072, "name": "signedMessageOracleMasterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5043, "src": "1258:29:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } ], "id": 5071, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1250:7:24", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 5073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1250:38:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 5074, "name": "descriptionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5055, "src": "1290:15:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 5075, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5057, "src": "1307:1:24", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 5076, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1310:1:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 5077, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5061, "src": "1313:1:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 5070, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "1221:28:24", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_address_$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_contract$_SignedMessageOracleProxy_$4910_$", "typeString": "function (address,bytes32,uint8,bytes32,bytes32) returns (contract SignedMessageOracleProxy)" }, "typeName": { "contractScope": null, "id": 5069, "name": "SignedMessageOracleProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4910, "src": "1225:24:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910", "typeString": "contract SignedMessageOracleProxy" } } }, "id": 5078, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1221:94:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910", "typeString": "contract SignedMessageOracleProxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_SignedMessageOracleProxy_$4910", "typeString": "contract SignedMessageOracleProxy" } ], "id": 5068, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "1213:7:24", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, "id": 5079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1213:103:24", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 5067, "name": "SignedMessageOracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5030, "src": "1193:19:24", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SignedMessageOracle_$5030_$", "typeString": "type(contract SignedMessageOracle)" } }, "id": 5080, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1193:124:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "src": "1171:146:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, "id": 5082, "nodeType": "ExpressionStatement", "src": "1171:146:24" }, { "assignments": [ 5084 ], "declarations": [ { "constant": false, "id": 5084, "name": "oracle", "nodeType": "VariableDeclaration", "scope": 5099, "src": "1327:14:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 5083, "name": "address", "nodeType": "ElementaryTypeName", "src": "1327:7:24", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 5091, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 5086, "name": "descriptionHash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5055, "src": "1354:15:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 5087, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5057, "src": "1371:1:24", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 5088, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5059, "src": "1374:1:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 5089, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5061, "src": "1377:1:24", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 5085, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7912, "src": "1344:9:24", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 5090, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1344:35:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "1327:52:24" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 5093, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 7920, "src": "1422:3:24", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 5094, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "1422:10:24", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 5095, "name": "signedMessageOracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5064, "src": "1434:19:24", "typeDescriptions": { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" } }, { "argumentTypes": null, "id": 5096, "name": "oracle", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5084, "src": "1455:6:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_contract$_SignedMessageOracle_$5030", "typeString": "contract SignedMessageOracle" }, { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 5092, "name": "SignedMessageOracleCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5041, "src": "1394:27:24", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_contract$_SignedMessageOracle_$5030_$_t_address_$returns$__$", "typeString": "function (address,contract SignedMessageOracle,address)" } }, "id": 5097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1394:68:24", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 5098, "nodeType": "EmitStatement", "src": "1389:73:24" } ] },