ETH Price: $3,157.58 (+2.83%)
Gas: 2 Gwei

Contract

0x0E3A7828ec45530B009AdB23dd6FB4d8F8285a9a
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim152560872022-08-01 10:23:23712 days ago1659349403IN
0x0E3A7828...8F8285a9a
0 ETH0.0035433214.92227768
Claim152560282022-08-01 10:09:58712 days ago1659348598IN
0x0E3A7828...8F8285a9a
0 ETH0.002089028.79591305
Claim152559432022-08-01 9:53:14712 days ago1659347594IN
0x0E3A7828...8F8285a9a
0 ETH0.0042059917.71183837
Claim148636592022-05-29 1:28:16776 days ago1653787696IN
0x0E3A7828...8F8285a9a
0 ETH0.00265311.17157888
Claim148636582022-05-29 1:28:12776 days ago1653787692IN
0x0E3A7828...8F8285a9a
0 ETH0.002320399.77097731
Claim148636512022-05-29 1:26:20776 days ago1653787580IN
0x0E3A7828...8F8285a9a
0 ETH0.0025719910.83302264
Claim148177542022-05-21 14:21:26783 days ago1653142886IN
0x0E3A7828...8F8285a9a
0 ETH0.0037066615.60976077
Claim143650842022-03-11 10:51:39855 days ago1646995899IN
0x0E3A7828...8F8285a9a
0 ETH0.0031521213.27433526
Claim143334782022-03-06 13:02:35859 days ago1646571755IN
0x0E3A7828...8F8285a9a
0 ETH0.0049676720.92200014
Claim138282192021-12-18 9:01:56938 days ago1639818116IN
0x0E3A7828...8F8285a9a
0 ETH0.0102572640.28775103
Claim130345962021-08-16 6:16:131062 days ago1629094573IN
0x0E3A7828...8F8285a9a
0 ETH0.0078531633.07181558
Claim130331092021-08-16 0:49:101062 days ago1629074950IN
0x0E3A7828...8F8285a9a
0 ETH0.0018017157.17542422
Claim130331092021-08-16 0:49:101062 days ago1629074950IN
0x0E3A7828...8F8285a9a
0 ETH0.0093802939.50095791
Claim128948652021-07-25 10:20:261084 days ago1627208426IN
0x0E3A7828...8F8285a9a
0 ETH0.0029880811
Claim128790392021-07-22 23:03:071086 days ago1626994987IN
0x0E3A7828...8F8285a9a
0 ETH0.005462523
Claim128755172021-07-22 10:04:571087 days ago1626948297IN
0x0E3A7828...8F8285a9a
0 ETH0.0009616
Claim128735382021-07-22 2:27:201087 days ago1626920840IN
0x0E3A7828...8F8285a9a
0 ETH0.0052242922
Claim128730922021-07-22 0:46:221087 days ago1626914782IN
0x0E3A7828...8F8285a9a
0 ETH0.005224222.00000134
Claim128663192021-07-20 23:21:431088 days ago1626823303IN
0x0E3A7828...8F8285a9a
0 ETH0.004347216.00000134
Claim128548752021-07-19 4:24:471090 days ago1626668687IN
0x0E3A7828...8F8285a9a
0 ETH0.0030869513
Claim128498852021-07-18 9:45:261091 days ago1626601526IN
0x0E3A7828...8F8285a9a
0 ETH0.0040747515
Claim128498062021-07-18 9:25:421091 days ago1626600342IN
0x0E3A7828...8F8285a9a
0 ETH0.0030873713
Claim128350782021-07-16 1:44:291093 days ago1626399869IN
0x0E3A7828...8F8285a9a
0 ETH0.0059369525
Claim128313312021-07-15 11:36:261094 days ago1626348986IN
0x0E3A7828...8F8285a9a
0 ETH0.0049872421.00000112
Claim128093412021-07-12 0:44:051097 days ago1626050645IN
0x0E3A7828...8F8285a9a
0 ETH0.00118745.00000112
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x375223d6...03E4B9406
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
MerkleDistribution

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2021-06-21
*/

pragma solidity ^0.8.0;


// 
/**
 * @dev These functions deal with verification of Merkle Trees 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.
 */
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) {
        bytes32 computedHash = leaf;

        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];

            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = keccak256(abi.encodePacked(computedHash, proofElement));
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = keccak256(abi.encodePacked(proofElement, computedHash));
            }
        }

        // Check if the computed hash (root) is equal to the provided root
        return computedHash == root;
    }
}

interface IERC721Mintable {
	function claim(
		address to, 
		uint256 tokenId, 
		uint256 universeId, 
		uint256 earthId,
		uint256 personId, 
		uint256 blockchainId,
		uint256 sattoshiId) external returns (bool);
}

contract MerkleDistribution {
	bytes32 public root;
	IERC721Mintable  public token;
	mapping (bytes32=>bool) claimedMap;
	
	event Claim(address, uint256);

	constructor(address _token, bytes32 _root) public{
		token = IERC721Mintable(_token);
		root = _root;
	} 

	function isClaimed(
		address _addr, 
		uint256 _id,
		uint256 _universeId,
		uint256 _earthId,
		uint256 _personId,
		uint256 _blockchainId,
		uint256 _sattoshiId )
		public view returns(bool){
		bytes32 node = keccak256(abi.encodePacked(_id, _universeId, _earthId, _personId, _blockchainId, _sattoshiId, _addr));
		return claimedMap[node];
	}

	function setClaimed(bytes32 _node) private {
		claimedMap[_node] = true;
	}

	function claim(
		address _addr, 
		uint256 _id,
		uint256 _universeId,
		uint256 _earthId,
		uint256 _personId,
		uint256 _blockchainId,
		uint256 _sattoshiId,
		bytes32[] calldata merkleProof) external {
		bytes32 node = keccak256(abi.encodePacked(_id, _universeId, _earthId, _personId, _blockchainId, _sattoshiId, _addr));
		require(!claimedMap[node], "token id of this address is already claimed");
		require(MerkleProof.verify(merkleProof, root, node), "MerkleDistribution: Invalid Proof");
		setClaimed(node);
		require(token.claim(_addr, _id, _universeId, _earthId, _personId, _blockchainId, _sattoshiId), "MerkleDistribution: Mint Failed");
		emit Claim(_addr, _id);
	}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"bytes32","name":"_root","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"Claim","type":"event"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_universeId","type":"uint256"},{"internalType":"uint256","name":"_earthId","type":"uint256"},{"internalType":"uint256","name":"_personId","type":"uint256"},{"internalType":"uint256","name":"_blockchainId","type":"uint256"},{"internalType":"uint256","name":"_sattoshiId","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"},{"internalType":"uint256","name":"_id","type":"uint256"},{"internalType":"uint256","name":"_universeId","type":"uint256"},{"internalType":"uint256","name":"_earthId","type":"uint256"},{"internalType":"uint256","name":"_personId","type":"uint256"},{"internalType":"uint256","name":"_blockchainId","type":"uint256"},{"internalType":"uint256","name":"_sattoshiId","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"root","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC721Mintable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c8063874faf391461005157806391234a6a14610066578063ebf0c7171461008e578063fc0c546a146100a5575b600080fd5b61006461005f3660046104f7565b6100d0565b005b6100796100743660046104a5565b610377565b60405190151581526020015b60405180910390f35b61009760005481565b604051908152602001610085565b6001546100b8906001600160a01b031681565b6040516001600160a01b039091168152602001610085565b60008888888888888f6040516020016100ef97969594939291906105d9565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915060ff16156101805760405162461bcd60e51b815260206004820152602b60248201527f746f6b656e206964206f662074686973206164647265737320697320616c726560448201526a18591e4818db185a5b595960aa1b60648201526084015b60405180910390fd5b6101bf83838080602002602001604051908101604052809392919081815260200183836020028082843760009201829052505492508591506103cc9050565b6102155760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c65446973747269627574696f6e3a20496e76616c69642050726f6f6044820152603360f91b6064820152608401610177565b610234816000908152600260205260409020805460ff19166001179055565b60015460405163928f1a3360e01b81526001600160a01b038c81166004830152602482018c9052604482018b9052606482018a90526084820189905260a4820188905260c482018790529091169063928f1a339060e401602060405180830381600087803b1580156102a557600080fd5b505af11580156102b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102dd91906105b2565b6103295760405162461bcd60e51b815260206004820152601f60248201527f4d65726b6c65446973747269627574696f6e3a204d696e74204661696c6564006044820152606401610177565b604080516001600160a01b038c168152602081018b90527f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4910160405180910390a150505050505050505050565b6000808787878787878e60405160200161039797969594939291906105d9565b60408051808303601f1901815291815281516020928301206000908152600290925290205460ff169998505050505050505050565b600081815b855181101561047e5760008682815181106103fc57634e487b7160e01b600052603260045260246000fd5b6020026020010151905080831161043e57604080516020810185905290810182905260600160405160208183030381529060405280519060200120925061046b565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806104768161061d565b9150506103d1565b509092149392505050565b80356001600160a01b03811681146104a057600080fd5b919050565b600080600080600080600060e0888a0312156104bf578283fd5b6104c888610489565b9960208901359950604089013598606081013598506080810135975060a0810135965060c00135945092505050565b60008060008060008060008060006101008a8c031215610515578182fd5b61051e8a610489565b985060208a0135975060408a0135965060608a0135955060808a0135945060a08a0135935060c08a0135925060e08a013567ffffffffffffffff80821115610564578384fd5b818c0191508c601f830112610577578384fd5b813581811115610585578485fd5b8d60208260051b8501011115610599578485fd5b6020830194508093505050509295985092959850929598565b6000602082840312156105c3578081fd5b815180151581146105d2578182fd5b9392505050565b96875260208701959095526040860193909352606080860192909252608085015260a08401919091521b6bffffffffffffffffffffffff191660c082015260d40190565b600060001982141561063d57634e487b7160e01b81526011600452602481fd5b506001019056fea26469706673582212203d7eb5b74ce54ef53dece1a9a7d78d79d1bb7d980e0cca37cde43a0415ad09f764736f6c63430008040033

Deployed Bytecode Sourcemap

1800:1414:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2519:692;;;;;;:::i;:::-;;:::i;:::-;;2077:355;;;;;;:::i;:::-;;:::i;:::-;;;4226:14:1;;4219:22;4201:41;;4189:2;4174:18;2077:355:0;;;;;;;;1832:19;;;;;;;;;4399:25:1;;;4387:2;4372:18;1832:19:0;4354:76:1;1855:29:0;;;;;-1:-1:-1;;;;;1855:29:0;;;;;;-1:-1:-1;;;;;4621:32:1;;;4603:51;;4591:2;4576:18;1855:29:0;4558:102:1;2519:692:0;2736:12;2778:3;2783:11;2796:8;2806:9;2817:13;2832:11;2845:5;2761:90;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2761:90:0;;;;;;;;;2751:101;;2761:90;2751:101;;;;2866:16;;;;:10;:16;;;;;;2751:101;;-1:-1:-1;2866:16:0;;2865:17;2857:73;;;;-1:-1:-1;;;2857:73:0;;5227:2:1;2857:73:0;;;5209:21:1;5266:2;5246:18;;;5239:30;5305:34;5285:18;;;5278:62;-1:-1:-1;;;5356:18:1;;;5349:41;5407:19;;2857:73:0;;;;;;;;;2943:43;2962:11;;2943:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2975:4:0;;-1:-1:-1;2981:4:0;;-1:-1:-1;2943:18:0;;-1:-1:-1;2943:43:0:i;:::-;2935:89;;;;-1:-1:-1;;;2935:89:0;;5639:2:1;2935:89:0;;;5621:21:1;5678:2;5658:18;;;5651:30;5717:34;5697:18;;;5690:62;-1:-1:-1;;;5768:18:1;;;5761:31;5809:19;;2935:89:0;5611:223:1;2935:89:0;3029:16;3040:4;2485:17;;;;:10;:17;;;;;:24;;-1:-1:-1;;2485:24:0;2505:4;2485:24;;;2437:77;3029:16;3058:5;;:85;;-1:-1:-1;;;3058:85:0;;-1:-1:-1;;;;;3756:32:1;;;3058:85:0;;;3738:51:1;3805:18;;;3798:34;;;3848:18;;;3841:34;;;3891:18;;;3884:34;;;3934:19;;;3927:35;;;3978:19;;;3971:35;;;4022:19;;;4015:35;;;3058:5:0;;;;:11;;3710:19:1;;3058:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3050:129;;;;-1:-1:-1;;;3050:129:0;;4867:2:1;3050:129:0;;;4849:21:1;4906:2;4886:18;;;4879:30;4945:33;4925:18;;;4918:61;4996:18;;3050:129:0;4839:181:1;3050:129:0;3189:17;;;-1:-1:-1;;;;;3336:32:1;;3318:51;;3400:2;3385:18;;3378:34;;;3189:17:0;;3291:18:1;3189:17:0;;;;;;;2519:692;;;;;;;;;;:::o;2077:355::-;2273:4;2283:12;2325:3;2330:11;2343:8;2353:9;2364:13;2379:11;2392:5;2308:90;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;2308:90:0;;;;;;2298:101;;2308:90;2298:101;;;;2411:16;;;;:10;:16;;;;;;;;;2077:355;-1:-1:-1;;;;;;;;;2077:355:0:o;769:796::-;860:4;900;860;917:525;941:5;:12;937:1;:16;917:525;;;975:20;998:5;1004:1;998:8;;;;;;-1:-1:-1;;;998:8:0;;;;;;;;;;;;;;;975:31;;1043:12;1027;:28;1023:408;;1180:44;;;;;;2421:19:1;;;2456:12;;;2449:28;;;2493:12;;1180:44:0;;;;;;;;;;;;1170:55;;;;;;1155:70;;1023:408;;;1370:44;;;;;;2421:19:1;;;2456:12;;;2449:28;;;2493:12;;1370:44:0;;;;;;;;;;;;1360:55;;;;;;1345:70;;1023:408;-1:-1:-1;955:3:0;;;;:::i;:::-;;;;917:525;;;-1:-1:-1;1537:20:0;;;;769:796;-1:-1:-1;;;769:796:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:608::-;305:6;313;321;329;337;345;353;406:3;394:9;385:7;381:23;377:33;374:2;;;428:6;420;413:22;374:2;456:29;475:9;456:29;:::i;:::-;446:39;532:2;517:18;;504:32;;-1:-1:-1;583:2:1;568:18;;555:32;;634:2;619:18;;606:32;;-1:-1:-1;685:3:1;670:19;;657:33;;-1:-1:-1;737:3:1;722:19;;709:33;;-1:-1:-1;789:3:1;774:19;761:33;;-1:-1:-1;364:436:1;-1:-1:-1;;;364:436:1:o;805:1152::-;954:6;962;970;978;986;994;1002;1010;1018;1071:3;1059:9;1050:7;1046:23;1042:33;1039:2;;;1093:6;1085;1078:22;1039:2;1121:29;1140:9;1121:29;:::i;:::-;1111:39;;1197:2;1186:9;1182:18;1169:32;1159:42;;1248:2;1237:9;1233:18;1220:32;1210:42;;1299:2;1288:9;1284:18;1271:32;1261:42;;1350:3;1339:9;1335:19;1322:33;1312:43;;1402:3;1391:9;1387:19;1374:33;1364:43;;1454:3;1443:9;1439:19;1426:33;1416:43;;1510:3;1499:9;1495:19;1482:33;1534:18;1575:2;1567:6;1564:14;1561:2;;;1596:6;1588;1581:22;1561:2;1639:6;1628:9;1624:22;1614:32;;1684:7;1677:4;1673:2;1669:13;1665:27;1655:2;;1711:6;1703;1696:22;1655:2;1756;1743:16;1782:2;1774:6;1771:14;1768:2;;;1803:6;1795;1788:22;1768:2;1861:7;1856:2;1846:6;1843:1;1839:14;1835:2;1831:23;1827:32;1824:45;1821:2;;;1887:6;1879;1872:22;1821:2;1923;1919;1915:11;1905:21;;1945:6;1935:16;;;;;1029:928;;;;;;;;;;;:::o;1962:297::-;2029:6;2082:2;2070:9;2061:7;2057:23;2053:32;2050:2;;;2103:6;2095;2088:22;2050:2;2140:9;2134:16;2193:5;2186:13;2179:21;2172:5;2169:32;2159:2;;2220:6;2212;2205:22;2159:2;2248:5;2040:219;-1:-1:-1;;;2040:219:1:o;2516:623::-;2813:19;;;2857:2;2848:12;;2841:28;;;;2894:2;2885:12;;2878:28;;;;2931:2;2922:12;;;2915:28;;;;2968:3;2959:13;;2952:29;3006:3;2997:13;;2990:29;;;;3054:15;-1:-1:-1;;3050:53:1;3044:3;3035:13;;3028:76;3129:3;3120:13;;2803:336::o;5839:236::-;5878:3;-1:-1:-1;;5899:17:1;;5896:2;;;-1:-1:-1;;;5939:33:1;;5995:4;5992:1;5985:15;6025:4;5946:3;6013:17;5896:2;-1:-1:-1;6067:1:1;6056:13;;5886:189::o

Swarm Source

ipfs://3d7eb5b74ce54ef53dece1a9a7d78d79d1bb7d980e0cca37cde43a0415ad09f7

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.