{ "contractName": "ProxyFactory", "abi": [ { "anonymous": false, "inputs": [ { "indexed": false, "name": "proxy", "type": "address" } ], "name": "ProxyCreation", "type": "event" }, { "constant": false, "inputs": [ { "name": "masterCopy", "type": "address" }, { "name": "data", "type": "bytes" } ], "name": "createProxy", "outputs": [ { "name": "proxy", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b506104dd806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820aeb00387246db55c17338bd7ef9b5b2e6db9a2a81ab640f7b12e1488be97fe9f0029a165627a7a72305820c4ef6f2e193e86bdff50d07c71b811741acb9e772138cc86bd3a020d8cb1581d0029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820aeb00387246db55c17338bd7ef9b5b2e6db9a2a81ab640f7b12e1488be97fe9f0029a165627a7a72305820c4ef6f2e193e86bdff50d07c71b811741acb9e772138cc86bd3a020d8cb1581d0029", "sourceMap": "225:725:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:24;;;;;;;", "deployedSourceMap": "225:725:24:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:24;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/proxies/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/proxies/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ 2875 ] }, "id": 2876, "nodeType": "SourceUnit", "nodes": [ { "id": 2842, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:24" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/proxies/Proxy.sol", "file": "./Proxy.sol", "id": 2843, "nodeType": "ImportDirective", "scope": 2876, "sourceUnit": 2841, "src": "24:21:24", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ 2840 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, "id": 2875, "linearizedBaseContracts": [ 2875 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, "documentation": null, "id": 2847, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { "id": 2846, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2845, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 2847, "src": "274:11:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 2844, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "274:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "273:13:24" }, "src": "254:33:24" }, { "body": { "id": 2873, "nodeType": "Block", "src": "634:314:24", "statements": [ { "expression": { "argumentTypes": null, "id": 2861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 2856, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "644:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2859, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2849, "src": "662:10:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 2858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "652:9:24", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$2840_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, "id": 2857, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "656:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } } }, "id": 2860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "652:21:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "src": "644:29:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "id": 2862, "nodeType": "ExpressionStatement", "src": "644:29:24" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 2863, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2851, "src": "687:4:24", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 2864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "687:11:24", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "701:1:24", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "687:15:24", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 2868, "nodeType": "IfStatement", "src": "683:237:24", "trueBody": { "externalReferences": [ { "data": { "declaration": 2851, "isOffset": false, "isSlot": false, "src": "860:4:24", "valueSize": 1 } }, { "proxy": { "declaration": 2854, "isOffset": false, "isSlot": false, "src": "827:5:24", "valueSize": 1 } }, { "data": { "declaration": 2851, "isOffset": false, "isSlot": false, "src": "841:4:24", "valueSize": 1 } } ], "id": 2867, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:24" } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2870, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "935:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } ], "id": 2869, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2847, "src": "921:13:24", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$2840_$returns$__$", "typeString": "function (contract Proxy)" } }, "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:20:24", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2872, "nodeType": "EmitStatement", "src": "916:25:24" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", "id": 2874, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { "id": 2852, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2849, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 2874, "src": "553:18:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2848, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 2851, "name": "data", "nodeType": "VariableDeclaration", "scope": 2874, "src": "573:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 2850, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:24", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "552:32:24" }, "payable": false, "returnParameters": { "id": 2855, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2854, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 2874, "src": "617:11:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 2853, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "617:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "616:13:24" }, "scope": 2875, "src": "532:416:24", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 2876, "src": "225:725:24" } ], "src": "0:951:24" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/proxies/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ 2875 ] }, "id": 2876, "nodeType": "SourceUnit", "nodes": [ { "id": 2842, "literals": [ "solidity", "0.4", ".24" ], "nodeType": "PragmaDirective", "src": "0:23:24" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/proxies/Proxy.sol", "file": "./Proxy.sol", "id": 2843, "nodeType": "ImportDirective", "scope": 2876, "sourceUnit": 2841, "src": "24:21:24", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ 2840 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, "id": 2875, "linearizedBaseContracts": [ 2875 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, "documentation": null, "id": 2847, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { "id": 2846, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2845, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 2847, "src": "274:11:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 2844, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "274:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "273:13:24" }, "src": "254:33:24" }, { "body": { "id": 2873, "nodeType": "Block", "src": "634:314:24", "statements": [ { "expression": { "argumentTypes": null, "id": 2861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 2856, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "644:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2859, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2849, "src": "662:10:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 2858, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "652:9:24", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$2840_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, "id": 2857, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "656:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } } }, "id": 2860, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "652:21:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "src": "644:29:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "id": 2862, "nodeType": "ExpressionStatement", "src": "644:29:24" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 2866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 2863, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2851, "src": "687:4:24", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 2864, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "687:11:24", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 2865, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "701:1:24", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "687:15:24", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 2868, "nodeType": "IfStatement", "src": "683:237:24", "trueBody": { "externalReferences": [ { "data": { "declaration": 2851, "isOffset": false, "isSlot": false, "src": "860:4:24", "valueSize": 1 } }, { "proxy": { "declaration": 2854, "isOffset": false, "isSlot": false, "src": "827:5:24", "valueSize": 1 } }, { "data": { "declaration": 2851, "isOffset": false, "isSlot": false, "src": "841:4:24", "valueSize": 1 } } ], "id": 2867, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:24" } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 2870, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2854, "src": "935:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } ], "id": 2869, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2847, "src": "921:13:24", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$2840_$returns$__$", "typeString": "function (contract Proxy)" } }, "id": 2871, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:20:24", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 2872, "nodeType": "EmitStatement", "src": "916:25:24" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", "id": 2874, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { "id": 2852, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2849, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 2874, "src": "553:18:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2848, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:24", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 2851, "name": "data", "nodeType": "VariableDeclaration", "scope": 2874, "src": "573:10:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 2850, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:24", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "552:32:24" }, "payable": false, "returnParameters": { "id": 2855, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 2854, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 2874, "src": "617:11:24", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 2853, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2840, "src": "617:5:24", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$2840", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "616:13:24" }, "scope": 2875, "src": "532:416:24", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 2876, "src": "225:725:24" } ], "src": "0:951:24" }, "compiler": { "name": "solc", "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0x048da221a8179b416c491b8f20a9b872dd9b5580", "transactionHash": "0xc9ddb90b16b96520abcd960e740b4d0f9763342a58f97d217bac2e3145f3f8d0" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-09-26T08:56:03.700Z" }