Polygon Sponsored slots available. Book your slot here!
Contract Overview
My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.3
Contract Source Code (Vyper language format)
# @version 0.3.3 """ @title Turnstone-EVM @author Volume.Finance """ MAX_VALIDATORS: constant(uint256) = 320 MAX_PAYLOAD: constant(uint256) = 20480 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. TURNSTONE_ID: immutable(bytes32) 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 event ValsetUpdated: checkpoint: bytes32 valset_id: uint256 event LogicCallEvent: logic_contract_address: address payload: Bytes[MAX_PAYLOAD] message_id: uint256 last_checkpoint: public(bytes32) message_id_used: public(HashMap[uint256, bool]) # turnstone_id: unique identifier for turnstone instance # valset: initial validator set @external def __init__(turnstone_id: bytes32, valset: Valset): TURNSTONE_ID = turnstone_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, turnstone_id, method_id=method_id("checkpoint(address[],uint256[],uint256,bytes32)"))) self.last_checkpoint = new_checkpoint log ValsetUpdated(new_checkpoint, valset.valset_id) @external @pure def turnstone_id() -> bytes32: return TURNSTONE_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, turnstone_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, TURNSTONE_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 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, turnstone_id, deadline) args_hash: bytes32 = keccak256(_abi_encode(args, message_id, TURNSTONE_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)
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"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"turnstone_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":"turnstone_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":"(uint256,uint256,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":"(uint256,uint256,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":"view","type":"function","name":"last_checkpoint","inputs":[],"outputs":[{"name":"","type":"bytes32"}]},{"stateMutability":"view","type":"function","name":"message_id_used","inputs":[{"name":"arg0","type":"uint256"}],"outputs":[{"name":"","type":"bool"}]}]
Contract Creation Code
60206110e16000396000516020816110c10160003960005181016101406020826110c101600039600051116110bc576020816110c1016000396000518060405260008161014081116110bc57801561008357905b60206020820260208601016110c1016000396000518060a01c6110bc576020820260600152600101818118610053575b505050506020602082016110c10160003960005181016101406020826110c101600039600051116110bc576020816110c1016000396000518061286052602082016020820280826110c10161288039505050506020604082016110c101600039600051615080525060206110c1600039600051630000f300526040366150a037600060405161014081116110bc57801561018c57905b60208102606001516150e0526150a05160206150c051612860518110156110bc5702612880015181818301106110bc57808201905090506150a05263aaaaaaaa6150a051106101675761018c565b6150c051600181818301106110bc57808201905090506150c052600101818118610119575b505063aaaaaaaa6150a05110156102035760126150e0527f496e73756666696369656e7420506f7765720000000000000000000000000000615100526150e0506150e051806151000181600003601f1636823750506308c379a06150a05260206150c052601f19601f6150e05101166044016150bcfd5b63299018c261a20452600460808061a224528061a2240160006040518083526020810260008261014081116110bc57801561025757905b60208102606001516020820260208801015260010181811861023a575b505082016020019150509050810190508061a244528061a224016000612860518083526020810260008261014081116110bc5780156102b057905b60208102612880015160208202602088010152600101818118610292575b505082016020019150509050810190506150805161a2645260206110c160003960005161a284520161a2005261a2008051602082012090506150e0526150e0516000557f09d40458cf931745f8d532ef13fa9c74bfb7fe0edcee88e0a677b0cbef88f0f96150e0516151005261508051615120526040615100a1610d78610343630000e58839610d78602001630000e588f3600436101561000d57610a07565b60003560e01c34610d735763f0f405048118610037576020610d7860003960005160405260206040f35b63eadf4af78118610513576004356004018035810180358101610140813511610d735780358061f2a0526000816101408111610d7357801561009b57905b602081026020850101358060a01c610d73576020820261f2c00152600101818118610075575b5050505060208101358101610140813511610d735780358062011ac0526020820160208202808262011ae037505050506040810135620142e0525060208101358101610140813511610d73578035806201430052602082016060820280826201432037505050505060243560040180358101610140813511610d73578035806201bb20526000816101408111610d7357801561015a57905b602081026020850101358060a01c610d7357602082026201bb400152600101818118610133575b5050505060208101358101610140813511610d73578035806201e34052602082016020820280826201e3603750505050604081013562020b605250620142e05162020b60511161021357601162020b80527f496e76616c69642056616c73657420494400000000000000000000000000000062020ba05262020b805062020b80518062020ba00181600003601f1636823750506308c379a062020b4052602062020b6052601f19601f62020b8051011660440162020b5cfd5b60403662020b803760006201bb20516101408111610d735780156102b157905b602081026201bb40015162020bc05262020b8051602062020ba0516201e34051811015610d7357026201e36001518181830110610d73578082019050905062020b805263aaaaaaaa62020b80511061028a576102b1565b62020ba05160018181830110610d73578082019050905062020ba052600101818118610233575b505063aaaaaaaa62020b8051101561033257601262020bc0527f496e73756666696369656e7420506f776572000000000000000000000000000062020be05262020bc05062020bc0518062020be00181600003601f1636823750506308c379a062020b8052602062020ba052601f19601f62020bc051011660440162020b9cfd5b61f2a05180604052602081028060608261f2c060045afa9050505062011ac051806128605260208102806128808262011ae060045afa90505050620142e0516150805261038162020bc0610c89565b62020bc051600054146103fd57601462020be0527f496e636f727265637420436865636b706f696e7400000000000000000000000062020c005262020be05062020be0518062020c000181600003601f1636823750506308c379a062020ba052602062020bc052601f19601f62020be051011660440162020bbcfd5b6201bb20518060405260208102806060826201bb4060045afa905050506201e3405180612860526020810280612880826201e36060045afa9050505062020b60516150805261044e62020be0610c89565b62020be05162020bc05261f2a051806102405260208102806102608261f2c060045afa9050505062011ac05180612a60526020810280612a808262011ae060045afa90505050620142e051615280526201430051806152a05260608102806152c0826201432060045afa9050505062020bc05161cac0526104cd610ab0565b62020bc0516000557f09d40458cf931745f8d532ef13fa9c74bfb7fe0edcee88e0a677b0cbef88f0f962020bc05162020be05262020b605162020c0052604062020be0a1005b631029ae6f81186109c9576004356004018035810180358101610140813511610d735780358061f2a0526000816101408111610d7357801561057757905b602081026020850101358060a01c610d73576020820261f2c00152600101818118610551575b5050505060208101358101610140813511610d735780358062011ac0526020820160208202808262011ae037505050506040810135620142e0525060208101358101610140813511610d73578035806201430052602082016060820280826201432037505050505060243560040180358060a01c610d73576201bb205260208101358101615000813511610d73578035806201bb40526020820181816201bb60375050505060643542111561069557600762020b60527f54696d656f75740000000000000000000000000000000000000000000000000062020b805262020b605062020b60518062020b800181600003601f1636823750506308c379a062020b2052602062020b4052601f19601f62020b6051011660440162020b3cfd5b60016044356020526000526040600020541561071a57600f62020b60527f55736564204d6573736167655f4944000000000000000000000000000000000062020b805262020b605062020b60518062020b800181600003601f1636823750506308c379a062020b2052602062020b4052601f19601f62020b6051011660440162020b3cfd5b6001600160443560205260005260406000205561f2a05180604052602081028060608261f2c060045afa9050505062011ac051806128605260208102806128808262011ae060045afa90505050620142e0516150805261077c62020b60610c89565b62020b6051600054146107f857601462020b80527f496e636f727265637420436865636b706f696e7400000000000000000000000062020ba05262020b805062020b80518062020ba00181600003601f1636823750506308c379a062020b4052602062020b6052601f19601f62020b8051011660440162020b5cfd5b63980721b262025ca452600460808062025cc4528062025cc40160406201bb205182528060208301528082016201bb4051808252602082018181836201bb6060045afa90505050805180602083010181600003601f163682375050601f19601f8251602001011690508101905090508101905060443562025ce4526020610d7860003960005162025d045260643562025d24520162025ca05262025ca080516020820120905062020b605261f2a051806102405260208102806102608261f2c060045afa9050505062011ac05180612a60526020810280612a808262011ae060045afa90505050620142e051615280526201430051806152a05260608102806152c0826201432060045afa9050505062020b605161cac052610918610ab0565b6201bb406000600082516020840160006201bb20515af19050610940573d600060003e3d6000fd5b7f0d2bd340033bb64fd086788e6685b480a9bf10b98d63e9b8073eb5d0bd6c6ee960606201bb205162020b80528062020ba0528062020b80016201bb4051808252602082018181836201bb6060045afa90505050805180602083010181600003601f163682375050601f19601f8251602001011690508101905060443562020bc05262020b80a1005b63a9a4a98381186109e05760005460405260206040f35b6338d6172d8118610a0557600160043560205260005260406000205460405260206040f35b505b60006000fd5b6000601c6101a0527f19457468657265756d205369676e6564204d6573736167653a0a3332000000006101c0526101a0805160208201836102000181518152505080830192505050606051816102000152602081019050806101e0526101e0905080516020820120905060e05260e051610100526080516101205260a0516101405260c0516101605260206000608061010060015afa5060005160405114815250565b60403661cae03760006152a0516101408111610d73578015610c1057905b606081026152c001805161cb2052602081015161cb4052604081015161cb605250600061cb205114610beb57602061cae05161024051811015610d735702610260015160405261cac05160605261cb205160805261cb405160a05261cb605160c052610b3b61cb80610a0d565b61cb8051610ba957601161cba0527f496e76616c6964205369676e617475726500000000000000000000000000000061cbc05261cba05061cba0518061cbc00181600003601f1636823750506308c379a061cb6052602061cb8052601f19601f61cba051011660440161cb7cfd5b61cb0051602061cae051612a6051811015610d735702612a8001518181830110610d73578082019050905061cb005263aaaaaaaa61cb005110610beb57610c10565b61cae05160018181830110610d73578082019050905061cae052600101818118610ace575b505063aaaaaaaa61cb00511015610c8757601261cb20527f496e73756666696369656e7420506f776572000000000000000000000000000061cb405261cb205061cb20518061cb400181600003601f1636823750506308c379a061cae052602061cb0052601f19601f61cb2051011660440161cafcfd5b565b63299018c261a1a452600460808061a1c4528061a1c4016000604051808352602081026000826101408111610d73578015610cdd57905b602081026060015160208202602088010152600101818118610cc0575b505082016020019150509050810190508061a1e4528061a1c401600061286051808352602081026000826101408111610d73578015610d3657905b60208102612880015160208202602088010152600101818118610d18575b505082016020019150509050810190506150805161a204526020610d7860003960005161a224520161a1a05261a1a0805160208201209050815250565b600080fd005b600080fd31393636353000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000378000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000011b6c349d67244e2d62d1cb2f8460226b492cceb000000000000000000000000adf557a994d6843e6a5efbb6ca87fd2910ead92a000000000000000000000000f41816b072c831ae141dc3f49596c7e0f313a4bc00000000000000000000000039e9e047ef2f5127d9393f42509a32b811ab6e8000000000000000000000000068cd534771f676677f714f26ee47a7dce0ef01c9000000000000000000000000c06c3db87a6446c28a8dd9e9c76c4998e75280eb00000000000000000000000061d1ad488c2c597c796a2011caba351594eba567000000000000000000000000a15c58e5be0efff1fb5a94fa5de4d3da7a4b8763000000000000000000000000c55f0ac58138e60a2bf456b211fcf8bf9b7386bd000000000000000000000000049a5b76f1c4d3e34c86c5350fe193d5e4ae39fd000000000000000000000000535d804cf451d6ed113444367105f565859fabea0000000000000000000000003bef6f250580d2c635805fd3fb0108ca663a3dd20000000000000000000000001031ce0bd817fa020dcd3e0ba48641eba6f38a46000000000000000000000000b700af3c8f7bcaf4a27262ff3f5800ad5445ad0600000000000000000000000029587c276d259c0f1303d23b77b0fbffc5ef961a000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000014a7db70000000000000000000000000000000000000000000000000000000001482c6e000000000000000000000000000000000000000000000000000000000146b4eb700000000000000000000000000000000000000000000000000000000143140ef00000000000000000000000000000000000000000000000000000000140e3a410000000000000000000000000000000000000000000000000000000013f92a8f0000000000000000000000000000000000000000000000000000000013e044bf0000000000000000000000000000000000000000000000000000000013cb721e0000000000000000000000000000000000000000000000000000000013afb5e000000000000000000000000000000000000000000000000000000000138953c800000000000000000000000000000000000000000000000000000000128deae100000000000000000000000000000000000000000000000000000000128deae100000000000000000000000000000000000000000000000000000000122f64e6000000000000000000000000000000000000000000000000000000000000f3320000000000000000000000000000000000000000000000000000000000007ad3
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
31393636353000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000378000000000000000000000000000000000000000000000000000000000000000f00000000000000000000000011b6c349d67244e2d62d1cb2f8460226b492cceb000000000000000000000000adf557a994d6843e6a5efbb6ca87fd2910ead92a000000000000000000000000f41816b072c831ae141dc3f49596c7e0f313a4bc00000000000000000000000039e9e047ef2f5127d9393f42509a32b811ab6e8000000000000000000000000068cd534771f676677f714f26ee47a7dce0ef01c9000000000000000000000000c06c3db87a6446c28a8dd9e9c76c4998e75280eb00000000000000000000000061d1ad488c2c597c796a2011caba351594eba567000000000000000000000000a15c58e5be0efff1fb5a94fa5de4d3da7a4b8763000000000000000000000000c55f0ac58138e60a2bf456b211fcf8bf9b7386bd000000000000000000000000049a5b76f1c4d3e34c86c5350fe193d5e4ae39fd000000000000000000000000535d804cf451d6ed113444367105f565859fabea0000000000000000000000003bef6f250580d2c635805fd3fb0108ca663a3dd20000000000000000000000001031ce0bd817fa020dcd3e0ba48641eba6f38a46000000000000000000000000b700af3c8f7bcaf4a27262ff3f5800ad5445ad0600000000000000000000000029587c276d259c0f1303d23b77b0fbffc5ef961a000000000000000000000000000000000000000000000000000000000000000f0000000000000000000000000000000000000000000000000000000014a7db70000000000000000000000000000000000000000000000000000000001482c6e000000000000000000000000000000000000000000000000000000000146b4eb700000000000000000000000000000000000000000000000000000000143140ef00000000000000000000000000000000000000000000000000000000140e3a410000000000000000000000000000000000000000000000000000000013f92a8f0000000000000000000000000000000000000000000000000000000013e044bf0000000000000000000000000000000000000000000000000000000013cb721e0000000000000000000000000000000000000000000000000000000013afb5e000000000000000000000000000000000000000000000000000000000138953c800000000000000000000000000000000000000000000000000000000128deae100000000000000000000000000000000000000000000000000000000128deae100000000000000000000000000000000000000000000000000000000122f64e6000000000000000000000000000000000000000000000000000000000000f3320000000000000000000000000000000000000000000000000000000000007ad3
-----Encoded View---------------
37 Constructor Arguments found :
Arg [0] : 3139363635300000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000260
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000378
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [6] : 00000000000000000000000011b6c349d67244e2d62d1cb2f8460226b492cceb
Arg [7] : 000000000000000000000000adf557a994d6843e6a5efbb6ca87fd2910ead92a
Arg [8] : 000000000000000000000000f41816b072c831ae141dc3f49596c7e0f313a4bc
Arg [9] : 00000000000000000000000039e9e047ef2f5127d9393f42509a32b811ab6e80
Arg [10] : 00000000000000000000000068cd534771f676677f714f26ee47a7dce0ef01c9
Arg [11] : 000000000000000000000000c06c3db87a6446c28a8dd9e9c76c4998e75280eb
Arg [12] : 00000000000000000000000061d1ad488c2c597c796a2011caba351594eba567
Arg [13] : 000000000000000000000000a15c58e5be0efff1fb5a94fa5de4d3da7a4b8763
Arg [14] : 000000000000000000000000c55f0ac58138e60a2bf456b211fcf8bf9b7386bd
Arg [15] : 000000000000000000000000049a5b76f1c4d3e34c86c5350fe193d5e4ae39fd
Arg [16] : 000000000000000000000000535d804cf451d6ed113444367105f565859fabea
Arg [17] : 0000000000000000000000003bef6f250580d2c635805fd3fb0108ca663a3dd2
Arg [18] : 0000000000000000000000001031ce0bd817fa020dcd3e0ba48641eba6f38a46
Arg [19] : 000000000000000000000000b700af3c8f7bcaf4a27262ff3f5800ad5445ad06
Arg [20] : 00000000000000000000000029587c276d259c0f1303d23b77b0fbffc5ef961a
Arg [21] : 000000000000000000000000000000000000000000000000000000000000000f
Arg [22] : 0000000000000000000000000000000000000000000000000000000014a7db70
Arg [23] : 000000000000000000000000000000000000000000000000000000001482c6e0
Arg [24] : 00000000000000000000000000000000000000000000000000000000146b4eb7
Arg [25] : 00000000000000000000000000000000000000000000000000000000143140ef
Arg [26] : 00000000000000000000000000000000000000000000000000000000140e3a41
Arg [27] : 0000000000000000000000000000000000000000000000000000000013f92a8f
Arg [28] : 0000000000000000000000000000000000000000000000000000000013e044bf
Arg [29] : 0000000000000000000000000000000000000000000000000000000013cb721e
Arg [30] : 0000000000000000000000000000000000000000000000000000000013afb5e0
Arg [31] : 00000000000000000000000000000000000000000000000000000000138953c8
Arg [32] : 00000000000000000000000000000000000000000000000000000000128deae1
Arg [33] : 00000000000000000000000000000000000000000000000000000000128deae1
Arg [34] : 00000000000000000000000000000000000000000000000000000000122f64e6
Arg [35] : 000000000000000000000000000000000000000000000000000000000000f332
Arg [36] : 0000000000000000000000000000000000000000000000000000000000007ad3
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.