Contract 0xcefc24e997807c0808D0F93a05ef21Db8Bb1cC42

 
 
Txn Hash
Method
Block
From
To
Value
0xb3e44a33b412ff2436d8da144d20923c82c13278f726c0f7aff28665acc9f25eClaim134043942021-10-12 15:18:42419 days 2 hrs agoENS Name zenzen.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.0096674 123.03571556
0xc7bda0a1fafac270db2780ea9daec28e43bf9914d9801e020c584874deffae9cClaim134042132021-10-12 14:39:00419 days 3 hrs agoENS Name erichdylus.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00653726 83.22631796
0x0a5356b1493d6b31149d58d1f454f357699bbfaf3bc52c705ff704fca029b792Claim134040782021-10-12 14:07:53419 days 3 hrs ago0xc58fc00860796fade2eab9e5b761f4855374cd39 IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00875003 111.37457356
0x55058d920ebe6f9e1c719e7254166fd9abca47fa30f9382fae7deebaa85c1a58Claim134040232021-10-12 13:55:20419 days 4 hrs agoENS Name larryflorio.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00793882 101.05166193
0x57056544568434ff4050c18390757418a694849889e6a107d6ac5bd6ce3babfeClaim134040022021-10-12 13:49:33419 days 4 hrs agoENS Name adamscochran.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00610918 78.64650994
0x16978021244810e20d6e3a402e7a6d55347e0b2a4168b92ff715713cce88a8efClaim134034042021-10-12 11:42:48419 days 6 hrs agoENS Name banteg.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00487211 62.02564409
0xa7b11a69af47cc6cec0fe03b55c81df4833190ab113d8310fefa8dd07daa0f8bClaim134007622021-10-12 1:24:43419 days 16 hrs agoENS Name lex-node.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.01384735176.27811146
0x77c7971e40482a3bd3f2600b1129ca7042e50ccd244b061e90ff90e79549ab7eClaim132827282021-09-23 15:08:48438 days 2 hrs agoENS Name marc.goldich.eth IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00957272 85.54640611
0x4673292f19fce4c14ce34d7dc93a3947bb1b1008ddf149ae6449d89f037deffdTransfer Ownersh...132826232021-09-23 14:46:49438 days 3 hrs ago0x37bfdba7a1b25fd735c3ea11a0d1c9d8be50e262 IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00193081 71.60452632
0xe30926d8c8eefa5c782dfb73f8cb4e6299de8381d933784bdd8e02e2ceec0606Add Merkle Root132826222021-09-23 14:46:47438 days 3 hrs ago0x37bfdba7a1b25fd735c3ea11a0d1c9d8be50e262 IN  0xcefc24e997807c0808d0f93a05ef21db8bb1cc420 Ether0.00532784 76.45177555
0x627e0fc2d0665fa75b208ff1d34072d7123d4dc701ffedd24deca3ac947e580d0x60806040132826192021-09-23 14:45:37438 days 3 hrs ago0x37bfdba7a1b25fd735c3ea11a0d1c9d8be50e262 IN  Create: MerkleDistributor0 Ether0.03487076 64.27754567
[ Download CSV Export 
View more zero value Internal Transactions in Advanced View mode
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MerkleDistributor

Compiler Version
v0.8.3+commit.8d00100c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-09-23
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.3;

interface IERC20Mintable {
    function mint(address _receiver, uint256 _amount) external returns (bool);
}

contract MerkleDistributor {
    bytes32[] public merkleRoots;

    event Claimed(
        uint256 merkleIndex,
        uint256 index,
        address account,
        uint256 amount
    );
    event NewMerkleRoot(uint256 merkleIndex, bytes32 root);

    // This is a packed array of booleans.
    mapping(uint256 => mapping(uint256 => uint256)) private claimedBitMap;

    address public owner;
    IERC20Mintable public token;

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    constructor(address _owner, IERC20Mintable _token) public {
        owner = _owner;
        token = _token;
    }

    function transferOwnership(address _newOwner) external onlyOwner {
        owner = _newOwner;
    }

    function addMerkleRoot(bytes32 _merkleRoot) public onlyOwner {
        merkleRoots.push(_merkleRoot);
        emit NewMerkleRoot(merkleRoots.length - 1, _merkleRoot);
    }

    function isClaimed(uint256 merkleIndex, uint256 index)
        public
        view
        returns (bool)
    {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        uint256 claimedWord = claimedBitMap[merkleIndex][claimedWordIndex];
        uint256 mask = (1 << claimedBitIndex);
        return claimedWord & mask == mask;
    }

    function _setClaimed(uint256 merkleIndex, uint256 index) private {
        uint256 claimedWordIndex = index / 256;
        uint256 claimedBitIndex = index % 256;
        claimedBitMap[merkleIndex][claimedWordIndex] =
            claimedBitMap[merkleIndex][claimedWordIndex] |
            (1 << claimedBitIndex);
    }

    function claim(
        uint256 merkleIndex,
        uint256 index,
        address receiver,
        uint256 amount,
        bytes32[] calldata merkleProof
    ) external {
        require(
            merkleIndex < merkleRoots.length,
            "MerkleDistributor: Invalid merkleIndex"
        );
        require(
            !isClaimed(merkleIndex, index),
            "MerkleDistributor: Drop already claimed."
        );

        // Verify the merkle proof.
        bytes32 node = keccak256(abi.encodePacked(index, receiver, amount));
        require(
            verify(merkleProof, merkleRoots[merkleIndex], node),
            "MerkleDistributor: Invalid proof."
        );

        // Mark it claimed and send the token.
        _setClaimed(merkleIndex, index);
        token.mint(receiver, amount);

        emit Claimed(merkleIndex, index, receiver, amount);
    }

    function verify(
        bytes32[] calldata 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;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract IERC20Mintable","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"indexed":false,"internalType":"bytes32","name":"root","type":"bytes32"}],"name":"NewMerkleRoot","type":"event"},{"inputs":[{"internalType":"bytes32","name":"_merkleRoot","type":"bytes32"}],"name":"addMerkleRoot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"merkleProof","type":"bytes32[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleIndex","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"isClaimed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"merkleRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"contract IERC20Mintable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516108bd3803806108bd83398101604081905261002f91610060565b600280546001600160a01b039384166001600160a01b031991821617909155600380549290931691161790556100b1565b60008060408385031215610072578182fd5b825161007d81610099565b602084015190925061008e81610099565b809150509250929050565b6001600160a01b03811681146100ae57600080fd5b50565b6107fd806100c06000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d0578063f2fde38b146100fb578063f364c90c1461010e578063fc0c546a146101315761007d565b80633323c807146100825780635d4df3bf1461009757806371c5ecb1146100aa575b600080fd5b61009561009036600461066b565b610144565b005b6100956100a53660046106a4565b6101d7565b6100bd6100b836600461066b565b610465565b6040519081526020015b60405180910390f35b6002546100e3906001600160a01b031681565b6040516001600160a01b0390911681526020016100c7565b61009561010936600461062a565b610486565b61012161011c366004610683565b6104bf565b60405190151581526020016100c7565b6003546100e3906001600160a01b031681565b6002546001600160a01b0316331461015b57600080fd5b60008054600181810183558280527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e56390910183905590547fca96a7112fbfbe6355505c775def299ff7f2d03a560dae9049809be54c88cd5e916101bd91610755565b60408051918252602082018490520160405180910390a150565b600054861061023c5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c654469737472696275746f723a20496e76616c6964206d65726b6c6044820152650ca92dcc8caf60d31b60648201526084015b60405180910390fd5b61024686866104bf565b156102a45760405162461bcd60e51b815260206004820152602860248201527f4d65726b6c654469737472696275746f723a2044726f7020616c72656164792060448201526731b630b4b6b2b21760c11b6064820152608401610233565b60408051602081018790526bffffffffffffffffffffffff19606087901b169181019190915260548101849052600090607401604051602081830303815290604052805190602001209050610326838360008a8154811061031557634e487b7160e01b600052603260045260246000fd5b906000526020600020015484610509565b61037c5760405162461bcd60e51b815260206004820152602160248201527f4d65726b6c654469737472696275746f723a20496e76616c69642070726f6f666044820152601760f91b6064820152608401610233565b61038687876105c5565b6003546040516340c10f1960e01b81526001600160a01b03878116600483015260248201879052909116906340c10f1990604401602060405180830381600087803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040c919061064b565b5060408051888152602081018890526001600160a01b038716818301526060810186905290517fb94bf7f9302edf52a596286915a69b4b0685574cffdedd0712e3c62f2550f0ba9181900360800190a150505050505050565b6000818154811061047557600080fd5b600091825260209091200154905081565b6002546001600160a01b0316331461049d57600080fd5b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806104ce61010084610741565b905060006104de61010085610787565b600095865260016020818152604080892095895294905292909520549190941b908116149392505050565b600081815b858110156105b957600087878381811061053857634e487b7160e01b600052603260045260246000fd5b9050602002013590508083116105795760408051602081018590529081018290526060016040516020818303038152906040528051906020012092506105a6565b60408051602081018390529081018490526060016040516020818303038152906040528051906020012092505b50806105b18161076c565b91505061050e565b50909214949350505050565b60006105d361010083610741565b905060006105e361010084610787565b60009485526001602081815260408088209588529490529290942080549290941b9091179092555050565b80356001600160a01b038116811461062557600080fd5b919050565b60006020828403121561063b578081fd5b6106448261060e565b9392505050565b60006020828403121561065c578081fd5b81518015158114610644578182fd5b60006020828403121561067c578081fd5b5035919050565b60008060408385031215610695578081fd5b50508035926020909101359150565b60008060008060008060a087890312156106bc578182fd5b86359550602087013594506106d36040880161060e565b935060608701359250608087013567ffffffffffffffff808211156106f6578384fd5b818901915089601f830112610709578384fd5b813581811115610717578485fd5b8a60208260051b850101111561072b578485fd5b6020830194508093505050509295509295509295565b600082610750576107506107b1565b500490565b6000828210156107675761076761079b565b500390565b60006000198214156107805761078061079b565b5060010190565b600082610796576107966107b1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fdfea2646970667358221220e614db678fb84dbbd74b223cfbf0252f136aa5202415a17dbd43dce61fc751e964736f6c6343000803003300000000000000000000000037bfdba7a1b25fd735c3ea11a0d1c9d8be50e2620000000000000000000000001337c30c27fa619e66449bc95a69d2b1916124dd

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000037bfdba7a1b25fd735c3ea11a0d1c9d8be50e2620000000000000000000000001337c30c27fa619e66449bc95a69d2b1916124dd

-----Decoded View---------------
Arg [0] : _owner (address): 0x37Bfdba7a1b25fd735c3eA11a0d1C9d8be50E262
Arg [1] : _token (address): 0x1337C30c27FA619e66449BC95a69d2b1916124Dd

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000037bfdba7a1b25fd735c3ea11a0d1c9d8be50e262
Arg [1] : 0000000000000000000000001337c30c27fa619e66449bc95a69d2b1916124dd


Deployed ByteCode Sourcemap

179:3509:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;951:175;;;;;;:::i;:::-;;:::i;:::-;;1861:904;;;;;;:::i;:::-;;:::i;213:28::-;;;;;;:::i;:::-;;:::i;:::-;;;3739:25:1;;;3727:2;3712:18;213:28:0;;;;;;;;567:20;;;;;-1:-1:-1;;;;;567:20:0;;;;;;-1:-1:-1;;;;;3078:32:1;;;3060:51;;3048:2;3033:18;567:20:0;3015:102:1;842:101:0;;;;;;:::i;:::-;;:::i;1134:388::-;;;;;;:::i;:::-;;:::i;:::-;;;3566:14:1;;3559:22;3541:41;;3529:2;3514:18;1134:388:0;3496:92:1;594:27:0;;;;;-1:-1:-1;;;;;594:27:0;;;951:175;684:5;;-1:-1:-1;;;;;684:5:0;670:10;:19;662:28;;;;;;1023:11:::1;:29:::0;;::::1;::::0;;::::1;::::0;;;;;;;;::::1;::::0;;;1082:18;;1068:50:::1;::::0;1082:22:::1;::::0;::::1;:::i;:::-;1068:50;::::0;;5396:25:1;;;5452:2;5437:18;;5430:34;;;5369:18;1068:50:0::1;;;;;;;951:175:::0;:::o;1861:904::-;2086:11;:18;2072:32;;2050:120;;;;-1:-1:-1;;;2050:120:0;;5017:2:1;2050:120:0;;;4999:21:1;5056:2;5036:18;;;5029:30;5095:34;5075:18;;;5068:62;-1:-1:-1;;;5146:18:1;;;5139:36;5192:19;;2050:120:0;;;;;;;;;2204:29;2214:11;2227:5;2204:9;:29::i;:::-;2203:30;2181:120;;;;-1:-1:-1;;;2181:120:0;;4206:2:1;2181:120:0;;;4188:21:1;4245:2;4225:18;;;4218:30;4284:34;4264:18;;;4257:62;-1:-1:-1;;;4335:18:1;;;4328:38;4383:19;;2181:120:0;4178:230:1;2181:120:0;2376:41;;;;;;2735:19:1;;;-1:-1:-1;;2792:2:1;2788:15;;;2784:53;2770:12;;;2763:75;;;;2854:12;;;2847:28;;;2351:12:0;;2891::1;;2376:41:0;;;;;;;;;;;;2366:52;;;;;;2351:67;;2451:51;2458:11;;2471;2483;2471:24;;;;;;-1:-1:-1;;;2471:24:0;;;;;;;;;;;;;;;;;2497:4;2451:6;:51::i;:::-;2429:134;;;;-1:-1:-1;;;2429:134:0;;4615:2:1;2429:134:0;;;4597:21:1;4654:2;4634:18;;;4627:30;4693:34;4673:18;;;4666:62;-1:-1:-1;;;4744:18:1;;;4737:31;4785:19;;2429:134:0;4587:223:1;2429:134:0;2624:31;2636:11;2649:5;2624:11;:31::i;:::-;2666:5;;:28;;-1:-1:-1;;;2666:28:0;;-1:-1:-1;;;;;3314:32:1;;;2666:28:0;;;3296:51:1;3363:18;;;3356:34;;;2666:5:0;;;;:10;;3269:18:1;;2666:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2712:45:0;;;5706:25:1;;;5762:2;5747:18;;5740:34;;;-1:-1:-1;;;;;5810:32:1;;5790:18;;;5783:60;5874:2;5859:18;;5852:34;;;2712:45:0;;;;;;;5693:3:1;2712:45:0;;;1861:904;;;;;;;:::o;213:28::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;213:28:0;:::o;842:101::-;684:5;;-1:-1:-1;;;;;684:5:0;670:10;:19;662:28;;;;;;918:5:::1;:17:::0;;-1:-1:-1;;;;;;918:17:0::1;-1:-1:-1::0;;;;;918:17:0;;;::::1;::::0;;;::::1;::::0;;842:101::o;1134:388::-;1237:4;;1286:11;1294:3;1286:5;:11;:::i;:::-;1259:38;-1:-1:-1;1308:23:0;1334:11;1342:3;1334:5;:11;:::i;:::-;1356:19;1378:26;;;:13;:26;;;;;;;;:44;;;;;;;;;;;1449:20;;;;1488:18;;;:26;;1134:388;-1:-1:-1;;;1134:388:0:o;2773:912::-;2900:4;2940;2900;2957:605;2977:16;;;2957:605;;;3015:20;3038:5;;3044:1;3038:8;;;;;-1:-1:-1;;;3038:8:0;;;;;;;;;;;;;;;3015:31;;3083:12;3067;:28;3063:488;;3242:44;;;;;;2455:19:1;;;2490:12;;;2483:28;;;2527:12;;3242:44:0;;;;;;;;;;;;3210:95;;;;;;3195:110;;3063:488;;;3472:44;;;;;;2455:19:1;;;2490:12;;;2483:28;;;2527:12;;3472:44:0;;;;;;;;;;;;3440:95;;;;;;3425:110;;3063:488;-1:-1:-1;2995:3:0;;;;:::i;:::-;;;;2957:605;;;-1:-1:-1;3657:20:0;;;;2773:912;-1:-1:-1;;;;2773:912:0:o;1530:323::-;1606:24;1633:11;1641:3;1633:5;:11;:::i;:::-;1606:38;-1:-1:-1;1655:23:0;1681:11;1689:3;1681:5;:11;:::i;:::-;1763:26;;;;1824:1;1763:26;;;;;;;;:44;;;;;;;;;;;;1824:20;;;;1763:82;;;1703:142;;;-1:-1:-1;;1530:323: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:196::-;;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;:::-;343:39;262:126;-1:-1:-1;;;262:126:1:o;393:297::-;;513:2;501:9;492:7;488:23;484:32;481:2;;;534:6;526;519:22;481:2;571:9;565:16;624:5;617:13;610:21;603:5;600:32;590:2;;651:6;643;636:22;695:190;;807:2;795:9;786:7;782:23;778:32;775:2;;;828:6;820;813:22;775:2;-1:-1:-1;856:23:1;;765:120;-1:-1:-1;765:120:1:o;1085:258::-;;;1214:2;1202:9;1193:7;1189:23;1185:32;1182:2;;;1235:6;1227;1220:22;1182:2;-1:-1:-1;;1263:23:1;;;1333:2;1318:18;;;1305:32;;-1:-1:-1;1172:171:1:o;1348:945::-;;;;;;;1563:3;1551:9;1542:7;1538:23;1534:33;1531:2;;;1585:6;1577;1570:22;1531:2;1626:9;1613:23;1603:33;;1683:2;1672:9;1668:18;1655:32;1645:42;;1706:38;1740:2;1729:9;1725:18;1706:38;:::i;:::-;1696:48;;1791:2;1780:9;1776:18;1763:32;1753:42;;1846:3;1835:9;1831:19;1818:33;1870:18;1911:2;1903:6;1900:14;1897:2;;;1932:6;1924;1917:22;1897:2;1975:6;1964:9;1960:22;1950:32;;2020:7;2013:4;2009:2;2005:13;2001:27;1991:2;;2047:6;2039;2032:22;1991:2;2092;2079:16;2118:2;2110:6;2107:14;2104:2;;;2139:6;2131;2124:22;2104:2;2197:7;2192:2;2182:6;2179:1;2175:14;2171:2;2167:23;2163:32;2160:45;2157:2;;;2223:6;2215;2208:22;2157:2;2259;2255;2251:11;2241:21;;2281:6;2271:16;;;;;1521:772;;;;;;;;:::o;5897:120::-;;5963:1;5953:2;;5968:18;;:::i;:::-;-1:-1:-1;6002:9:1;;5943:74::o;6022:125::-;;6090:1;6087;6084:8;6081:2;;;6095:18;;:::i;:::-;-1:-1:-1;6132:9:1;;6071:76::o;6152:135::-;;-1:-1:-1;;6212:17:1;;6209:2;;;6232:18;;:::i;:::-;-1:-1:-1;6279:1:1;6268:13;;6199:88::o;6292:112::-;;6350:1;6340:2;;6355:18;;:::i;:::-;-1:-1:-1;6389:9:1;;6330:74::o;6409:127::-;6470:10;6465:3;6461:20;6458:1;6451:31;6501:4;6498:1;6491:15;6525:4;6522:1;6515:15;6541:127;6602:10;6597:3;6593:20;6590:1;6583:31;6633:4;6630:1;6623:15;6657:4;6654:1;6647:15

Swarm Source

ipfs://e614db678fb84dbbd74b223cfbf0252f136aa5202415a17dbd43dce61fc751e9
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

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.