{ "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": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", "sourceMap": "225:725:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:13;;;;;;;", "deployedSourceMap": "225:725:13:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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:13;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.23;\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/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ 1543 ] }, "id": 1544, "nodeType": "SourceUnit", "nodes": [ { "id": 1510, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:13" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", "id": 1511, "nodeType": "ImportDirective", "scope": 1544, "sourceUnit": 1509, "src": "24:21:13", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ 1508 ], "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": 1543, "linearizedBaseContracts": [ 1543 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, "documentation": null, "id": 1515, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { "id": 1514, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1513, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 1515, "src": "274:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 1512, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "274:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "273:13:13" }, "src": "254:33:13" }, { "body": { "id": 1541, "nodeType": "Block", "src": "634:314:13", "statements": [ { "expression": { "argumentTypes": null, "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1524, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1522, "src": "644:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1527, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1517, "src": "662:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "652:9:13", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, "id": 1525, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "656:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } }, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "652:21:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "src": "644:29:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "id": 1530, "nodeType": "ExpressionStatement", "src": "644:29:13" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1531, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1519, "src": "687:4:13", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "687:11:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "701:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "687:15:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1536, "nodeType": "IfStatement", "src": "683:237:13", "trueBody": { "externalReferences": [ { "data": { "declaration": 1519, "isOffset": false, "isSlot": false, "src": "860:4:13", "valueSize": 1 } }, { "proxy": { "declaration": 1522, "isOffset": false, "isSlot": false, "src": "827:5:13", "valueSize": 1 } }, { "data": { "declaration": 1519, "isOffset": false, "isSlot": false, "src": "841:4:13", "valueSize": 1 } } ], "id": 1535, "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:13" } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1538, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1522, "src": "935:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } ], "id": 1537, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "921:13:13", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", "typeString": "function (contract Proxy)" } }, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:20:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1540, "nodeType": "EmitStatement", "src": "916:25:13" } ] }, "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": 1542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { "id": 1520, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1517, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1542, "src": "553:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1516, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1519, "name": "data", "nodeType": "VariableDeclaration", "scope": 1542, "src": "573:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1518, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "552:32:13" }, "payable": false, "returnParameters": { "id": 1523, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1522, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 1542, "src": "617:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 1521, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "617:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "616:13:13" }, "scope": 1543, "src": "532:416:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 1544, "src": "225:725:13" } ], "src": "0:951:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ 1543 ] }, "id": 1544, "nodeType": "SourceUnit", "nodes": [ { "id": 1510, "literals": [ "solidity", "0.4", ".23" ], "nodeType": "PragmaDirective", "src": "0:23:13" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", "id": 1511, "nodeType": "ImportDirective", "scope": 1544, "sourceUnit": 1509, "src": "24:21:13", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ 1508 ], "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": 1543, "linearizedBaseContracts": [ 1543 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, "documentation": null, "id": 1515, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { "id": 1514, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1513, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 1515, "src": "274:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 1512, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "274:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "273:13:13" }, "src": "254:33:13" }, { "body": { "id": 1541, "nodeType": "Block", "src": "634:314:13", "statements": [ { "expression": { "argumentTypes": null, "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1524, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1522, "src": "644:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1527, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1517, "src": "662:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", "src": "652:9:13", "typeDescriptions": { "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, "id": 1525, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "656:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } }, "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "652:21:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "src": "644:29:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "id": 1530, "nodeType": "ExpressionStatement", "src": "644:29:13" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1531, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1519, "src": "687:4:13", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 1532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "687:11:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "701:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "687:15:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1536, "nodeType": "IfStatement", "src": "683:237:13", "trueBody": { "externalReferences": [ { "data": { "declaration": 1519, "isOffset": false, "isSlot": false, "src": "860:4:13", "valueSize": 1 } }, { "proxy": { "declaration": 1522, "isOffset": false, "isSlot": false, "src": "827:5:13", "valueSize": 1 } }, { "data": { "declaration": 1519, "isOffset": false, "isSlot": false, "src": "841:4:13", "valueSize": 1 } } ], "id": 1535, "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:13" } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1538, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1522, "src": "935:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } ], "id": 1537, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1515, "src": "921:13:13", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", "typeString": "function (contract Proxy)" } }, "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "921:20:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1540, "nodeType": "EmitStatement", "src": "916:25:13" } ] }, "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": 1542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { "id": 1520, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1517, "name": "masterCopy", "nodeType": "VariableDeclaration", "scope": 1542, "src": "553:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 1516, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1519, "name": "data", "nodeType": "VariableDeclaration", "scope": 1542, "src": "573:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 1518, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "552:32:13" }, "payable": false, "returnParameters": { "id": 1523, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1522, "name": "proxy", "nodeType": "VariableDeclaration", "scope": 1542, "src": "617:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, "id": 1521, "name": "Proxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1508, "src": "617:5:13", "typeDescriptions": { "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, "value": null, "visibility": "internal" } ], "src": "616:13:13" }, "scope": 1543, "src": "532:416:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 1544, "src": "225:725:13" } ], "src": "0:951:13" }, "compiler": { "name": "solc", "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, "address": "0xdc7a0c8475e99fa755e935ffbe04b84ead9aadc7", "transactionHash": "0xd1d3b32e56f0533181f582cabad03ce3e98dd1083b31baff076d9e53d1143e15" }, "1525950336085": { "events": {}, "links": {}, "address": "0x7686eac12d94e3c0bdfe0a00ec759f89fbd115f7", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" }, "1526283540628": { "events": {}, "links": {}, "address": "0x321151783f8dfb4699370d1bd5cee4e82bc3b52a", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", "updatedAt": "2018-05-14T07:39:37.950Z" }