Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 439 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 17739177 | 641 days ago | IN | 0 ETH | 0.00053574 | ||||
Edit Claim State | 17739175 | 641 days ago | IN | 0 ETH | 0.000405 | ||||
Claim Pieces | 17730907 | 642 days ago | IN | 0.025 ETH | 0.0010746 | ||||
Claim Pieces | 17709293 | 645 days ago | IN | 0.025 ETH | 0.00094906 | ||||
Claim Pieces | 17705616 | 645 days ago | IN | 0.025 ETH | 0.00118109 | ||||
Claim Pieces | 17703419 | 646 days ago | IN | 0.175 ETH | 0.00098258 | ||||
Edit Claim State | 17703359 | 646 days ago | IN | 0 ETH | 0.00055632 | ||||
Withdraw | 17702211 | 646 days ago | IN | 0 ETH | 0.0003808 | ||||
Transfer Ownersh... | 17702197 | 646 days ago | IN | 0 ETH | 0.00033896 | ||||
Edit Claim State | 17694475 | 647 days ago | IN | 0 ETH | 0.00034053 | ||||
Claim Pieces | 17694321 | 647 days ago | IN | 0.075 ETH | 0.00113303 | ||||
Claim Pieces | 17694227 | 647 days ago | IN | 0.025 ETH | 0.00111502 | ||||
Claim Pieces | 17694226 | 647 days ago | IN | 0.025 ETH | 0.0011314 | ||||
Claim Pieces | 17694188 | 647 days ago | IN | 0.025 ETH | 0.00121665 | ||||
Claim Pieces | 17693804 | 647 days ago | IN | 0.05 ETH | 0.00261683 | ||||
Claim Pieces | 17693181 | 647 days ago | IN | 0.025 ETH | 0.00243868 | ||||
Claim Pieces | 17692452 | 647 days ago | IN | 0.025 ETH | 0.00350833 | ||||
Claim Pieces | 17689807 | 648 days ago | IN | 0.025 ETH | 0.00140605 | ||||
Claim Pieces | 17689693 | 648 days ago | IN | 0.025 ETH | 0.00186243 | ||||
Claim Pieces | 17688605 | 648 days ago | IN | 0.025 ETH | 0.00162055 | ||||
Claim Pieces | 17688405 | 648 days ago | IN | 0.025 ETH | 0.00162676 | ||||
Claim Pieces | 17687772 | 648 days ago | IN | 0.025 ETH | 0.00199191 | ||||
Claim Pieces | 17687531 | 648 days ago | IN | 0.15 ETH | 0.00215885 | ||||
Claim Pieces | 17687192 | 648 days ago | IN | 0.05 ETH | 0.00485998 | ||||
Claim Pieces | 17687168 | 648 days ago | IN | 0.05 ETH | 0.00603461 |
Loading...
Loading
Contract Name:
TheFinalPatternClaim
Compiler Version
v0.8.13+commit.abaa5c0e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.9; import {Ownable} from "openzeppelin-contracts/access/Ownable.sol"; import {MerkleProof} from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {Address} from "@openzeppelin/contracts/utils/Address.sol"; contract TheFinalPatternClaim is Ownable, ReentrancyGuard { mapping (address => uint256) claimedAmount; bool claimIsOpen; uint256 maxClaims = 1216; uint256 price = 0.025 ether; uint256 claimedTotal; bytes32 public root = 0x18e48ce065b309ce7f8cb41788a8f6e7cef573141b6a0f559fc5ed212eafbab5; function editRoot(bytes32 _root) external onlyOwner { root = _root; } function editMaxClaims(uint256 _maxClaims) external onlyOwner { maxClaims = _maxClaims; } function editPrice(uint256 _price) external onlyOwner { price = _price; } function editClaimState(bool _open) external onlyOwner { claimIsOpen = _open; } function getClaimedPiecesForAddress(address _claimer) public view returns (uint256) { return claimedAmount[_claimer]; } function getTotalClaimed() public view returns (uint256) { return claimedTotal; } function claimPieces(string memory _btcAddress, uint256 _qtyReserved, uint256 _qtyClaimed, bytes32[] calldata _p) external payable nonReentrant { require(claimedTotal + _qtyClaimed <= maxClaims, "Max claim supply reached."); if (msg.sender != owner()) { require(claimIsOpen, "Claim must be open."); require(msg.value == _qtyClaimed * price); } bool validProof = MerkleProof.verify(_p, root, keccak256(abi.encodePacked(msg.sender, _qtyReserved))); require(validProof, "Must pass the correct proof"); require(claimedAmount[msg.sender] + _qtyClaimed <= _qtyReserved, "Too many claims for wallet."); claimedAmount[msg.sender] += _qtyClaimed; claimedTotal += _qtyClaimed; } function withdraw() public onlyOwner { uint256 balance = address(this).balance; Address.sendValue(payable(owner()), balance); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol) pragma solidity ^0.8.1; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== * * [IMPORTANT] * ==== * You shouldn't rely on `isContract` to protect against flash loan attacks! * * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract * constructor. * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize/address.code.length, which returns 0 // for contracts in construction, since the code is only stored at the end // of the constructor execution. return account.code.length > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata, errorMessage); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract. * * _Available since v4.8._ */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata, string memory errorMessage ) internal view returns (bytes memory) { if (success) { if (returndata.length == 0) { // only check isContract if the call was successful and the return data is empty // otherwise we already know that it was a contract require(isContract(target), "Address: call to non-contract"); } return returndata; } else { _revert(returndata, errorMessage); } } /** * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the * revert reason or using the provided one. * * _Available since v4.3._ */ function verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) internal pure returns (bytes memory) { if (success) { return returndata; } else { _revert(returndata, errorMessage); } } function _revert(bytes memory returndata, string memory errorMessage) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The tree and the proofs can be generated using our * https://github.com/OpenZeppelin/merkle-tree[JavaScript library]. * You will find a quickstart guide in the readme. * * WARNING: You should avoid using leaf values that are 64 bytes long prior to * hashing, or use a hash function other than keccak256 for hashing leaves. * This is because the concatenation of a sorted pair of internal nodes in * the merkle tree could be reinterpreted as a leaf value. * OpenZeppelin's JavaScript library generates merkle trees that are safe * against this attack out of the box. */ library MerkleProof { /** * @dev Returns true if a `leaf` can be proved to be a part of a Merkle tree * defined by `root`. For this, a `proof` must be provided, containing * sibling hashes on the branch from the leaf to the root of the tree. Each * pair of leaves and each pair of pre-images are assumed to be sorted. */ function verify( bytes32[] memory proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProof(proof, leaf) == root; } /** * @dev Calldata version of {verify} * * _Available since v4.7._ */ function verifyCalldata( bytes32[] calldata proof, bytes32 root, bytes32 leaf ) internal pure returns (bool) { return processProofCalldata(proof, leaf) == root; } /** * @dev Returns the rebuilt hash obtained by traversing a Merkle tree up * from `leaf` using `proof`. A `proof` is valid if and only if the rebuilt * hash matches the root of the tree. When processing the proof, the pairs * of leafs & pre-images are assumed to be sorted. * * _Available since v4.4._ */ function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Calldata version of {processProof} * * _Available since v4.7._ */ function processProofCalldata(bytes32[] calldata proof, bytes32 leaf) internal pure returns (bytes32) { bytes32 computedHash = leaf; for (uint256 i = 0; i < proof.length; i++) { computedHash = _hashPair(computedHash, proof[i]); } return computedHash; } /** * @dev Returns true if the `leaves` can be simultaneously proven to be a part of a merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerify( bytes32[] memory proof, bool[] memory proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProof(proof, proofFlags, leaves) == root; } /** * @dev Calldata version of {multiProofVerify} * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function multiProofVerifyCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32 root, bytes32[] memory leaves ) internal pure returns (bool) { return processMultiProofCalldata(proof, proofFlags, leaves) == root; } /** * @dev Returns the root of a tree reconstructed from `leaves` and sibling nodes in `proof`. The reconstruction * proceeds by incrementally reconstructing all inner nodes by combining a leaf/inner node with either another * leaf/inner node or a proof sibling node, depending on whether each `proofFlags` item is true or false * respectively. * * CAUTION: Not all merkle trees admit multiproofs. To use multiproofs, it is sufficient to ensure that: 1) the tree * is complete (but not necessarily perfect), 2) the leaves to be proven are in the opposite order they are in the * tree (i.e., as seen from right to left starting at the deepest layer and continuing at the next layer). * * _Available since v4.7._ */ function processMultiProof( bytes32[] memory proof, bool[] memory proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } /** * @dev Calldata version of {processMultiProof}. * * CAUTION: Not all merkle trees admit multiproofs. See {processMultiProof} for details. * * _Available since v4.7._ */ function processMultiProofCalldata( bytes32[] calldata proof, bool[] calldata proofFlags, bytes32[] memory leaves ) internal pure returns (bytes32 merkleRoot) { // This function rebuild the root hash by traversing the tree up from the leaves. The root is rebuilt by // consuming and producing values on a queue. The queue starts with the `leaves` array, then goes onto the // `hashes` array. At the end of the process, the last hash in the `hashes` array should contain the root of // the merkle tree. uint256 leavesLen = leaves.length; uint256 totalHashes = proofFlags.length; // Check proof validity. require(leavesLen + proof.length - 1 == totalHashes, "MerkleProof: invalid multiproof"); // The xxxPos values are "pointers" to the next value to consume in each array. All accesses are done using // `xxx[xxxPos++]`, which return the current value and increment the pointer, thus mimicking a queue's "pop". bytes32[] memory hashes = new bytes32[](totalHashes); uint256 leafPos = 0; uint256 hashPos = 0; uint256 proofPos = 0; // At each step, we compute the next hash using two values: // - a value from the "main queue". If not all leaves have been consumed, we get the next leaf, otherwise we // get the next hash. // - depending on the flag, either another value for the "main queue" (merging branches) or an element from the // `proof` array. for (uint256 i = 0; i < totalHashes; i++) { bytes32 a = leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++]; bytes32 b = proofFlags[i] ? leafPos < leavesLen ? leaves[leafPos++] : hashes[hashPos++] : proof[proofPos++]; hashes[i] = _hashPair(a, b); } if (totalHashes > 0) { return hashes[totalHashes - 1]; } else if (leavesLen > 0) { return leaves[0]; } else { return proof[0]; } } function _hashPair(bytes32 a, bytes32 b) private pure returns (bytes32) { return a < b ? _efficientHash(a, b) : _efficientHash(b, a); } function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) { /// @solidity memory-safe-assembly assembly { mstore(0x00, a) mstore(0x20, b) value := keccak256(0x00, 0x40) } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../GSN/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ 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 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; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with GSN meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"string","name":"_btcAddress","type":"string"},{"internalType":"uint256","name":"_qtyReserved","type":"uint256"},{"internalType":"uint256","name":"_qtyClaimed","type":"uint256"},{"internalType":"bytes32[]","name":"_p","type":"bytes32[]"}],"name":"claimPieces","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bool","name":"_open","type":"bool"}],"name":"editClaimState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxClaims","type":"uint256"}],"name":"editMaxClaims","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"editPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"editRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_claimer","type":"address"}],"name":"getClaimedPiecesForAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalClaimed","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":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040526104c06004556658d15e176280006005557f18e48ce065b309ce7f8cb41788a8f6e7cef573141b6a0f559fc5ed212eafbab560001b60075534801561004857600080fd5b50600061005961010360201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001808190555061010b565b600033905090565b61193c8061011a6000396000f3fe6080604052600436106100a75760003560e01c806398986721116100645780639898672114610196578063a22a8b29146101b2578063e1e407d2146101db578063ebf0c71714610204578063f2fde38b1461022f578063f747664914610258576100a7565b806337390bb9146100ac5780633ccfd60b146100d5578063715018a6146100ec578063736a83a11461010357806373e7e2c71461012e5780638da5cb5b1461016b575b600080fd5b3480156100b857600080fd5b506100d360048036038101906100ce9190610e64565b610281565b005b3480156100e157600080fd5b506100ea610320565b005b3480156100f857600080fd5b506101016103ce565b005b34801561010f57600080fd5b50610118610521565b6040516101259190610ea0565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190610f19565b61052b565b6040516101629190610ea0565b60405180910390f35b34801561017757600080fd5b50610180610574565b60405161018d9190610f55565b60405180910390f35b6101b060048036038101906101ab9190611116565b61059d565b005b3480156101be57600080fd5b506101d960048036038101906101d49190610e64565b610860565b005b3480156101e757600080fd5b5061020260048036038101906101fd91906111f2565b6108ff565b005b34801561021057600080fd5b506102196109b1565b6040516102269190611238565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190610f19565b6109b7565b005b34801561026457600080fd5b5061027f600480360381019061027a919061127f565b610b78565b005b610289610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90611309565b60405180910390fd5b8060048190555050565b610328610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ac90611309565b60405180910390fd5b60004790506103cb6103c5610574565b82610c1f565b50565b6103d6610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045a90611309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600654905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a5610d13565b600454836006546105b69190611358565b11156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee906113fa565b60405180910390fd5b6105ff610574565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069a57600360009054906101000a900460ff16610680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067790611466565b60405180910390fd5b6005548361068e9190611486565b341461069957600080fd5b5b6000610712838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060075433886040516020016106f7929190611549565b60405160208183030381529060405280519060200120610d62565b905080610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074b906115c1565b60405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a09190611358565b11156107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061162d565b60405180910390fd5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108309190611358565b9250508190555083600660008282546108499190611358565b9250508190555050610859610d79565b5050505050565b610868610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90611309565b60405180910390fd5b8060058190555050565b610907610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90611309565b60405180910390fd5b80600360006101000a81548160ff02191690831515021790555050565b60075481565b6109bf610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390611309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906116bf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b80610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490611309565b60405180910390fd5b8060078190555050565b600033905090565b80471015610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c599061172b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610c889061177c565b60006040518083038185875af1925050503d8060008114610cc5576040519150601f19603f3d011682016040523d82523d6000602084013e610cca565b606091505b5050905080610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590611803565b60405180910390fd5b505050565b600260015403610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061186f565b60405180910390fd5b6002600181905550565b600082610d6f8584610d82565b1490509392505050565b60018081905550565b60008082905060005b8451811015610dcd57610db882868381518110610dab57610daa61188f565b5b6020026020010151610dd8565b91508080610dc5906118be565b915050610d8b565b508091505092915050565b6000818310610df057610deb8284610e03565b610dfb565b610dfa8383610e03565b5b905092915050565b600082600052816020526040600020905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610e4181610e2e565b8114610e4c57600080fd5b50565b600081359050610e5e81610e38565b92915050565b600060208284031215610e7a57610e79610e24565b5b6000610e8884828501610e4f565b91505092915050565b610e9a81610e2e565b82525050565b6000602082019050610eb56000830184610e91565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ee682610ebb565b9050919050565b610ef681610edb565b8114610f0157600080fd5b50565b600081359050610f1381610eed565b92915050565b600060208284031215610f2f57610f2e610e24565b5b6000610f3d84828501610f04565b91505092915050565b610f4f81610edb565b82525050565b6000602082019050610f6a6000830184610f46565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fc382610f7a565b810181811067ffffffffffffffff82111715610fe257610fe1610f8b565b5b80604052505050565b6000610ff5610e1a565b90506110018282610fba565b919050565b600067ffffffffffffffff82111561102157611020610f8b565b5b61102a82610f7a565b9050602081019050919050565b82818337600083830152505050565b600061105961105484611006565b610feb565b90508281526020810184848401111561107557611074610f75565b5b611080848285611037565b509392505050565b600082601f83011261109d5761109c610f70565b5b81356110ad848260208601611046565b91505092915050565b600080fd5b600080fd5b60008083601f8401126110d6576110d5610f70565b5b8235905067ffffffffffffffff8111156110f3576110f26110b6565b5b60208301915083602082028301111561110f5761110e6110bb565b5b9250929050565b60008060008060006080868803121561113257611131610e24565b5b600086013567ffffffffffffffff8111156111505761114f610e29565b5b61115c88828901611088565b955050602061116d88828901610e4f565b945050604061117e88828901610e4f565b935050606086013567ffffffffffffffff81111561119f5761119e610e29565b5b6111ab888289016110c0565b92509250509295509295909350565b60008115159050919050565b6111cf816111ba565b81146111da57600080fd5b50565b6000813590506111ec816111c6565b92915050565b60006020828403121561120857611207610e24565b5b6000611216848285016111dd565b91505092915050565b6000819050919050565b6112328161121f565b82525050565b600060208201905061124d6000830184611229565b92915050565b61125c8161121f565b811461126757600080fd5b50565b60008135905061127981611253565b92915050565b60006020828403121561129557611294610e24565b5b60006112a38482850161126a565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f36020836112ac565b91506112fe826112bd565b602082019050919050565b60006020820190508181036000830152611322816112e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061136382610e2e565b915061136e83610e2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113a3576113a2611329565b5b828201905092915050565b7f4d617820636c61696d20737570706c7920726561636865642e00000000000000600082015250565b60006113e46019836112ac565b91506113ef826113ae565b602082019050919050565b60006020820190508181036000830152611413816113d7565b9050919050565b7f436c61696d206d757374206265206f70656e2e00000000000000000000000000600082015250565b60006114506013836112ac565b915061145b8261141a565b602082019050919050565b6000602082019050818103600083015261147f81611443565b9050919050565b600061149182610e2e565b915061149c83610e2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156114d5576114d4611329565b5b828202905092915050565b60008160601b9050919050565b60006114f8826114e0565b9050919050565b600061150a826114ed565b9050919050565b61152261151d82610edb565b6114ff565b82525050565b6000819050919050565b61154361153e82610e2e565b611528565b82525050565b60006115558285611511565b6014820191506115658284611532565b6020820191508190509392505050565b7f4d75737420706173732074686520636f72726563742070726f6f660000000000600082015250565b60006115ab601b836112ac565b91506115b682611575565b602082019050919050565b600060208201905081810360008301526115da8161159e565b9050919050565b7f546f6f206d616e7920636c61696d7320666f722077616c6c65742e0000000000600082015250565b6000611617601b836112ac565b9150611622826115e1565b602082019050919050565b600060208201905081810360008301526116468161160a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006116a96026836112ac565b91506116b48261164d565b604082019050919050565b600060208201905081810360008301526116d88161169c565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000611715601d836112ac565b9150611720826116df565b602082019050919050565b6000602082019050818103600083015261174481611708565b9050919050565b600081905092915050565b50565b600061176660008361174b565b915061177182611756565b600082019050919050565b600061178782611759565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006117ed603a836112ac565b91506117f882611791565b604082019050919050565b6000602082019050818103600083015261181c816117e0565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611859601f836112ac565b915061186482611823565b602082019050919050565b600060208201905081810360008301526118888161184c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006118c982610e2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118fb576118fa611329565b5b60018201905091905056fea264697066735822122051c7f75dbda7209194ca4c9d515df6a73a51327a5930fe45b515d823cfbe50c064736f6c634300080d0033
Deployed Bytecode
0x6080604052600436106100a75760003560e01c806398986721116100645780639898672114610196578063a22a8b29146101b2578063e1e407d2146101db578063ebf0c71714610204578063f2fde38b1461022f578063f747664914610258576100a7565b806337390bb9146100ac5780633ccfd60b146100d5578063715018a6146100ec578063736a83a11461010357806373e7e2c71461012e5780638da5cb5b1461016b575b600080fd5b3480156100b857600080fd5b506100d360048036038101906100ce9190610e64565b610281565b005b3480156100e157600080fd5b506100ea610320565b005b3480156100f857600080fd5b506101016103ce565b005b34801561010f57600080fd5b50610118610521565b6040516101259190610ea0565b60405180910390f35b34801561013a57600080fd5b5061015560048036038101906101509190610f19565b61052b565b6040516101629190610ea0565b60405180910390f35b34801561017757600080fd5b50610180610574565b60405161018d9190610f55565b60405180910390f35b6101b060048036038101906101ab9190611116565b61059d565b005b3480156101be57600080fd5b506101d960048036038101906101d49190610e64565b610860565b005b3480156101e757600080fd5b5061020260048036038101906101fd91906111f2565b6108ff565b005b34801561021057600080fd5b506102196109b1565b6040516102269190611238565b60405180910390f35b34801561023b57600080fd5b5061025660048036038101906102519190610f19565b6109b7565b005b34801561026457600080fd5b5061027f600480360381019061027a919061127f565b610b78565b005b610289610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161030d90611309565b60405180910390fd5b8060048190555050565b610328610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146103b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103ac90611309565b60405180910390fd5b60004790506103cb6103c5610574565b82610c1f565b50565b6103d6610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045a90611309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600654905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6105a5610d13565b600454836006546105b69190611358565b11156105f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ee906113fa565b60405180910390fd5b6105ff610574565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069a57600360009054906101000a900460ff16610680576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067790611466565b60405180910390fd5b6005548361068e9190611486565b341461069957600080fd5b5b6000610712838380806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505060075433886040516020016106f7929190611549565b60405160208183030381529060405280519060200120610d62565b905080610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074b906115c1565b60405180910390fd5b8484600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107a09190611358565b11156107e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d89061162d565b60405180910390fd5b83600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108309190611358565b9250508190555083600660008282546108499190611358565b9250508190555050610859610d79565b5050505050565b610868610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ec90611309565b60405180910390fd5b8060058190555050565b610907610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610994576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098b90611309565b60405180910390fd5b80600360006101000a81548160ff02191690831515021790555050565b60075481565b6109bf610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4390611309565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab2906116bf565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b80610c17565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0490611309565b60405180910390fd5b8060078190555050565b600033905090565b80471015610c62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c599061172b565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051610c889061177c565b60006040518083038185875af1925050503d8060008114610cc5576040519150601f19603f3d011682016040523d82523d6000602084013e610cca565b606091505b5050905080610d0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0590611803565b60405180910390fd5b505050565b600260015403610d58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4f9061186f565b60405180910390fd5b6002600181905550565b600082610d6f8584610d82565b1490509392505050565b60018081905550565b60008082905060005b8451811015610dcd57610db882868381518110610dab57610daa61188f565b5b6020026020010151610dd8565b91508080610dc5906118be565b915050610d8b565b508091505092915050565b6000818310610df057610deb8284610e03565b610dfb565b610dfa8383610e03565b5b905092915050565b600082600052816020526040600020905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b610e4181610e2e565b8114610e4c57600080fd5b50565b600081359050610e5e81610e38565b92915050565b600060208284031215610e7a57610e79610e24565b5b6000610e8884828501610e4f565b91505092915050565b610e9a81610e2e565b82525050565b6000602082019050610eb56000830184610e91565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ee682610ebb565b9050919050565b610ef681610edb565b8114610f0157600080fd5b50565b600081359050610f1381610eed565b92915050565b600060208284031215610f2f57610f2e610e24565b5b6000610f3d84828501610f04565b91505092915050565b610f4f81610edb565b82525050565b6000602082019050610f6a6000830184610f46565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610fc382610f7a565b810181811067ffffffffffffffff82111715610fe257610fe1610f8b565b5b80604052505050565b6000610ff5610e1a565b90506110018282610fba565b919050565b600067ffffffffffffffff82111561102157611020610f8b565b5b61102a82610f7a565b9050602081019050919050565b82818337600083830152505050565b600061105961105484611006565b610feb565b90508281526020810184848401111561107557611074610f75565b5b611080848285611037565b509392505050565b600082601f83011261109d5761109c610f70565b5b81356110ad848260208601611046565b91505092915050565b600080fd5b600080fd5b60008083601f8401126110d6576110d5610f70565b5b8235905067ffffffffffffffff8111156110f3576110f26110b6565b5b60208301915083602082028301111561110f5761110e6110bb565b5b9250929050565b60008060008060006080868803121561113257611131610e24565b5b600086013567ffffffffffffffff8111156111505761114f610e29565b5b61115c88828901611088565b955050602061116d88828901610e4f565b945050604061117e88828901610e4f565b935050606086013567ffffffffffffffff81111561119f5761119e610e29565b5b6111ab888289016110c0565b92509250509295509295909350565b60008115159050919050565b6111cf816111ba565b81146111da57600080fd5b50565b6000813590506111ec816111c6565b92915050565b60006020828403121561120857611207610e24565b5b6000611216848285016111dd565b91505092915050565b6000819050919050565b6112328161121f565b82525050565b600060208201905061124d6000830184611229565b92915050565b61125c8161121f565b811461126757600080fd5b50565b60008135905061127981611253565b92915050565b60006020828403121561129557611294610e24565b5b60006112a38482850161126a565b91505092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006112f36020836112ac565b91506112fe826112bd565b602082019050919050565b60006020820190508181036000830152611322816112e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061136382610e2e565b915061136e83610e2e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156113a3576113a2611329565b5b828201905092915050565b7f4d617820636c61696d20737570706c7920726561636865642e00000000000000600082015250565b60006113e46019836112ac565b91506113ef826113ae565b602082019050919050565b60006020820190508181036000830152611413816113d7565b9050919050565b7f436c61696d206d757374206265206f70656e2e00000000000000000000000000600082015250565b60006114506013836112ac565b915061145b8261141a565b602082019050919050565b6000602082019050818103600083015261147f81611443565b9050919050565b600061149182610e2e565b915061149c83610e2e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156114d5576114d4611329565b5b828202905092915050565b60008160601b9050919050565b60006114f8826114e0565b9050919050565b600061150a826114ed565b9050919050565b61152261151d82610edb565b6114ff565b82525050565b6000819050919050565b61154361153e82610e2e565b611528565b82525050565b60006115558285611511565b6014820191506115658284611532565b6020820191508190509392505050565b7f4d75737420706173732074686520636f72726563742070726f6f660000000000600082015250565b60006115ab601b836112ac565b91506115b682611575565b602082019050919050565b600060208201905081810360008301526115da8161159e565b9050919050565b7f546f6f206d616e7920636c61696d7320666f722077616c6c65742e0000000000600082015250565b6000611617601b836112ac565b9150611622826115e1565b602082019050919050565b600060208201905081810360008301526116468161160a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006116a96026836112ac565b91506116b48261164d565b604082019050919050565b600060208201905081810360008301526116d88161169c565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000611715601d836112ac565b9150611720826116df565b602082019050919050565b6000602082019050818103600083015261174481611708565b9050919050565b600081905092915050565b50565b600061176660008361174b565b915061177182611756565b600082019050919050565b600061178782611759565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006117ed603a836112ac565b91506117f882611791565b604082019050919050565b6000602082019050818103600083015261181c816117e0565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611859601f836112ac565b915061186482611823565b602082019050919050565b600060208201905081810360008301526118888161184c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006118c982610e2e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036118fb576118fa611329565b5b60018201905091905056fea264697066735822122051c7f75dbda7209194ca4c9d515df6a73a51327a5930fe45b515d823cfbe50c064736f6c634300080d0033
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.