Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.001 ETH
Eth Value
$3.28 (@ $3,283.00/ETH)More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 20026196 | 217 days ago | IN | 0.011 ETH | 0.01217381 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20026196 | 217 days ago | 0.01 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Curve Limit Order Bot
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
#pragma version 0.3.10 #pragma optimize gas #pragma evm-version shanghai """ @title Curve Limit Order Bot @license Apache 2.0 @author Volume.finance """ struct Deposit: route: address[11] swap_params: uint256[5][5] amount: uint256 pools: address[5] depositor: address enum WithdrawType: CANCEL PROFIT_TAKING STOP_LOSS EXPIRE interface ERC20: def balanceOf(_owner: address) -> uint256: view def approve(_spender: address, _value: uint256) -> bool: nonpayable def transfer(_to: address, _value: uint256) -> bool: nonpayable def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable interface WrappedEth: def deposit(): payable interface CurveSwapRouter: def exchange(_route: address[11], _swap_params: uint256[5][5], _amount: uint256, _expected: uint256, _pools: address[5], _receiver: address) -> uint256: payable event Deposited: deposit_id: uint256 token0: address token1: address amount0: uint256 depositor: address profit_taking: uint256 stop_loss: uint256 expire: uint256 event Withdrawn: deposit_id: uint256 withdrawer: address withdraw_type: WithdrawType withdraw_amount: uint256 event UpdateCompass: old_compass: address new_compass: address event UpdateRefundWallet: old_refund_wallet: address new_refund_wallet: address event UpdateFee: old_fee: uint256 new_fee: uint256 event SetPaloma: paloma: bytes32 event UpdateServiceFeeCollector: old_service_fee_collector: address new_service_fee_collector: address event UpdateServiceFee: old_service_fee: uint256 new_service_fee: uint256 VETH: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE # Virtual ETH MAX_SIZE: constant(uint256) = 8 DENOMINATOR: constant(uint256) = 10 ** 18 ROUTER: immutable(address) compass: public(address) deposit_size: public(uint256) deposits: public(HashMap[uint256, Deposit]) refund_wallet: public(address) fee: public(uint256) paloma: public(bytes32) service_fee_collector: public(address) service_fee: public(uint256) @external def __init__(_compass: address, router: address, _refund_wallet: address, _fee: uint256, _service_fee_collector: address, _service_fee: uint256): self.compass = _compass ROUTER = router self.refund_wallet = _refund_wallet self.fee = _fee self.service_fee_collector = _service_fee_collector self.service_fee = _service_fee log UpdateCompass(empty(address), _compass) log UpdateRefundWallet(empty(address), _refund_wallet) log UpdateFee(0, _fee) log UpdateServiceFeeCollector(empty(address), _service_fee_collector) log UpdateServiceFee(0, _service_fee) @external @payable @nonreentrant("lock") def deposit(route: address[11], swap_params: uint256[5][5], amount: uint256, pools: address[5], profit_taking: uint256, stop_loss: uint256, expire: uint256): assert block.timestamp < expire, "Invalidated expire" _value: uint256 = msg.value assert self.paloma != empty(bytes32), "Paloma not set" _fee: uint256 = self.fee if _fee > 0: assert _value >= _fee, "Insufficient fee" send(self.refund_wallet, _fee) _value = unsafe_sub(_value, _fee) if route[0] == VETH: assert _value >= amount, "Insufficient deposit" if _value > amount: send(msg.sender, unsafe_sub(_value, amount)) else: send(msg.sender, _value) assert ERC20(route[0]).transferFrom(msg.sender, self, amount, default_return_value=True), "Failed transferFrom" deposit: Deposit = Deposit({ route: route, swap_params: swap_params, amount: amount, pools: pools, depositor: msg.sender }) last_token: address = empty(address) for i in range(5): last_token = deposit.route[unsafe_sub(10, unsafe_add(i, i))] if last_token != empty(address): break deposit_id: uint256 = self.deposit_size self.deposits[deposit_id] = deposit self.deposit_size = unsafe_add(deposit_id, 1) log Deposited(deposit_id, route[0], last_token, amount, msg.sender, profit_taking, stop_loss, expire) @internal def _safe_transfer(_token: address, _to: address, _value: uint256): assert ERC20(_token).transfer(_to, _value, default_return_value=True), "Failed transfer" @internal @nonreentrant("lock") def _withdraw(deposit_id: uint256, expected: uint256, withdraw_type: WithdrawType) -> uint256: deposit: Deposit = self.deposits[deposit_id] assert deposit.amount > 0, "Empty deposit" if withdraw_type == WithdrawType.CANCEL: assert msg.sender == deposit.depositor or msg.sender == empty(address), "Unauthorized" self.deposits[deposit_id] = Deposit({ route: empty(address[11]), swap_params: empty(uint256[5][5]), amount: empty(uint256), pools: empty(address[5]), depositor: empty(address) }) service_fee_amount: uint256 = 0 _service_fee: uint256 = self.service_fee if withdraw_type == WithdrawType.CANCEL or withdraw_type == WithdrawType.EXPIRE: if _service_fee > 0: service_fee_amount = unsafe_div(deposit.amount * _service_fee, DENOMINATOR) actual_amount: uint256 = unsafe_sub(deposit.amount, service_fee_amount) if deposit.route[0] == VETH: send(deposit.depositor, actual_amount) if service_fee_amount > 0: send(self.service_fee_collector, service_fee_amount) else: self._safe_transfer(deposit.route[0], deposit.depositor, actual_amount) if service_fee_amount > 0: self._safe_transfer(deposit.route[0], self.service_fee_collector, service_fee_amount) log Withdrawn(deposit_id, msg.sender, withdraw_type, actual_amount) return deposit.amount else: last_token: address = empty(address) for i in range(5): last_token = deposit.route[unsafe_sub(10, unsafe_add(i, i))] if last_token != empty(address): break amount0: uint256 = 0 actual_amount: uint256 = 0 if deposit.route[0] == VETH: amount0 = CurveSwapRouter(ROUTER).exchange(deposit.route, deposit.swap_params, deposit.amount, expected, deposit.pools, self, value=deposit.amount) if _service_fee > 0: service_fee_amount = unsafe_div(amount0 * _service_fee, DENOMINATOR) actual_amount = unsafe_sub(amount0, service_fee_amount) if last_token == VETH: send(deposit.depositor, actual_amount) if service_fee_amount > 0: send(self.service_fee_collector, service_fee_amount) else: self._safe_transfer(last_token, deposit.depositor, actual_amount) if service_fee_amount > 0: self._safe_transfer(last_token, self.service_fee_collector, service_fee_amount) else: assert ERC20(deposit.route[0]).approve(ROUTER, deposit.amount, default_return_value=True), "Failed approve" amount0 = CurveSwapRouter(ROUTER).exchange(deposit.route, deposit.swap_params, deposit.amount, expected, deposit.pools, self) if _service_fee > 0: service_fee_amount = unsafe_div(amount0 * _service_fee, DENOMINATOR) actual_amount = unsafe_sub(amount0, service_fee_amount) if last_token == VETH: send(deposit.depositor, actual_amount) if service_fee_amount > 0: send(self.service_fee_collector, service_fee_amount) else: self._safe_transfer(last_token, deposit.depositor, actual_amount) if service_fee_amount > 0: self._safe_transfer(last_token, self.service_fee_collector, service_fee_amount) log Withdrawn(deposit_id, msg.sender, withdraw_type, actual_amount) return amount0 @external def cancel(deposit_id: uint256, expected: uint256) -> uint256: return self._withdraw(deposit_id, expected, WithdrawType.CANCEL) @internal def _paloma_check(): assert msg.sender == self.compass, "Not compass" assert self.paloma == convert(slice(msg.data, unsafe_sub(len(msg.data), 32), 32), bytes32), "Invalid paloma" @external def multiple_withdraw(deposit_ids: DynArray[uint256, MAX_SIZE], expected: DynArray[uint256, MAX_SIZE], withdraw_types: DynArray[WithdrawType, MAX_SIZE]): self._paloma_check() _len: uint256 = len(deposit_ids) assert _len == len(expected) and _len == len(withdraw_types), "Validation error" for i in range(MAX_SIZE): if i >= len(deposit_ids): break self._withdraw(deposit_ids[i], expected[i], withdraw_types[i]) @external def withdraw(deposit_id: uint256, withdraw_type: WithdrawType) -> uint256: assert msg.sender == empty(address) # this will work as a view function only return self._withdraw(deposit_id, 1, withdraw_type) @external def update_compass(new_compass: address): self._paloma_check() self.compass = new_compass log UpdateCompass(msg.sender, new_compass) @external def update_refund_wallet(new_refund_wallet: address): self._paloma_check() old_refund_wallet: address = self.refund_wallet self.refund_wallet = new_refund_wallet log UpdateRefundWallet(old_refund_wallet, new_refund_wallet) @external def update_fee(new_fee: uint256): self._paloma_check() old_fee: uint256 = self.fee self.fee = new_fee log UpdateFee(old_fee, new_fee) @external def set_paloma(): assert msg.sender == self.compass and self.paloma == empty(bytes32) and len(msg.data) == 36, "Unauthorized" _paloma: bytes32 = convert(slice(msg.data, 4, 32), bytes32) self.paloma = _paloma log SetPaloma(_paloma) @external def update_service_fee_collector(new_service_fee_collector: address): self._paloma_check() self.service_fee_collector = new_service_fee_collector log UpdateServiceFeeCollector(msg.sender, new_service_fee_collector) @external def update_service_fee(new_service_fee: uint256): self._paloma_check() assert new_service_fee < DENOMINATOR old_service_fee: uint256 = self.service_fee self.service_fee = new_service_fee log UpdateServiceFee(old_service_fee, new_service_fee) @external @payable def __default__(): pass
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Deposited","inputs":[{"name":"deposit_id","type":"uint256","indexed":false},{"name":"token0","type":"address","indexed":false},{"name":"token1","type":"address","indexed":false},{"name":"amount0","type":"uint256","indexed":false},{"name":"depositor","type":"address","indexed":false},{"name":"profit_taking","type":"uint256","indexed":false},{"name":"stop_loss","type":"uint256","indexed":false},{"name":"expire","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdrawn","inputs":[{"name":"deposit_id","type":"uint256","indexed":false},{"name":"withdrawer","type":"address","indexed":false},{"name":"withdraw_type","type":"uint256","indexed":false},{"name":"withdraw_amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateCompass","inputs":[{"name":"old_compass","type":"address","indexed":false},{"name":"new_compass","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateRefundWallet","inputs":[{"name":"old_refund_wallet","type":"address","indexed":false},{"name":"new_refund_wallet","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateFee","inputs":[{"name":"old_fee","type":"uint256","indexed":false},{"name":"new_fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SetPaloma","inputs":[{"name":"paloma","type":"bytes32","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateServiceFeeCollector","inputs":[{"name":"old_service_fee_collector","type":"address","indexed":false},{"name":"new_service_fee_collector","type":"address","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateServiceFee","inputs":[{"name":"old_service_fee","type":"uint256","indexed":false},{"name":"new_service_fee","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_compass","type":"address"},{"name":"router","type":"address"},{"name":"_refund_wallet","type":"address"},{"name":"_fee","type":"uint256"},{"name":"_service_fee_collector","type":"address"},{"name":"_service_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"deposit","inputs":[{"name":"route","type":"address[11]"},{"name":"swap_params","type":"uint256[5][5]"},{"name":"amount","type":"uint256"},{"name":"pools","type":"address[5]"},{"name":"profit_taking","type":"uint256"},{"name":"stop_loss","type":"uint256"},{"name":"expire","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"cancel","inputs":[{"name":"deposit_id","type":"uint256"},{"name":"expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"multiple_withdraw","inputs":[{"name":"deposit_ids","type":"uint256[]"},{"name":"expected","type":"uint256[]"},{"name":"withdraw_types","type":"uint256[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[{"name":"deposit_id","type":"uint256"},{"name":"withdraw_type","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"update_compass","inputs":[{"name":"new_compass","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_refund_wallet","inputs":[{"name":"new_refund_wallet","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_fee","inputs":[{"name":"new_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"set_paloma","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_service_fee_collector","inputs":[{"name":"new_service_fee_collector","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"update_service_fee","inputs":[{"name":"new_service_fee","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"view","type":"function","name":"compass","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"deposit_size","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"deposits","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"route","type":"address[11]"},{"name":"swap_params","type":"uint256[5][5]"},{"name":"amount","type":"uint256"},{"name":"pools","type":"address[5]"},{"name":"depositor","type":"address"}]}]},{"stateMutability":"view","type":"function","name":"refund_wallet","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"paloma","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"service_fee_collector","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"service_fee","inputs":[],"outputs":[{"name":"","type":"uint256"}]}]
Contract Creation Code
6116385150346101905760206117e25f395f518060a01c6101905760405260206118025f395f518060a01c6101905760605260206118225f395f518060a01c6101905760805260206118625f395f518060a01c6101905760a0526040516001556060516116385260805160045560206118425f395f5160055560a05160075560206118825f395f516008557fb682667b5b9327acc3f181a08e32c75a75f74ecb054e108a9c7269f64920ab4a5f60c05260405160e052604060c0a17f766266fd21d17d465fb39cab9d9ff8020a212598404ab12bfd59aa2de4dea6a25f60c05260805160e052604060c0a17f8987e6f43a6c6bf408c8c427dceb2f98377f859348939ef4ab7b770b510a395a5f60c052602061184260e039604060c0a17f62415a60755d7d2d84ea1baece7480e6a431cf87cbbdfa07d5984b243bf61f315f60c05260a05160e052604060c0a17f4f0eeeb973d948a2b83d5d751d3373650b926bfc6b9f9ed579e3dbd4813663545f60c052602061188260e039604060c0a161163861019461000039611658610000f35b5f80fd5f3560e01c6002600f820660011b61161a01601e395f51565b63eb8acce68118610c2857346116165760015460405260206040f3610c28565b6331d72b2e811861005457346116165760025460405260206040f35b63c98856aa8118610c2857602436103417611616576004358060a01c6116165760c05261007f611518565b60045460e05260c0516004557f766266fd21d17d465fb39cab9d9ff8020a212598404ab12bfd59aa2de4dea6a260e0516101005260c051610120526040610100a100610c28565b63b02c43d0811861010e576024361034176116165760036004356020525f5260405f205f602b905b808301548160051b604001526001018181186100ee575050506105606040f35b63c4ec2ff18118610c28576024361034176116165761012b611518565b670de0b6b3a763ffff600435116116165760085460c0526004356008557f4f0eeeb973d948a2b83d5d751d3373650b926bfc6b9f9ed579e3dbd48136635460c05160e05260043561010052604060e0a100610c28565b6322221b0c8118610c2857346116165760045460405260206040f3610c28565b63ddca3f4381186101bd57346116165760055460405260206040f35b63d0190e158118610749576105a3361115611616576004358060a01c611616576040526024358060a01c611616576060526044358060a01c611616576080526064358060a01c6116165760a0526084358060a01c6116165760c05260a4358060a01c6116165760e05260c4358060a01c611616576101005260e4358060a01c6116165761012052610104358060a01c6116165761014052610124358060a01c6116165761016052610144358060a01c61161657610180526104a4358060a01c611616576101a0526104c4358060a01c611616576101c0526104e4358060a01c611616576101e052610504358060a01c6116165761020052610524358060a01c61161657610220525f546002146116165760025f55610584354210610340576012610240527f496e76616c6964617465642065787069726500000000000000000000000000006102605261024050610240518061026001601f825f031636823750506308c379a061020052602061022052601f19601f61024051011660440161021cfd5b34610240526006546103b157600e610260527f50616c6f6d61206e6f74207365740000000000000000000000000000000000006102805261026050610260518061028001601f825f031636823750506308c379a061022052602061024052601f19601f61026051011660440161023cfd5b6005546102605261026051156104545761026051610240511015610434576010610280527f496e73756666696369656e7420666565000000000000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b5f5f5f5f610260516004545ff11561161657610260516102405103610240525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040511861050c57610484356102405110156104e4576014610280527f496e73756666696369656e74206465706f7369740000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b610484356102405111156105f3575f5f5f5f610484356102405103335ff115611616576105f3565b5f5f5f5f61024051335ff115611616576040516323b872dd61028052336102a052306102c052610484356102e0526020610280606461029c5f855af1610554573d5f5f3e3d5ffd5b3d61056b57803b1561161657600161030052610584565b60203d1061161657610280518060011c61161657610300525b6103009050516105f3576013610320527f4661696c6564207472616e7366657246726f6d000000000000000000000000006103405261032050610320518061034001601f825f031636823750506308c379a06102e052602061030052601f19601f6103205101166044016102fcfd5b610160610280610160604060045afa5060a06101646103e03760a06102046104803760a06102a46105203760a06103446105c03760a06103e46106603761048435610700526101a051610720526101c051610740526101e051610760526102005161078052610220516107a052336107c0525f6107e0525f6005905b8061080052610800516108005101600a03600a81116116165760051b61028001516107e0526107e051156106a2576106ad565b60010181811861066f575b5050600254610800526003610800516020525f5260405f205f602b905b8060051b6102800151818401556001018181186106ca57505050600161080051016002557fc4084cccadd451aff865080eee25dd857e367ac52bcb386ff1833e9ab62c9b066108005161082052604051610840526107e051610860526104843561088052336108a05260606105446108c037610100610820a160035f55005b63441a3e708118610c2857604436103417611616576024358060041c61161657610d60523361161657602060043561016052600161018052610d60516101a052610794610d80610cf7565b610d80f3610c28565b63c09f329181186107b957346116165760065460405260206040f35b636974af69811861081d57602436103417611616576004358060a01c6116165760c0526107e4611518565b60c0516001557fb682667b5b9327acc3f181a08e32c75a75f74ecb054e108a9c7269f64920ab4a3360e05260c05161010052604060e0a1005b6330e59cbc8118610c2857602436103417611616576004358060a01c6116165760c052610848611518565b60c0516007557f62415a60755d7d2d84ea1baece7480e6a431cf87cbbdfa07d5984b243bf61f313360e05260c05161010052604060e0a100610c28565b63d8fe764d8118610c2857346116165760075460405260206040f3610c28565b6310d418c281186108c157346116165760085460405260206040f35b6323fde8e28118610c2857346116165760015433186108f1576006546108eb5760243618156108f3565b5f6108f3565b5f5b61095257600c6040527f556e617574686f72697a6564000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b36602411611616576020606052602060046080376060805160200360031b6020820151811c811b905090506040526040516006557f2700ed1ef9147da3f7fdcaae08cbe6d1c92ec7fa6bace169d9c49e398e3cb1ca60405160605260206060a100610c28565b62efa8958118610c2857604436103417611616576020604060046101603760016101a0526109e7610d60610cf7565b610d60f3610c28565b630be450008114600336111615610bc15760c43610341761161657600435600401600881351161161657803560208160051b018083610d6037505050602435600401600881351161161657803560208160051b018083610e803750505060443560040160088135116116165780355f8160088111611616578015610a9657905b8060051b6020850101358060041c611616578160051b610fc00152600101818118610a70575b505080610fa0525050610aa7611518565b610d60516110c052610e80516110c05118610acb57610fa0516110c0511815610acd565b5f5b610b365760106110e0527f56616c69646174696f6e206572726f7200000000000000000000000000000000611100526110e0506110e0518061110001601f825f031636823750506308c379a06110a05260206110c052601f19601f6110e05101166044016110bcfd5b5f6008905b806110e052610d60516110e05110610b5257610bbd565b6110e051610d60518110156116165760051b610d800151610160526110e051610e80518110156116165760051b610ea00151610180526110e051610fa0518110156116165760051b610fc001516101a052610bae611100610cf7565b61110050600101818118610b3b575b5050005b63fbd159558118610c285760243610341761161657610bde611518565b60055460c0526004356005557f8987e6f43a6c6bf408c8c427dceb2f98377f859348939ef4ab7b770b510a395a60c05160e05260043561010052604060e0a100610c2856610c28565b5b005b60405163a9059cbb60a05260605160c05260805160e052602060a0604460bc5f855af1610c59573d5f5f3e3d5ffd5b3d610c7057803b1561161657600161010052610c88565b60203d106116165760a0518060011c61161657610100525b610100905051610cf557600f610120527f4661696c6564207472616e7366657200000000000000000000000000000000006101405261012050610120518061014001601f825f031636823750506308c379a060e052602061010052601f19601f61012051011660440160fcfd5b565b5f546002146116165760025f556003610160516020525f5260405f205f602b905b808301548160051b6101c00152600101818118610d185750505061064051610d9f57600d610720527f456d707479206465706f736974000000000000000000000000000000000000006107405261072050610720518061074001601f825f031636823750506308c379a06106e052602061070052601f19601f6107205101166044016106fcfd5b60016101a05118610e2757610700513318610dbb576001610dbe565b33155b610e2757600c610720527f556e617574686f72697a656400000000000000000000000000000000000000006107405261072050610720518061074001601f825f031636823750506308c379a06106e052602061070052601f19601f6107205101166044016106fcfd5b6003610160516020525f5260405f205f81555f60018201555f60028201555f60038201555f60048201555f60058201555f60068201555f60078201555f60088201555f60098201555f600a820155600b81015f81555f60018201555f60028201555f60038201555f6004820155600581015f81555f60018201555f60028201555f60038201555f600482015550600a81015f81555f60018201555f60028201555f60038201555f600482015550600f81015f81555f60018201555f60028201555f60038201555f600482015550601481015f81555f60018201555f60028201555f60038201555f600482015550505f6024820155602581015f81555f60018201555f60028201555f60038201555f6004820155505f602a820155505f610720526008546107405260016101a05118610f60576001610f69565b60086101a05118155b6113f2575f610760525f6005905b8061078052610780516107805101600a03600a81116116165760051b6101c00151610760526107605115610faa57610fb5565b600101818118610f77575b50506040366107803773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c051186111555760206116385f395f5163c872a3c56107c0526101606107e06101606101c060045afa5061032061094061032061032060045afa5061064051610c605261018051610c805261066051610ca05261068051610cc0526106a051610ce0526106c051610d00526106e051610d205230610d405260206107c06105846107dc61064051855af161106b573d5f5f3e3d5ffd5b60203d10611616576107c09050516107805261074051156110b157670de0b6b3a76400006107805161074051808202811583838304141715611616579050905004610720525b6107205161078051036107a05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610760511861110f575f5f5f5f6107a051610700515ff11561161657610720511561139e575f5f5f5f610720516007545ff1156116165761139e565b61076051604052610700516060526107a05160805261112c610c2a565b610720511561139e57610760516040526007546060526107205160805261139e610c2a5661139e565b6101c05163095ea7b36107c05260206116386107e039610640516108005260206107c060446107dc5f855af161118d573d5f5f3e3d5ffd5b3d6111a457803b15611616576001610820526111bd565b60203d10611616576107c0518060011c61161657610820525b61082090505161122c57600e610840527f4661696c656420617070726f76650000000000000000000000000000000000006108605261084050610840518061086001601f825f031636823750506308c379a061080052602061082052601f19601f61084051011660440161081cfd5b60206116385f395f5163c872a3c56107c0526101606107e06101606101c060045afa5061032061094061032061032060045afa5061064051610c605261018051610c805261066051610ca05261068051610cc0526106a051610ce0526106c051610d00526106e051610d205230610d405260206107c06105846107dc5f855af16112b8573d5f5f3e3d5ffd5b60203d10611616576107c09050516107805261074051156112fe57670de0b6b3a76400006107805161074051808202811583838304141715611616579050905004610720525b6107205161078051036107a05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610760511861135c575f5f5f5f6107a051610700515ff11561161657610720511561139e575f5f5f5f610720516007545ff1156116165761139e565b61076051604052610700516060526107a051608052611379610c2a565b610720511561139e57610760516040526007546060526107205160805261139e610c2a565b7f1c84cc0f96161bdafea718a9094dd21c21d1fb2f9ca2ebb9bd4e39918efbaace610160516107c052336107e0526101a051610800526107a0516108205260806107c0a16107805181525061151256611512565b610740511561142657670de0b6b3a76400006106405161074051808202811583838304141715611616579050905004610720525b6107205161064051036107605273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c05118611484575f5f5f5f61076051610700515ff1156116165761072051156114c6575f5f5f5f610720516007545ff115611616576114c6565b6101c05160405261070051606052610760516080526114a1610c2a565b61072051156114c6576101c051604052600754606052610720516080526114c6610c2a565b7f1c84cc0f96161bdafea718a9094dd21c21d1fb2f9ca2ebb9bd4e39918efbaace6101605161078052336107a0526101a0516107c052610760516107e0526080610780a1610640518152505b60035f55565b60015433181561157d57600b6040527f4e6f7420636f6d7061737300000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b3660206020360301116116165760206040526020602036036060376040805160200360031b6020820151811c811b90509050600654181561161457600e6080527f496e76616c69642070616c6f6d6100000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b565b5f80fd00c609b801810c2709f00885079d0c2700380c270c2708a5001801a10c278419163881181e1820a16576797065728300030a0016000000000000000000000000652bf77d9f1bda15b86894a185e8c22d9c722eb4000000000000000000000000f0d4c12a5768d806021f80a262b4d39d26c58b8d0000000000000000000000006dc0a87638cd75cc700ccdb226c7ab6c054bc70b000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000e693603c9441f0e645af6a5898b76a60dbf757f40000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x5f3560e01c6002600f820660011b61161a01601e395f51565b63eb8acce68118610c2857346116165760015460405260206040f3610c28565b6331d72b2e811861005457346116165760025460405260206040f35b63c98856aa8118610c2857602436103417611616576004358060a01c6116165760c05261007f611518565b60045460e05260c0516004557f766266fd21d17d465fb39cab9d9ff8020a212598404ab12bfd59aa2de4dea6a260e0516101005260c051610120526040610100a100610c28565b63b02c43d0811861010e576024361034176116165760036004356020525f5260405f205f602b905b808301548160051b604001526001018181186100ee575050506105606040f35b63c4ec2ff18118610c28576024361034176116165761012b611518565b670de0b6b3a763ffff600435116116165760085460c0526004356008557f4f0eeeb973d948a2b83d5d751d3373650b926bfc6b9f9ed579e3dbd48136635460c05160e05260043561010052604060e0a100610c28565b6322221b0c8118610c2857346116165760045460405260206040f3610c28565b63ddca3f4381186101bd57346116165760055460405260206040f35b63d0190e158118610749576105a3361115611616576004358060a01c611616576040526024358060a01c611616576060526044358060a01c611616576080526064358060a01c6116165760a0526084358060a01c6116165760c05260a4358060a01c6116165760e05260c4358060a01c611616576101005260e4358060a01c6116165761012052610104358060a01c6116165761014052610124358060a01c6116165761016052610144358060a01c61161657610180526104a4358060a01c611616576101a0526104c4358060a01c611616576101c0526104e4358060a01c611616576101e052610504358060a01c6116165761020052610524358060a01c61161657610220525f546002146116165760025f55610584354210610340576012610240527f496e76616c6964617465642065787069726500000000000000000000000000006102605261024050610240518061026001601f825f031636823750506308c379a061020052602061022052601f19601f61024051011660440161021cfd5b34610240526006546103b157600e610260527f50616c6f6d61206e6f74207365740000000000000000000000000000000000006102805261026050610260518061028001601f825f031636823750506308c379a061022052602061024052601f19601f61026051011660440161023cfd5b6005546102605261026051156104545761026051610240511015610434576010610280527f496e73756666696369656e7420666565000000000000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b5f5f5f5f610260516004545ff11561161657610260516102405103610240525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6040511861050c57610484356102405110156104e4576014610280527f496e73756666696369656e74206465706f7369740000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b610484356102405111156105f3575f5f5f5f610484356102405103335ff115611616576105f3565b5f5f5f5f61024051335ff115611616576040516323b872dd61028052336102a052306102c052610484356102e0526020610280606461029c5f855af1610554573d5f5f3e3d5ffd5b3d61056b57803b1561161657600161030052610584565b60203d1061161657610280518060011c61161657610300525b6103009050516105f3576013610320527f4661696c6564207472616e7366657246726f6d000000000000000000000000006103405261032050610320518061034001601f825f031636823750506308c379a06102e052602061030052601f19601f6103205101166044016102fcfd5b610160610280610160604060045afa5060a06101646103e03760a06102046104803760a06102a46105203760a06103446105c03760a06103e46106603761048435610700526101a051610720526101c051610740526101e051610760526102005161078052610220516107a052336107c0525f6107e0525f6005905b8061080052610800516108005101600a03600a81116116165760051b61028001516107e0526107e051156106a2576106ad565b60010181811861066f575b5050600254610800526003610800516020525f5260405f205f602b905b8060051b6102800151818401556001018181186106ca57505050600161080051016002557fc4084cccadd451aff865080eee25dd857e367ac52bcb386ff1833e9ab62c9b066108005161082052604051610840526107e051610860526104843561088052336108a05260606105446108c037610100610820a160035f55005b63441a3e708118610c2857604436103417611616576024358060041c61161657610d60523361161657602060043561016052600161018052610d60516101a052610794610d80610cf7565b610d80f3610c28565b63c09f329181186107b957346116165760065460405260206040f35b636974af69811861081d57602436103417611616576004358060a01c6116165760c0526107e4611518565b60c0516001557fb682667b5b9327acc3f181a08e32c75a75f74ecb054e108a9c7269f64920ab4a3360e05260c05161010052604060e0a1005b6330e59cbc8118610c2857602436103417611616576004358060a01c6116165760c052610848611518565b60c0516007557f62415a60755d7d2d84ea1baece7480e6a431cf87cbbdfa07d5984b243bf61f313360e05260c05161010052604060e0a100610c28565b63d8fe764d8118610c2857346116165760075460405260206040f3610c28565b6310d418c281186108c157346116165760085460405260206040f35b6323fde8e28118610c2857346116165760015433186108f1576006546108eb5760243618156108f3565b5f6108f3565b5f5b61095257600c6040527f556e617574686f72697a6564000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b36602411611616576020606052602060046080376060805160200360031b6020820151811c811b905090506040526040516006557f2700ed1ef9147da3f7fdcaae08cbe6d1c92ec7fa6bace169d9c49e398e3cb1ca60405160605260206060a100610c28565b62efa8958118610c2857604436103417611616576020604060046101603760016101a0526109e7610d60610cf7565b610d60f3610c28565b630be450008114600336111615610bc15760c43610341761161657600435600401600881351161161657803560208160051b018083610d6037505050602435600401600881351161161657803560208160051b018083610e803750505060443560040160088135116116165780355f8160088111611616578015610a9657905b8060051b6020850101358060041c611616578160051b610fc00152600101818118610a70575b505080610fa0525050610aa7611518565b610d60516110c052610e80516110c05118610acb57610fa0516110c0511815610acd565b5f5b610b365760106110e0527f56616c69646174696f6e206572726f7200000000000000000000000000000000611100526110e0506110e0518061110001601f825f031636823750506308c379a06110a05260206110c052601f19601f6110e05101166044016110bcfd5b5f6008905b806110e052610d60516110e05110610b5257610bbd565b6110e051610d60518110156116165760051b610d800151610160526110e051610e80518110156116165760051b610ea00151610180526110e051610fa0518110156116165760051b610fc001516101a052610bae611100610cf7565b61110050600101818118610b3b575b5050005b63fbd159558118610c285760243610341761161657610bde611518565b60055460c0526004356005557f8987e6f43a6c6bf408c8c427dceb2f98377f859348939ef4ab7b770b510a395a60c05160e05260043561010052604060e0a100610c2856610c28565b5b005b60405163a9059cbb60a05260605160c05260805160e052602060a0604460bc5f855af1610c59573d5f5f3e3d5ffd5b3d610c7057803b1561161657600161010052610c88565b60203d106116165760a0518060011c61161657610100525b610100905051610cf557600f610120527f4661696c6564207472616e7366657200000000000000000000000000000000006101405261012050610120518061014001601f825f031636823750506308c379a060e052602061010052601f19601f61012051011660440160fcfd5b565b5f546002146116165760025f556003610160516020525f5260405f205f602b905b808301548160051b6101c00152600101818118610d185750505061064051610d9f57600d610720527f456d707479206465706f736974000000000000000000000000000000000000006107405261072050610720518061074001601f825f031636823750506308c379a06106e052602061070052601f19601f6107205101166044016106fcfd5b60016101a05118610e2757610700513318610dbb576001610dbe565b33155b610e2757600c610720527f556e617574686f72697a656400000000000000000000000000000000000000006107405261072050610720518061074001601f825f031636823750506308c379a06106e052602061070052601f19601f6107205101166044016106fcfd5b6003610160516020525f5260405f205f81555f60018201555f60028201555f60038201555f60048201555f60058201555f60068201555f60078201555f60088201555f60098201555f600a820155600b81015f81555f60018201555f60028201555f60038201555f6004820155600581015f81555f60018201555f60028201555f60038201555f600482015550600a81015f81555f60018201555f60028201555f60038201555f600482015550600f81015f81555f60018201555f60028201555f60038201555f600482015550601481015f81555f60018201555f60028201555f60038201555f600482015550505f6024820155602581015f81555f60018201555f60028201555f60038201555f6004820155505f602a820155505f610720526008546107405260016101a05118610f60576001610f69565b60086101a05118155b6113f2575f610760525f6005905b8061078052610780516107805101600a03600a81116116165760051b6101c00151610760526107605115610faa57610fb5565b600101818118610f77575b50506040366107803773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c051186111555760206116385f395f5163c872a3c56107c0526101606107e06101606101c060045afa5061032061094061032061032060045afa5061064051610c605261018051610c805261066051610ca05261068051610cc0526106a051610ce0526106c051610d00526106e051610d205230610d405260206107c06105846107dc61064051855af161106b573d5f5f3e3d5ffd5b60203d10611616576107c09050516107805261074051156110b157670de0b6b3a76400006107805161074051808202811583838304141715611616579050905004610720525b6107205161078051036107a05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610760511861110f575f5f5f5f6107a051610700515ff11561161657610720511561139e575f5f5f5f610720516007545ff1156116165761139e565b61076051604052610700516060526107a05160805261112c610c2a565b610720511561139e57610760516040526007546060526107205160805261139e610c2a5661139e565b6101c05163095ea7b36107c05260206116386107e039610640516108005260206107c060446107dc5f855af161118d573d5f5f3e3d5ffd5b3d6111a457803b15611616576001610820526111bd565b60203d10611616576107c0518060011c61161657610820525b61082090505161122c57600e610840527f4661696c656420617070726f76650000000000000000000000000000000000006108605261084050610840518061086001601f825f031636823750506308c379a061080052602061082052601f19601f61084051011660440161081cfd5b60206116385f395f5163c872a3c56107c0526101606107e06101606101c060045afa5061032061094061032061032060045afa5061064051610c605261018051610c805261066051610ca05261068051610cc0526106a051610ce0526106c051610d00526106e051610d205230610d405260206107c06105846107dc5f855af16112b8573d5f5f3e3d5ffd5b60203d10611616576107c09050516107805261074051156112fe57670de0b6b3a76400006107805161074051808202811583838304141715611616579050905004610720525b6107205161078051036107a05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610760511861135c575f5f5f5f6107a051610700515ff11561161657610720511561139e575f5f5f5f610720516007545ff1156116165761139e565b61076051604052610700516060526107a051608052611379610c2a565b610720511561139e57610760516040526007546060526107205160805261139e610c2a565b7f1c84cc0f96161bdafea718a9094dd21c21d1fb2f9ca2ebb9bd4e39918efbaace610160516107c052336107e0526101a051610800526107a0516108205260806107c0a16107805181525061151256611512565b610740511561142657670de0b6b3a76400006106405161074051808202811583838304141715611616579050905004610720525b6107205161064051036107605273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101c05118611484575f5f5f5f61076051610700515ff1156116165761072051156114c6575f5f5f5f610720516007545ff115611616576114c6565b6101c05160405261070051606052610760516080526114a1610c2a565b61072051156114c6576101c051604052600754606052610720516080526114c6610c2a565b7f1c84cc0f96161bdafea718a9094dd21c21d1fb2f9ca2ebb9bd4e39918efbaace6101605161078052336107a0526101a0516107c052610760516107e0526080610780a1610640518152505b60035f55565b60015433181561157d57600b6040527f4e6f7420636f6d7061737300000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b3660206020360301116116165760206040526020602036036060376040805160200360031b6020820151811c811b90509050600654181561161457600e6080527f496e76616c69642070616c6f6d6100000000000000000000000000000000000060a0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b565b5f80fd00c609b801810c2709f00885079d0c2700380c270c2708a5001801a10c27000000000000000000000000f0d4c12a5768d806021f80a262b4d39d26c58b8d
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000652bf77d9f1bda15b86894a185e8c22d9c722eb4000000000000000000000000f0d4c12a5768d806021f80a262b4d39d26c58b8d0000000000000000000000006dc0a87638cd75cc700ccdb226c7ab6c054bc70b000000000000000000000000000000000000000000000000002386f26fc10000000000000000000000000000e693603c9441f0e645af6a5898b76a60dbf757f40000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _compass (address): 0x652Bf77d9F1BDA15B86894a185E8C22d9c722EB4
Arg [1] : router (address): 0xF0d4c12A5768D806021F80a262B4d39d26C58b8D
Arg [2] : _refund_wallet (address): 0x6dc0A87638CD75Cc700cCdB226c7ab6C054bc70b
Arg [3] : _fee (uint256): 10000000000000000
Arg [4] : _service_fee_collector (address): 0xe693603C9441f0e645Af6A5898b76a60dbf757F4
Arg [5] : _service_fee (uint256): 0
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000652bf77d9f1bda15b86894a185e8c22d9c722eb4
Arg [1] : 000000000000000000000000f0d4c12a5768d806021f80a262b4d39d26c58b8d
Arg [2] : 0000000000000000000000006dc0a87638cd75cc700ccdb226c7ab6c054bc70b
Arg [3] : 000000000000000000000000000000000000000000000000002386f26fc10000
Arg [4] : 000000000000000000000000e693603c9441f0e645af6a5898b76a60dbf757f4
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,283 | 0.001 | $3.28 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
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.