Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw All | 12116186 | 1468 days ago | IN | 0 ETH | 0.00441342 | ||||
Submit Claim | 12115359 | 1468 days ago | IN | 0 ETH | 0.00510088 | ||||
Submit Claim | 12115336 | 1468 days ago | IN | 0 ETH | 0.02057649 | ||||
Deposit And Lock | 12109270 | 1469 days ago | IN | 1 ETH | 0.00702343 | ||||
Deposit And Lock | 12109140 | 1469 days ago | IN | 5 ETH | 0.02089729 | ||||
Whitelist Mining... | 12049922 | 1478 days ago | IN | 0 ETH | 0.0064411 |
Loading...
Loading
Contract Name:
LogOfClaimedMEVBlocks
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-03-16 */ // SPDX-License-Identifier: MIT pragma solidity >=0.7.0 <0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } // In the first version, claimed block nonce / mixDigest IS NOT VERIFIED // This contract assumes that MEV block template producer completely TRUSTS pool operator that received the signed work order. // This contract !DOES NOT VERIFY! that block nonce / mixDigest is valid or that it was broadcasted without delay // In the next version we're planning to introduce trustless approach to verify submited block nonce on-chain(see smartpool) and verify delay in seconds for share submission(using oracles) contract LogOfClaimedMEVBlocks is Ownable { uint256 internal constant FLAG_BLOCK_NONCE_LIMIT = 0x10000000000000000; mapping (address => uint) public timestampOfPossibleExit; mapping (address => uint) public depositedEther; mapping (address => address) public blockSubmissionsOperator; mapping (bytes32 => uint) public claimedBlockNonce; mapping (bytes32 => bytes32) public claimedBlockMixDigest; event Deposit(address user, uint amount); event Withdraw(address user, uint amount); event BlockClaimed(bytes32 blockHeader, bytes32 seedHash, bytes32 target, uint blockNumber, uint blockPayment, address miningPoolAddress, address mevProducerAddress, uint blockNonce, bytes32 mixDigest); // Add another mining pool to mining DAO which will receive signed work orders directly from mev producers function whitelistMiningPool(address miningPoolAddress) onlyOwner external { assert(msg.data.length == 36); blockSubmissionsOperator[miningPoolAddress] = miningPoolAddress; } function setBlockSubmissionsOperator(address newBlockSubmissionsOperator) external { assert(msg.data.length == 36); // This mining pool was already whitelisted require(blockSubmissionsOperator[msg.sender] != 0x0000000000000000000000000000000000000000); blockSubmissionsOperator[msg.sender] = newBlockSubmissionsOperator; } function depositAndLock(uint depositAmount, uint depositDuration) public payable { require(depositAmount == msg.value); // Enforcing min and max lockup durations require(depositDuration >= 24 * 60 * 60 && depositDuration < 365 * 24 * 60 * 60); timestampOfPossibleExit[msg.sender] = block.timestamp + depositDuration; if (msg.value > 0) { depositedEther[msg.sender] += msg.value; } emit Deposit(msg.sender, msg.value); } fallback () external payable { depositAndLock(msg.value, 24 * 60 * 60); } function withdrawEtherInternal(uint etherAmount) internal { // User previously deposited into contract require(depositedEther[msg.sender] > 0); // Deposit lockup period is over require(block.timestamp > timestampOfPossibleExit[msg.sender]); if (depositedEther[msg.sender] < etherAmount) etherAmount = depositedEther[msg.sender]; depositedEther[msg.sender] -= etherAmount; msg.sender.transfer(etherAmount); emit Withdraw(msg.sender, etherAmount); } function withdrawAll() external { withdrawEtherInternal((uint)(-1)); } function withdraw(uint etherAmount) external { withdrawEtherInternal(etherAmount); } function submitClaim( bytes32 blockHeader, bytes32 seedHash, bytes32 target, uint blockNumber, uint blockPayment, address payable miningPoolAddress, address mevProducerAddress, uint8 v, bytes32 r, bytes32 s, uint blockNonce, bytes32 mixDigest ) external { require(msg.sender == blockSubmissionsOperator[miningPoolAddress]); bytes32 hash = keccak256(abi.encodePacked(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress)); if (claimedBlockNonce[hash] == 0 && blockNonce < FLAG_BLOCK_NONCE_LIMIT) { if (ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == mevProducerAddress) { require(depositedEther[mevProducerAddress] >= blockPayment); claimedBlockNonce[hash] = FLAG_BLOCK_NONCE_LIMIT + blockNonce; claimedBlockMixDigest[hash] = mixDigest; depositedEther[mevProducerAddress] -= blockPayment; miningPoolAddress.transfer(blockPayment); emit BlockClaimed(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress, mevProducerAddress, blockNonce, mixDigest); } } } function checkValidityOfGetWork( bytes32 blockHeader, bytes32 seedHash, bytes32 target, uint blockNumber, uint blockPayment, address miningPoolAddress, address mevProducerAddress, uint8 v, bytes32 r, bytes32 s ) public view returns (bool isWorkSignatureCorrect, uint remainingDuration) { bytes32 hash = keccak256(abi.encodePacked(blockHeader, seedHash, target, blockNumber, blockPayment, miningPoolAddress)); if (claimedBlockNonce[hash] == 0) { if (ecrecover(keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)),v,r,s) == mevProducerAddress) { isWorkSignatureCorrect = true; if (depositedEther[mevProducerAddress] >= blockPayment && timestampOfPossibleExit[mevProducerAddress] > block.timestamp) { remainingDuration = timestampOfPossibleExit[mevProducerAddress] - block.timestamp; } } } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"indexed":false,"internalType":"bytes32","name":"target","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"blockPayment","type":"uint256"},{"indexed":false,"internalType":"address","name":"miningPoolAddress","type":"address"},{"indexed":false,"internalType":"address","name":"mevProducerAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"blockNonce","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"mixDigest","type":"bytes32"}],"name":"BlockClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blockSubmissionsOperator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"internalType":"bytes32","name":"target","type":"bytes32"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockPayment","type":"uint256"},{"internalType":"address","name":"miningPoolAddress","type":"address"},{"internalType":"address","name":"mevProducerAddress","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"checkValidityOfGetWork","outputs":[{"internalType":"bool","name":"isWorkSignatureCorrect","type":"bool"},{"internalType":"uint256","name":"remainingDuration","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimedBlockMixDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimedBlockNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"depositAmount","type":"uint256"},{"internalType":"uint256","name":"depositDuration","type":"uint256"}],"name":"depositAndLock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedEther","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newBlockSubmissionsOperator","type":"address"}],"name":"setBlockSubmissionsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"blockHeader","type":"bytes32"},{"internalType":"bytes32","name":"seedHash","type":"bytes32"},{"internalType":"bytes32","name":"target","type":"bytes32"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"uint256","name":"blockPayment","type":"uint256"},{"internalType":"address payable","name":"miningPoolAddress","type":"address"},{"internalType":"address","name":"mevProducerAddress","type":"address"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"uint256","name":"blockNonce","type":"uint256"},{"internalType":"bytes32","name":"mixDigest","type":"bytes32"}],"name":"submitClaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"timestampOfPossibleExit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"miningPoolAddress","type":"address"}],"name":"whitelistMiningPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"etherAmount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610dec8061007d6000396000f3fe6080604052600436106100e85760003560e01c8063853828b61161008a578063b1df402f11610059578063b1df402f1461038a578063bfc10279146103bd578063efd874af146103e0578063f2fde38b14610413576100e8565b8063853828b6146102355780638da5cb5b1461024a5780638f0c18251461027b578063954648b3146102fc576100e8565b8063399ff3dd116100c6578063399ff3dd14610199578063482ed2a2146101c3578063715018a6146101f6578063742d94ed1461020b576100e8565b8063044c5769146100f757806319d40c101461013c5780632e1a7d4d1461016f575b6100f53462015180610446565b005b34801561010357600080fd5b5061012a6004803603602081101561011a57600080fd5b50356001600160a01b03166104df565b60408051918252519081900360200190f35b34801561014857600080fd5b506100f56004803603602081101561015f57600080fd5b50356001600160a01b03166104f1565b34801561017b57600080fd5b506100f56004803603602081101561019257600080fd5b5035610559565b3480156101a557600080fd5b5061012a600480360360208110156101bc57600080fd5b5035610565565b3480156101cf57600080fd5b5061012a600480360360208110156101e657600080fd5b50356001600160a01b0316610577565b34801561020257600080fd5b506100f5610589565b34801561021757600080fd5b5061012a6004803603602081101561022e57600080fd5b5035610654565b34801561024157600080fd5b506100f5610666565b34801561025657600080fd5b5061025f610673565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b506100f5600480360361018081101561029f57600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e082013516906101008101359061012081013590610140810135906101600135610682565b34801561030857600080fd5b5061036f600480360361014081101561032057600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e0820135169061010081013590610120013561090f565b60408051921515835260208301919091528051918290030190f35b34801561039657600080fd5b506100f5600480360360208110156103ad57600080fd5b50356001600160a01b0316610ac0565b6100f5600480360360408110156103d357600080fd5b5080359060200135610446565b3480156103ec57600080fd5b5061025f6004803603602081101561040357600080fd5b50356001600160a01b0316610b75565b34801561041f57600080fd5b506100f56004803603602081101561043657600080fd5b50356001600160a01b0316610b90565b34821461045257600080fd5b62015180811015801561046857506301e1338081105b61047157600080fd5b336000908152600160205260409020428201905534156104a1573360009081526002602052604090208054340190555b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15050565b60016020526000908152604090205481565b602436146104fb57fe5b336000908152600360205260409020546001600160a01b031661051d57600080fd5b336000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61056281610cb1565b50565b60046020526000908152604090205481565b60026020526000908152604090205481565b610591610d8c565b6001600160a01b03166105a2610673565b6001600160a01b0316146105fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60056020526000908152604090205481565b610671600019610cb1565b565b6000546001600160a01b031690565b6001600160a01b038781166000908152600360205260409020541633146106a857600080fd5b6040805160208082018f90528183018e905260608083018e9052608083018d905260a083018c90528a901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529190205415801561072457506801000000000000000083105b1561090057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156107db573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610900576001600160a01b03871660009081526002602052604090205489111561081957600080fd5b60008181526004602090815260408083206801000000000000000087019055600582528083208590556001600160a01b03808b168452600290925280832080548d9003905551908a16918b156108fc02918c91818181858888f19350505050158015610889573d6000803e3d6000fd5b50604080518e8152602081018e90528082018d9052606081018c9052608081018b90526001600160a01b03808b1660a0830152891660c082015260e08101859052610100810184905290517f3da6c93964cc5a2d7155868e6efef7f5c61022c4b932b267b92f808501635755918190036101200190a15b50505050505050505050505050565b6040805160208082018d90528183018c905260608083018c9052608083018b905260a083018a905288901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529181205490918291610ab057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a30573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610ab0576001600160a01b038716600090815260026020526040902054600193508911801590610a8c57506001600160a01b03871660009081526001602052604090205442105b15610ab0576001600160a01b03871660009081526001602052604090205442900391505b509a509a98505050505050505050565b610ac8610d8c565b6001600160a01b0316610ad9610673565b6001600160a01b031614610b34576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60243614610b3e57fe5b6001600160a01b03166000818152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6003602052600090815260409020546001600160a01b031681565b610b98610d8c565b6001600160a01b0316610ba9610673565b6001600160a01b031614610c04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610c495760405162461bcd60e51b8152600401808060200182810382526026815260200180610d916026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b33600090815260026020526040902054610cca57600080fd5b336000908152600160205260409020544211610ce557600080fd5b33600090815260026020526040902054811115610d0e5750336000908152600260205260409020545b33600081815260026020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610d4d573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c864736f6c63430007040033
Deployed Bytecode
0x6080604052600436106100e85760003560e01c8063853828b61161008a578063b1df402f11610059578063b1df402f1461038a578063bfc10279146103bd578063efd874af146103e0578063f2fde38b14610413576100e8565b8063853828b6146102355780638da5cb5b1461024a5780638f0c18251461027b578063954648b3146102fc576100e8565b8063399ff3dd116100c6578063399ff3dd14610199578063482ed2a2146101c3578063715018a6146101f6578063742d94ed1461020b576100e8565b8063044c5769146100f757806319d40c101461013c5780632e1a7d4d1461016f575b6100f53462015180610446565b005b34801561010357600080fd5b5061012a6004803603602081101561011a57600080fd5b50356001600160a01b03166104df565b60408051918252519081900360200190f35b34801561014857600080fd5b506100f56004803603602081101561015f57600080fd5b50356001600160a01b03166104f1565b34801561017b57600080fd5b506100f56004803603602081101561019257600080fd5b5035610559565b3480156101a557600080fd5b5061012a600480360360208110156101bc57600080fd5b5035610565565b3480156101cf57600080fd5b5061012a600480360360208110156101e657600080fd5b50356001600160a01b0316610577565b34801561020257600080fd5b506100f5610589565b34801561021757600080fd5b5061012a6004803603602081101561022e57600080fd5b5035610654565b34801561024157600080fd5b506100f5610666565b34801561025657600080fd5b5061025f610673565b604080516001600160a01b039092168252519081900360200190f35b34801561028757600080fd5b506100f5600480360361018081101561029f57600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e082013516906101008101359061012081013590610140810135906101600135610682565b34801561030857600080fd5b5061036f600480360361014081101561032057600080fd5b508035906020810135906040810135906060810135906080810135906001600160a01b0360a082013581169160c08101359091169060ff60e0820135169061010081013590610120013561090f565b60408051921515835260208301919091528051918290030190f35b34801561039657600080fd5b506100f5600480360360208110156103ad57600080fd5b50356001600160a01b0316610ac0565b6100f5600480360360408110156103d357600080fd5b5080359060200135610446565b3480156103ec57600080fd5b5061025f6004803603602081101561040357600080fd5b50356001600160a01b0316610b75565b34801561041f57600080fd5b506100f56004803603602081101561043657600080fd5b50356001600160a01b0316610b90565b34821461045257600080fd5b62015180811015801561046857506301e1338081105b61047157600080fd5b336000908152600160205260409020428201905534156104a1573360009081526002602052604090208054340190555b6040805133815234602082015281517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c929181900390910190a15050565b60016020526000908152604090205481565b602436146104fb57fe5b336000908152600360205260409020546001600160a01b031661051d57600080fd5b336000908152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b61056281610cb1565b50565b60046020526000908152604090205481565b60026020526000908152604090205481565b610591610d8c565b6001600160a01b03166105a2610673565b6001600160a01b0316146105fd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36000805473ffffffffffffffffffffffffffffffffffffffff19169055565b60056020526000908152604090205481565b610671600019610cb1565b565b6000546001600160a01b031690565b6001600160a01b038781166000908152600360205260409020541633146106a857600080fd5b6040805160208082018f90528183018e905260608083018e9052608083018d905260a083018c90528a901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529190205415801561072457506801000000000000000083105b1561090057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156107db573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610900576001600160a01b03871660009081526002602052604090205489111561081957600080fd5b60008181526004602090815260408083206801000000000000000087019055600582528083208590556001600160a01b03808b168452600290925280832080548d9003905551908a16918b156108fc02918c91818181858888f19350505050158015610889573d6000803e3d6000fd5b50604080518e8152602081018e90528082018d9052606081018c9052608081018b90526001600160a01b03808b1660a0830152891660c082015260e08101859052610100810184905290517f3da6c93964cc5a2d7155868e6efef7f5c61022c4b932b267b92f808501635755918190036101200190a15b50505050505050505050505050565b6040805160208082018d90528183018c905260608083018c9052608083018b905260a083018a905288901b6bffffffffffffffffffffffff191660c0830152825180830360b401815260d49092018352815191810191909120600081815260049092529181205490918291610ab057866001600160a01b031660018260405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c018281526020019150506040516020818303038152906040528051906020012088888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a30573d6000803e3d6000fd5b505050602060405103516001600160a01b03161415610ab0576001600160a01b038716600090815260026020526040902054600193508911801590610a8c57506001600160a01b03871660009081526001602052604090205442105b15610ab0576001600160a01b03871660009081526001602052604090205442900391505b509a509a98505050505050505050565b610ac8610d8c565b6001600160a01b0316610ad9610673565b6001600160a01b031614610b34576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60243614610b3e57fe5b6001600160a01b03166000818152600360205260409020805473ffffffffffffffffffffffffffffffffffffffff19169091179055565b6003602052600090815260409020546001600160a01b031681565b610b98610d8c565b6001600160a01b0316610ba9610673565b6001600160a01b031614610c04576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610c495760405162461bcd60e51b8152600401808060200182810382526026815260200180610d916026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b33600090815260026020526040902054610cca57600080fd5b336000908152600160205260409020544211610ce557600080fd5b33600090815260026020526040902054811115610d0e5750336000908152600260205260409020545b33600081815260026020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610d4d573d6000803e3d6000fd5b50604080513381526020810183905281517f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364929181900390910190a150565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c864736f6c63430007040033
Deployed Bytecode Sourcemap
2662:5139:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4638:39;4653:9;4664:12;4638:14;:39::i;:::-;2662:5139;2788:56;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2788:56:0;-1:-1:-1;;;;;2788:56:0;;:::i;:::-;;;;;;;;;;;;;;;;3721:363;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3721:363:0;-1:-1:-1;;;;;3721:363:0;;:::i;5330:98::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5330:98:0;;:::i;2974:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2974:50:0;;:::i;2851:47::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2851:47:0;-1:-1:-1;;;;;2851:47:0;;:::i;1601:148::-;;;;;;;;;;;;;:::i;3031:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3031:57:0;;:::i;5240:84::-;;;;;;;;;;;;;:::i;950:87::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;950:87:0;;;;;;;;;;;;;;5438:1321;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5438:1321:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5438:1321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;6767:1031::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6767:1031:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6767:1031:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3516:197;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3516:197:0;-1:-1:-1;;;;;3516:197:0;;:::i;4092:500::-;;;;;;;;;;;;;;;;-1:-1:-1;4092:500:0;;;;;;;:::i;2907:60::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2907:60:0;-1:-1:-1;;;;;2907:60:0;;:::i;1904:244::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1904:244:0;-1:-1:-1;;;;;1904:244:0;;:::i;4092:500::-;4209:9;4192:13;:26;4184:35;;;;;;4308:12;4289:15;:31;;:71;;;;;4342:18;4324:15;:36;4289:71;4281:80;;;;;;4396:10;4372:35;;;;:23;:35;;;;;4410:15;:33;;4372:71;;4458:9;:13;4454:85;;4503:10;4488:26;;;;:14;:26;;;;;:39;;4518:9;4488:39;;;4454:85;4554:30;;;4562:10;4554:30;;4574:9;4554:30;;;;;;;;;;;;;;;;;4092:500;;:::o;2788:56::-;;;;;;;;;;;;;:::o;3721:363::-;3841:2;3822:8;:21;3815:29;;;;3941:10;3916:36;;;;:24;:36;;;;;;-1:-1:-1;;;;;3916:36:0;3908:91;;;;;;4035:10;4010:36;;;;:24;:36;;;;;:66;;-1:-1:-1;;4010:66:0;-1:-1:-1;;;;;4010:66:0;;;;;;;;;;3721:363::o;5330:98::-;5386:34;5408:11;5386:21;:34::i;:::-;5330:98;:::o;2974:50::-;;;;;;;;;;;;;:::o;2851:47::-;;;;;;;;;;;;;:::o;1601:148::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1708:1:::1;1692:6:::0;;1671:40:::1;::::0;-1:-1:-1;;;;;1692:6:0;;::::1;::::0;1671:40:::1;::::0;1708:1;;1671:40:::1;1739:1;1722:19:::0;;-1:-1:-1;;1722:19:0::1;::::0;;1601:148::o;3031:57::-;;;;;;;;;;;;;:::o;5240:84::-;5283:33;-1:-1:-1;;5283:21:0;:33::i;:::-;5240:84::o;950:87::-;996:7;1023:6;-1:-1:-1;;;;;1023:6:0;950:87;:::o;5438:1321::-;-1:-1:-1;;;;;5838:43:0;;;;;;;:24;:43;;;;;;;5824:10;:57;5816:66;;;;;;5918:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5918:93:0;;;;;;;;;;;;;;;;;;;;5908:104;;;;;;;;;-1:-1:-1;6027:23:0;;;:17;:23;;;;;;;:28;:67;;;;;2762:19;6059:10;:35;6027:67;6023:729;;;6205:18;-1:-1:-1;;;;;6115:108:0;:86;6188:4;6135:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6125:69;;;;;;6195:1;6197;6199;6115:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6115:108:0;;6111:630;;;-1:-1:-1;;;;;6252:34:0;;;;;;:14;:34;;;;;;:50;-1:-1:-1;6252:50:0;6244:59;;;;;;6322:23;;;;:17;:23;;;;;;;;2762:19;6348:35;;6322:61;;6402:21;:27;;;;;:39;;;-1:-1:-1;;;;;6460:34:0;;;;;:14;:34;;;;;;:50;;;;;;;6529:40;:26;;;;:40;;;;;6498:12;;6529:40;6322:23;6529:40;6498:12;6529:26;:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6593:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6593:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6111:630;5438:1321;;;;;;;;;;;;;:::o;6767:1031::-;7184:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7184:93:0;;;;;;;;;;;;;;;;;;;;7174:104;;;;;;;;;-1:-1:-1;7293:23:0;;;:17;:23;;;;;;;-1:-1:-1;;;;7289:502:0;;7432:18;-1:-1:-1;;;;;7342:108:0;:86;7415:4;7362:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7352:69;;;;;;7422:1;7424;7426;7342:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7342:108:0;;7338:442;;;-1:-1:-1;;;;;7523:34:0;;;;;;:14;:34;;;;;;7496:4;;-1:-1:-1;7523:50:0;-1:-1:-1;7523:50:0;;;:116;;-1:-1:-1;;;;;;7577:43:0;;;;;;:23;:43;;;;;;7624:15;-1:-1:-1;7523:116:0;7519:246;;;-1:-1:-1;;;;;7684:43:0;;;;;;:23;:43;;;;;;7730:15;7684:61;;;-1:-1:-1;7519:246:0;6767:1031;;;;;;;;;;;;;;:::o;3516:197::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3628:2:::1;3609:8;:21;3602:29;;;;-1:-1:-1::0;;;;;3642:43:0::1;;::::0;;;:24:::1;:43;::::0;;;;:63;;-1:-1:-1;;3642:63:0::1;::::0;;::::1;::::0;;3516:197::o;2907:60::-;;;;;;;;;;;;-1:-1:-1;;;;;2907:60:0;;:::o;1904:244::-;1181:12;:10;:12::i;:::-;-1:-1:-1;;;;;1170:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1170:23:0;;1162:68;;;;;-1:-1:-1;;;1162:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1993:22:0;::::1;1985:73;;;;-1:-1:-1::0;;;1985:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2095:6;::::0;;2074:38:::1;::::0;-1:-1:-1;;;;;2074:38:0;;::::1;::::0;2095:6;::::1;::::0;2074:38:::1;::::0;::::1;2123:6;:17:::0;;-1:-1:-1;;2123:17:0::1;-1:-1:-1::0;;;;;2123:17:0;;;::::1;::::0;;;::::1;::::0;;1904:244::o;4695:537::-;4839:10;4853:1;4824:26;;;:14;:26;;;;;;4816:39;;;;;;4958:10;4934:35;;;;:23;:35;;;;;;4916:15;:53;4908:62;;;;;;5000:10;4985:26;;;;:14;:26;;;;;;:40;-1:-1:-1;4981:99:0;;;-1:-1:-1;5069:10:0;5054:26;;;;:14;:26;;;;;;4981:99;5106:10;5091:26;;;;:14;:26;;;;;;:41;;;;;;;5143:32;;;;;;5121:11;;5143:32;;5091:26;5143:32;5121:11;5106:10;5143:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5191:33:0;;;5200:10;5191:33;;;;;;;;;;;;;;;;;;;;;4695:537;:::o;101:98::-;181:10;101:98;:::o
Swarm Source
ipfs://eb07fa553f7959c5461edaecd3a34a5bed49c61a457a871132515330496136c8
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
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.