Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Deposit | 20042523 | 214 days ago | IN | 0.02 ETH | 0.00369586 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
20042523 | 214 days ago | 0.02 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xee0FC640...AA0cb278c The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Uniswap V3 TWAP Bot
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# pragma version 0.3.10 # pragma optimize gas # pragma evm-version paris """ @title Uniswap V3 TWAP Bot @license Apache 2.0 @author Volume.finance """ struct SwapInfo: path: Bytes[224] amount: uint256 struct ExactInputParams: path: Bytes[224] recipient: address deadline: uint256 amountIn: uint256 amountOutMinimum: uint256 struct Deposit: depositor: address path: Bytes[224] input_amount: uint256 number_trades: uint256 interval: uint256 remaining_counts: uint256 starting_time: uint256 interface SwapRouter: def WETH9() -> address: pure def exactInput(params: ExactInputParams) -> uint256: payable 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 Weth: def deposit(): payable def withdraw(wad: uint256): nonpayable VETH: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE # Virtual ETH WETH: immutable(address) ROUTER: immutable(address) MAX_SIZE: constant(uint256) = 8 DENOMINATOR: constant(uint256) = 10 ** 18 compass: public(address) deposit_list: public(HashMap[uint256, Deposit]) next_deposit: public(uint256) refund_wallet: public(address) fee: public(uint256) paloma: public(bytes32) service_fee_collector: public(address) service_fee: public(uint256) event Deposited: deposit_id: uint256 token0: address token1: address input_amount: uint256 number_trades: uint256 interval: uint256 starting_time: uint256 depositor: address is_stable_swap: bool event Swapped: deposit_id: uint256 remaining_counts: uint256 amount: uint256 out_amount: uint256 event Canceled: deposit_id: uint256 token0: address token1: address input_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 @external def __init__(_compass_evm: address, router: address, _refund_wallet: address, _fee: uint256, _service_fee_collector: address, _service_fee: uint256): self.compass = _compass_evm ROUTER = router WETH = SwapRouter(router).WETH9() self.refund_wallet = _refund_wallet self.fee = _fee self.service_fee_collector = _service_fee_collector assert _service_fee < DENOMINATOR self.service_fee = _service_fee log UpdateCompass(empty(address), _compass_evm) 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(swap_infos: DynArray[SwapInfo, MAX_SIZE], number_trades: uint256, interval: uint256, starting_time: uint256): _value: uint256 = msg.value _fee: uint256 = self.fee if _fee > 0: _fee = _fee * number_trades assert _value >= _fee, "Insuf fee" send(self.refund_wallet, _fee) _value = unsafe_sub(_value, _fee) _next_deposit: uint256 = self.next_deposit _starting_time: uint256 = starting_time if starting_time <= block.timestamp: _starting_time = block.timestamp assert number_trades > 0, "Wrong count" for swap_info in swap_infos: amount: uint256 = 0 assert len(swap_info.path) >= 43, "Path error" token0: address = convert(slice(swap_info.path, 0, 20), address) fee_index: uint256 = 20 if token0 == VETH: amount = swap_info.amount assert _value >= amount, "Insuf deposit" _value = unsafe_sub(_value, amount) fee_index = 40 else: amount = ERC20(token0).balanceOf(self) assert ERC20(token0).transferFrom(msg.sender, self, swap_info.amount, default_return_value=True), "Failed transferFrom" amount = ERC20(token0).balanceOf(self) - amount is_stable_swap: bool = True for i in range(8): if unsafe_add(fee_index, 3) >= len(swap_info.path): break fee_level: uint256 = convert(slice(swap_info.path, fee_index, 3), uint256) if fee_level == 0: break if fee_level > 500: is_stable_swap = False fee_index = unsafe_add(fee_index, 23) self.deposit_list[_next_deposit] = Deposit({ depositor: msg.sender, path: swap_info.path, input_amount: amount, number_trades: number_trades, interval: interval, remaining_counts: number_trades, starting_time: _starting_time }) log Deposited(_next_deposit, token0, convert(slice(swap_info.path, unsafe_sub(len(swap_info.path), 20), 20), address), amount, number_trades, interval, _starting_time, msg.sender, is_stable_swap) _next_deposit = unsafe_add(_next_deposit, 1) self.next_deposit = _next_deposit if _value > 0: send(msg.sender, _value) @internal def _safe_transfer(_token: address, _to: address, _value: uint256): assert ERC20(_token).transfer(_to, _value, default_return_value=True), "Failed Transfer" @internal def _swap(deposit_id: uint256, remaining_count: uint256, amount_out_min: uint256) -> uint256: _deposit: Deposit = self.deposit_list[deposit_id] assert _deposit.remaining_counts > 0 and _deposit.remaining_counts == remaining_count, "Wrong count" _amount: uint256 = _deposit.input_amount / _deposit.remaining_counts _deposit.input_amount -= _amount _deposit.remaining_counts -= 1 self.deposit_list[deposit_id] = _deposit _out_amount: uint256 = 0 _path: Bytes[224] = _deposit.path token0: address = convert(slice(_path, 0, 20), address) token1: address = convert(slice(_path, unsafe_sub(len(_path), 20), 20), address) if token0 == VETH: _path = slice(_path, 20, unsafe_sub(len(_path), 20)) Weth(WETH).deposit(value=_amount) ERC20(WETH).approve(ROUTER, _amount) _out_amount = ERC20(token1).balanceOf(self) SwapRouter(ROUTER).exactInput(ExactInputParams({ path: _path, recipient: self, deadline: block.timestamp, amountIn: _amount, amountOutMinimum: amount_out_min })) _out_amount = ERC20(token1).balanceOf(self) - _out_amount else: assert ERC20(token0).approve(ROUTER, _amount), "Failed approve" if token1 == VETH: _path = slice(_path, 0, unsafe_sub(len(_path), 20)) _out_amount = ERC20(WETH).balanceOf(self) SwapRouter(ROUTER).exactInput(ExactInputParams({ path: _path, recipient: self, deadline: block.timestamp, amountIn: _amount, amountOutMinimum: amount_out_min })) _out_amount = ERC20(WETH).balanceOf(self) - _out_amount Weth(WETH).withdraw(_out_amount) else: _out_amount = ERC20(token1).balanceOf(self) SwapRouter(ROUTER).exactInput(ExactInputParams({ path: _path, recipient: self, deadline: block.timestamp, amountIn: _amount, amountOutMinimum: amount_out_min })) _out_amount = ERC20(token1).balanceOf(self) - _out_amount _service_fee: uint256 = self.service_fee service_fee_amount: uint256 = 0 if _service_fee > 0: service_fee_amount = unsafe_div(_out_amount * _service_fee, DENOMINATOR) if token1 == VETH: if service_fee_amount > 0: send(self.service_fee_collector, service_fee_amount) send(_deposit.depositor, unsafe_sub(_out_amount, service_fee_amount)) else: send(_deposit.depositor, _out_amount) else: if service_fee_amount > 0: self._safe_transfer(token1, self.service_fee_collector, service_fee_amount) self._safe_transfer(token1, _deposit.depositor, unsafe_sub(_out_amount, service_fee_amount)) else: self._safe_transfer(token1, _deposit.depositor, _out_amount) log Swapped(deposit_id, _deposit.remaining_counts, _amount, _out_amount) return _out_amount @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 @nonreentrant('lock') def multiple_swap(deposit_id: DynArray[uint256, MAX_SIZE], remaining_counts: DynArray[uint256, MAX_SIZE], amount_out_min: DynArray[uint256, MAX_SIZE]): self._paloma_check() _len: uint256 = len(deposit_id) assert _len == len(amount_out_min) and _len == len(remaining_counts), "Validation error" for i in range(MAX_SIZE): if i >= len(deposit_id): break self._swap(deposit_id[i], remaining_counts[i], amount_out_min[i]) @external def multiple_swap_view(deposit_id: DynArray[uint256, MAX_SIZE], remaining_counts: DynArray[uint256, MAX_SIZE]) -> DynArray[uint256, MAX_SIZE]: assert msg.sender == empty(address) # only for view function _len: uint256 = len(deposit_id) res: DynArray[uint256, MAX_SIZE] = [] for i in range(MAX_SIZE): if i >= len(deposit_id): break res.append(self._swap(deposit_id[i], remaining_counts[i], 1)) return res @external @nonreentrant('lock') def cancel(deposit_id: uint256): _deposit: Deposit = self.deposit_list[deposit_id] assert _deposit.depositor == msg.sender, "Unauth" assert _deposit.input_amount > 0, "All traded" token0: address = convert(slice(_deposit.path, 0, 20), address) if token0 == VETH: send(msg.sender, _deposit.input_amount) else: self._safe_transfer(token0, msg.sender, _deposit.input_amount) log Canceled(deposit_id, token0, convert(slice(_deposit.path, unsafe_sub(len(_deposit.path), 20), 20), address), _deposit.input_amount) _deposit.input_amount = 0 _deposit.remaining_counts = 0 self.deposit_list[deposit_id] = _deposit @external @nonreentrant('lock') def multiple_cancel(deposit_ids: DynArray[uint256, MAX_SIZE]): for deposit_id in deposit_ids: _deposit: Deposit = self.deposit_list[deposit_id] assert _deposit.depositor == msg.sender, "Unauth" assert _deposit.input_amount > 0, "All traded" token0: address = convert(slice(_deposit.path, 0, 20), address) if token0 == VETH: send(msg.sender, _deposit.input_amount) else: self._safe_transfer(token0, msg.sender, _deposit.input_amount) log Canceled(deposit_id, token0, convert(slice(_deposit.path, unsafe_sub(len(_deposit.path), 20), 20), address), _deposit.input_amount) _deposit.input_amount = 0 _deposit.remaining_counts = 0 self.deposit_list[deposit_id] = _deposit @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, "Invalid" _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() old_service_fee_collector: address = self.service_fee_collector self.service_fee_collector = new_service_fee_collector log UpdateServiceFeeCollector(old_service_fee_collector, 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__(): assert msg.sender == WETH
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":"input_amount","type":"uint256","indexed":false},{"name":"number_trades","type":"uint256","indexed":false},{"name":"interval","type":"uint256","indexed":false},{"name":"starting_time","type":"uint256","indexed":false},{"name":"depositor","type":"address","indexed":false},{"name":"is_stable_swap","type":"bool","indexed":false}],"anonymous":false,"type":"event"},{"name":"Swapped","inputs":[{"name":"deposit_id","type":"uint256","indexed":false},{"name":"remaining_counts","type":"uint256","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"out_amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Canceled","inputs":[{"name":"deposit_id","type":"uint256","indexed":false},{"name":"token0","type":"address","indexed":false},{"name":"token1","type":"address","indexed":false},{"name":"input_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_evm","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":"swap_infos","type":"tuple[]","components":[{"name":"path","type":"bytes"},{"name":"amount","type":"uint256"}]},{"name":"number_trades","type":"uint256"},{"name":"interval","type":"uint256"},{"name":"starting_time","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"multiple_swap","inputs":[{"name":"deposit_id","type":"uint256[]"},{"name":"remaining_counts","type":"uint256[]"},{"name":"amount_out_min","type":"uint256[]"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"multiple_swap_view","inputs":[{"name":"deposit_id","type":"uint256[]"},{"name":"remaining_counts","type":"uint256[]"}],"outputs":[{"name":"","type":"uint256[]"}]},{"stateMutability":"nonpayable","type":"function","name":"cancel","inputs":[{"name":"deposit_id","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"multiple_cancel","inputs":[{"name":"deposit_ids","type":"uint256[]"}],"outputs":[]},{"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_list","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"tuple","components":[{"name":"depositor","type":"address"},{"name":"path","type":"bytes"},{"name":"input_amount","type":"uint256"},{"name":"number_trades","type":"uint256"},{"name":"interval","type":"uint256"},{"name":"remaining_counts","type":"uint256"},{"name":"starting_time","type":"uint256"}]}]},{"stateMutability":"view","type":"function","name":"next_deposit","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"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"}]}]
Deployed Bytecode
0x60003560e01c60026012820660011b611fa401601e39600051565b63eb8acce681186100365734611f9f5760015460405260206040f35b6330e59cbc811861142957602436103417611f9f576004358060a01c611f9f5760c052610061611e9e565b60075460e05260c0516007557f62415a60755d7d2d84ea1baece7480e6a431cf87cbbdfa07d5984b243bf61f3160e0516101005260c051610120526040610100a100611429565b63e25f7230811861142957602436103417611f9f57602080604052600260043560205260005260406000208160400160e082548252806020830152600183018183016020825401600081601f0160051c60088111611f9f57801561011e57905b808501548160051b850152600101818118610108575b5050508051806020830101601f82600003163682375050601f19601f82516020010116905090508101905060098301546040830152600a8301546060830152600b8301546080830152600c83015460a0830152600d83015460c083015290509050810190506040f3611429565b6312ece1ed81186114295734611f9f5760035460405260206040f3611429565b6322221b0c81186114295734611f9f5760045460405260206040f3611429565b63ddca3f4381186114295734611f9f5760055460405260206040f3611429565b63c09f329181186102075734611f9f5760065460405260206040f35b636974af69811861142957602436103417611f9f576004358060a01c611f9f5760c052610232611e9e565b60c0516001557fb682667b5b9327acc3f181a08e32c75a75f74ecb054e108a9c7269f64920ab4a3360e05260c05161010052604060e0a100611429565b63d8fe764d811861028b5734611f9f5760075460405260206040f35b63ff44cecd811861142957608436103417611f9f576004356004016008813511611f9f57803560208160051b018083610700375050506024356004016008813511611f9f57803560208160051b0180836108203750505033611f9f57610700516109405260006109605260006008905b80610a805261070051610a80511061031257610386565b6109605160078111611f9f57610a805161070051811015611f9f5760051b610720015161016052610a805161082051811015611f9f5760051b61084001516101805260016101a052610365610aa061150e565b610aa0518160051b61098001526001810161096052506001018181186102fb575b5050602080610a805280610a80016000610960518083528060051b60008260088111611f9f5780156103d257905b8060051b61098001518160051b6020880101526001018181186103b4575b50508201602001915050905081019050610a80f3611429565b6310d418c281186104075734611f9f5760085460405260206040f35b6323fde8e281186114295734611f9f5760015433186104385760065461043157602436181561043b565b600061043b565b60005b61049c5760076040527f496e76616c69640000000000000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b36602411611f9f576020606052602060046080376060805160200360031b6020820151811c811b905090506040526040516006557f2700ed1ef9147da3f7fdcaae08cbe6d1c92ec7fa6bace169d9c49e398e3cb1ca60405160605260206060a100611429565b637c95b0ef8118610be65760a3361115611f9f576004356004016008813511611f9f57803560008160088111611f9f57801561058157905b61012081026060018160051b60208601013560208601018035810160e0813511611f9f5760208135018082853750506020810135610100830152505060010181811861053a575b5050806040525050600054600214611f9f57600260005534610960526005546109805261098051156106655761098051602435808202811583838304141715611f9f579050905061098052610980516109605110156106405760096109a0527f496e7375662066656500000000000000000000000000000000000000000000006109c0526109a0506109a051806109c001601f826000031636823750506308c379a061096052602061098052601f19601f6109a051011660440161097cfd5b6000600060006000610980516004546000f115611f9f57610980516109605103610960525b6003546109a0526064356109c052426064351161068257426109c0525b6024356106ef57600b6109e0527f57726f6e6720636f756e74000000000000000000000000000000000000000000610a00526109e0506109e05180610a0001601f826000031636823750506308c379a06109a05260206109c052601f19601f6109e05101166044016109bcfd5b600060405160088111611f9f578015610bb757905b61012081026060016101206109e06101208360045afa50506000610b0052602b6109e051101561079457600a610b20527f50617468206572726f7200000000000000000000000000000000000000000000610b4052610b2050610b205180610b4001601f826000031636823750506308c379a0610ae0526020610b0052601f19601f610b20510116604401610afcfd5b6109e051601411611f9f57610a0051610b60526014610b4052610b406020810151815160200360031b1c9050610b20526014610b405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610b20511861087c57610ae051610b0052610b005161096051101561086457600d610b60527f496e737566206465706f73697400000000000000000000000000000000000000610b8052610b6050610b605180610b8001601f826000031636823750506308c379a0610b20526020610b4052601f19601f610b60510116604401610b3cfd5b610b00516109605103610960526028610b40526109ec565b610b20516370a08231610b605230610b80526020610b606024610b7c845afa6108aa573d600060003e3d6000fd5b60203d10611f9f57610b60905051610b0052610b20516323b872dd610b605233610b805230610ba052610ae051610bc0526020610b606064610b7c6000855af16108f9573d600060003e3d6000fd5b3d61091057803b15611f9f576001610be052610929565b60203d10611f9f57610b60518060011c611f9f57610be0525b610be0905051610999576013610c00527f4661696c6564207472616e7366657246726f6d00000000000000000000000000610c2052610c0050610c005180610c2001601f826000031636823750506308c379a0610bc0526020610be052601f19601f610c00510116604401610bdcfd5b610b20516370a08231610b605230610b80526020610b606024610b7c845afa6109c7573d600060003e3d6000fd5b60203d10611f9f57610b60905051610b0051808203828111611f9f5790509050610b00525b6001610b605260006008905b80610b80526109e0516003610b40510110610a1257610a84565b610b40516109e0516003820111611f9f5780610a00018051610be052506003610bc052610bc090506020810151815160200360031b1c9050610ba052610ba051610a5b57610a84565b6101f5610ba05110610a6e576000610b60525b6017610b405101610b40526001018181186109f8575b505060026109a051602052600052604060002033815560206109e0510160018201600082601f0160051c60088111611f9f578015610ad657905b8060051b6109e0015181840155600101818118610abe575b50505050610b00516009820155602435600a820155604435600b820155602435600c8201556109c051600d820155507f20d88b5bab36c1ab0d0605dfa6d78c6314c7f4dc7f8ef6079097dd0eb925f5486109a051610bc052610b2051610be05260146109e051036109e0516014820111611f9f5780610a00018051610ba052506014610b8052610b8090506020810151815160200360031b1c9050610c0052610b0051610c205260406024610c40376109c051610c805233610ca052610b6051610cc052610120610bc0a160016109a051016109a052600101818118610704575b50506109a0516003556109605115610bdf57600060006000600061096051336000f115611f9f575b6003600055005b63fbd15955811861142957602436103417611f9f57610c03611e9e565b60055460c0526004356005557f8987e6f43a6c6bf408c8c427dceb2f98377f859348939ef4ab7b770b510a395a60c05160e05260043561010052604060e0a100611429565b634b1cc18a8118610df95760c436103417611f9f576004356004016008813511611f9f57803560208160051b018083610700375050506024356004016008813511611f9f57803560208160051b018083610820375050506044356004016008813511611f9f57803560208160051b01808361094037505050600054600214611f9f576002600055610cd7611e9e565b61070051610a605261094051610a605118610cfb5761082051610a60511815610cfe565b60005b610d68576010610a80527f56616c69646174696f6e206572726f7200000000000000000000000000000000610aa052610a8050610a805180610aa001601f826000031636823750506308c379a0610a40526020610a6052601f19601f610a80510116604401610a5cfd5b60006008905b80610a805261070051610a805110610d8557610df0565b610a805161070051811015611f9f5760051b610720015161016052610a805161082051811015611f9f5760051b610840015161018052610a805161094051811015611f9f5760051b61096001516101a052610de1610aa061150e565b610aa050600101818118610d6e575b50506003600055005b63c98856aa811861142957602436103417611f9f576004358060a01c611f9f5760c052610e24611e9e565b60045460e05260c0516004557f766266fd21d17d465fb39cab9d9ff8020a212598404ab12bfd59aa2de4dea6a260e0516101005260c051610120526040610100a100611429565b6340e58ee5811861142957602436103417611f9f57600054600214611f9f576002600055600260043560205260005260406000206000600e905b808301548160051b6101600152600101818118610ea55750505033610160511815610f30576006610320527f556e6175746800000000000000000000000000000000000000000000000000006103405261032050610320518061034001601f826000031636823750506308c379a06102e052602061030052601f19601f6103205101166044016102fcfd5b61028051610f9e57600a610320527f416c6c20747261646564000000000000000000000000000000000000000000006103405261032050610320518061034001601f826000031636823750506308c379a06102e052602061030052601f19601f6103205101166044016102fcfd5b61018051601411611f9f576101a051610360526014610340526103406020810151815160200360031b1c90506103205273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee610320511861100657600060006000600061028051336000f115611f9f57611020565b61032051604052336060526102805160805261102061143c565b7f7d4911303d58b75c74db1c8fdcddfd5edbe6529674bc81be823e5e1b42f9ad1660043561038052610320516103a05260146101805103610180516014820111611f9f57806101a0018051610360525060146103405261034090506020810151815160200360031b1c90506103c052610280516103e0526080610380a160006102805260006102e052600260043560205260005260406000206000600e905b8060051b6101600151818401556001018181186110bf57505050600360005500611429565b63952258c0811861142957604436103417611f9f576004356004016008813511611f9f57803560208160051b01808361016037505050600054600214611f9f57600260005560006101605160088111611f9f5780156113a457905b8060051b61018001516102805260026102805160205260005260406000206000600e905b808301548160051b6102a0015260010181811861116357505050336102a05118156111ee576006610460527f556e6175746800000000000000000000000000000000000000000000000000006104805261046050610460518061048001601f826000031636823750506308c379a061042052602061044052601f19601f61046051011660440161043cfd5b6103c05161125c57600a610460527f416c6c20747261646564000000000000000000000000000000000000000000006104805261046050610460518061048001601f826000031636823750506308c379a061042052602061044052601f19601f61046051011660440161043cfd5b6102c051601411611f9f576102e0516104a0526014610480526104806020810151815160200360031b1c90506104605273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee61046051186112c45760006000600060006103c051336000f115611f9f576112de565b61046051604052336060526103c0516080526112de61143c565b7f7d4911303d58b75c74db1c8fdcddfd5edbe6529674bc81be823e5e1b42f9ad16610280516104c052610460516104e05260146102c051036102c0516014820111611f9f57806102e00180516104a0525060146104805261048090506020810151815160200360031b1c9050610500526103c0516105205260806104c0a160006103c05260006104205260026102805160205260005260406000206000600e905b8060051b6102a001518184015560010181811861137f5750505060010181811861113f575b5050600360005500611429565b63c4ec2ff1811861142957602436103417611f9f576113ce611e9e565b670de0b6b3a763ffff60043511611f9f5760085460c0526004356008557f4f0eeeb973d948a2b83d5d751d3373650b926bfc6b9f9ed579e3dbd48136635460c05160e05260043561010052604060e0a10061142956611429565b5b6020611fc86000396000513318611f9f57005b60405163a9059cbb60a05260605160c05260805160e052602060a0604460bc6000855af161146f573d600060003e3d6000fd5b3d61148657803b15611f9f5760016101005261149e565b60203d10611f9f5760a0518060011c611f9f57610100525b61010090505161150c57600f610120527f4661696c6564205472616e7366657200000000000000000000000000000000006101405261012050610120518061014001601f826000031636823750506308c379a060e052602061010052601f19601f61012051011660440160fcfd5b565b60026101605160205260005260406000206000600e905b808301548160051b6101c00152600101818118611525575050506103405115611557576101805161034051181561155a565b60005b6115c457600b610380527f57726f6e6720636f756e740000000000000000000000000000000000000000006103a0526103805061038051806103a001601f826000031636823750506308c379a061034052602061036052601f19601f61038051011660440161035cfd5b6102e051610340518015611f9f5780820490509050610380526102e05161038051808203828111611f9f57905090506102e0526103405160018103818111611f9f5790506103405260026101605160205260005260406000206000600e905b8060051b6101c00151818401556001018181186116235750505060006103a05260206101e05101806103c0826101e060045afa50506103c051601411611f9f576103e0516105005260146104e0526104e06020810151815160200360031b1c90506104c05260146103c051036103c0516014820111611f9f57806103e0018051610520525060146105005261050090506020810151815160200360031b1c90506104e05273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6104c0511861191b5760146103c051036103c0518160140111611f9f5780610520826103f460045afa5080610500526105009050602081510180610600828460045afa50505060206106005101806103c08261060060045afa50506020611fc860003960005163d0e30db061050052803b15611f9f576000610500600461051c61038051855af1611772573d600060003e3d6000fd5b506020611fc860003960005163095ea7b3610500526020611fe86105203961038051610540526020610500604461051c6000855af16117b6573d600060003e3d6000fd5b60203d10611f9f57610500518060011c611f9f576105605261056050506104e0516370a082316105005230610520526020610500602461051c845afa611801573d600060003e3d6000fd5b60203d10611f9f576105009050516103a0526020611fe860003960005163c04b8d596105005260208061052052806105200160a080825280820160206103c051018082826103c060045afa50508051806020830101601f82600003163682375050601f19601f825160200101169050810190503060208301524260408301526103805160608301526101a051608083015290508101505060206105006101c461051c6000855af16118b7573d600060003e3d6000fd5b60203d10611f9f5761050050506104e0516370a082316105005230610520526020610500602461051c845afa6118f2573d600060003e3d6000fd5b60203d10611f9f576105009050516103a051808203828111611f9f57905090506103a052611d28565b6104c05163095ea7b3610500526020611fe86105203961038051610540526020610500604461051c6000855af1611957573d600060003e3d6000fd5b60203d10611f9f57610500518060011c611f9f57610560526105609050516119df57600e610580527f4661696c656420617070726f76650000000000000000000000000000000000006105a0526105805061058051806105a001601f826000031636823750506308c379a061054052602061056052601f19601f61058051011660440161055cfd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6104e05118611be45760146103c051036103c0518111611f9f5780610520826103e060045afa5080610500526105009050602081510180610600828460045afa50505060206106005101806103c08261060060045afa50506020611fc86000396000516370a082316105005230610520526020610500602461051c845afa611a81573d600060003e3d6000fd5b60203d10611f9f576105009050516103a0526020611fe860003960005163c04b8d596105005260208061052052806105200160a080825280820160206103c051018082826103c060045afa50508051806020830101601f82600003163682375050601f19601f825160200101169050810190503060208301524260408301526103805160608301526101a051608083015290508101505060206105006101c461051c6000855af1611b37573d600060003e3d6000fd5b60203d10611f9f5761050050506020611fc86000396000516370a082316105005230610520526020610500602461051c845afa611b79573d600060003e3d6000fd5b60203d10611f9f576105009050516103a051808203828111611f9f57905090506103a0526020611fc8600039600051632e1a7d4d610500526103a05161052052803b15611f9f576000610500602461051c6000855af1611bde573d600060003e3d6000fd5b50611d28565b6104e0516370a082316105005230610520526020610500602461051c845afa611c12573d600060003e3d6000fd5b60203d10611f9f576105009050516103a0526020611fe860003960005163c04b8d596105005260208061052052806105200160a080825280820160206103c051018082826103c060045afa50508051806020830101601f82600003163682375050601f19601f825160200101169050810190503060208301524260408301526103805160608301526101a051608083015290508101505060206105006101c461051c6000855af1611cc8573d600060003e3d6000fd5b60203d10611f9f5761050050506104e0516370a082316105005230610520526020610500602461051c845afa611d03573d600060003e3d6000fd5b60203d10611f9f576105009050516103a051808203828111611f9f57905090506103a0525b600854610500526000610520526105005115611d6957670de0b6b3a76400006103a05161050051808202811583838304141715611f9f579050905004610520525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6104e05118611de6576105205115611dc9576000600060006000610520516007546000f115611f9f576000600060006000610520516103a051036101c0516000f115611f9f57611e4e565b60006000600060006103a0516101c0516000f115611f9f57611e4e565b6105205115611e31576104e05160405260075460605261052051608052611e0b61143c565b6104e0516040526101c051606052610520516103a05103608052611e4e61143c56611e4e565b6104e0516040526101c0516060526103a051608052611e4e61143c565b7f1073c37866404dc5ccf364f61b6850f80619085a9a66bb67b4a9681c2ac614586101605161054052610340516105605261038051610580526103a0516105a0526080610540a16103a051815250565b600154331815611f0557600b6040527f4e6f7420636f6d7061737300000000000000000000000000000000000000000060605260405060405180606001601f826000031636823750506308c379a06000526020602052601f19601f6040510116604401601cfd5b366020602036030111611f9f5760206040526020602036036060376040805160200360031b6020820151811c811b905090506006541815611f9d57600e6080527f496e76616c69642070616c6f6d6100000000000000000000000000000000000060a0526080506080518060a001601f826000031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b565b600080fd00a801cb0c4801eb10e4026f001a0e6b03eb13b1142814281428050201ab14281428018b000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.