Feature Tip: Add private address tag to any address under My Name Tag !
More Info
[ Download CSV Export ]
OVERVIEW
Save time, save steps, infinite DeFi combinations. Build your own DeFi legos into one transaction without knowing how to code.
Latest 25 internal transaction
[ Download CSV Export ]
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Proxy
Compiler Version
v0.5.16+commit.9c3226ce
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2020-03-26 */ pragma solidity 0.5.16; pragma experimental ABIEncoderV2; interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through `transferFrom`. This is * zero by default. * * This value changes when `approve` or `transferFrom` are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * > Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an `Approval` event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to `approve`. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IRegistry { function isValid(address handler) external view returns (bool result); } contract Proxy { address[] public tokens; modifier isTokenEmpty() { require(tokens.length == 0, "token list not empty"); _; } function () payable external {} // keccak256 hash of "furucombo.handler.registry" bytes32 private constant HANDLER_REGISTRY = 0x6874162fd62902201ea0f4bf541086067b3b88bd802fac9e150fd2d1db584e19; constructor(address registry) public { bytes32 slot = HANDLER_REGISTRY; assembly { sstore(slot, registry) } } function _getRegistry() internal view returns (address registry) { bytes32 slot = HANDLER_REGISTRY; assembly { registry := sload(slot) } } function _isValid(address handler) internal view returns (bool result) { return IRegistry(_getRegistry()).isValid(handler); } function batchExec(address[] memory tos, bytes[] memory datas) isTokenEmpty public payable { _preProcess(); for (uint256 i = 0; i < tos.length; i++) { require(_isValid(tos[i]), "invalid handler"); _exec(tos[i], datas[i]); } _postProcess(); } function _exec(address _to, bytes memory _data) internal returns (bytes memory result) { assembly { let succeeded := delegatecall(sub(gas, 5000), _to, add(_data, 0x20), mload(_data), 0, 0) let size := returndatasize result := mload(0x40) mstore(0x40, add(result, and(add(add(size, 0x20), 0x1f), not(0x1f)))) mstore(result, size) returndatacopy(add(result, 0x20), 0, size) switch iszero(succeeded) case 1 { revert(add(result, 0x20), size) } } } function _preProcess() internal { } function _postProcess() internal { // Token involved should be returned to user while (tokens.length > 0) { address token = tokens[tokens.length - 1]; uint256 amount = IERC20(token).balanceOf(address(this)); if (amount > 0) IERC20(token).transfer(msg.sender, amount); tokens.pop(); } // Balance should also be returned to user uint256 amount = address(this).balance; if (amount > 0) msg.sender.transfer(amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"registry","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tos","type":"address[]"},{"internalType":"bytes[]","name":"datas","type":"bytes[]"}],"name":"batchExec","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokens","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516108cc3803806108cc83398101604081905261002f91610067565b7f6874162fd62902201ea0f4bf541086067b3b88bd802fac9e150fd2d1db584e19556100b5565b80516100618161009e565b92915050565b60006020828403121561007957600080fd5b60006100858484610056565b949350505050565b60006001600160a01b038216610061565b6100a78161008d565b81146100b257600080fd5b50565b610808806100c46000396000f3fe6080604052600436106100295760003560e01c80634f64b2be1461002b57806374a28f7914610061575b005b34801561003757600080fd5b5061004b6100463660046105d4565b610074565b604051610058919061068c565b60405180910390f35b61002961006f366004610545565b61009b565b6000818154811061008157fe5b6000918252602090912001546001600160a01b0316905081565b600054156100c45760405162461bcd60e51b81526004016100bb906106ca565b60405180910390fd5b6100cc610156565b60005b8251811015610149576100f48382815181106100e757fe5b6020026020010151610158565b6101105760405162461bcd60e51b81526004016100bb906106da565b61014083828151811061011f57fe5b602002602001015183838151811061013357fe5b60200260200101516101e3565b506001016100cf565b50610152610235565b5050565b565b60006101626103d2565b6001600160a01b0316638b1b925f836040518263ffffffff1660e01b815260040161018d919061068c565b60206040518083038186803b1580156101a557600080fd5b505afa1580156101b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506101dd91908101906105ae565b92915050565b6060600080835160208501866113885a03f43d6040519250601f19601f6020830101168301604052808352806000602085013e8115600181146102255761022c565b8160208501fd5b50505092915050565b6000541561039b57600080548190600019810190811061025157fe5b60009182526020822001546040516370a0823160e01b81526001600160a01b03909116925082906370a082319061028c90309060040161069a565b60206040518083038186803b1580156102a457600080fd5b505afa1580156102b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102dc91908101906105f2565b905080156103665760405163a9059cbb60e01b81526001600160a01b0383169063a9059cbb9061031290339085906004016106a8565b602060405180830381600087803b15801561032c57600080fd5b505af1158015610340573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061036491908101906105ae565b505b600080548061037157fe5b600082815260209020810160001990810180546001600160a01b0319169055019055506102359050565b4780156103cf57604051339082156108fc029083906000818181858888f19350505050158015610152573d6000803e3d6000fd5b50565b7f6874162fd62902201ea0f4bf541086067b3b88bd802fac9e150fd2d1db584e195490565b80356101dd8161079f565b600082601f83011261041357600080fd5b813561042661042182610711565b6106ea565b9150818183526020840193506020810190508385602084028201111561044b57600080fd5b60005b83811015610477578161046188826103f7565b845250602092830192919091019060010161044e565b5050505092915050565b600082601f83011261049257600080fd5b81356104a061042182610711565b81815260209384019390925082018360005b8381101561047757813586016104c888826104e9565b84525060209283019291909101906001016104b2565b80516101dd816107b3565b600082601f8301126104fa57600080fd5b813561050861042182610732565b9150808252602083016020830185838301111561052457600080fd5b61022c838284610793565b80356101dd816107bc565b80516101dd816107bc565b6000806040838503121561055857600080fd5b823567ffffffffffffffff81111561056f57600080fd5b61057b85828601610402565b925050602083013567ffffffffffffffff81111561059857600080fd5b6105a485828601610481565b9150509250929050565b6000602082840312156105c057600080fd5b60006105cc84846104de565b949350505050565b6000602082840312156105e657600080fd5b60006105cc848461052f565b60006020828403121561060457600080fd5b60006105cc848461053a565b61061981610782565b82525050565b61061981610763565b600061063560148361075a565b73746f6b656e206c697374206e6f7420656d70747960601b815260200192915050565b6000610665600f8361075a565b6e34b73b30b634b2103430b7323632b960891b815260200192915050565b6106198161077f565b602081016101dd828461061f565b602081016101dd8284610610565b604081016106b68285610610565b6106c36020830184610683565b9392505050565b602080825281016101dd81610628565b602080825281016101dd81610658565b60405181810167ffffffffffffffff8111828210171561070957600080fd5b604052919050565b600067ffffffffffffffff82111561072857600080fd5b5060209081020190565b600067ffffffffffffffff82111561074957600080fd5b506020601f91909101601f19160190565b90815260200190565b60006101dd82610773565b151590565b6001600160a01b031690565b90565b60006101dd8260006101dd82610763565b82818337506000910152565b6107a881610763565b81146103cf57600080fd5b6107a88161076e565b6107a88161077f56fea365627a7a723158209b9717125c50307349348254b52b2323607c37a906e65145d7fa16e8750ba41b6c6578706572696d656e74616cf564736f6c63430005100040000000000000000000000000af1134a479c0d3ecae95cec4490b97305ac17970
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000af1134a479c0d3ecae95cec4490b97305ac17970
-----Decoded View---------------
Arg [0] : registry (address): 0xaf1134a479c0d3ecae95cec4490b97305ac17970
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000af1134a479c0d3ecae95cec4490b97305ac17970
Deployed ByteCode Sourcemap
2796:2459:0:-;;;;;;;;;;;;;;;;;;;;;;;;2818:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2818:23:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3684:344;;;;;;;;;:::i;2818:23::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2818:23:0;;-1:-1:-1;2818:23:0;:::o;3684:344::-;2893:6;:13;:18;2885:51;;;;-1:-1:-1;;;2885:51:0;;;;;;;;;;;;;;;;;3818:13;:11;:13::i;:::-;3849:9;3844:150;3868:3;:10;3864:1;:14;3844:150;;;3908:16;3917:3;3921:1;3917:6;;;;;;;;;;;;;;3908:8;:16::i;:::-;3900:44;;;;-1:-1:-1;;;3900:44:0;;;;;;;;;3959:23;3965:3;3969:1;3965:6;;;;;;;;;;;;;;3973:5;3979:1;3973:8;;;;;;;;;;;;;;3959:5;:23::i;:::-;-1:-1:-1;3880:3:0;;3844:150;;;;4006:14;:12;:14::i;:::-;3684:344;;:::o;4648:40::-;:::o;3537:139::-;3595:11;3636:14;:12;:14::i;:::-;-1:-1:-1;;;;;3626:33:0;;3660:7;3626:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3626:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3626:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3626:42:0;;;;;;;;;3619:49;3537:139;-1:-1:-1;;3537:139:0:o;4036:604::-;4102:19;4244:1;4241;4233:5;4227:12;4220:4;4213:5;4209:16;4204:3;4197:4;4192:3;4188:14;4175:71;4272:14;4318:4;4312:11;4302:21;;4398:4;4394:9;4387:4;4380;4374;4370:15;4366:26;4362:42;4354:6;4350:55;4344:4;4337:69;4435:4;4427:6;4420:20;4491:4;4488:1;4481:4;4473:6;4469:17;4454:42;4526:9;4519:17;4555:1;4550:72;;;;4512:110;;4550:72;4602:4;4595;4587:6;4583:17;4576:31;4512:110;;4143:490;;;;;;:::o;4696:556::-;4817:1;4801:13;:17;4794:281;;4835:13;4858;;4835;;-1:-1:-1;;4858:17:0;;;4851:25;;;;;;;;;;;;;;;4908:38;;-1:-1:-1;;;4908:38:0;;-1:-1:-1;;;;;4851:25:0;;;;-1:-1:-1;4851:25:0;;4908:23;;:38;;4940:4;;4908:38;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4908:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4908:38:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4908:38:0;;;;;;;;;4891:55;-1:-1:-1;4965:10:0;;4961:75;;4994:42;;-1:-1:-1;;;4994:42:0;;-1:-1:-1;;;;;4994:22:0;;;;;:42;;5017:10;;5029:6;;4994:42;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4994:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4994:42:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4994:42:0;;;;;;;;;;4961:75;5051:6;:12;;;;;;;;;;;;;;;;-1:-1:-1;;5051:12:0;;;;;-1:-1:-1;;;;;;5051:12:0;;;;;;-1:-1:-1;4794:281:0;;-1:-1:-1;4794:281:0;;5156:21;5192:10;;5188:56;;5217:27;;:10;;:27;;;;;5237:6;;5217:27;;;;5237:6;5217:10;:27;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5188:56:0;4696:556;:::o;3346:183::-;3109:66;3500:11;;3473:49::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;160:707;;277:3;270:4;262:6;258:17;254:27;244:2;;295:1;292;285:12;244:2;332:6;319:20;354:80;369:64;426:6;369:64;;;354:80;;;345:89;;451:5;476:6;469:5;462:21;506:4;498:6;494:17;484:27;;528:4;523:3;519:14;512:21;;581:6;628:3;620:4;612:6;608:17;603:3;599:27;596:36;593:2;;;645:1;642;635:12;593:2;670:1;655:206;680:6;677:1;674:13;655:206;;;738:3;760:37;793:3;781:10;760:37;;;748:50;;-1:-1;821:4;812:14;;;;840;;;;;702:1;695:9;655:206;;;659:14;237:630;;;;;;;;891:693;;1013:3;1006:4;998:6;994:17;990:27;980:2;;1031:1;1028;1021:12;980:2;1068:6;1055:20;1090:85;1105:69;1167:6;1105:69;;1090:85;1203:21;;;1247:4;1235:17;;;;1081:94;;-1:-1;1260:14;;1235:17;1355:1;1340:238;1365:6;1362:1;1359:13;1340:238;;;1448:3;1435:17;1427:6;1423:30;1472:42;1510:3;1498:10;1472:42;;;1460:55;;-1:-1;1538:4;1529:14;;;;1557;;;;;1387:1;1380:9;1340:238;;1592:128;1667:13;;1685:30;1667:13;1685:30;;1728:432;;1825:3;1818:4;1810:6;1806:17;1802:27;1792:2;;1843:1;1840;1833:12;1792:2;1880:6;1867:20;1902:60;1917:44;1954:6;1917:44;;1902:60;1893:69;;1982:6;1975:5;1968:21;2018:4;2010:6;2006:17;2051:4;2044:5;2040:16;2086:3;2077:6;2072:3;2068:16;2065:25;2062:2;;;2103:1;2100;2093:12;2062:2;2113:41;2147:6;2142:3;2137;2113:41;;2168:130;2235:20;;2260:33;2235:20;2260:33;;2305:134;2383:13;;2401:33;2383:13;2401:33;;2446:648;;;2622:2;2610:9;2601:7;2597:23;2593:32;2590:2;;;2638:1;2635;2628:12;2590:2;2673:31;;2724:18;2713:30;;2710:2;;;2756:1;2753;2746:12;2710:2;2776:78;2846:7;2837:6;2826:9;2822:22;2776:78;;;2766:88;;2652:208;2919:2;2908:9;2904:18;2891:32;2943:18;2935:6;2932:30;2929:2;;;2975:1;2972;2965:12;2929:2;2995:83;3070:7;3061:6;3050:9;3046:22;2995:83;;;2985:93;;2870:214;2584:510;;;;;;3101:257;;3213:2;3201:9;3192:7;3188:23;3184:32;3181:2;;;3229:1;3226;3219:12;3181:2;3264:1;3281:61;3334:7;3314:9;3281:61;;;3271:71;3175:183;-1:-1;;;;3175:183;3365:241;;3469:2;3457:9;3448:7;3444:23;3440:32;3437:2;;;3485:1;3482;3475:12;3437:2;3520:1;3537:53;3582:7;3562:9;3537:53;;3613:263;;3728:2;3716:9;3707:7;3703:23;3699:32;3696:2;;;3744:1;3741;3734:12;3696:2;3779:1;3796:64;3852:7;3832:9;3796:64;;3883:142;3974:45;4013:5;3974:45;;;3969:3;3962:58;3956:69;;;4032:113;4115:24;4133:5;4115:24;;4153:320;;4313:67;4377:2;4372:3;4313:67;;;-1:-1;;;4393:43;;4464:2;4455:12;;4299:174;-1:-1;;4299:174;4482:315;;4642:67;4706:2;4701:3;4642:67;;;-1:-1;;;4722:38;;4788:2;4779:12;;4628:169;-1:-1;;4628:169;4805:113;4888:24;4906:5;4888:24;;4925:213;5043:2;5028:18;;5057:71;5032:9;5101:6;5057:71;;5145:229;5271:2;5256:18;;5285:79;5260:9;5337:6;5285:79;;5381:340;5535:2;5520:18;;5549:79;5524:9;5601:6;5549:79;;;5639:72;5707:2;5696:9;5692:18;5683:6;5639:72;;;5506:215;;;;;;5728:407;5919:2;5933:47;;;5904:18;;5994:131;5904:18;5994:131;;6142:407;6333:2;6347:47;;;6318:18;;6408:131;6318:18;6408:131;;6556:256;6618:2;6612:9;6644:17;;;6719:18;6704:34;;6740:22;;;6701:62;6698:2;;;6776:1;6773;6766:12;6698:2;6792;6785:22;6596:216;;-1:-1;6596:216;6819:304;;6978:18;6970:6;6967:30;6964:2;;;7010:1;7007;7000:12;6964:2;-1:-1;7045:4;7033:17;;;7098:15;;6901:222;7446:317;;7585:18;7577:6;7574:30;7571:2;;;7617:1;7614;7607:12;7571:2;-1:-1;7748:4;7684;7661:17;;;;-1:-1;;7657:33;7738:15;;7508:255;7771:163;7874:19;;;7923:4;7914:14;;7867:67;7942:91;;8004:24;8022:5;8004:24;;8040:85;8106:13;8099:21;;8082:43;8132:121;-1:-1;;;;;8194:54;;8177:76;8260:72;8322:5;8305:27;8339:129;;8426:37;8457:5;8475:121;8554:37;8585:5;8554:37;;8719:145;8800:6;8795:3;8790;8777:30;-1:-1;8856:1;8838:16;;8831:27;8770:94;8872:117;8941:24;8959:5;8941:24;;;8934:5;8931:35;8921:2;;8980:1;8977;8970:12;8996:111;9062:21;9077:5;9062:21;;9114:117;9183:24;9201:5;9183:24;
Swarm Source
bzzr://9b9717125c50307349348254b52b2323607c37a906e65145d7fa16e8750ba41b
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.