Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 961 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Submit_logic_cal... | 18588306 | 372 days ago | IN | 0 ETH | 0.00621948 | ||||
Submit_logic_cal... | 18588306 | 372 days ago | IN | 0 ETH | 0.00621708 | ||||
Submit_logic_cal... | 18588306 | 372 days ago | IN | 0 ETH | 0.00621761 | ||||
Submit_logic_cal... | 18588306 | 372 days ago | IN | 0 ETH | 0.01657908 | ||||
Update_valset | 18588302 | 372 days ago | IN | 0 ETH | 0.00420664 | ||||
Submit_logic_cal... | 18574330 | 374 days ago | IN | 0 ETH | 0.00923189 | ||||
Submit_logic_cal... | 18574330 | 374 days ago | IN | 0 ETH | 0.01533234 | ||||
Update_valset | 18574329 | 374 days ago | IN | 0 ETH | 0.00715842 | ||||
Submit_logic_cal... | 18566780 | 375 days ago | IN | 0 ETH | 0.01124347 | ||||
Submit_logic_cal... | 18566780 | 375 days ago | IN | 0 ETH | 0.01124067 | ||||
Submit_logic_cal... | 18566780 | 375 days ago | IN | 0 ETH | 0.01748364 | ||||
Update_valset | 18566777 | 375 days ago | IN | 0 ETH | 0.00891812 | ||||
Update_valset | 18565879 | 375 days ago | IN | 0 ETH | 0.01037674 | ||||
Update_valset | 18565871 | 375 days ago | IN | 0 ETH | 0.01027807 | ||||
Update_valset | 18565125 | 376 days ago | IN | 0 ETH | 0.01107338 | ||||
Update_valset | 18565119 | 376 days ago | IN | 0 ETH | 0.00688922 | ||||
Update_valset | 18565119 | 376 days ago | IN | 0 ETH | 0.01070843 | ||||
Update_valset | 18565004 | 376 days ago | IN | 0 ETH | 0.01087457 | ||||
Submit_logic_cal... | 18564547 | 376 days ago | IN | 0 ETH | 0.0731117 | ||||
Submit_logic_cal... | 18564496 | 376 days ago | IN | 0 ETH | 0.03000392 | ||||
Update_valset | 18564342 | 376 days ago | IN | 0 ETH | 0.02592022 | ||||
Update_valset | 18564252 | 376 days ago | IN | 0 ETH | 0.0212212 | ||||
Update_valset | 18564144 | 376 days ago | IN | 0 ETH | 0.04358121 | ||||
Update_valset | 18564024 | 376 days ago | IN | 0 ETH | 0.01295054 | ||||
Update_valset | 18564017 | 376 days ago | IN | 0 ETH | 0.01338195 |
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
18213715 | 425 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x4473eA62...1931C09C1 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Compass-EVM
Compiler Version
vyper:0.3.7
Contract Source Code (Vyper language format)
# @version 0.3.7 """ @title Compass-EVM @author Volume.Finance """ MAX_VALIDATORS: constant(uint256) = 320 MAX_PAYLOAD: constant(uint256) = 20480 MAX_BATCH: constant(uint256) = 64 POWER_THRESHOLD: constant(uint256) = 2_863_311_530 # 2/3 of 2^32, Validator powers will be normalized to sum to 2 ^ 32 in every valset update. COMPASS_ID: immutable(bytes32) interface ERC20: def balanceOf(_owner: address) -> uint256: view struct Valset: validators: DynArray[address, MAX_VALIDATORS] # Validator addresses powers: DynArray[uint256, MAX_VALIDATORS] # Powers of given validators, in the same order as validators array valset_id: uint256 # nonce of this validator set struct Signature: v: uint256 r: uint256 s: uint256 struct Consensus: valset: Valset # Valset data signatures: DynArray[Signature, MAX_VALIDATORS] # signatures in the same order as validator array in valset struct LogicCallArgs: logic_contract_address: address # the arbitrary contract address to external call payload: Bytes[MAX_PAYLOAD] # payloads struct TokenSendArgs: receiver: DynArray[address, MAX_BATCH] amount: DynArray[uint256, MAX_BATCH] event ValsetUpdated: checkpoint: bytes32 valset_id: uint256 event LogicCallEvent: logic_contract_address: address payload: Bytes[MAX_PAYLOAD] message_id: uint256 event SendToPalomaEvent: token: address sender: address receiver: String[64] amount: uint256 event BatchSendEvent: token: address message_id: uint256 event ERC20DeployedEvent: paloma_denom: String[64] token_contract: address name: String[64] symbol: String[32] decimals: uint8 last_checkpoint: public(bytes32) last_valset_id: public(uint256) message_id_used: public(HashMap[uint256, bool]) # compass_id: unique identifier for compass instance # valset: initial validator set @external def __init__(compass_id: bytes32, valset: Valset): COMPASS_ID = compass_id cumulative_power: uint256 = 0 i: uint256 = 0 # check cumulative power is enough for validator in valset.validators: cumulative_power += valset.powers[i] if cumulative_power >= POWER_THRESHOLD: break i += 1 assert cumulative_power >= POWER_THRESHOLD, "Insufficient Power" new_checkpoint: bytes32 = keccak256(_abi_encode(valset.validators, valset.powers, valset.valset_id, compass_id, method_id=method_id("checkpoint(address[],uint256[],uint256,bytes32)"))) self.last_checkpoint = new_checkpoint self.last_valset_id = valset.valset_id log ValsetUpdated(new_checkpoint, valset.valset_id) @external @pure def compass_id() -> bytes32: return COMPASS_ID # utility function to verify EIP712 signature @internal @pure def verify_signature(signer: address, hash: bytes32, sig: Signature) -> bool: message_digest: bytes32 = keccak256(concat(convert("\x19Ethereum Signed Message:\n32", Bytes[28]), hash)) return signer == ecrecover(message_digest, sig.v, sig.r, sig.s) # consensus: validator set and signatures # hash: what we are checking they have signed @internal def check_validator_signatures(consensus: Consensus, hash: bytes32): i: uint256 = 0 cumulative_power: uint256 = 0 for sig in consensus.signatures: if sig.v != 0: assert self.verify_signature(consensus.valset.validators[i], hash, sig), "Invalid Signature" cumulative_power += consensus.valset.powers[i] if cumulative_power >= POWER_THRESHOLD: break i += 1 assert cumulative_power >= POWER_THRESHOLD, "Insufficient Power" # Make a new checkpoint from the supplied validator set # A checkpoint is a hash of all relevant information about the valset. This is stored by the contract, # instead of storing the information directly. This saves on storage and gas. # The format of the checkpoint is: # keccak256 hash of abi_encoded checkpoint(validators[], powers[], valset_id, compass_id) # The validator powers must be decreasing or equal. This is important for checking the signatures on the # next valset, since it allows the caller to stop verifying signatures once a quorum of signatures have been verified. @internal @view def make_checkpoint(valset: Valset) -> bytes32: return keccak256(_abi_encode(valset.validators, valset.powers, valset.valset_id, COMPASS_ID, method_id=method_id("checkpoint(address[],uint256[],uint256,bytes32)"))) # This updates the valset by checking that the validators in the current valset have signed off on the # new valset. The signatures supplied are the signatures of the current valset over the checkpoint hash # generated from the new valset. # Anyone can call this function, but they must supply valid signatures of constant_powerThreshold of the current valset over # the new valset. # valset: new validator set to update with # consensus: current validator set and signatures @external def update_valset(consensus: Consensus, new_valset: Valset): # check if new valset_id is greater than current valset_id assert new_valset.valset_id > consensus.valset.valset_id, "Invalid Valset ID" cumulative_power: uint256 = 0 i: uint256 = 0 # check cumulative power is enough for validator in new_valset.validators: cumulative_power += new_valset.powers[i] if cumulative_power >= POWER_THRESHOLD: break i += 1 assert cumulative_power >= POWER_THRESHOLD, "Insufficient Power" # check if the supplied current validator set matches the saved checkpoint assert self.last_checkpoint == self.make_checkpoint(consensus.valset), "Incorrect Checkpoint" # calculate the new checkpoint new_checkpoint: bytes32 = self.make_checkpoint(new_valset) # check if enough validators signed new validator set (new checkpoint) self.check_validator_signatures(consensus, new_checkpoint) self.last_checkpoint = new_checkpoint self.last_valset_id = new_valset.valset_id log ValsetUpdated(new_checkpoint, new_valset.valset_id) # This makes calls to contracts that execute arbitrary logic # message_id is to prevent replay attack and every message_id can be used only once @external def submit_logic_call(consensus: Consensus, args: LogicCallArgs, message_id: uint256, deadline: uint256): assert block.timestamp <= deadline, "Timeout" assert not self.message_id_used[message_id], "Used Message_ID" self.message_id_used[message_id] = True # check if the supplied current validator set matches the saved checkpoint assert self.last_checkpoint == self.make_checkpoint(consensus.valset), "Incorrect Checkpoint" # signing data is keccak256 hash of abi_encoded logic_call(args, message_id, compass_id, deadline) args_hash: bytes32 = keccak256(_abi_encode(args, message_id, COMPASS_ID, deadline, method_id=method_id("logic_call((address,bytes),uint256,bytes32,uint256)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) # make call to logic contract raw_call(args.logic_contract_address, args.payload) log LogicCallEvent(args.logic_contract_address, args.payload, message_id) @internal def _safe_transfer_from(_token: address, _from: address, _to: address, _value: uint256): _response: Bytes[32] = raw_call( _token, _abi_encode( _from, _to, _value, method_id=method_id("transferFrom(address,address,uint256)")), max_outsize=32 ) # dev: failed transferFrom if len(_response) > 0: assert convert(_response, bool), "TransferFrom failed" @external def send_token_to_paloma(token: address, receiver: String[64], amount: uint256): _balance: uint256 = ERC20(token).balanceOf(self) self._safe_transfer_from(token, msg.sender, self, amount) _balance = ERC20(token).balanceOf(self) - _balance assert _balance > 0, "Zero Transfer" log SendToPalomaEvent(token, msg.sender, receiver, amount) @internal def _safe_transfer(_token: address, _to: address, _value: uint256): _response: Bytes[32] = raw_call( _token, _abi_encode( _to, _value, method_id=method_id("transfer(address,uint256)")), max_outsize=32 ) # dev: failed transferFrom if len(_response) > 0: assert convert(_response, bool), "TransferFrom failed" @external def submit_batch(consensus: Consensus, token: address, args: TokenSendArgs, message_id: uint256, deadline: uint256): assert block.timestamp <= deadline, "Timeout" assert not self.message_id_used[message_id], "Used Message_ID" length: uint256 = len(args.receiver) assert length == len(args.amount), "Unmatched Params" self.message_id_used[message_id] = True # check if the supplied current validator set matches the saved checkpoint assert self.last_checkpoint == self.make_checkpoint(consensus.valset), "Incorrect Checkpoint" # signing data is keccak256 hash of abi_encoded logic_call(args, message_id, compass_id, deadline) args_hash: bytes32 = keccak256(_abi_encode(token, args, message_id, COMPASS_ID, deadline, method_id=method_id("batch_call(address,(address[],uint256[]),uint256,bytes32,uint256)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) # make call to logic contract for i in range(MAX_BATCH): if i >= length: break self._safe_transfer(token, args.receiver[i], args.amount[i]) log BatchSendEvent(token, message_id) @external def deploy_erc20(_paloma_denom: String[64], _name: String[64], _symbol: String[32], _decimals: uint8, _blueprint: address): assert msg.sender == self, "Invalid" erc20: address = create_from_blueprint(_blueprint, self, _name, _symbol, _decimals, code_offset=3) log ERC20DeployedEvent(_paloma_denom, erc20, _name, _symbol, _decimals)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"ValsetUpdated","inputs":[{"name":"checkpoint","type":"bytes32","indexed":false},{"name":"valset_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"LogicCallEvent","inputs":[{"name":"logic_contract_address","type":"address","indexed":false},{"name":"payload","type":"bytes","indexed":false},{"name":"message_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"SendToPalomaEvent","inputs":[{"name":"token","type":"address","indexed":false},{"name":"sender","type":"address","indexed":false},{"name":"receiver","type":"string","indexed":false},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"BatchSendEvent","inputs":[{"name":"token","type":"address","indexed":false},{"name":"message_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ERC20DeployedEvent","inputs":[{"name":"paloma_denom","type":"string","indexed":false},{"name":"token_contract","type":"address","indexed":false},{"name":"name","type":"string","indexed":false},{"name":"symbol","type":"string","indexed":false},{"name":"decimals","type":"uint8","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"compass_id","type":"bytes32"},{"name":"valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]}],"outputs":[]},{"stateMutability":"pure","type":"function","name":"compass_id","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"nonpayable","type":"function","name":"update_valset","inputs":[{"name":"consensus","type":"tuple","components":[{"name":"valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]},{"name":"signatures","type":"tuple[]","components":[{"name":"v","type":"uint256"},{"name":"r","type":"uint256"},{"name":"s","type":"uint256"}]}]},{"name":"new_valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"submit_logic_call","inputs":[{"name":"consensus","type":"tuple","components":[{"name":"valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]},{"name":"signatures","type":"tuple[]","components":[{"name":"v","type":"uint256"},{"name":"r","type":"uint256"},{"name":"s","type":"uint256"}]}]},{"name":"args","type":"tuple","components":[{"name":"logic_contract_address","type":"address"},{"name":"payload","type":"bytes"}]},{"name":"message_id","type":"uint256"},{"name":"deadline","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"send_token_to_paloma","inputs":[{"name":"token","type":"address"},{"name":"receiver","type":"string"},{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"submit_batch","inputs":[{"name":"consensus","type":"tuple","components":[{"name":"valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]},{"name":"signatures","type":"tuple[]","components":[{"name":"v","type":"uint256"},{"name":"r","type":"uint256"},{"name":"s","type":"uint256"}]}]},{"name":"token","type":"address"},{"name":"args","type":"tuple","components":[{"name":"receiver","type":"address[]"},{"name":"amount","type":"uint256[]"}]},{"name":"message_id","type":"uint256"},{"name":"deadline","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_erc20","inputs":[{"name":"_paloma_denom","type":"string"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint8"},{"name":"_blueprint","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"last_checkpoint","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"last_valset_id","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"message_id_used","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]}]
Deployed Bytecode
0x6003361161000c57611514565b60003560e01c34611a46576384d38f2c811861003e5760043610611a46576020611a5860003960005160405260206040f35b63eadf4af78118610518576101e43610611a46576004356004018035810180358101610140813511611a465780358061cb40526000816101408111611a465780156100ab57905b8060051b6020850101358060a01c611a46578160051b61cb600152600101818118610085575b5050505060208101358101610140813511611a465780358061f36052602082018160051b808261f3803750505050604081013562011b80525060208101358101610140813511611a465780358062011ba0526020820160608202808262011bc037505050505060243560040180358101610140813511611a4657803580620193c0526000816101408111611a4657801561016857905b8060051b6020850101358060a01c611a46578160051b620193e00152600101818118610141575b5050505060208101358101610140813511611a46578035806201bbe052602082018160051b80826201bc00375050505060408101356201e400525062011b80516201e40051116102215760116201e420527f496e76616c69642056616c7365742049440000000000000000000000000000006201e440526201e420506201e42051806201e44001601f826000031636823750506308c379a06201e3e05260206201e40052601f19601f6201e4205101166044016201e3fcfd5b6040366201e420376000620193c0516101408111611a465780156102b857905b8060051b620193e001516201e460526201e420516201e440516201bbe051811015611a465760051b6201bc000151808201828110611a4657905090506201e4205263aaaaaaaa6201e4205110610296576102b8565b6201e4405160018101818110611a465790506201e44052600101818118610241575b505063aaaaaaaa6201e4205110156103395760126201e460527f496e73756666696369656e7420506f77657200000000000000000000000000006201e480526201e460506201e46051806201e48001601f826000031636823750506308c379a06201e4205260206201e44052601f19601f6201e4605101166044016201e43cfd5b61cb4051806040528060051b8060608261cb6060045afa50505061f3605180612860528060051b806128808261f38060045afa50505062011b8051615080526103846201e46061178d565b6201e4605160005418156104015760146201e480527f496e636f727265637420436865636b706f696e740000000000000000000000006201e4a0526201e480506201e48051806201e4a001601f826000031636823750506308c379a06201e4405260206201e46052601f19601f6201e4805101166044016201e45cfd5b620193c051806040528060051b80606082620193e060045afa5050506201bbe05180612860528060051b80612880826201bc0060045afa5050506201e40051615080526104506201e48061178d565b6201e480516201e4605261cb4051806101a0528060051b806101c08261cb6060045afa50505061f36051806129c0528060051b806129e08261f38060045afa50505062011b80516151e05262011ba051806152005260608102806152208262011bc060045afa5050506201e4605161ca20526104ca6115bd565b6201e460516000556201e400516001557f09d40458cf931745f8d532ef13fa9c74bfb7fe0edcee88e0a677b0cbef88f0f96201e460516201e480526201e400516201e4a05260406201e480a1005b631029ae6f81186109cb576101e43610611a46576004356004018035810180358101610140813511611a465780358061cb40526000816101408111611a4657801561058557905b8060051b6020850101358060a01c611a46578160051b61cb60015260010181811861055f575b5050505060208101358101610140813511611a465780358061f36052602082018160051b808261f3803750505050604081013562011b80525060208101358101610140813511611a465780358062011ba0526020820160608202808262011bc037505050505060243560040180358060a01c611a4657620193c05260208101358101615000813511611a4657803580620193e0526020820181816201940037505050506064354211156106a15760076201e400527f54696d656f7574000000000000000000000000000000000000000000000000006201e420526201e400506201e40051806201e42001601f826000031636823750506308c379a06201e3c05260206201e3e052601f19601f6201e4005101166044016201e3dcfd5b60026044356020526000526040600020541561072657600f6201e400527f55736564204d6573736167655f494400000000000000000000000000000000006201e420526201e400506201e40051806201e42001601f826000031636823750506308c379a06201e3c05260206201e3e052601f19601f6201e4005101166044016201e3dcfd5b6001600260443560205260005260406000205561cb4051806040528060051b8060608261cb6060045afa50505061f3605180612860528060051b806128808261f38060045afa50505062011b8051615080526107846201e40061178d565b6201e4005160005418156108015760146201e420527f496e636f727265637420436865636b706f696e740000000000000000000000006201e440526201e420506201e42051806201e44001601f826000031636823750506308c379a06201e3e05260206201e40052601f19601f6201e4205101166044016201e3fcfd5b63980721b26201e4245260046080806201e44452806201e444016040620193c0518252806020830152808201620193e051808252602082018181836201940060045afa5050508051806020830101601f82600003163682375050601f19601f825160200101169050810190509050810190506044356201e464526020611a586000396000516201e484526064356201e4a452016201e420526201e4208051602082012090506201e4005261cb4051806101a0528060051b806101c08261cb6060045afa50505061f36051806129c0528060051b806129e08261f38060045afa50505062011b80516151e05262011ba051806152005260608102806152208262011bc060045afa5050506201e4005161ca205261091b6115bd565b620193e0600060008251602084016000620193c0515af19050610943573d600060003e3d6000fd5b7f0d2bd340033bb64fd086788e6685b480a9bf10b98d63e9b8073eb5d0bd6c6ee96060620193c0516201e42052806201e44052806201e42001620193e051808252602082018181836201940060045afa5050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506044356201e460526201e420a1005b63b39dcd5e8118610bb25760843610611a46576004358060a01c611a46576101e0526024356004016040813511611a465780358061020052602082018181610220375050506101e0516370a0823161028052306102a0526020610280602461029c845afa610a3e573d600060003e3d6000fd5b60203d10611a4657610280905051610260526101e051604052336060523060805260443560a052610a6d611877565b6101e0516370a0823161028052306102a0526020610280602461029c845afa610a9b573d600060003e3d6000fd5b60203d10611a465761028090505161026051808203828111611a4657905090506102605261026051610b2d57600d610280527f5a65726f205472616e73666572000000000000000000000000000000000000006102a0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b7f75a16dbdc936366f3b5b1a7aaabc5d7b28dcf94ce2eb5b3efbe0bce0da7ee66960806101e05161028052336102a052806102c0528061028001610200518082526020820181818361022060045afa5050508051806020830101601f82600003163682375050601f19601f825160200101169050810190506044356102e052610280a1005b630ffc0bdb81186111b2576102243610611a46576004356004018035810180358101610140813511611a465780358061cb40526000816101408111611a46578015610c1f57905b8060051b6020850101358060a01c611a46578160051b61cb600152600101818118610bf9575b5050505060208101358101610140813511611a465780358061f36052602082018160051b808261f3803750505050604081013562011b80525060208101358101610140813511611a465780358062011ba0526020820160608202808262011bc03750505050506024358060a01c611a4657620193c052604435600401803581016040813511611a4657803580620193e05260008160408111611a46578015610cea57905b8060051b6020850101358060a01c611a46578160051b620194000152600101818118610cc3575b50505050602081013581016040813511611a465780358062019c0052602082018160051b808262019c20375050505050608435421115610d935760076201a420527f54696d656f7574000000000000000000000000000000000000000000000000006201a440526201a420506201a42051806201a44001601f826000031636823750506308c379a06201a3e05260206201a40052601f19601f6201a4205101166044016201a3fcfd5b600260643560205260005260406000205415610e1857600f6201a420527f55736564204d6573736167655f494400000000000000000000000000000000006201a440526201a420506201a42051806201a44001601f826000031636823750506308c379a06201a3e05260206201a40052601f19601f6201a4205101166044016201a3fcfd5b620193e0516201a4205262019c00516201a420511815610ea15760106201a440527f556e6d61746368656420506172616d73000000000000000000000000000000006201a460526201a440506201a44051806201a46001601f826000031636823750506308c379a06201a4005260206201a42052601f19601f6201a4405101166044016201a41cfd5b6001600260643560205260005260406000205561cb4051806040528060051b8060608261cb6060045afa50505061f3605180612860528060051b806128808261f38060045afa50505062011b805161508052610eff6201a44061178d565b6201a440516000541815610f7c5760146201a460527f496e636f727265637420436865636b706f696e740000000000000000000000006201a480526201a460506201a46051806201a48001601f826000031636823750506308c379a06201a4205260206201a44052601f19601f6201a4605101166044016201a43cfd5b63ecaa10b96201a46452600460a0620193c0516201a48452806201a4a452806201a4840160408082528082016000620193e0518083528060051b60008260408111611a46578015610fe857905b8060051b6201940001518160051b602088010152600101818118610fc9575b50508201602001915050905081019050806020830152808201600062019c00518083528060051b60008260408111611a4657801561104157905b8060051b62019c2001518160051b602088010152600101818118611022575b505082016020019150509050810190509050810190506064356201a4c4526020611a586000396000516201a4e4526084356201a50452016201a460526201a4608051602082012090506201a4405261cb4051806101a0528060051b806101c08261cb6060045afa50505061f36051806129c0528060051b806129e08261f38060045afa50505062011b80516151e05262011ba051806152005260608102806152208262011bc060045afa5050506201a4405161ca20526110ff6115bd565b60006040905b806201a460526201a420516201a460511061111f57611174565b620193c0516040526201a46051620193e051811015611a465760051b6201940001516060526201a4605162019c0051811015611a465760051b62019c200151608052611169611966565b600101818118611105575b50507fba199fb06e908b6eca45bc6e460f07d1888e4a0606361da80e679eac61d11103620193c0516201a460526064356201a4805260406201a460a1005b6308a92ad781186114a7576101043610611a46576004356004016040813511611a46578035806040526020820181816060375050506024356004016040813511611a465780358060a05260208201818160c0375050506044356004016020813511611a465780358061010052602082018035610120525050506064358060081c611a4657610140526084358060a01c611a465761016052303318156112b7576007610180527f496e76616c6964000000000000000000000000000000000000000000000000006101a0526101805061018051806101a001601f826000031636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b610160516080306101a0526101a0516101e0528061020052806101e00160a0518082526020820181818360c060045afa5050508051806020830101601f82600003163682375050601f19601f825160200101169050810190508061022052806101e001610100518082526020820161012051815250508051806020830101601f82600003163682375050601f19601f82516020010116905081019050610140516101c0526101c051610240526003823b035960018212611a465781600382863c8181018381856101e060045afa5050828201816000f08015611a46579050905090509050610180527f7144f66490771d357f3d6d385605288e1579754e5555f2e01114a2945f394e5b60a0806101a052806101a00160405180825260208201818183606060045afa5050508051806020830101601f82600003163682375050601f19601f82516020010116905081019050610180516101c052806101e052806101a00160a0518082526020820181818360c060045afa5050508051806020830101601f82600003163682375050601f19601f825160200101169050810190508061020052806101a001610100518082526020820161012051815250508051806020830101601f82600003163682375050601f19601f8251602001011690508101905061014051610220526101a0a1005b63a9a4a98381186114c65760043610611a465760005460405260206040f35b634da6ecc981186114e55760043610611a465760015460405260206040f35b6338d6172d81186115125760243610611a4657600260043560205260005260406000205460405260206040f35b505b60006000fd5b6000601c610100527f19457468657265756d205369676e6564204d6573736167653a0a333200000000610120526101008051602082018361016001815181525050808301925050506060518161016001526020810190508061014052610140905080516020820120905060e05260e051610100526080516101205260a0516101405260c0516101605260206000608061010060015afa5060005160405114815250565b60403661ca40376000615200516101408111611a4657801561171457905b6060810261522001805161ca8052602081015161caa052604081015161cac0525061ca8051156116f45761ca40516101a051811015611a465760051b6101c0015160405261ca205160605261ca805160805261caa05160a05261cac05160c05261164661cae061151a565b61cae0516116b457601161cb00527f496e76616c6964205369676e617475726500000000000000000000000000000061cb205261cb005061cb00518061cb2001601f826000031636823750506308c379a061cac052602061cae052601f19601f61cb0051011660440161cadcfd5b61ca605161ca40516129c051811015611a465760051b6129e00151808201828110611a46579050905061ca605263aaaaaaaa61ca6051106116f457611714565b61ca405160018101818110611a4657905061ca40526001018181186115db575b505063aaaaaaaa61ca6051101561178b57601261ca80527f496e73756666696369656e7420506f776572000000000000000000000000000061caa05261ca805061ca80518061caa001601f826000031636823750506308c379a061ca4052602061ca6052601f19601f61ca8051011660440161ca5cfd5b565b63299018c26150a45260046080806150c452806150c40160006040518083528060051b6000826101408111611a465780156117e157905b8060051b606001518160051b6020880101526001018181186117c4575b50508201602001915050905081019050806150e452806150c4016000612860518083528060051b6000826101408111611a4657801561183a57905b8060051b61288001518160051b60208801015260010181811861181c575b5050820160200191505090508101905061508051615104526020611a5860003960005161512452016150a0526150a0805160208201209050815250565b6323b872dd610104526004606051610124526080516101445260a05161016452606001610100526101005060206101c06101005161012060006040515af16118c4573d600060003e3d6000fd5b3d602081183d60201002186101a0526101a080518060c05260208201805160e05250505060c051156119645760e05160c05160200360031b1c611964576013610100527f5472616e7366657246726f6d206661696c6564000000000000000000000000006101205261010050610100518061012001601f826000031636823750506308c379a060c052602060e052601f19601f61010051011660440160dcfd5b565b63a9059cbb60e4526004606051610104526080516101245260400160e05260e050602061018060e05161010060006040515af16119a8573d600060003e3d6000fd5b3d602081183d60201002186101605261016080518060a05260208201805160c05250505060a05115611a445760c05160a05160200360031b1c611a4457601360e0527f5472616e7366657246726f6d206661696c6564000000000000000000000000006101005260e05060e0518061010001601f826000031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd5b565b600080fda165767970657283000307000b3435363735393500000000000000000000000000000000000000000000000000
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.