Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 458 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Claim | 17840477 | 355 days ago | IN | 0 ETH | 0.00170321 | ||||
Claim | 17825363 | 357 days ago | IN | 0 ETH | 0.00125931 | ||||
Claim | 17825343 | 357 days ago | IN | 0 ETH | 0.00132002 | ||||
Claim | 17825311 | 357 days ago | IN | 0 ETH | 0.00133377 | ||||
Claim | 17825301 | 357 days ago | IN | 0 ETH | 0.00123096 | ||||
Claim | 17825286 | 357 days ago | IN | 0 ETH | 0.00133505 | ||||
Claim | 17820530 | 357 days ago | IN | 0 ETH | 0.00184488 | ||||
Claim | 17820244 | 357 days ago | IN | 0 ETH | 0.00182536 | ||||
Claim | 17820048 | 357 days ago | IN | 0 ETH | 0.00167999 | ||||
Claim | 17819541 | 357 days ago | IN | 0 ETH | 0.00290251 | ||||
Claim | 17819481 | 357 days ago | IN | 0 ETH | 0.00075871 | ||||
Set Root | 17819246 | 357 days ago | IN | 0 ETH | 0.00065424 | ||||
Claim | 17781079 | 363 days ago | IN | 0 ETH | 0.00286029 | ||||
Claim | 17779282 | 363 days ago | IN | 0 ETH | 0.00314764 | ||||
Claim | 17768623 | 365 days ago | IN | 0 ETH | 0.00207267 | ||||
Claim | 17768597 | 365 days ago | IN | 0 ETH | 0.00210513 | ||||
Claim | 17768495 | 365 days ago | IN | 0 ETH | 0.00223061 | ||||
Claim | 17768387 | 365 days ago | IN | 0 ETH | 0.00172207 | ||||
Claim | 17768223 | 365 days ago | IN | 0 ETH | 0.00178552 | ||||
Claim | 17767907 | 365 days ago | IN | 0 ETH | 0.00189664 | ||||
Claim | 17767582 | 365 days ago | IN | 0 ETH | 0.00187742 | ||||
Claim | 17767574 | 365 days ago | IN | 0 ETH | 0.00050643 | ||||
Claim | 17767458 | 365 days ago | IN | 0 ETH | 0.00079646 | ||||
Claim | 17767423 | 365 days ago | IN | 0 ETH | 0.00289041 | ||||
Claim | 17765864 | 365 days ago | IN | 0 ETH | 0.00239834 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BoringClaimer
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
import "solmate/auth/Owned.sol"; import "openzeppelin/contracts/utils/cryptography/MerkleProof.sol"; // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; interface BoringSecurity { function safeTransferFrom(address, address, uint256, uint256, bytes memory) external; function balanceOf(address, uint256) external view returns (uint256); } error InvalidProof(); error InvalidToken(); error AlreadyClaimed(); error Not101Holder(); contract BoringClaimer is Owned { address private constant BORING_SECURITY_VAULT = 0x52C45Bab6d0827F44a973899666D9Cd18Fd90bCF; BoringSecurity private immutable boringSecurity; mapping(uint256 => bytes32) roots; mapping(address => mapping(uint256 => bool)) public claimed; constructor() Owned(msg.sender) { boringSecurity = BoringSecurity(0x0164fB48891b891e748244B8Ae931F2318b0c25B); } function claim(bytes32[] calldata _proof, uint256 tokenId) external { bytes32 leaf = keccak256((abi.encodePacked(msg.sender))); if (tokenId != 101 && tokenId != 102) revert InvalidToken(); if (claimed[msg.sender][tokenId]) revert AlreadyClaimed(); if (tokenId == 102 && boringSecurity.balanceOf(msg.sender, 101) == 0) revert Not101Holder(); if (!MerkleProof.verify(_proof, roots[tokenId], leaf)) { revert InvalidProof(); } claimed[msg.sender][tokenId] = true; boringSecurity.safeTransferFrom(BORING_SECURITY_VAULT, msg.sender, tokenId, 1, ""); } function setRoot(bytes32 _root, uint256 tokenId) external onlyOwner { if (tokenId != 101 && tokenId != 102) revert InvalidToken(); roots[tokenId] = _root; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnerUpdated(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnerUpdated(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function setOwner(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnerUpdated(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (utils/cryptography/MerkleProof.sol) pragma solidity ^0.8.0; /** * @dev These functions deal with verification of Merkle Tree proofs. * * The proofs can be generated using the JavaScript library * https://github.com/miguelmota/merkletreejs[merkletreejs]. * Note: the hashing algorithm should be keccak256 and pair sorting should be enabled. * * See `test/utils/cryptography/MerkleProof.test.js` for some examples. * * 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. */ 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 proved to be a part of a Merkle tree defined by * `root`, according to `proof` and `proofFlags` as described in {processMultiProof}. * * _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} * * _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 the sibling nodes in `proof`, * consuming from one or the other at each step according to the instructions given by * `proofFlags`. * * _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} * * _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) } } }
{ "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
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyClaimed","type":"error"},{"inputs":[],"name":"InvalidProof","type":"error"},{"inputs":[],"name":"InvalidToken","type":"error"},{"inputs":[],"name":"Not101Holder","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerUpdated","type":"event"},{"inputs":[{"internalType":"bytes32[]","name":"_proof","type":"bytes32[]"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"claimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"setRoot","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a350730164fb48891b891e748244b8ae931f2318b0c25b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050608051610d9e6101186000396000818161034101526105140152610d9e6000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806313af40351461005c5780633b439351146100785780634dd6c8de146100945780638da5cb5b146100c4578063edbe2a21146100e2575b600080fd5b6100766004803603810190610071919061081b565b6100fe565b005b610092600480360381019061008d91906108e3565b610229565b005b6100ae60048036038101906100a99190610943565b6105be565b6040516100bb919061099e565b60405180910390f35b6100cc6105ed565b6040516100d991906109c8565b60405180910390f35b6100fc60048036038101906100f79190610a19565b610611565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461018c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018390610ab6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a350565b60003360405160200161023c9190610b1e565b60405160208183030381529060405280519060200120905060658214158015610266575060668214155b1561029d576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1615610332576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6066821480156103dd575060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360656040518363ffffffff1660e01b815260040161039a929190610b7e565b602060405180830381865afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db9190610bbc565b145b15610414576040517f83a0d7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610473848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600160008581526020019081526020016000205483610704565b6104a9576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f242432a7352c45bab6d0827f44a973899666d9cd18fd90bcf338560016040518563ffffffff1660e01b81526004016105869493929190610c6a565b600060405180830381600087803b1580156105a057600080fd5b505af11580156105b4573d6000803e3d6000fd5b5050505050505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069690610ab6565b60405180910390fd5b606581141580156106b1575060668114155b156106e8576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160016000838152602001908152602001600020819055505050565b600082610711858461071b565b1490509392505050565b60008082905060005b8451811015610766576107518286838151811061074457610743610cc2565b5b6020026020010151610771565b9150808061075e90610d20565b915050610724565b508091505092915050565b600081831061078957610784828461079c565b610794565b610793838361079c565b5b905092915050565b600082600052816020526040600020905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107e8826107bd565b9050919050565b6107f8816107dd565b811461080357600080fd5b50565b600081359050610815816107ef565b92915050565b600060208284031215610831576108306107b3565b5b600061083f84828501610806565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261086d5761086c610848565b5b8235905067ffffffffffffffff81111561088a5761088961084d565b5b6020830191508360208202830111156108a6576108a5610852565b5b9250929050565b6000819050919050565b6108c0816108ad565b81146108cb57600080fd5b50565b6000813590506108dd816108b7565b92915050565b6000806000604084860312156108fc576108fb6107b3565b5b600084013567ffffffffffffffff81111561091a576109196107b8565b5b61092686828701610857565b93509350506020610939868287016108ce565b9150509250925092565b6000806040838503121561095a576109596107b3565b5b600061096885828601610806565b9250506020610979858286016108ce565b9150509250929050565b60008115159050919050565b61099881610983565b82525050565b60006020820190506109b3600083018461098f565b92915050565b6109c2816107dd565b82525050565b60006020820190506109dd60008301846109b9565b92915050565b6000819050919050565b6109f6816109e3565b8114610a0157600080fd5b50565b600081359050610a13816109ed565b92915050565b60008060408385031215610a3057610a2f6107b3565b5b6000610a3e85828601610a04565b9250506020610a4f858286016108ce565b9150509250929050565b600082825260208201905092915050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000610aa0600c83610a59565b9150610aab82610a6a565b602082019050919050565b60006020820190508181036000830152610acf81610a93565b9050919050565b60008160601b9050919050565b6000610aee82610ad6565b9050919050565b6000610b0082610ae3565b9050919050565b610b18610b13826107dd565b610af5565b82525050565b6000610b2a8284610b07565b60148201915081905092915050565b6000819050919050565b6000819050919050565b6000610b68610b63610b5e84610b39565b610b43565b6108ad565b9050919050565b610b7881610b4d565b82525050565b6000604082019050610b9360008301856109b9565b610ba06020830184610b6f565b9392505050565b600081519050610bb6816108b7565b92915050565b600060208284031215610bd257610bd16107b3565b5b6000610be084828501610ba7565b91505092915050565b610bf2816108ad565b82525050565b6000819050919050565b6000610c1d610c18610c1384610bf8565b610b43565b6108ad565b9050919050565b610c2d81610c02565b82525050565b600082825260208201905092915050565b50565b6000610c54600083610c33565b9150610c5f82610c44565b600082019050919050565b600060a082019050610c7f60008301876109b9565b610c8c60208301866109b9565b610c996040830185610be9565b610ca66060830184610c24565b8181036080830152610cb781610c47565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d2b826108ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d5d57610d5c610cf1565b5b60018201905091905056fea26469706673582212208b28324e5fb177544bd35bdcc40a51058817e39e9db8fb06df1b5bd048720dd364736f6c63430008110033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100575760003560e01c806313af40351461005c5780633b439351146100785780634dd6c8de146100945780638da5cb5b146100c4578063edbe2a21146100e2575b600080fd5b6100766004803603810190610071919061081b565b6100fe565b005b610092600480360381019061008d91906108e3565b610229565b005b6100ae60048036038101906100a99190610943565b6105be565b6040516100bb919061099e565b60405180910390f35b6100cc6105ed565b6040516100d991906109c8565b60405180910390f35b6100fc60048036038101906100f79190610a19565b610611565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461018c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161018390610ab6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d7660405160405180910390a350565b60003360405160200161023c9190610b1e565b60405160208183030381529060405280519060200120905060658214158015610266575060668214155b1561029d576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002060009054906101000a900460ff1615610332576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6066821480156103dd575060007f0000000000000000000000000164fb48891b891e748244b8ae931f2318b0c25b73ffffffffffffffffffffffffffffffffffffffff1662fdd58e3360656040518363ffffffff1660e01b815260040161039a929190610b7e565b602060405180830381865afa1580156103b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103db9190610bbc565b145b15610414576040517f83a0d7ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610473848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050600160008581526020019081526020016000205483610704565b6104a9576040517f09bde33900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002060006101000a81548160ff0219169083151502179055507f0000000000000000000000000164fb48891b891e748244b8ae931f2318b0c25b73ffffffffffffffffffffffffffffffffffffffff1663f242432a7352c45bab6d0827f44a973899666d9cd18fd90bcf338560016040518563ffffffff1660e01b81526004016105869493929190610c6a565b600060405180830381600087803b1580156105a057600080fd5b505af11580156105b4573d6000803e3d6000fd5b5050505050505050565b60026020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461069f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069690610ab6565b60405180910390fd5b606581141580156106b1575060668114155b156106e8576040517fc1ab6dc100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160016000838152602001908152602001600020819055505050565b600082610711858461071b565b1490509392505050565b60008082905060005b8451811015610766576107518286838151811061074457610743610cc2565b5b6020026020010151610771565b9150808061075e90610d20565b915050610724565b508091505092915050565b600081831061078957610784828461079c565b610794565b610793838361079c565b5b905092915050565b600082600052816020526040600020905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006107e8826107bd565b9050919050565b6107f8816107dd565b811461080357600080fd5b50565b600081359050610815816107ef565b92915050565b600060208284031215610831576108306107b3565b5b600061083f84828501610806565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261086d5761086c610848565b5b8235905067ffffffffffffffff81111561088a5761088961084d565b5b6020830191508360208202830111156108a6576108a5610852565b5b9250929050565b6000819050919050565b6108c0816108ad565b81146108cb57600080fd5b50565b6000813590506108dd816108b7565b92915050565b6000806000604084860312156108fc576108fb6107b3565b5b600084013567ffffffffffffffff81111561091a576109196107b8565b5b61092686828701610857565b93509350506020610939868287016108ce565b9150509250925092565b6000806040838503121561095a576109596107b3565b5b600061096885828601610806565b9250506020610979858286016108ce565b9150509250929050565b60008115159050919050565b61099881610983565b82525050565b60006020820190506109b3600083018461098f565b92915050565b6109c2816107dd565b82525050565b60006020820190506109dd60008301846109b9565b92915050565b6000819050919050565b6109f6816109e3565b8114610a0157600080fd5b50565b600081359050610a13816109ed565b92915050565b60008060408385031215610a3057610a2f6107b3565b5b6000610a3e85828601610a04565b9250506020610a4f858286016108ce565b9150509250929050565b600082825260208201905092915050565b7f554e415554484f52495a45440000000000000000000000000000000000000000600082015250565b6000610aa0600c83610a59565b9150610aab82610a6a565b602082019050919050565b60006020820190508181036000830152610acf81610a93565b9050919050565b60008160601b9050919050565b6000610aee82610ad6565b9050919050565b6000610b0082610ae3565b9050919050565b610b18610b13826107dd565b610af5565b82525050565b6000610b2a8284610b07565b60148201915081905092915050565b6000819050919050565b6000819050919050565b6000610b68610b63610b5e84610b39565b610b43565b6108ad565b9050919050565b610b7881610b4d565b82525050565b6000604082019050610b9360008301856109b9565b610ba06020830184610b6f565b9392505050565b600081519050610bb6816108b7565b92915050565b600060208284031215610bd257610bd16107b3565b5b6000610be084828501610ba7565b91505092915050565b610bf2816108ad565b82525050565b6000819050919050565b6000610c1d610c18610c1384610bf8565b610b43565b6108ad565b9050919050565b610c2d81610c02565b82525050565b600082825260208201905092915050565b50565b6000610c54600083610c33565b9150610c5f82610c44565b600082019050919050565b600060a082019050610c7f60008301876109b9565b610c8c60208301866109b9565b610c996040830185610be9565b610ca66060830184610c24565b8181036080830152610cb781610c47565b905095945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610d2b826108ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610d5d57610d5c610cf1565b5b60018201905091905056fea26469706673582212208b28324e5fb177544bd35bdcc40a51058817e39e9db8fb06df1b5bd048720dd364736f6c63430008110033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ 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.