More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,034 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Submit_logic_cal... | 21524772 | 5 days ago | IN | 0 ETH | 0.00142893 | ||||
Update_valset | 21524770 | 5 days ago | IN | 0 ETH | 0.00104687 | ||||
Submit_logic_cal... | 21500124 | 8 days ago | IN | 0 ETH | 0.00106578 | ||||
Update_valset | 21500083 | 8 days ago | IN | 0 ETH | 0.00069325 | ||||
Submit_logic_cal... | 21471828 | 12 days ago | IN | 0 ETH | 0.00157218 | ||||
Update_valset | 21471826 | 12 days ago | IN | 0 ETH | 0.00126148 | ||||
Deposit | 21437799 | 17 days ago | IN | 0.1 ETH | 0.00134815 | ||||
Update_valset | 21437190 | 17 days ago | IN | 0 ETH | 0.00301978 | ||||
Update_valset | 21436958 | 17 days ago | IN | 0 ETH | 0.0022843 | ||||
Update_valset | 21436892 | 17 days ago | IN | 0 ETH | 0.00249156 | ||||
Update_valset | 21436682 | 17 days ago | IN | 0 ETH | 0.00201674 | ||||
Update_valset | 21436576 | 17 days ago | IN | 0 ETH | 0.00210465 | ||||
Update_valset | 21436501 | 17 days ago | IN | 0 ETH | 0.00195776 | ||||
Update_valset | 21436289 | 17 days ago | IN | 0 ETH | 0.00247054 | ||||
Update_valset | 21436061 | 17 days ago | IN | 0 ETH | 0.0031454 | ||||
Update_valset | 21436023 | 17 days ago | IN | 0 ETH | 0.00297468 | ||||
Update_valset | 21435971 | 17 days ago | IN | 0 ETH | 0.00336872 | ||||
Update_valset | 21435833 | 17 days ago | IN | 0 ETH | 0.00226371 | ||||
Update_valset | 21435747 | 17 days ago | IN | 0 ETH | 0.00184208 | ||||
Update_valset | 21435714 | 17 days ago | IN | 0 ETH | 0.00164511 | ||||
Update_valset | 21434724 | 17 days ago | IN | 0 ETH | 0.00186665 | ||||
Update_valset | 21434674 | 17 days ago | IN | 0 ETH | 0.00187184 | ||||
Update_valset | 21434346 | 17 days ago | IN | 0 ETH | 0.00202321 | ||||
Update_valset | 21433480 | 17 days ago | IN | 0 ETH | 0.00422485 | ||||
Update_valset | 21433418 | 17 days ago | IN | 0 ETH | 0.00221216 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21437799 | 17 days ago | 0.1 ETH | ||||
21287659 | 38 days ago | 0.1 ETH | ||||
21280902 | 39 days ago | 0.1 ETH | ||||
21195516 | 51 days ago | Contract Creation | 0 ETH | |||
21195270 | 51 days ago | 0.1 ETH | ||||
21193794 | 51 days ago | 0.1 ETH | ||||
21144753 | 58 days ago | 0.1 ETH | ||||
21080296 | 67 days ago | 0.1 ETH | ||||
21071616 | 68 days ago | 0.1 ETH | ||||
21066715 | 69 days ago | 0.1 ETH | ||||
21044704 | 72 days ago | 0.1 ETH | ||||
21030150 | 74 days ago | 0.1 ETH | ||||
21019415 | 75 days ago | Contract Creation | 0 ETH | |||
21014596 | 76 days ago | 0.05 ETH | ||||
20979500 | 81 days ago | 0.1 ETH | ||||
20936882 | 87 days ago | 0.1 ETH | ||||
20930188 | 88 days ago | 0.1 ETH | ||||
20875883 | 95 days ago | 0.1 ETH | ||||
20822309 | 103 days ago | 0.1 ETH | ||||
20821992 | 103 days ago | 0.2 ETH | ||||
20814032 | 104 days ago | 0.1 ETH | ||||
20792380 | 107 days ago | 0.1 ETH | ||||
20778809 | 109 days ago | 0.04 ETH | ||||
20777863 | 109 days ago | 0.05 ETH | ||||
20692681 | 121 days ago | 0.2 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Compass
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 Compass @license MIT @author Volume.Finance @notice v2.0.0 """ MAX_VALIDATORS: constant(uint256) = 200 MAX_PAYLOAD: constant(uint256) = 10240 MAX_EVENT: constant(uint256) = 1024 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: public(immutable(bytes32)) interface ERC20: def balanceOf(_owner: address) -> uint256: view def transfer(_to: address, _value: uint256) -> bool: nonpayable def transferFrom(_from: address, _to: address, _value: uint256) -> bool: nonpayable interface FeeManager: def deposit(depositor_paloma_address: bytes32): payable def withdraw(receiver: address, amount:uint256, dex: address, payload: Bytes[1028], min_grain: uint256): nonpayable def transfer_fees(fee_args: FeeArgs, relayer: address): nonpayable def security_fee_topup(): payable def reserve_security_fee(sender: address, gas_fee_amount: uint256): nonpayable def bridge_community_fee_to_paloma(amount: uint256, dex: address, payload: Bytes[1028], min_grain: uint256) -> (address, uint256): nonpayable def update_compass(_new_compass: address): nonpayable interface Compass: def FEE_MANAGER() -> address: view interface Deployer: def deployFromBytecode(_bytecode: Bytes[24576]) -> address: nonpayable 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] struct FeeArgs: relayer_fee: uint256 # Total amount to alot for relayer community_fee: uint256 # Total amount to alot for community wallet security_fee: uint256 # Total amount to alot for security wallet fee_payer_paloma_address: bytes32 # Paloma address covering the fees event ValsetUpdated: checkpoint: bytes32 valset_id: uint256 event_id: uint256 event LogicCallEvent: logic_contract_address: address payload: Bytes[MAX_PAYLOAD] message_id: uint256 event_id: uint256 event SendToPalomaEvent: token: address sender: address receiver: bytes32 amount: uint256 nonce: uint256 event_id: uint256 event BatchSendEvent: token: address batch_id: uint256 nonce: uint256 event_id: uint256 event ERC20DeployedEvent: paloma_denom: String[64] token_contract: address name: String[64] symbol: String[32] decimals: uint8 event_id: uint256 event FundsDepositedEvent: depositor_paloma_address: bytes32 sender: address amount: uint256 event FundsWithdrawnEvent: receiver: address amount: uint256 event UpdateCompass: contract_address: address payload: Bytes[MAX_PAYLOAD] event_id: uint256 event NodeSaleEvent: contract_address: address buyer: address paloma: bytes32 node_count: uint256 grain_amount: uint256 nonce: uint256 event_id: uint256 event ContractDeployed: child: address deployer: address event_id: uint256 last_checkpoint: public(bytes32) last_valset_id: public(uint256) last_event_id: public(uint256) last_gravity_nonce: public(uint256) last_batch_id: public(HashMap[address, uint256]) message_id_used: public(HashMap[uint256, bool]) slc_switch: public(bool) FEE_MANAGER: public(immutable(address)) # compass_id: unique identifier for compass instance # valset: initial validator set @external def __init__(_compass_id: bytes32, _event_id: uint256, _gravity_nonce:uint256, valset: Valset, fee_manager: address): 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 = unsafe_add(i, 1) self.power_check(cumulative_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 self.last_event_id = _event_id self.last_gravity_nonce = _gravity_nonce FEE_MANAGER = fee_manager log ValsetUpdated(new_checkpoint, valset.valset_id, _event_id) # check if cumulated power is enough @internal def power_check(cumulative_power: uint256): assert cumulative_power >= POWER_THRESHOLD, "Insufficient Power" # 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 = unsafe_add(i, 1) self.power_check(cumulative_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)"))) # check if the gas estimate is too big @internal def gas_check(gas_estimate: uint256): assert msg.gas >= gas_estimate, "Insufficient funds to cover gas estimate" @internal def deadline_check(deadline: uint256): assert block.timestamp <= deadline, "Timeout" @internal def reserve_security_fee(relayer: address, gas_estimate: uint256): self.gas_check(gas_estimate) FeeManager(FEE_MANAGER).reserve_security_fee(relayer, gas_estimate) @internal def check_checkpoint(checkpoint: bytes32): assert self.last_checkpoint == checkpoint, "Incorrect Checkpoint" # 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, relayer: address, gas_estimate: uint256): self.reserve_security_fee(relayer, gas_estimate) # 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 = unsafe_add(i, 1) self.power_check(cumulative_power) # check if the supplied current validator set matches the saved checkpoint self.check_checkpoint(self.make_checkpoint(consensus.valset)) # calculate the new checkpoint new_checkpoint: bytes32 = self.make_checkpoint(new_valset) args_hash: bytes32 = keccak256(_abi_encode(new_checkpoint, relayer, gas_estimate, method_id=method_id("update_valset(bytes32,address,uint256)"))) # check if enough validators signed new validator set (new checkpoint) self.check_validator_signatures(consensus, args_hash) self.last_checkpoint = new_checkpoint self.last_valset_id = new_valset.valset_id event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = event_id log ValsetUpdated(new_checkpoint, new_valset.valset_id, event_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, fee_args: FeeArgs, message_id: uint256, deadline: uint256, relayer: address): FeeManager(FEE_MANAGER).transfer_fees(fee_args, relayer) self.deadline_check(deadline) 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 self.check_checkpoint(self.make_checkpoint(consensus.valset)) # signing data is keccak256 hash of abi_encoded logic_call(args, fee_args, message_id, compass_id, deadline, relayer) args_hash: bytes32 = keccak256(_abi_encode(args, fee_args, message_id, compass_id, deadline, relayer, method_id=method_id("logic_call((address,bytes),(uint256,uint256,uint256,bytes32),uint256,bytes32,uint256,address)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) # make call to logic contract self.slc_switch = True raw_call(args.logic_contract_address, args.payload) self.slc_switch = False event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = event_id log LogicCallEvent(args.logic_contract_address, args.payload, message_id, event_id) @internal def _send_token_to_paloma(token: address, receiver: bytes32, amount: uint256): _nonce: uint256 = unsafe_add(self.last_gravity_nonce, 1) self.last_gravity_nonce = _nonce _event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = _event_id log SendToPalomaEvent(token, msg.sender, receiver, amount, _nonce, _event_id) @external def send_token_to_paloma(token: address, receiver: bytes32, amount: uint256): _balance: uint256 = ERC20(token).balanceOf(self) assert ERC20(token).transferFrom(msg.sender, self, amount, default_return_value=True), "failed TransferFrom" _balance = ERC20(token).balanceOf(self) - _balance self._send_token_to_paloma(token, receiver, _balance) @external def submit_batch(consensus: Consensus, token: address, args: TokenSendArgs, batch_id: uint256, deadline: uint256, relayer: address, gas_estimate: uint256): self.reserve_security_fee(relayer, gas_estimate) self.deadline_check(deadline) assert self.last_batch_id[token] < batch_id, "Wrong batch id" length: uint256 = len(args.receiver) assert length == len(args.amount), "Unmatched Params" # check if the supplied current validator set matches the saved checkpoint self.check_checkpoint(self.make_checkpoint(consensus.valset)) # signing data is keccak256 hash of abi_encoded batch_call(args, batch_id, compass_id, deadline, relayer, gas_estimate) args_hash: bytes32 = keccak256(_abi_encode(token, args, batch_id, compass_id, deadline, relayer, gas_estimate, method_id=method_id("batch_call(address,(address[],uint256[]),uint256,bytes32,uint256,address,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 assert ERC20(token).transfer(args.receiver[i], args.amount[i], default_return_value=True), "failed transfer" _nonce: uint256 = unsafe_add(self.last_gravity_nonce, 1) self.last_gravity_nonce = _nonce _event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = _event_id self.last_batch_id[token] = batch_id log BatchSendEvent(token, batch_id, _nonce, _event_id) @external def emit_nodesale_event(buyer: address, paloma: bytes32, node_count: uint256, grain_amount: uint256): event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = event_id _nonce: uint256 = unsafe_add(self.last_gravity_nonce, 1) self.last_gravity_nonce = _nonce log NodeSaleEvent(msg.sender, buyer, paloma, node_count, grain_amount, _nonce, event_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) event_id: uint256 = unsafe_add(self.last_event_id, 1) self.last_event_id = event_id log ERC20DeployedEvent(_paloma_denom, erc20, _name, _symbol, _decimals, event_id) @external @view def arbitrary_view(contract_address: address, payload: Bytes[1024]) -> Bytes[1024]: return raw_call(contract_address, payload, is_static_call=True, max_outsize=1024) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # F E E S # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Deposit some balance on the contract to be used when sending messages from Paloma. # depositor_paloma_address: paloma address to which to attribute the sent amount # amount: amount of COIN to register with compass. Overpaid balance will be sent back. @external @payable @nonreentrant('lock') def deposit(depositor_paloma_address: bytes32, amount: uint256): if msg.value > amount: send(msg.sender, unsafe_sub(msg.value, amount)) else: assert amount == msg.value, "Insufficient deposit" FeeManager(FEE_MANAGER).deposit(depositor_paloma_address, value=amount) log FundsDepositedEvent(depositor_paloma_address, msg.sender, amount) # Withdraw ramped up claimable rewards from compass. Withdrawals will be swapped and # reimbursed in GRAIN. # amount: the amount of COIN to withdraw. # dex: address of the DEX to use for exchanging the token # payload: the function payload to exchange ETH to grain for the dex # min_grain: expected grain amount getting from dex to prevent front-running(high slippage / sandwich attack) @external def withdraw(amount:uint256, dex: address, payload: Bytes[1028], min_grain: uint256): FeeManager(FEE_MANAGER).withdraw(msg.sender, amount, dex, payload, min_grain) log FundsWithdrawnEvent(msg.sender, amount) # Top up the security funds on the contract used to reimburse all infrastructure # related messages. All sent value will be consumed. @external @payable @nonreentrant('lock') def security_fee_topup(amount: uint256): if msg.value > amount: send(msg.sender, unsafe_sub(msg.value, amount)) else: assert amount == msg.value, "Insufficient deposit" # Make sure we check against overflow here FeeManager(FEE_MANAGER).security_fee_topup(value=amount) # Bridge the current balance of the community funds back to Paloma # consensus: current validator set and signatures # message_id: incremental unused message ID # deadline: message deadline # receiver: Paloma address to receive the funds # relayer: relayer address # gas_estimate: gas amount estimation # amount: Ete amount to swap and bridge # dex: address of the DEX to use for exchanging the Eth # payload: the function payload to exchange ETH to grain for the dex # min_grain: expected grain amount getting from dex to prevent front-running(high slippage / sandwich attack) @external @nonreentrant('lock') def bridge_community_tax_to_paloma(consensus: Consensus, message_id: uint256, deadline: uint256, receiver: bytes32, relayer: address, gas_estimate: uint256, amount:uint256, dex: address, payload: Bytes[1028], min_grain: uint256): self.reserve_security_fee(relayer, gas_estimate) self.deadline_check(deadline) 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 self.check_checkpoint(self.make_checkpoint(consensus.valset)) # signing data is keccak256 hash of abi_encoded logic_call(args, message_id, compass_id, deadline) args_hash: bytes32 = keccak256(_abi_encode(message_id, deadline, receiver, relayer, gas_estimate, amount, dex, payload, min_grain, method_id=method_id("bridge_community_tax_to_paloma(uint256,uint256,byte32,address,uint256,uint256,address,bytes,uint256)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) grain: address = empty(address) grain_balance: uint256 = 0 grain, grain_balance = FeeManager(FEE_MANAGER).bridge_community_fee_to_paloma(amount, dex, payload, min_grain) self._send_token_to_paloma(grain, receiver, grain_balance) # This function is to update compass address in contracts. After running this function, This Compass-evm can't be used anymore. # consensus: current validator set and signatures # update_compass_args: array of LogicCallArgs to update compass address in contracts # deadline: message deadline # gas_estimate: gas amount estimation # relayer: relayer address @external def compass_update_batch(consensus: Consensus, update_compass_args: DynArray[LogicCallArgs, MAX_BATCH], deadline: uint256, gas_estimate: uint256, relayer: address): self.reserve_security_fee(relayer, gas_estimate) self.deadline_check(deadline) # check if the supplied current validator set matches the saved checkpoint self.check_checkpoint(self.make_checkpoint(consensus.valset)) # signing data is keccak256 hash of abi_encoded logic_call(args, message_id, compass_id, deadline) args_hash: bytes32 = keccak256(_abi_encode(update_compass_args, deadline, relayer, gas_estimate, method_id=method_id("compass_update_batch((address,bytes)[],uint256,address,uint256)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) event_id: uint256 = unsafe_add(self.last_event_id, 1) for i in range(MAX_BATCH): if i >= len(update_compass_args): break raw_call(update_compass_args[i].logic_contract_address, update_compass_args[i].payload) event_id = unsafe_add(event_id, 1) log UpdateCompass(update_compass_args[0].logic_contract_address, update_compass_args[0].payload, event_id) self.last_event_id = event_id @external def deploy_contract(consensus: Consensus, _deployer: address, _bytecode: Bytes[24576], fee_args: FeeArgs, message_id: uint256, deadline: uint256, relayer: address): FeeManager(FEE_MANAGER).transfer_fees(fee_args, relayer) self.deadline_check(deadline) 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 self.check_checkpoint(self.make_checkpoint(consensus.valset)) # signing data is keccak256 hash of abi_encoded deploy_contract(bytecode, fee_args, message_id, compass_id, deadline, relayer) args_hash: bytes32 = keccak256(_abi_encode(_deployer, _bytecode, fee_args, message_id, compass_id, deadline, relayer, method_id=method_id("deploy_contract(address,bytes,(uint256,uint256,uint256,bytes32),uint256,bytes32,uint256,address)"))) # check if enough validators signed args_hash self.check_validator_signatures(consensus, args_hash) # make call to logic contract event_id: uint256 = unsafe_add(self.last_event_id, 1) child: address = Deployer(_deployer).deployFromBytecode(_bytecode) self.last_event_id = event_id log ContractDeployed(child, _deployer, event_id)
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},{"name":"event_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},{"name":"event_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":"bytes32","indexed":false},{"name":"amount","type":"uint256","indexed":false},{"name":"nonce","type":"uint256","indexed":false},{"name":"event_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"BatchSendEvent","inputs":[{"name":"token","type":"address","indexed":false},{"name":"batch_id","type":"uint256","indexed":false},{"name":"nonce","type":"uint256","indexed":false},{"name":"event_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},{"name":"event_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"FundsDepositedEvent","inputs":[{"name":"depositor_paloma_address","type":"bytes32","indexed":false},{"name":"sender","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"FundsWithdrawnEvent","inputs":[{"name":"receiver","type":"address","indexed":false},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateCompass","inputs":[{"name":"contract_address","type":"address","indexed":false},{"name":"payload","type":"bytes","indexed":false},{"name":"event_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"NodeSaleEvent","inputs":[{"name":"contract_address","type":"address","indexed":false},{"name":"buyer","type":"address","indexed":false},{"name":"paloma","type":"bytes32","indexed":false},{"name":"node_count","type":"uint256","indexed":false},{"name":"grain_amount","type":"uint256","indexed":false},{"name":"nonce","type":"uint256","indexed":false},{"name":"event_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"ContractDeployed","inputs":[{"name":"child","type":"address","indexed":false},{"name":"deployer","type":"address","indexed":false},{"name":"event_id","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_compass_id","type":"bytes32"},{"name":"_event_id","type":"uint256"},{"name":"_gravity_nonce","type":"uint256"},{"name":"valset","type":"tuple","components":[{"name":"validators","type":"address[]"},{"name":"powers","type":"uint256[]"},{"name":"valset_id","type":"uint256"}]},{"name":"fee_manager","type":"address"}],"outputs":[]},{"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"}]},{"name":"relayer","type":"address"},{"name":"gas_estimate","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":"fee_args","type":"tuple","components":[{"name":"relayer_fee","type":"uint256"},{"name":"community_fee","type":"uint256"},{"name":"security_fee","type":"uint256"},{"name":"fee_payer_paloma_address","type":"bytes32"}]},{"name":"message_id","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"relayer","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"send_token_to_paloma","inputs":[{"name":"token","type":"address"},{"name":"receiver","type":"bytes32"},{"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":"batch_id","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"relayer","type":"address"},{"name":"gas_estimate","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"emit_nodesale_event","inputs":[{"name":"buyer","type":"address"},{"name":"paloma","type":"bytes32"},{"name":"node_count","type":"uint256"},{"name":"grain_amount","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":"arbitrary_view","inputs":[{"name":"contract_address","type":"address"},{"name":"payload","type":"bytes"}],"outputs":[{"name":"","type":"bytes"}]},{"stateMutability":"payable","type":"function","name":"deposit","inputs":[{"name":"depositor_paloma_address","type":"bytes32"},{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"withdraw","inputs":[{"name":"amount","type":"uint256"},{"name":"dex","type":"address"},{"name":"payload","type":"bytes"},{"name":"min_grain","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"security_fee_topup","inputs":[{"name":"amount","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"bridge_community_tax_to_paloma","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":"message_id","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"receiver","type":"bytes32"},{"name":"relayer","type":"address"},{"name":"gas_estimate","type":"uint256"},{"name":"amount","type":"uint256"},{"name":"dex","type":"address"},{"name":"payload","type":"bytes"},{"name":"min_grain","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"compass_update_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":"update_compass_args","type":"tuple[]","components":[{"name":"logic_contract_address","type":"address"},{"name":"payload","type":"bytes"}]},{"name":"deadline","type":"uint256"},{"name":"gas_estimate","type":"uint256"},{"name":"relayer","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"deploy_contract","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":"_deployer","type":"address"},{"name":"_bytecode","type":"bytes"},{"name":"fee_args","type":"tuple","components":[{"name":"relayer_fee","type":"uint256"},{"name":"community_fee","type":"uint256"},{"name":"security_fee","type":"uint256"},{"name":"fee_payer_paloma_address","type":"bytes32"}]},{"name":"message_id","type":"uint256"},{"name":"deadline","type":"uint256"},{"name":"relayer","type":"address"}],"outputs":[]},{"stateMutability":"view","type":"function","name":"compass_id","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"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":"last_event_id","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"last_gravity_nonce","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"last_batch_id","inputs":[{"name":"arg0","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"message_id_used","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"slc_switch","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"FEE_MANAGER","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
6166a051503461034c576020612c4c5f395f51602081612bec015f395f51810160c8602082612bec015f395f511161034c57602081612bec015f395f515f8160c8811161034c57801561007c57905b60208160051b6020860101612bec015f395f518060a01c61034c578160051b60c0015260010181811861004e575b50508060a0525050602060208201612bec015f395f51810160c8602082612bec015f395f511161034c57602081612bec015f395f5160208160051b018083612bec016119c039505050602060408201612bec016132e039506020612c6c5f395f518060a01c61034c57613300526020612bec5f395f5161668052604036613320375f60a05160c8811161034c57801561017357905b8060051b60c001516133605261332051613340516119c05181101561034c5760051b6119e0015180820182811061034c57905090506133205263aaaaaaaa613320511061015d57610173565b6001613340510161334052600101818118610111575b5050613320516040526101846102e0565b63299018c26133845260046080806133a452806133a4015f60a0518083528060051b5f8260c8811161034c5780156101d557905b8060051b60c001518160051b6020880101526001018181186101b8575b50508201602001915050905081019050806133c452806133a4015f6119c0518083528060051b5f8260c8811161034c57801561022b57905b8060051b6119e001518160051b60208801015260010181811861020d575b505082016020019150509050810190506132e0516133e4526166805161340452016133805261338080516020820120905061336052613360516001556132e0516002556020612c0c5f395f516003556020612c2c5f395f51600455613300516166a0527fb7ca5e46e360950244488bf096bf742a1f63183cf1ee5b3b0c53045b6247bf5b61336051613380526132e0516133a0526020612c0c6133c0396060613380a1612886610350613dfa396128c6613dfaf35b63aaaaaaaa604051101561034a5760126060527f496e73756666696369656e7420506f776572000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b5f80fd5f3560e01c60026015820660011b61285c01601e395f51565b6384d38f2c8118610036573461285857602061288660403960206040f35b6308a92ad781186122e85761010436103417612858576004356004016040813511612858576020813501808260403750506024356004016040813511612858576020813501808260a0375050604435600401602081351161285857602081350180826101003750506064358060081c61285857610140526084358060a01c612858576101605230331815610129576007610180527f496e76616c6964000000000000000000000000000000000000000000000000006101a0526101805061018051806101a001601f825f031636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b610160516080306101a0526101a0516101e0528061020052806101e001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061022052806101e0016101005181526101205160208201528051806020830101601f825f03163682375050601f19601f82516020010116905081019050610140516101c0526101c051610240526003823b0359600182126128585781600382863c8181018381856101e060045afa5050828201815ff08015612858579050905090509050610180526001600354016101a0526101a0516003557f82fe3a4fa49c6382d0c085746698ddbbafe6c2bf61285b19410644b5b26287c760c0806101c052806101c001602060405101808282604060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610180516101e0528061020052806101c001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061022052806101c0016101005181526101205160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905061014051610240526101a051610260526101c0a1006122e8565b63a9a4a98381186122e857346128585760015460405260206040f36122e8565b634da6ecc981186122e857346128585760025460405260206040f36122e8565b6319429b8d81186122e857346128585760035460405260206040f36122e8565b630cb39e9681186122e857346128585760045460405260206040f36122e8565b63fa82256781186122e857602436103417612858576004358060a01c6128585760405260056040516020525f5260405f205460605260206060f36122e8565b6338d6172d8118610405576024361034176128585760066004356020525f5260405f205460405260206040f35b63a0dd2e4981186122e8576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561046c57905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610446575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506084358060a01c6128585761fdc05260e4358060a01c6128585761fde05261010435600401610404813511612858576020813501808261fe003750505f546002146128585760025f5561fdc05160c05260a43560e052610522612730565b6044356040526105306126c8565b60066024356020525f5260405f2054156105b257600f62010240527f55736564204d6573736167655f49440000000000000000000000000000000000620102605262010240506201024051806201026001601f825f031636823750506308c379a0620102005260206201022052601f19601f620102405101166044016201021cfd5b600160066024356020525f5260405f2055613260604061326061804060045afa506105df6201024061255e565b6201024051620102605262010260516040526105f9612781565b636c5023876201026452600461012060606024620102843761fdc051620102e452604060a4620103043761fde0516201034452806201036452806201028401602061fe00510180828261fe0060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610124356201038452016201026052620102608051602082012090506201024052617d806101a0617d8061804060045afa506201024051617f20526106b3612401565b604036620102603760206128a65f395f516306c9624d620102a052608060c435620102c05261fde051620102e05280620103005280620102c001602061fe00510180828261fe0060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610124356201032052506040620102a06104c4620102bc5f855af161074c573d5f5f3e3d5ffd5b60403d1061285857620102a0518060a01c612858576201078052620102c051620107a052620107809050805162010260526020810151620102805250620102605160405260643560605262010280516080526107a66127eb565b60035f55006122e8565b63844105e181186107cc57346128585760075460405260206040f35b63ea26266c81186122e857346128585760206128a660403960206040f36122e8565b63f064acb281186122e8576102243610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561085557905b8060051b6020850101358060a01c612858578160051b618060015260010181811861082f575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024356004018035810160c88135116128585780355f8160c881116128585780156108fa57905b8060051b6020850101358060a01c612858578160051b61fde001526001018181186108d4575b50508061fdc05250506020810135810160c881351161285857803560208160051b018083620116e03750505060408101356201300052506044358060a01c612858576201302052620130205160c05260643560e052610957612730565b61b280516201300051116109d357601162013040527f496e76616c69642056616c736574204944000000000000000000000000000000620130605262013040506201304051806201306001601f825f031636823750506308c379a0620130005260206201302052601f19601f620130405101166044016201301cfd5b60403662013040375f61fdc05160c88111612858578015610a5c57905b8060051b61fde00151620130805262013040516201306051620116e0518110156128585760051b6201170001518082018281106128585790509050620130405263aaaaaaaa620130405110610a4457610a5c565b600162013060510162013060526001018181186109f0575b50506201304051604052610a6e6122ec565b613260604061326061804060045afa50610a8a6201308061255e565b6201308051620130a052620130a051604052610aa4612781565b613260604061326061fdc060045afa50610ac0620130a061255e565b620130a0516201308052639af2b8d2620130c45260046201308051620130e452620130205162013104526064356201312452606001620130c052620130c0805160208201209050620130a052617d806101a0617d8061804060045afa50620130a051617f2052610b2e612401565b62013080516001556201300051600255600160035401620130c052620130c0516003557fb7ca5e46e360950244488bf096bf742a1f63183cf1ee5b3b0c53045b6247bf5b6201308051620130e05262013000516201310052620130c05162013120526060620130e0a1006122e8565b63a930e8dc8118610f5c576102843610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015610c0457905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610bde575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a0375050505060243560040180358060a01c6128585761fdc05260208101358101612800813511612858576020813501808261fde037505050610104358060a01c61285857620126005260206128a65f395f5163ffd8d4aa62012620526080604462012640376201260051620126c052803b15612858575f6201262060a46201263c5f855af1610ce8573d5f5f3e3d5ffd5b5060e435604052610cf76126c8565b600660c4356020525f5260405f205415610d7957600f62012620527f55736564204d6573736167655f49440000000000000000000000000000000000620126405262012620506201262051806201264001601f825f031636823750506308c379a0620125e05260206201260052601f19601f62012620510116604401620125fcfd5b6001600660c4356020525f5260405f2055613260604061326061804060045afa50610da66201262061255e565b620126205162012640526201264051604052610dc0612781565b638046d1e762012644526004610120806201266452806201266401604061fdc0518252806020830152808201602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905090508101905060806044620126843760c43562012704526020612886620127243960e435620127445262012600516201276452016201264052620126408051602082012090506201262052617d806101a0617d8061804060045afa506201262051617f2052610e91612401565b600160075561fdc0515a61fde05f5f8251602084015f8787f1905090509050610ebc573d5f5f3e3d5ffd5b5f600755600160035401620126405262012640516003557f0594b174e11e17c2cb4d0d303c2125060bea4f4da113a4e79edce87465592d00608061fdc0516201266052806201268052806201266001602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905060c435620126a0526201264051620126c05262012660a1005b6308d2b3e381186122e8576101c43610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015610fc357905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610f9d575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a0375050505060243560040160408135116128585780355f816040811161285857801561109057905b612840810261fde0018160051b602086010135602086010180358060a01c612858578252602081013581016128008135116128585760208135016020840181838237505050505060010181811861103e575b50508061fdc05250506084358060a01c61285857620b0de052620b0de05160c05260643560e0526110bf612730565b6044356040526110cd6126c8565b613260604061326061804060045afa506110e9620b0e0061255e565b620b0e0051620b0e2052620b0e2051604052611103612781565b630baeca88620b0e24526004608080620b0e445280620b0e44015f61fdc0518083528060051b5f82604081116128585780156111b157905b828160051b602088010152612840810261fde0018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050905090508301925060010181811861113b575b50508201602001915050905081019050604435620b0e6452620b0de051620b0e8452606435620b0ea45201620b0e2052620b0e20805160208201209050620b0e0052617d806101a0617d8061804060045afa50620b0e0051617f2052611215612401565b600160035401620b0e20525f6040905b80620b0e405261fdc051620b0e40511061123e57611350565b612840620b0e405161fdc051811015612858570261fde001515a612840620b0e405161fdc051811015612858570261fde0016020810190505f5f8251602084015f8787f1905090509050611294573d5f5f3e3d5ffd5b6001620b0e205101620b0e20527fdf4a952cd86acf74a1c5b1d3ff176de7e23a76082d0169d1925e1b32f3cf36e0606061284061fdc05115612858575f0261fde00151620b0e605280620b0e805261284061fdc05115612858575f0261fde00160208101905081620b0e600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050620b0e2051620b0ea052620b0e60a1600101818118611225575b5050620b0e2051600355006122e8565b63f650f6e9811861150557606436103417612858576004358060a01c612858576101a0526101a0516370a082316101e052306102005260206101e060246101fc845afa6113af573d5f5f3e3d5ffd5b60203d10612858576101e09050516101c0526101a0516323b872dd6101e052336102005230610220526044356102405260206101e060646101fc5f855af16113f9573d5f5f3e3d5ffd5b3d61141057803b1561285857600161026052611429565b60203d10612858576101e0518060011c61285857610260525b610260905051611498576013610280527f6661696c6564205472616e7366657246726f6d000000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b6101a0516370a082316101e052306102005260206101e060246101fc845afa6114c3573d5f5f3e3d5ffd5b60203d10612858576101e09050516101c05180820382811161285857905090506101c0526101a0516040526024356060526101c0516080526115036127eb565b005b63048a245d81186122e85760a436103417612858576024358060a01c612858576040526044356004016104048135116128585760208135018082606037505060206128a65f395f5163d07e9fa06104a05260a0336104c0526004356104e052604051610500528061052052806104c001602060605101808282606060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190506064356105405250803b15612858575f6104a06104e46104bc5f855af16115d4573d5f5f3e3d5ffd5b507fbcd7c5f94d828115734ea3d51400c2e1ad93894d1a5099a1808794a924f71f24336104a0526004356104c05260406104a0a1006122e8565b6314fe978f8118611bcd576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561167557905b8060051b6020850101358060a01c612858578160051b618060015260010181811861164f575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024358060a01c6128585761fdc0526044356004018035810160408135116128585780355f816040811161285857801561172957905b8060051b6020850101358060a01c612858578160051b61fe000152600101818118611703575b50508061fde052505060208101358101604081351161285857803560208160051b01808362010600375050505060a4358060a01c6128585762010e205262010e205160c05260c43560e05261177c612730565b60843560405261178a6126c8565b606435600561fdc0516020525f5260405f20541061181057600e62010e40527f57726f6e6720626174636820696400000000000000000000000000000000000062010e605262010e405062010e40518062010e6001601f825f031636823750506308c379a062010e0052602062010e2052601f19601f62010e4051011660440162010e1cfd5b61fde05162010e4052620106005162010e4051181561189757601062010e60527f556e6d61746368656420506172616d730000000000000000000000000000000062010e805262010e605062010e60518062010e8001601f825f031636823750506308c379a062010e2052602062010e4052601f19601f62010e6051011660440162010e3cfd5b613260604061326061804060045afa506118b362010e6061255e565b62010e605162010e805262010e80516040526118cd612781565b636f7be45762010e8452600460e061fdc05162010ea4528062010ec4528062010ea40160408082528082015f61fde0518083528060051b5f826040811161285857801561193457905b8060051b61fe0001518160051b602088010152600101818118611916575b505082016020019150509050810190508060208301528082015f62010600518083528060051b5f826040811161285857801561198b57905b8060051b6201062001518160051b60208801015260010181811861196c575b5050820160200191505090508101905090508101905060643562010ee452602061288662010f043960843562010f245262010e205162010f445260c43562010f64520162010e805262010e8080516020820120905062010e6052617d806101a0617d8061804060045afa5062010e6051617f2052611a07612401565b5f6040905b8062010e805262010e405162010e805110611a2657611b43565b61fdc05163a9059cbb62010ea05262010e805161fde0518110156128585760051b61fe00015162010ec05262010e805162010600518110156128585760051b62010620015162010ee052602062010ea0604462010ebc5f855af1611a8c573d5f5f3e3d5ffd5b3d611aa457803b1561285857600162010f0052611abf565b60203d106128585762010ea0518060011c6128585762010f00525b62010f00905051611b3857600f62010f20527f6661696c6564207472616e73666572000000000000000000000000000000000062010f405262010f205062010f20518062010f4001601f825f031636823750506308c379a062010ee052602062010f0052601f19601f62010f2051011660440162010efcfd5b600101818118611a0c575b505060016004540162010e805262010e805160045560016003540162010ea05262010ea051600355606435600561fdc0516020525f5260405f20557f0ba40544a53f11e70bd7e03a4cfeec841fc3566e81dfbef26f669358a705ad2c61fdc05162010ec05260643562010ee05262010e805162010f005262010ea05162010f2052608062010ec0a1005b63da29a8c681186122e8576023361115612858575f546002146128585760025f556004353411611c6057346004351815611c725760146040527f496e73756666696369656e74206465706f73697400000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd611c72565b5f5f5f5f6004353403335ff115612858575b60206128a65f395f51631d046325604052803b15612858575f60406004605c600435855af1611ca3573d5f5f3e3d5ffd5b5060035f55006122e8565b63a329977181186122e857608436103417612858576004358060a01c612858576040526001600354016060526060516003556001600454016080526080516004557fc72b917679ae2dea3062a0a355d542c92296f3e5c39cfcb0db7c30e28c8163493360a05260405160c0526060602460e037608051610140526060516101605260e060a0a1006122e8565b630b14c5458118611df957606436103417612858576004358060a01c61285857604052602435600401610400813511612858576020813501808260603750506020806108a0526040515a6060506104006104a060605160808585fa90509050611da5573d5f5f3e3d5ffd5b3d61040081183d61040010021861048052610480816108a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506108a0f35b631de26e1681186122e8576043361115612858575f546002146128585760025f556024353411611e8c57346024351815611e9e5760146040527f496e73756666696369656e74206465706f73697400000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd611e9e565b5f5f5f5f6024353403335ff115612858575b60206128a65f395f5163b214faa5604052600435606052803b15612858575f60406024605c602435855af1611ed5573d5f5f3e3d5ffd5b507f4f78bbd9a86543dc57c484da46f56d43190ac1148b43565fa8d522b1d4fe52986004356040523360605260243560805260606040a160035f55006122e8565b6361baeb6381186122e8576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015611f7d57905b8060051b6020850101358060a01c612858578160051b6180600152600101818118611f57575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024358060a01c6128585761fdc052604435600401616000813511612858576020813501808261fde0375050610124358060a01c6128585762015e005260206128a65f395f5163ffd8d4aa62015e20526080606462015e403762015e005162015ec052803b15612858575f62015e2060a462015e3c5f855af161205a573d5f5f3e3d5ffd5b506101043560405261206a6126c8565b600660e4356020525f5260405f2054156120ec57600f62015e20527f55736564204d6573736167655f4944000000000000000000000000000000000062015e405262015e205062015e20518062015e4001601f825f031636823750506308c379a062015de052602062015e0052601f19601f62015e2051011660440162015dfcfd5b6001600660e4356020525f5260405f2055613260604061326061804060045afa5061211962015e2061255e565b62015e205162015e405262015e4051604052612133612781565b636529d22b62015e4452600461014061fdc05162015e64528062015e84528062015e6401602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190506080606462015ea43760e43562015f2452602061288662015f44396101043562015f645262015e005162015f84520162015e405262015e4080516020820120905062015e2052617d806101a0617d8061804060045afa5062015e2051617f20526121f7612401565b60016003540162015e405261fdc0516331502b5662015e805260208062015ea0528062015ea001602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050602062015e8061604462015e9c5f855af1612273573d5f5f3e3d5ffd5b60203d106128585762015e80518060a01c612858576201bee0526201bee090505162015e605262015e40516003557fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c162015e605162015e805261fdc05162015ea05262015e405162015ec052606062015e80a1005b5f5ffd5b63aaaaaaaa60405110156123565760126060527f496e73756666696369656e7420506f776572000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b5f601c610100527f19457468657265756d205369676e6564204d6573736167653a0a333200000000610120526101008051602082018361016001815181525050808301925050506060518161016001526020810190508061014052610140905080516020820120905060e0525f6101805260e051610100526080516101205260a0516101405260c051610160526020610180608061010060015afa506101805160405114815250565b604036617f40375f6134005160c8811161285857801561254b57905b60608102613420018051617f80526020810151617fa0526040810151617fc05250617f80511561253557617f40516101a0518110156128585760051b6101c00151604052617f2051606052617f8051608052617fa05160a052617fc05160c052612488617fe0612358565b617fe0516124f5576011618000527f496e76616c6964205369676e61747572650000000000000000000000000000006180205261800050618000518061802001601f825f031636823750506308c379a0617fc0526020617fe052601f19601f618000510116604401617fdcfd5b617f6051617f4051611ac0518110156128585760051b611ae001518082018281106128585790509050617f605263aaaaaaaa617f6051106125355761254b565b6001617f405101617f405260010181811861241d575b5050617f605160405261255c6122ec565b565b63299018c26132a45260046080806132c452806132c4015f6040518083528060051b5f8260c881116128585780156125af57905b8060051b606001518160051b602088010152600101818118612592575b50508201602001915050905081019050806132e452806132c4015f611960518083528060051b5f8260c8811161285857801561260557905b8060051b61198001518160051b6020880101526001018181186125e7575b505082016020019150509050810190506132805161330452602061288661332439016132a0526132a0805160208201209050815250565b6040515a10156126c65760286060527f496e73756666696369656e742066756e647320746f20636f76657220676173206080527f657374696d61746500000000000000000000000000000000000000000000000060a05260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60405142111561272e5760076060527f54696d656f75740000000000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60e05160405261273e61263c565b60206128a65f395f5163d4bbab4f6101005260c0516101205260e05161014052803b15612858575f610100604461011c5f855af161277e573d5f5f3e3d5ffd5b50565b60405160015418156127e95760146060527f496e636f727265637420436865636b706f696e7400000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60016004540160a05260a05160045560016003540160c05260c0516003557fc5bdbcfcfae5c5b84c56bbf0860c4286d627aefaf28ce4011ba4fcb9b5aadf0860405160e0523361010052606051610120526080516101405260a0516101605260c0516101805260c060e0a1565b5f80fd22e8160e22e81cae037903d80b9d22e80018031907b022e81d3a13600339035922e81f1607ee039922e88419288681182a1840a16576797065728300030a001632323439373130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001067082fd0b74bfddfd5794e5ac0f24ed941dcc9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000009830000000000000000000000000000000000000000000000000000000000000019000000000000000000000000a228292447064d5818bbc80b577c91f5212f93550000000000000000000000006dc59ee4bdfa2c791229004f29b08f783491a9340000000000000000000000001ad90db98da083e117d5f62a1673fc0f3a5930ca000000000000000000000000ade5f5efeae72102d998f6c496ea59731a70eeb0000000000000000000000000279fc7c0ebef3328d3899fe73464347a764c5f2c000000000000000000000000c1009c72cc2519b0dd595c3e500c1293a862aa6a000000000000000000000000eb784b37365c302c97c9ec8cb0933ce344e6de42000000000000000000000000d02e6bd61f5403748e7f0ec413a9058ddab56d470000000000000000000000001177806cd88b0bc0ea363bed3c64f8314361b1620000000000000000000000007bd1a3270570b65f264895c2f86e631fdc49754500000000000000000000000043e218f96a567dc26c6e65fcabf1fde26af694440000000000000000000000005a7c9fc846b18944fd2b8f8ae7255db5af7b9c040000000000000000000000000daabb4ff60423eb1f14cc6731394e098ad51bcb00000000000000000000000014aa448c2c918c4427c5671028b63bc17f6132d500000000000000000000000063f55bc560e981d53e1f5bb3643e3a96d26fc63500000000000000000000000019f5911e4ca69e30449ad6bb71de341f01f118bb000000000000000000000000ee21301af1d9562b5cbedf520077ea0a9bc9d535000000000000000000000000443266026738061972012e62d5ecd9d98da8b6f4000000000000000000000000377d23948d41579f2c3ca40308e3bdd53f6da7b2000000000000000000000000aac74d38c82c367b3da7482e3aecf6dd7a512ef20000000000000000000000003ab643728bd503ae41561b4bfe1d309a17255b8d000000000000000000000000cfbbf6341cf13a39ffcaf24b86de09489116783b000000000000000000000000092604a080524eff1c875ff13a1b88cbdd41df370000000000000000000000004a89f96fdff3c161937cfbc3e22d2e325612aaec000000000000000000000000deea5b069208e0ee37b630a3e7672fc50e8fe24a000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000155f498b0000000000000000000000000000000000000000000000000000000011d665d40000000000000000000000000000000000000000000000000000000010420e4700000000000000000000000000000000000000000000000000000000100b5dda000000000000000000000000000000000000000000000000000000000fd7437a000000000000000000000000000000000000000000000000000000000ec6a36d000000000000000000000000000000000000000000000000000000000df4cb8f000000000000000000000000000000000000000000000000000000000d7f9fed000000000000000000000000000000000000000000000000000000000c910de7000000000000000000000000000000000000000000000000000000000c84c12f000000000000000000000000000000000000000000000000000000000b3757e9000000000000000000000000000000000000000000000000000000000b0fd19b00000000000000000000000000000000000000000000000000000000099a99f30000000000000000000000000000000000000000000000000000000008eeac490000000000000000000000000000000000000000000000000000000008c165e70000000000000000000000000000000000000000000000000000000008ae11e90000000000000000000000000000000000000000000000000000000007edb0fc0000000000000000000000000000000000000000000000000000000006e70afe0000000000000000000000000000000000000000000000000000000005941f40000000000000000000000000000000000000000000000000000000000504d85300000000000000000000000000000000000000000000000000000000046b796b00000000000000000000000000000000000000000000000000000000040ca3fb000000000000000000000000000000000000000000000000000000000399a6000000000000000000000000000000000000000000000000000000000002d8ae9d0000000000000000000000000000000000000000000000000000000002bcb5d8
Deployed Bytecode
0x5f3560e01c60026015820660011b61285c01601e395f51565b6384d38f2c8118610036573461285857602061288660403960206040f35b6308a92ad781186122e85761010436103417612858576004356004016040813511612858576020813501808260403750506024356004016040813511612858576020813501808260a0375050604435600401602081351161285857602081350180826101003750506064358060081c61285857610140526084358060a01c612858576101605230331815610129576007610180527f496e76616c6964000000000000000000000000000000000000000000000000006101a0526101805061018051806101a001601f825f031636823750506308c379a061014052602061016052601f19601f61018051011660440161015cfd5b610160516080306101a0526101a0516101e0528061020052806101e001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061022052806101e0016101005181526101205160208201528051806020830101601f825f03163682375050601f19601f82516020010116905081019050610140516101c0526101c051610240526003823b0359600182126128585781600382863c8181018381856101e060045afa5050828201815ff08015612858579050905090509050610180526001600354016101a0526101a0516003557f82fe3a4fa49c6382d0c085746698ddbbafe6c2bf61285b19410644b5b26287c760c0806101c052806101c001602060405101808282604060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610180516101e0528061020052806101c001602060a0510180828260a060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190508061022052806101c0016101005181526101205160208201528051806020830101601f825f03163682375050601f19601f8251602001011690508101905061014051610240526101a051610260526101c0a1006122e8565b63a9a4a98381186122e857346128585760015460405260206040f36122e8565b634da6ecc981186122e857346128585760025460405260206040f36122e8565b6319429b8d81186122e857346128585760035460405260206040f36122e8565b630cb39e9681186122e857346128585760045460405260206040f36122e8565b63fa82256781186122e857602436103417612858576004358060a01c6128585760405260056040516020525f5260405f205460605260206060f36122e8565b6338d6172d8118610405576024361034176128585760066004356020525f5260405f205460405260206040f35b63a0dd2e4981186122e8576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561046c57905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610446575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506084358060a01c6128585761fdc05260e4358060a01c6128585761fde05261010435600401610404813511612858576020813501808261fe003750505f546002146128585760025f5561fdc05160c05260a43560e052610522612730565b6044356040526105306126c8565b60066024356020525f5260405f2054156105b257600f62010240527f55736564204d6573736167655f49440000000000000000000000000000000000620102605262010240506201024051806201026001601f825f031636823750506308c379a0620102005260206201022052601f19601f620102405101166044016201021cfd5b600160066024356020525f5260405f2055613260604061326061804060045afa506105df6201024061255e565b6201024051620102605262010260516040526105f9612781565b636c5023876201026452600461012060606024620102843761fdc051620102e452604060a4620103043761fde0516201034452806201036452806201028401602061fe00510180828261fe0060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610124356201038452016201026052620102608051602082012090506201024052617d806101a0617d8061804060045afa506201024051617f20526106b3612401565b604036620102603760206128a65f395f516306c9624d620102a052608060c435620102c05261fde051620102e05280620103005280620102c001602061fe00510180828261fe0060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081019050610124356201032052506040620102a06104c4620102bc5f855af161074c573d5f5f3e3d5ffd5b60403d1061285857620102a0518060a01c612858576201078052620102c051620107a052620107809050805162010260526020810151620102805250620102605160405260643560605262010280516080526107a66127eb565b60035f55006122e8565b63844105e181186107cc57346128585760075460405260206040f35b63ea26266c81186122e857346128585760206128a660403960206040f36122e8565b63f064acb281186122e8576102243610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561085557905b8060051b6020850101358060a01c612858578160051b618060015260010181811861082f575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024356004018035810160c88135116128585780355f8160c881116128585780156108fa57905b8060051b6020850101358060a01c612858578160051b61fde001526001018181186108d4575b50508061fdc05250506020810135810160c881351161285857803560208160051b018083620116e03750505060408101356201300052506044358060a01c612858576201302052620130205160c05260643560e052610957612730565b61b280516201300051116109d357601162013040527f496e76616c69642056616c736574204944000000000000000000000000000000620130605262013040506201304051806201306001601f825f031636823750506308c379a0620130005260206201302052601f19601f620130405101166044016201301cfd5b60403662013040375f61fdc05160c88111612858578015610a5c57905b8060051b61fde00151620130805262013040516201306051620116e0518110156128585760051b6201170001518082018281106128585790509050620130405263aaaaaaaa620130405110610a4457610a5c565b600162013060510162013060526001018181186109f0575b50506201304051604052610a6e6122ec565b613260604061326061804060045afa50610a8a6201308061255e565b6201308051620130a052620130a051604052610aa4612781565b613260604061326061fdc060045afa50610ac0620130a061255e565b620130a0516201308052639af2b8d2620130c45260046201308051620130e452620130205162013104526064356201312452606001620130c052620130c0805160208201209050620130a052617d806101a0617d8061804060045afa50620130a051617f2052610b2e612401565b62013080516001556201300051600255600160035401620130c052620130c0516003557fb7ca5e46e360950244488bf096bf742a1f63183cf1ee5b3b0c53045b6247bf5b6201308051620130e05262013000516201310052620130c05162013120526060620130e0a1006122e8565b63a930e8dc8118610f5c576102843610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015610c0457905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610bde575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a0375050505060243560040180358060a01c6128585761fdc05260208101358101612800813511612858576020813501808261fde037505050610104358060a01c61285857620126005260206128a65f395f5163ffd8d4aa62012620526080604462012640376201260051620126c052803b15612858575f6201262060a46201263c5f855af1610ce8573d5f5f3e3d5ffd5b5060e435604052610cf76126c8565b600660c4356020525f5260405f205415610d7957600f62012620527f55736564204d6573736167655f49440000000000000000000000000000000000620126405262012620506201262051806201264001601f825f031636823750506308c379a0620125e05260206201260052601f19601f62012620510116604401620125fcfd5b6001600660c4356020525f5260405f2055613260604061326061804060045afa50610da66201262061255e565b620126205162012640526201264051604052610dc0612781565b638046d1e762012644526004610120806201266452806201266401604061fdc0518252806020830152808201602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905090508101905060806044620126843760c43562012704526020612886620127243960e435620127445262012600516201276452016201264052620126408051602082012090506201262052617d806101a0617d8061804060045afa506201262051617f2052610e91612401565b600160075561fdc0515a61fde05f5f8251602084015f8787f1905090509050610ebc573d5f5f3e3d5ffd5b5f600755600160035401620126405262012640516003557f0594b174e11e17c2cb4d0d303c2125060bea4f4da113a4e79edce87465592d00608061fdc0516201266052806201268052806201266001602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690508101905060c435620126a0526201264051620126c05262012660a1005b6308d2b3e381186122e8576101c43610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015610fc357905b8060051b6020850101358060a01c612858578160051b6180600152600101818118610f9d575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a0375050505060243560040160408135116128585780355f816040811161285857801561109057905b612840810261fde0018160051b602086010135602086010180358060a01c612858578252602081013581016128008135116128585760208135016020840181838237505050505060010181811861103e575b50508061fdc05250506084358060a01c61285857620b0de052620b0de05160c05260643560e0526110bf612730565b6044356040526110cd6126c8565b613260604061326061804060045afa506110e9620b0e0061255e565b620b0e0051620b0e2052620b0e2051604052611103612781565b630baeca88620b0e24526004608080620b0e445280620b0e44015f61fdc0518083528060051b5f82604081116128585780156111b157905b828160051b602088010152612840810261fde0018360208801016040825182528060208301526020830181830160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050905090508301925060010181811861113b575b50508201602001915050905081019050604435620b0e6452620b0de051620b0e8452606435620b0ea45201620b0e2052620b0e20805160208201209050620b0e0052617d806101a0617d8061804060045afa50620b0e0051617f2052611215612401565b600160035401620b0e20525f6040905b80620b0e405261fdc051620b0e40511061123e57611350565b612840620b0e405161fdc051811015612858570261fde001515a612840620b0e405161fdc051811015612858570261fde0016020810190505f5f8251602084015f8787f1905090509050611294573d5f5f3e3d5ffd5b6001620b0e205101620b0e20527fdf4a952cd86acf74a1c5b1d3ff176de7e23a76082d0169d1925e1b32f3cf36e0606061284061fdc05115612858575f0261fde00151620b0e605280620b0e805261284061fdc05115612858575f0261fde00160208101905081620b0e600160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050905081019050620b0e2051620b0ea052620b0e60a1600101818118611225575b5050620b0e2051600355006122e8565b63f650f6e9811861150557606436103417612858576004358060a01c612858576101a0526101a0516370a082316101e052306102005260206101e060246101fc845afa6113af573d5f5f3e3d5ffd5b60203d10612858576101e09050516101c0526101a0516323b872dd6101e052336102005230610220526044356102405260206101e060646101fc5f855af16113f9573d5f5f3e3d5ffd5b3d61141057803b1561285857600161026052611429565b60203d10612858576101e0518060011c61285857610260525b610260905051611498576013610280527f6661696c6564205472616e7366657246726f6d000000000000000000000000006102a0526102805061028051806102a001601f825f031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b6101a0516370a082316101e052306102005260206101e060246101fc845afa6114c3573d5f5f3e3d5ffd5b60203d10612858576101e09050516101c05180820382811161285857905090506101c0526101a0516040526024356060526101c0516080526115036127eb565b005b63048a245d81186122e85760a436103417612858576024358060a01c612858576040526044356004016104048135116128585760208135018082606037505060206128a65f395f5163d07e9fa06104a05260a0336104c0526004356104e052604051610500528061052052806104c001602060605101808282606060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190506064356105405250803b15612858575f6104a06104e46104bc5f855af16115d4573d5f5f3e3d5ffd5b507fbcd7c5f94d828115734ea3d51400c2e1ad93894d1a5099a1808794a924f71f24336104a0526004356104c05260406104a0a1006122e8565b6314fe978f8118611bcd576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c8811161285857801561167557905b8060051b6020850101358060a01c612858578160051b618060015260010181811861164f575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024358060a01c6128585761fdc0526044356004018035810160408135116128585780355f816040811161285857801561172957905b8060051b6020850101358060a01c612858578160051b61fe000152600101818118611703575b50508061fde052505060208101358101604081351161285857803560208160051b01808362010600375050505060a4358060a01c6128585762010e205262010e205160c05260c43560e05261177c612730565b60843560405261178a6126c8565b606435600561fdc0516020525f5260405f20541061181057600e62010e40527f57726f6e6720626174636820696400000000000000000000000000000000000062010e605262010e405062010e40518062010e6001601f825f031636823750506308c379a062010e0052602062010e2052601f19601f62010e4051011660440162010e1cfd5b61fde05162010e4052620106005162010e4051181561189757601062010e60527f556e6d61746368656420506172616d730000000000000000000000000000000062010e805262010e605062010e60518062010e8001601f825f031636823750506308c379a062010e2052602062010e4052601f19601f62010e6051011660440162010e3cfd5b613260604061326061804060045afa506118b362010e6061255e565b62010e605162010e805262010e80516040526118cd612781565b636f7be45762010e8452600460e061fdc05162010ea4528062010ec4528062010ea40160408082528082015f61fde0518083528060051b5f826040811161285857801561193457905b8060051b61fe0001518160051b602088010152600101818118611916575b505082016020019150509050810190508060208301528082015f62010600518083528060051b5f826040811161285857801561198b57905b8060051b6201062001518160051b60208801015260010181811861196c575b5050820160200191505090508101905090508101905060643562010ee452602061288662010f043960843562010f245262010e205162010f445260c43562010f64520162010e805262010e8080516020820120905062010e6052617d806101a0617d8061804060045afa5062010e6051617f2052611a07612401565b5f6040905b8062010e805262010e405162010e805110611a2657611b43565b61fdc05163a9059cbb62010ea05262010e805161fde0518110156128585760051b61fe00015162010ec05262010e805162010600518110156128585760051b62010620015162010ee052602062010ea0604462010ebc5f855af1611a8c573d5f5f3e3d5ffd5b3d611aa457803b1561285857600162010f0052611abf565b60203d106128585762010ea0518060011c6128585762010f00525b62010f00905051611b3857600f62010f20527f6661696c6564207472616e73666572000000000000000000000000000000000062010f405262010f205062010f20518062010f4001601f825f031636823750506308c379a062010ee052602062010f0052601f19601f62010f2051011660440162010efcfd5b600101818118611a0c575b505060016004540162010e805262010e805160045560016003540162010ea05262010ea051600355606435600561fdc0516020525f5260405f20557f0ba40544a53f11e70bd7e03a4cfeec841fc3566e81dfbef26f669358a705ad2c61fdc05162010ec05260643562010ee05262010e805162010f005262010ea05162010f2052608062010ec0a1005b63da29a8c681186122e8576023361115612858575f546002146128585760025f556004353411611c6057346004351815611c725760146040527f496e73756666696369656e74206465706f73697400000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd611c72565b5f5f5f5f6004353403335ff115612858575b60206128a65f395f51631d046325604052803b15612858575f60406004605c600435855af1611ca3573d5f5f3e3d5ffd5b5060035f55006122e8565b63a329977181186122e857608436103417612858576004358060a01c612858576040526001600354016060526060516003556001600454016080526080516004557fc72b917679ae2dea3062a0a355d542c92296f3e5c39cfcb0db7c30e28c8163493360a05260405160c0526060602460e037608051610140526060516101605260e060a0a1006122e8565b630b14c5458118611df957606436103417612858576004358060a01c61285857604052602435600401610400813511612858576020813501808260603750506020806108a0526040515a6060506104006104a060605160808585fa90509050611da5573d5f5f3e3d5ffd5b3d61040081183d61040010021861048052610480816108a00160208251018082828560045afa50508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506108a0f35b631de26e1681186122e8576043361115612858575f546002146128585760025f556024353411611e8c57346024351815611e9e5760146040527f496e73756666696369656e74206465706f73697400000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd611e9e565b5f5f5f5f6024353403335ff115612858575b60206128a65f395f5163b214faa5604052600435606052803b15612858575f60406024605c602435855af1611ed5573d5f5f3e3d5ffd5b507f4f78bbd9a86543dc57c484da46f56d43190ac1148b43565fa8d522b1d4fe52986004356040523360605260243560805260606040a160035f55006122e8565b6361baeb6381186122e8576102643610341761285857600435600401803581018035810160c88135116128585780355f8160c88111612858578015611f7d57905b8060051b6020850101358060a01c612858578160051b6180600152600101818118611f57575b5050806180405250506020810135810160c881351161285857803560208160051b01808361996037505050604081013561b28052506020810135810160c881351161285857803560206060820201808361b2a037505050506024358060a01c6128585761fdc052604435600401616000813511612858576020813501808261fde0375050610124358060a01c6128585762015e005260206128a65f395f5163ffd8d4aa62015e20526080606462015e403762015e005162015ec052803b15612858575f62015e2060a462015e3c5f855af161205a573d5f5f3e3d5ffd5b506101043560405261206a6126c8565b600660e4356020525f5260405f2054156120ec57600f62015e20527f55736564204d6573736167655f4944000000000000000000000000000000000062015e405262015e205062015e20518062015e4001601f825f031636823750506308c379a062015de052602062015e0052601f19601f62015e2051011660440162015dfcfd5b6001600660e4356020525f5260405f2055613260604061326061804060045afa5061211962015e2061255e565b62015e205162015e405262015e4051604052612133612781565b636529d22b62015e4452600461014061fdc05162015e64528062015e84528062015e6401602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f825160200101169050810190506080606462015ea43760e43562015f2452602061288662015f44396101043562015f645262015e005162015f84520162015e405262015e4080516020820120905062015e2052617d806101a0617d8061804060045afa5062015e2051617f20526121f7612401565b60016003540162015e405261fdc0516331502b5662015e805260208062015ea0528062015ea001602061fde0510180828261fde060045afa50508051806020830101601f825f03163682375050601f19601f82516020010116905081015050602062015e8061604462015e9c5f855af1612273573d5f5f3e3d5ffd5b60203d106128585762015e80518060a01c612858576201bee0526201bee090505162015e605262015e40516003557fac4ce915ef22753b636e57aac5ae5fdd9d13d782ae5bf6dbcda15e29f95386c162015e605162015e805261fdc05162015ea05262015e405162015ec052606062015e80a1005b5f5ffd5b63aaaaaaaa60405110156123565760126060527f496e73756666696369656e7420506f776572000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b5f601c610100527f19457468657265756d205369676e6564204d6573736167653a0a333200000000610120526101008051602082018361016001815181525050808301925050506060518161016001526020810190508061014052610140905080516020820120905060e0525f6101805260e051610100526080516101205260a0516101405260c051610160526020610180608061010060015afa506101805160405114815250565b604036617f40375f6134005160c8811161285857801561254b57905b60608102613420018051617f80526020810151617fa0526040810151617fc05250617f80511561253557617f40516101a0518110156128585760051b6101c00151604052617f2051606052617f8051608052617fa05160a052617fc05160c052612488617fe0612358565b617fe0516124f5576011618000527f496e76616c6964205369676e61747572650000000000000000000000000000006180205261800050618000518061802001601f825f031636823750506308c379a0617fc0526020617fe052601f19601f618000510116604401617fdcfd5b617f6051617f4051611ac0518110156128585760051b611ae001518082018281106128585790509050617f605263aaaaaaaa617f6051106125355761254b565b6001617f405101617f405260010181811861241d575b5050617f605160405261255c6122ec565b565b63299018c26132a45260046080806132c452806132c4015f6040518083528060051b5f8260c881116128585780156125af57905b8060051b606001518160051b602088010152600101818118612592575b50508201602001915050905081019050806132e452806132c4015f611960518083528060051b5f8260c8811161285857801561260557905b8060051b61198001518160051b6020880101526001018181186125e7575b505082016020019150509050810190506132805161330452602061288661332439016132a0526132a0805160208201209050815250565b6040515a10156126c65760286060527f496e73756666696369656e742066756e647320746f20636f76657220676173206080527f657374696d61746500000000000000000000000000000000000000000000000060a05260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60405142111561272e5760076060527f54696d656f75740000000000000000000000000000000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60e05160405261273e61263c565b60206128a65f395f5163d4bbab4f6101005260c0516101205260e05161014052803b15612858575f610100604461011c5f855af161277e573d5f5f3e3d5ffd5b50565b60405160015418156127e95760146060527f496e636f727265637420436865636b706f696e7400000000000000000000000060805260605060605180608001601f825f031636823750506308c379a06020526020604052601f19601f6060510116604401603cfd5b565b60016004540160a05260a05160045560016003540160c05260c0516003557fc5bdbcfcfae5c5b84c56bbf0860c4286d627aefaf28ce4011ba4fcb9b5aadf0860405160e0523361010052606051610120526080516101405260a0516101605260c0516101805260c060e0a1565b5f80fd22e8160e22e81cae037903d80b9d22e80018031907b022e81d3a13600339035922e81f1607ee039922e832323439373130300000000000000000000000000000000000000000000000000000000000000000000000001067082fd0b74bfddfd5794e5ac0f24ed941dcc9
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
32323439373130300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000001067082fd0b74bfddfd5794e5ac0f24ed941dcc9000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003a000000000000000000000000000000000000000000000000000000000000009830000000000000000000000000000000000000000000000000000000000000019000000000000000000000000a228292447064d5818bbc80b577c91f5212f93550000000000000000000000006dc59ee4bdfa2c791229004f29b08f783491a9340000000000000000000000001ad90db98da083e117d5f62a1673fc0f3a5930ca000000000000000000000000ade5f5efeae72102d998f6c496ea59731a70eeb0000000000000000000000000279fc7c0ebef3328d3899fe73464347a764c5f2c000000000000000000000000c1009c72cc2519b0dd595c3e500c1293a862aa6a000000000000000000000000eb784b37365c302c97c9ec8cb0933ce344e6de42000000000000000000000000d02e6bd61f5403748e7f0ec413a9058ddab56d470000000000000000000000001177806cd88b0bc0ea363bed3c64f8314361b1620000000000000000000000007bd1a3270570b65f264895c2f86e631fdc49754500000000000000000000000043e218f96a567dc26c6e65fcabf1fde26af694440000000000000000000000005a7c9fc846b18944fd2b8f8ae7255db5af7b9c040000000000000000000000000daabb4ff60423eb1f14cc6731394e098ad51bcb00000000000000000000000014aa448c2c918c4427c5671028b63bc17f6132d500000000000000000000000063f55bc560e981d53e1f5bb3643e3a96d26fc63500000000000000000000000019f5911e4ca69e30449ad6bb71de341f01f118bb000000000000000000000000ee21301af1d9562b5cbedf520077ea0a9bc9d535000000000000000000000000443266026738061972012e62d5ecd9d98da8b6f4000000000000000000000000377d23948d41579f2c3ca40308e3bdd53f6da7b2000000000000000000000000aac74d38c82c367b3da7482e3aecf6dd7a512ef20000000000000000000000003ab643728bd503ae41561b4bfe1d309a17255b8d000000000000000000000000cfbbf6341cf13a39ffcaf24b86de09489116783b000000000000000000000000092604a080524eff1c875ff13a1b88cbdd41df370000000000000000000000004a89f96fdff3c161937cfbc3e22d2e325612aaec000000000000000000000000deea5b069208e0ee37b630a3e7672fc50e8fe24a000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000155f498b0000000000000000000000000000000000000000000000000000000011d665d40000000000000000000000000000000000000000000000000000000010420e4700000000000000000000000000000000000000000000000000000000100b5dda000000000000000000000000000000000000000000000000000000000fd7437a000000000000000000000000000000000000000000000000000000000ec6a36d000000000000000000000000000000000000000000000000000000000df4cb8f000000000000000000000000000000000000000000000000000000000d7f9fed000000000000000000000000000000000000000000000000000000000c910de7000000000000000000000000000000000000000000000000000000000c84c12f000000000000000000000000000000000000000000000000000000000b3757e9000000000000000000000000000000000000000000000000000000000b0fd19b00000000000000000000000000000000000000000000000000000000099a99f30000000000000000000000000000000000000000000000000000000008eeac490000000000000000000000000000000000000000000000000000000008c165e70000000000000000000000000000000000000000000000000000000008ae11e90000000000000000000000000000000000000000000000000000000007edb0fc0000000000000000000000000000000000000000000000000000000006e70afe0000000000000000000000000000000000000000000000000000000005941f40000000000000000000000000000000000000000000000000000000000504d85300000000000000000000000000000000000000000000000000000000046b796b00000000000000000000000000000000000000000000000000000000040ca3fb000000000000000000000000000000000000000000000000000000000399a6000000000000000000000000000000000000000000000000000000000002d8ae9d0000000000000000000000000000000000000000000000000000000002bcb5d8
-----Decoded View---------------
Arg [0] : _compass_id (bytes32): 0x3232343937313030000000000000000000000000000000000000000000000000
Arg [1] : _event_id (uint256): 0
Arg [2] : _gravity_nonce (uint256): 0
Arg [3] : valset (tuple): System.Collections.Generic.List`1[Nethereum.ABI.FunctionEncoding.ParameterOutput]
Arg [4] : fee_manager (address): 0x1067082fD0b74BfDdFd5794E5AC0F24ED941dcc9
-----Encoded View---------------
60 Constructor Arguments found :
Arg [0] : 3232343937313030000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [4] : 0000000000000000000000001067082fd0b74bfddfd5794e5ac0f24ed941dcc9
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [6] : 00000000000000000000000000000000000000000000000000000000000003a0
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000983
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [9] : 000000000000000000000000a228292447064d5818bbc80b577c91f5212f9355
Arg [10] : 0000000000000000000000006dc59ee4bdfa2c791229004f29b08f783491a934
Arg [11] : 0000000000000000000000001ad90db98da083e117d5f62a1673fc0f3a5930ca
Arg [12] : 000000000000000000000000ade5f5efeae72102d998f6c496ea59731a70eeb0
Arg [13] : 000000000000000000000000279fc7c0ebef3328d3899fe73464347a764c5f2c
Arg [14] : 000000000000000000000000c1009c72cc2519b0dd595c3e500c1293a862aa6a
Arg [15] : 000000000000000000000000eb784b37365c302c97c9ec8cb0933ce344e6de42
Arg [16] : 000000000000000000000000d02e6bd61f5403748e7f0ec413a9058ddab56d47
Arg [17] : 0000000000000000000000001177806cd88b0bc0ea363bed3c64f8314361b162
Arg [18] : 0000000000000000000000007bd1a3270570b65f264895c2f86e631fdc497545
Arg [19] : 00000000000000000000000043e218f96a567dc26c6e65fcabf1fde26af69444
Arg [20] : 0000000000000000000000005a7c9fc846b18944fd2b8f8ae7255db5af7b9c04
Arg [21] : 0000000000000000000000000daabb4ff60423eb1f14cc6731394e098ad51bcb
Arg [22] : 00000000000000000000000014aa448c2c918c4427c5671028b63bc17f6132d5
Arg [23] : 00000000000000000000000063f55bc560e981d53e1f5bb3643e3a96d26fc635
Arg [24] : 00000000000000000000000019f5911e4ca69e30449ad6bb71de341f01f118bb
Arg [25] : 000000000000000000000000ee21301af1d9562b5cbedf520077ea0a9bc9d535
Arg [26] : 000000000000000000000000443266026738061972012e62d5ecd9d98da8b6f4
Arg [27] : 000000000000000000000000377d23948d41579f2c3ca40308e3bdd53f6da7b2
Arg [28] : 000000000000000000000000aac74d38c82c367b3da7482e3aecf6dd7a512ef2
Arg [29] : 0000000000000000000000003ab643728bd503ae41561b4bfe1d309a17255b8d
Arg [30] : 000000000000000000000000cfbbf6341cf13a39ffcaf24b86de09489116783b
Arg [31] : 000000000000000000000000092604a080524eff1c875ff13a1b88cbdd41df37
Arg [32] : 0000000000000000000000004a89f96fdff3c161937cfbc3e22d2e325612aaec
Arg [33] : 000000000000000000000000deea5b069208e0ee37b630a3e7672fc50e8fe24a
Arg [34] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [35] : 00000000000000000000000000000000000000000000000000000000155f498b
Arg [36] : 0000000000000000000000000000000000000000000000000000000011d665d4
Arg [37] : 0000000000000000000000000000000000000000000000000000000010420e47
Arg [38] : 00000000000000000000000000000000000000000000000000000000100b5dda
Arg [39] : 000000000000000000000000000000000000000000000000000000000fd7437a
Arg [40] : 000000000000000000000000000000000000000000000000000000000ec6a36d
Arg [41] : 000000000000000000000000000000000000000000000000000000000df4cb8f
Arg [42] : 000000000000000000000000000000000000000000000000000000000d7f9fed
Arg [43] : 000000000000000000000000000000000000000000000000000000000c910de7
Arg [44] : 000000000000000000000000000000000000000000000000000000000c84c12f
Arg [45] : 000000000000000000000000000000000000000000000000000000000b3757e9
Arg [46] : 000000000000000000000000000000000000000000000000000000000b0fd19b
Arg [47] : 00000000000000000000000000000000000000000000000000000000099a99f3
Arg [48] : 0000000000000000000000000000000000000000000000000000000008eeac49
Arg [49] : 0000000000000000000000000000000000000000000000000000000008c165e7
Arg [50] : 0000000000000000000000000000000000000000000000000000000008ae11e9
Arg [51] : 0000000000000000000000000000000000000000000000000000000007edb0fc
Arg [52] : 0000000000000000000000000000000000000000000000000000000006e70afe
Arg [53] : 0000000000000000000000000000000000000000000000000000000005941f40
Arg [54] : 000000000000000000000000000000000000000000000000000000000504d853
Arg [55] : 00000000000000000000000000000000000000000000000000000000046b796b
Arg [56] : 00000000000000000000000000000000000000000000000000000000040ca3fb
Arg [57] : 000000000000000000000000000000000000000000000000000000000399a600
Arg [58] : 0000000000000000000000000000000000000000000000000000000002d8ae9d
Arg [59] : 0000000000000000000000000000000000000000000000000000000002bcb5d8
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.