38
38
"type" : " function"
39
39
}
40
40
],
41
- "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"createForwarder\",\"outputs\":[{\"name\":\"fwdContract\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"forwarderAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"targetContract\",\"type\":\"address\"}],\"name\":\"LogForwarderDeployed\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Factory creating DELETECALL forwarding contracts.\\r * This implementation is from:\\r https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8\\r\"}},\"settings\":{\"compilationTarget\":{\"/D/Users/Julien/Desktop/Work/0xFutures/protocol/contracts/ForwardFactory.sol\":\"ForwardFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/D/Users/Julien/Desktop/Work/0xFutures/protocol/contracts/ForwardFactory.sol\":{\"keccak256\":\"0xb0c15f958b92ff2327342353a45d44fa7d67a9e5aeacfcf7cef27aa08aad8161\",\"urls\":[\"bzzr://443d355e483c722b1a4ea53f94359066d3f7900abc27e872fbdc76c69fc776f2\"]}},\"version\":1}",
42
- "bytecode" : " 0x608060405234801561001057600080fd5b50610160806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639193ba0b14610030575b600080fd5b6100566004803603602081101561004657600080fd5b50356001600160a01b0316610072565b604080516001600160a01b039092168252519081900360200190f35b6040517f602e600c600039602e6000f33660006000376101006000366000730000000000808252600160601b6001600160a01b03841602601b8301819052600160a81b6a5af41558576101006000f302602f8401819052600093909190603a8186f09450843b80156100e3576100e5565bfe5b5050604080516001600160a01b0380871682528716602082015281517fe3b17932c50c6e05c2f75f7e045a5fc54b3ac85ce2c29134028227ba28b7d73e929181900390910190a150505091905056fea165627a7a7230582010aaea625f3047ad4e9fdb0eae567d452b20532c9e81911832b7a488f8e2d4aa0029 " ,
43
- "deployedBytecode" : " 0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639193ba0b14610030575b600080fd5b6100566004803603602081101561004657600080fd5b50356001600160a01b0316610072565b604080516001600160a01b039092168252519081900360200190f35b6040517f602e600c600039602e6000f33660006000376101006000366000730000000000808252600160601b6001600160a01b03841602601b8301819052600160a81b6a5af41558576101006000f302602f8401819052600093909190603a8186f09450843b80156100e3576100e5565bfe5b5050604080516001600160a01b0380871682528716602082015281517fe3b17932c50c6e05c2f75f7e045a5fc54b3ac85ce2c29134028227ba28b7d73e929181900390910190a150505091905056fea165627a7a7230582010aaea625f3047ad4e9fdb0eae567d452b20532c9e81911832b7a488f8e2d4aa0029 " ,
44
- "sourceMap" : " 196:1965 :1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;196:1965 :1;;;;;;;" ,
45
- "deployedSourceMap" : " 196:1965 :1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;196:1965 :1;;;;;;;;;;;;;;;;;;;314:1842 ;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;314:1842 :1;-1:-1:-1;;;;;314:1842 :1;;:::i;:::-;;;;-1:-1:-1;;;;;314:1842 :1;;;;;;;;;;;;;;;1571 :4;1565 :11;1029 :66;1665 :24;;;-1:-1:-1;;;;;;;;1266 :16:1;;:35;1792 :4;1774 :23;;1767 :47;;;-1:-1:-1;;;;;1875 :4:1;1857 :23;;1850 :35;;;372 :19;;1143 :66;;1266 :35;1976 :4;1565 :11;372 :19;1952 :29;1937 :44;-1:-1:-1;2033 :24:1;;2058 :20;;;;2026 :52;;2058 :20;2067 :9;2026 :52;-1:-1:-1;;2106 :42:1;;;-1:-1:-1;;;;;2106 :42:1;;;;;;;;;;;;;;;;;;;;;;;;314:1842 ;;;;;;:::o" ,
46
- "source": "pragma solidity ^0.5.0;\r\n\r\n/**\r\n * Factory creating DELETECALL forwarding contracts.\r\n *\r\n * This implementation is from:\r\n * https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8\r\n */\r\ncontract ForwardFactory {\r\n\r\n event LogForwarderDeployed(address forwarderAddress, address targetContract);\r\n\r\n function createForwarder(address _target) public returns (address fwdContract) {\r\n /*\r\n Bytecode origin https://www.reddit.com/r/ethereum/comments/6ic49q/any_assembly_programmers_willing_to_write_a/dj5ceuw/\r\n\r\n CALLDATASIZE\r\n PUSH1 0x00\r\n PUSH1 0x00\r\n CALLDATACOPY\r\n PUSH2 0x1000\r\n PUSH1 0x00\r\n CALLDATASIZE\r\n PUSH1 0x00\r\n PUSH20 0xf00df00df00df00df00df00df00df00df00df00d // placeholder address\r\n GAS\r\n DELEGATE_CALL\r\n ISZERO\r\n PC\r\n JUMPI\r\n PUSH2 0x1000\r\n PUSH1 0x00\r\n RETURN\r\n */\r\n bytes32 b1 = 0x602e600c600039602e6000f33660006000376101006000366000730000000000; // length 27 bytes = 1b\r\n bytes32 b2 = 0x5af41558576101006000f3000000000000000000000000000000000000000000; // length 11 bytes\r\n\r\n uint256 shiftedAddress = uint256(_target) * ((2 ** 8) ** 12); // Shift address 12 bytes to the left\r\n\r\n /*\r\n * SOLIUM DISABLE no-inline-assembly error. How else to cheaply do this?\r\n */\r\n\r\n /* solium-disable security/no-inline-assembly */\r\n assembly {\r\n let contractCode := mload(0x40) // Find empty storage location using \"free memory pointer\"\r\n mstore(contractCode, b1) // We add the first part of the bytecode\r\n mstore(add(contractCode, 0x1b), shiftedAddress) // Add target address\r\n mstore(add(contractCode, 0x2f), b2) // Final part of bytecode\r\n fwdContract := create(0, contractCode, 0x3A) // total length 58 dec = 3a\r\n switch extcodesize(fwdContract) case 0 { invalid() }\r\n }\r\n\r\n emit LogForwarderDeployed(fwdContract, _target);\r\n }\r\n\r\n}\r\n",
47
- "sourcePath" : " D: \\ Users\\ Julien \\ Desktop\\ Work \\ 0xFutures \\ protocol\\ contracts\\ ForwardFactory.sol" ,
41
+ "metadata": "{\"compiler\":{\"version\":\"0.5.6+commit.b259423e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"name\":\"_target\",\"type\":\"address\"}],\"name\":\"createForwarder\",\"outputs\":[{\"name\":\"fwdContract\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"forwarderAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"targetContract\",\"type\":\"address\"}],\"name\":\"LogForwarderDeployed\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{},\"notice\":\"Factory creating DELETECALL forwarding contracts. * This implementation is from: https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8\"}},\"settings\":{\"compilationTarget\":{\"/Users/julien/Desktop/protocol/contracts/ForwardFactory.sol\":\"ForwardFactory\"},\"evmVersion\":\"constantinople\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/julien/Desktop/protocol/contracts/ForwardFactory.sol\":{\"keccak256\":\"0x658664b425aa52f40007ac2f1be1a1da9ec2239c4a42c3864b5cac108f002e0c\",\"urls\":[\"bzzr://6514d98ab20cd063f94b0d29810df5d212dd80dd09471f24de909f4fb07c6f36\"]}},\"version\":1}",
42
+ "bytecode" : " 0x608060405234801561001057600080fd5b50610160806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80639193ba0b14610030575b600080fd5b6100566004803603602081101561004657600080fd5b50356001600160a01b0316610072565b604080516001600160a01b039092168252519081900360200190f35b6040517f602e600c600039602e6000f33660006000376101006000366000730000000000808252600160601b6001600160a01b03841602601b8301819052600160a81b6a5af41558576101006000f302602f8401819052600093909190603a8186f09450843b80156100e3576100e5565bfe5b5050604080516001600160a01b0380871682528716602082015281517fe3b17932c50c6e05c2f75f7e045a5fc54b3ac85ce2c29134028227ba28b7d73e929181900390910190a150505091905056fea165627a7a7230582088986c82a98ed4e467afabf4e9d7876b6659dad58f48fb3b7e2062ec38c44b960029 " ,
43
+ "deployedBytecode" : " 0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80639193ba0b14610030575b600080fd5b6100566004803603602081101561004657600080fd5b50356001600160a01b0316610072565b604080516001600160a01b039092168252519081900360200190f35b6040517f602e600c600039602e6000f33660006000376101006000366000730000000000808252600160601b6001600160a01b03841602601b8301819052600160a81b6a5af41558576101006000f302602f8401819052600093909190603a8186f09450843b80156100e3576100e5565bfe5b5050604080516001600160a01b0380871682528716602082015281517fe3b17932c50c6e05c2f75f7e045a5fc54b3ac85ce2c29134028227ba28b7d73e929181900390910190a150505091905056fea165627a7a7230582088986c82a98ed4e467afabf4e9d7876b6659dad58f48fb3b7e2062ec38c44b960029 " ,
44
+ "sourceMap" : " 188:1917 :1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;188:1917 :1;;;;;;;" ,
45
+ "deployedSourceMap" : " 188:1917 :1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;188:1917 :1;;;;;;;;;;;;;;;;;;;302:1800 ;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;302:1800 :1;-1:-1:-1;;;;;302:1800 :1;;:::i;:::-;;;;-1:-1:-1;;;;;302:1800 :1;;;;;;;;;;;;;;;1526 :4;1520 :11;995 :66;1619 :24;;;-1:-1:-1;;;;;;;;1229 :16:1;;:35;1745 :4;1727 :23;;1720 :47;;;-1:-1:-1;;;;;1827 :4:1;1809 :23;;1802 :35;;;360 :19;;1108 :66;;1229 :35;1927 :4;1520 :11;360 :19;1903 :29;1888 :44;-1:-1:-1;1983 :24:1;;2008 :20;;;;1976 :52;;2008 :20;2017 :9;1976 :52;-1:-1:-1;;2053 :42:1;;;-1:-1:-1;;;;;2053 :42:1;;;;;;;;;;;;;;;;;;;;;;;;302:1800 ;;;;;;:::o" ,
46
+ "source": "pragma solidity ^0.5.0;\n\n/**\n * Factory creating DELETECALL forwarding contracts.\n *\n * This implementation is from:\n * https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8\n */\ncontract ForwardFactory {\n\n event LogForwarderDeployed(address forwarderAddress, address targetContract);\n\n function createForwarder(address _target) public returns (address fwdContract) {\n /*\n Bytecode origin https://www.reddit.com/r/ethereum/comments/6ic49q/any_assembly_programmers_willing_to_write_a/dj5ceuw/\n\n CALLDATASIZE\n PUSH1 0x00\n PUSH1 0x00\n CALLDATACOPY\n PUSH2 0x1000\n PUSH1 0x00\n CALLDATASIZE\n PUSH1 0x00\n PUSH20 0xf00df00df00df00df00df00df00df00df00df00d // placeholder address\n GAS\n DELEGATE_CALL\n ISZERO\n PC\n JUMPI\n PUSH2 0x1000\n PUSH1 0x00\n RETURN\n */\n bytes32 b1 = 0x602e600c600039602e6000f33660006000376101006000366000730000000000; // length 27 bytes = 1b\n bytes32 b2 = 0x5af41558576101006000f3000000000000000000000000000000000000000000; // length 11 bytes\n\n uint256 shiftedAddress = uint256(_target) * ((2 ** 8) ** 12); // Shift address 12 bytes to the left\n\n /*\n * SOLIUM DISABLE no-inline-assembly error. How else to cheaply do this?\n */\n\n /* solium-disable security/no-inline-assembly */\n assembly {\n let contractCode := mload(0x40) // Find empty storage location using \"free memory pointer\"\n mstore(contractCode, b1) // We add the first part of the bytecode\n mstore(add(contractCode, 0x1b), shiftedAddress) // Add target address\n mstore(add(contractCode, 0x2f), b2) // Final part of bytecode\n fwdContract := create(0, contractCode, 0x3A) // total length 58 dec = 3a\n switch extcodesize(fwdContract) case 0 { invalid() }\n }\n\n emit LogForwarderDeployed(fwdContract, _target);\n }\n\n}\n",
47
+ "sourcePath" : " / Users/julien/ Desktop/ protocol/ contracts/ ForwardFactory.sol" ,
48
48
"compiler" : {
49
49
"name" : " solc" ,
50
50
"version" : " 0.5.6+commit.b259423e.Emscripten.clang"
51
51
},
52
52
"networks" : {},
53
- "schemaVersion" : " 3.0.8 " ,
54
- "updatedAt" : " 2020-01-13T20 :41:22.831Z " ,
53
+ "schemaVersion" : " 3.0.20 " ,
54
+ "updatedAt" : " 2020-01-17T20 :41:14.866Z " ,
55
55
"devdoc" : {
56
56
"methods" : {}
57
57
},
58
58
"userdoc" : {
59
59
"methods" : {},
60
- "notice" : " Factory creating DELETECALL forwarding contracts.\r * This implementation is from:\r https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8\r "
60
+ "notice" : " Factory creating DELETECALL forwarding contracts. * This implementation is from: https://gist.github.com/izqui/7f904443e6d19c1ab52ec7f5ad46b3a8"
61
61
}
62
62
}
0 commit comments