ETH Price: $3,298.03 (-0.97%)

Contract

0x78C7ac5D41bE409453e3B32E79B7f832D7c0A372
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Spirits To Exp185700192023-11-14 12:03:47404 days ago1699963427IN
0x78C7ac5D...2D7c0A372
0 ETH0.0029652330.70423829
Spirits To Exp185645572023-11-13 17:45:35405 days ago1699897535IN
0x78C7ac5D...2D7c0A372
0 ETH0.0086391961.40239579
Spirits To Exp185455482023-11-11 1:54:35408 days ago1699667675IN
0x78C7ac5D...2D7c0A372
0 ETH0.002653628.48440425
Spirits To Exp185450872023-11-11 0:21:35408 days ago1699662095IN
0x78C7ac5D...2D7c0A372
0 ETH0.0194034340.33039315
Spirits To Exp185448722023-11-10 23:38:23408 days ago1699659503IN
0x78C7ac5D...2D7c0A372
0 ETH0.0116237937.99953991
Spirits To Exp185444352023-11-10 22:09:47408 days ago1699654187IN
0x78C7ac5D...2D7c0A372
0 ETH0.0120148838.73459013
Spirits To Exp185437692023-11-10 19:56:11408 days ago1699646171IN
0x78C7ac5D...2D7c0A372
0 ETH0.0191488554.61099968
Spirits To Exp185437002023-11-10 19:42:23408 days ago1699645343IN
0x78C7ac5D...2D7c0A372
0 ETH0.0167658656.84114386
Spirits To Exp185433042023-11-10 18:22:59408 days ago1699640579IN
0x78C7ac5D...2D7c0A372
0 ETH0.0112808538.91440619
Spirits To Exp185431672023-11-10 17:55:23408 days ago1699638923IN
0x78C7ac5D...2D7c0A372
0 ETH0.0124395743.07092278
Spirits To Exp185431492023-11-10 17:51:47408 days ago1699638707IN
0x78C7ac5D...2D7c0A372
0 ETH0.0128879642.12910253
Spirits To Exp185431322023-11-10 17:48:23408 days ago1699638503IN
0x78C7ac5D...2D7c0A372
0 ETH0.0117375940.48994859
Spirits To Exp185431212023-11-10 17:46:11408 days ago1699638371IN
0x78C7ac5D...2D7c0A372
0 ETH0.0129092444.53167553
Spirits To Exp185431142023-11-10 17:44:47408 days ago1699638287IN
0x78C7ac5D...2D7c0A372
0 ETH0.0139089446.90618163
Spirits To Exp185431012023-11-10 17:42:11408 days ago1699638131IN
0x78C7ac5D...2D7c0A372
0 ETH0.0130263144.93551072
Spirits To Exp185430902023-11-10 17:39:59408 days ago1699637999IN
0x78C7ac5D...2D7c0A372
0 ETH0.0137075646.6402197
Spirits To Exp185430712023-11-10 17:36:11408 days ago1699637771IN
0x78C7ac5D...2D7c0A372
0 ETH0.0148113148
Spirits To Exp185430692023-11-10 17:35:47408 days ago1699637747IN
0x78C7ac5D...2D7c0A372
0 ETH0.0123253942.51765284
Spirits To Exp185430422023-11-10 17:30:11408 days ago1699637411IN
0x78C7ac5D...2D7c0A372
0 ETH0.0122627342.29813409
Spirits To Exp185430422023-11-10 17:30:11408 days ago1699637411IN
0x78C7ac5D...2D7c0A372
0 ETH0.0127303742.24813409
Spirits To Exp185430312023-11-10 17:27:59408 days ago1699637279IN
0x78C7ac5D...2D7c0A372
0 ETH0.0140001345.60127344
Spirits To Exp185430112023-11-10 17:23:47408 days ago1699637027IN
0x78C7ac5D...2D7c0A372
0 ETH0.0119107239.06577415
Spirits To Exp185429902023-11-10 17:19:35408 days ago1699636775IN
0x78C7ac5D...2D7c0A372
0 ETH0.0111311143.96885109
Spirits To Exp185429802023-11-10 17:17:35408 days ago1699636655IN
0x78C7ac5D...2D7c0A372
0 ETH0.0251973245.4588998
Spirits To Exp185429802023-11-10 17:17:35408 days ago1699636655IN
0x78C7ac5D...2D7c0A372
0 ETH0.0141366745.4588998
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DarkTalanji

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion
File 1 of 3 : DarkTalanji.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import ".././lib/openzeppelin-contracts/contracts/access/Ownable.sol";

interface IERC721 {
    function transferFrom(address from, address to, uint256 tokenId) external;
    function ownerOf(uint256 tokenId) external view returns (address);
    function balanceOf(address owner) external view returns (uint256);
}

interface IWrapper {
    function transferFromBatch(address from, address to, uint256[] calldata tokenId) external;
}

interface ISoulsLocker {
    function getSoulsInHero(uint256 heroId) external view returns (uint16[] memory);
}

interface IExpManager {
    function creditExperience(uint256 heroId, uint64 expToCredit, uint256 minterIdx) external;
}

interface IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data)
        external
        returns (bytes4);
}

interface IERC1155 {
    function mint(address to, uint256 id, uint256 amount, bytes calldata data, uint256 minterIdx) external;
}

/// @title Dark Talanji
/// @author Mauro
/// @notice Implementation of Dark Talanji - The Spirit Devourer Contract
contract DarkTalanji is Ownable {
    event SpiritsSacrificed(uint256 indexed heroId, uint256[] tokenId, uint256 expCredited);

    // Le Anime v2 tokenId offset (tokenId = editionNr + OFFSETAN2)
    uint256 private constant OFFSETAN2 = 100000;

    // EXP Minter index in the Experience Manager Contract
    uint256 public constant EXP_MINTER_IDX = 0;

    // Editions Minter index in the ERC1155 Contract
    uint256 public constant EDITIONS_MINTER_IDX = 1;

    // SuperRare Original Talanji NFT Contract and ID
    address public constant SUPERRARE = 0xb932a70A57673d89f4acfFBE830E8ed7f75Fb9e0;

    uint256 public constant TALANJI_ID = 17686;

    // New Dark Talanji NFT Contract and ID (toomuchlag 1/1s Contract)
    address public constant TML = 0x0e847aAd9B5b25CEa58613851199484BE3C4Fa13;

    uint256 public constant DARKTALANJI_ID = 4;

    // Number of Spirits sacrificed to unlock the original Talanji
    uint256 public constant OG_UNLOCK_NUM = 2020;

    // Number of Spirits to cap limited edition mint
    uint256 public constant PRIME_SACRIFICE = 250;

    // Le Anime Contracts (Main ERC721, NFT Locker, and Exp Manager, 1155 Editions)
    address public immutable wrapper;
    address public immutable locker;
    address public immutable expManager;
    address public immutable editions;

    // Scores of Le Anime characters stored via SSTORE2
    address public immutable pointerScores;

    // Experience start and end timestamps
    uint64 public immutable expStart;
    uint64 public immutable expEnd;

    bool public sacrificeActive;

    constructor() {
        // mainnet
        wrapper = 0x03BEbcf3D62C1e7465f8a095BFA08a79CA2892A1;
        locker = 0x1eb4490091bd0fFF6c3973623C014D082936EA03;
        expManager = 0x55124b7C32Ab50932725ec6e34bDB53725e2bbd2;
        pointerScores = 0xB6c6De2C865bC497A5CF8A9480Dd2e67504425ae;
        editions = 0xfb0EcD5d5cAD8E498f49000A6CE5423763b039EC;

        expStart = uint64(1651738261); // 5 May 2022
        expEnd = uint64(1735689599); // 31 Dec 2024
    }

    /////////////
    // ADMIN FUNCTIONS
    /////////////

    /// @notice Activate the Sacrifice - owner only
    /// @param activate set true to activate the Sacrifice
    function activateSacrifice(bool activate) external onlyOwner {
        sacrificeActive = activate;
    }

    /// @notice Withdraw the original Talanji - contract owner only + owner of dark talanji - to be renounced and deactivated
    function ownerWithdrawTalanji() external onlyOwner {
        require(IERC721(TML).ownerOf(DARKTALANJI_ID) == msg.sender, "Not the owner of Dark Talanji");

        IERC721(SUPERRARE).transferFrom(address(this), msg.sender, TALANJI_ID);
    }

    /////////////
    // REDEEM TALANJI - DARK TALANJI OWNER ONLY
    /////////////

    /// @notice Redeem the OG SuperRare Talanji. Only if balance of this contract >= threshold (2020 NFTs from the collection)
    function redeemOGTalanji() external {
        require(IERC721(wrapper).balanceOf(address(this)) >= OG_UNLOCK_NUM, "Not unlocked");

        require(IERC721(TML).ownerOf(DARKTALANJI_ID) == msg.sender, "Not the owner of Dark Talanji");

        IERC721(SUPERRARE).transferFrom(address(this), msg.sender, TALANJI_ID);
    }

    /////////////
    // SPIRIT TO EXP FUNCTIONS
    /////////////

    /// @notice Sacrifice Spirits in exchange for EXP in your Hero
    /// @param heroId Hero that will receive EXP
    /// @param tokenId IDs of Spirits to Sacrifice
    function spiritsToExp(uint256 heroId, uint256[] calldata tokenId) external {
        require(sacrificeActive, "Not Active");
        require(ISoulsLocker(locker).getSoulsInHero(heroId).length > 0, "Not a merged Hero");

        // Load on-chain Scores of all 10627 tokenIds
        // each byte is the score of a Soul/Spirits
        // allData[id - 1] is the score of Soul/Spirit #id
        bytes memory allData;

        // address of the contract storing Scores data
        address pointer = pointerScores;

        // efficently load all scores from external storage contract
        // assembly adapted from SSTORE2 code (https://github.com/0xsequence/sstore2)
        assembly {
            // Get the pointer to the free memory and allocate
            allData := mload(0x40)

            // Update the free memory pointer to prevent overriding our data.
            // Allocate enough 32-byte words for the data and the length of the data
            // This is the new "memory end" including padding
            // mstore(0x40, add(data, and(add(size, 0x3f), 0xffe0)))
            mstore(0x40, add(allData, 10688))

            // Store the size of the data in the first 32 byte chunk of free memory.
            mstore(allData, 10627)

            // Copy the code into memory right after the 32 bytes used to store the size.
            extcodecopy(pointer, add(allData, 32), 1, 10627)
        }

        // total Score of the sacrificed Spirits
        uint256 totalScore;

        // temporary variable to store current token Id
        uint16 currTokenId;

        // compute totalScore of sacrificed spirits
        for (uint256 i = 0; i < tokenId.length; ++i) {
            currTokenId = uint16(tokenId[i] - OFFSETAN2);

            // needs to be a Spirit NFT (tokenId >= 1574)
            require(currTokenId > 1573, "Not a Spirit");

            // check that the NFT is not a Hero - it needs to contain 0 NFTs
            require(ISoulsLocker(locker).getSoulsInHero(currTokenId).length == 0, "Cannot sacrifice a Hero");

            unchecked {
                totalScore += uint8(allData[currTokenId - 1]);
            }
        }

        // calculate the redeemable exp from the sacrifice
        uint64 expToCredit = uint64(calculateRedeemableExp(totalScore));

        // Mint a limited edition for each 10 spirits burned in one go, if balance is < 250
        uint256 totalSacrifice = IERC721(wrapper).balanceOf(address(this));

        // credit the experience to the Hero, via the ExpManager contract
        IExpManager(expManager).creditExperience(heroId, expToCredit, EXP_MINTER_IDX);

        // Transfer and lock all the sacrificed spirits into this contract
        IWrapper(wrapper).transferFromBatch(msg.sender, address(this), tokenId);

        // Mint a limited editions every 10 Spirits if totalSacrifice < 250
        if (totalSacrifice < PRIME_SACRIFICE) {
            uint256 qtyToMint = tokenId.length / 10;
            uint256 remaining = (PRIME_SACRIFICE - totalSacrifice) / 10 + 1;

            if (qtyToMint > 0) {
                if (remaining < qtyToMint) {
                    qtyToMint = remaining;
                }
                IERC1155(editions).mint(msg.sender, 1, qtyToMint, "", EDITIONS_MINTER_IDX);
            }
        }

        emit SpiritsSacrificed(heroId, tokenId, expToCredit);
    }

    /////////////
    // REEDEMABLE EXP CALCULATIONS
    /////////////

    /// @notice Calculate the bonus EXP given a Score
    /// @param score Score of a charachter
    function calculateBonusExp(uint256 score) public pure returns (uint256 bonus) {
        if (score >= 100000) bonus = 50;
        else if (score >= 50000) bonus = 45;
        else if (score >= 25000) bonus = 32;
        else if (score >= 10000) bonus = 25;
        else if (score >= 5000) bonus = 20;
        else if (score >= 2500) bonus = 16;
        else if (score >= 1000) bonus = 13;
        else if (score >= 500) bonus = 10;
        else if (score >= 250) bonus = 8;
        else if (score >= 100) bonus = 6;
        else if (score >= 50) bonus = 4;
        else if (score >= 25) bonus = 2;
        else bonus = 0;
    }

    /// @notice Calculate the EXP currently redeemable by sacrificing Spirits
    /// @param score Total Score of the Spirits sacrificed
    function calculateRedeemableExp(uint256 score) public view returns (uint256 claimableExp) {
        uint256 currentTimestamp = block.timestamp >= expEnd ? expEnd : block.timestamp;

        // Exp is proportional to the Total Score + bonus
        uint256 expMultiplier = score * (100 + calculateBonusExp(score));

        uint256 deltaT = expEnd - currentTimestamp;
        uint256 deltaT2 = expEnd - expStart;
        uint256 deltaT1 = currentTimestamp - expStart;
        uint256 duration = expEnd - expStart;

        return expMultiplier * deltaT - (expMultiplier * (deltaT2 * deltaT2 - deltaT1 * deltaT1)) / (duration * 4);
    }
}

File 2 of 3 : Ownable.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

import "../utils/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() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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 {
        _transferOwnership(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");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

File 3 of 3 : Context.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

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 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 calldata) {
        return msg.data;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 20000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"heroId","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"tokenId","type":"uint256[]"},{"indexed":false,"internalType":"uint256","name":"expCredited","type":"uint256"}],"name":"SpiritsSacrificed","type":"event"},{"inputs":[],"name":"DARKTALANJI_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EDITIONS_MINTER_IDX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EXP_MINTER_IDX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OG_UNLOCK_NUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRIME_SACRIFICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SUPERRARE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TALANJI_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TML","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"activate","type":"bool"}],"name":"activateSacrifice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"score","type":"uint256"}],"name":"calculateBonusExp","outputs":[{"internalType":"uint256","name":"bonus","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"score","type":"uint256"}],"name":"calculateRedeemableExp","outputs":[{"internalType":"uint256","name":"claimableExp","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"editions","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expEnd","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"expStart","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerWithdrawTalanji","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pointerScores","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeemOGTalanji","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sacrificeActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"heroId","type":"uint256"},{"internalType":"uint256[]","name":"tokenId","type":"uint256[]"}],"name":"spiritsToExp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wrapper","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

610160604052348015610010575f80fd5b5061001a336100aa565b7303bebcf3d62c1e7465f8a095bfa08a79ca2892a1608052731eb4490091bd0fff6c3973623c014d082936ea0360a0527355124b7c32ab50932725ec6e34bdb53725e2bbd260c05273b6c6de2c865bc497a5cf8a9480dd2e67504425ae6101005273fb0ecd5d5cad8e498f49000a6ce5423763b039ec60e052636273869561012052636774857f610140526100f9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60805160a05160c05160e0516101005161012051610140516117556101ba5f395f818161022e01528181610f8b01528181610fc3015281816110200152818161106e01526110fe01525f818161027f0152818161104d015281816110a101526110dd01525f818161040f01526106d601525f81816103880152610bbb01525f81816102a60152610a0c01525f81816103c2015281816105bc01526107d401525f818161035a0152818161095b01528181610ab30152610e5001526117555ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c806387f0b83d116100e8578063b75bd37111610093578063d7b96d4e1161006e578063d7b96d4e146103bd578063e3cfdff5146103e4578063f2fde38b146103f7578063f4ce23571461040a575f80fd5b8063b75bd3711461037c578063b8ddbcb314610383578063cfa84401146103aa575f80fd5b80638da5cb5b116100c35780638da5cb5b1461032f578063a2abdea41461034c578063ac210cc714610355575f80fd5b806387f0b83d1461030457806389d1c1a11461030c5780638aeb697414610314575f80fd5b80635e8f2a5211610148578063706025791161012357806370602579146102a1578063715018a6146102c85780637494f249146102d0575f80fd5b80635e8f2a52146102695780635fbf898e146102715780636a7148d61461027a575f80fd5b80633d68e5bb116101785780633d68e5bb1461020c57806340400c6114610214578063420cd56e14610229575f80fd5b806306b2d07e1461019e57806309e80299146101e357806324d504dd14610204575b5f80fd5b6101b9730e847aad9b5b25cea58613851199484be3c4fa1381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101f66101f1366004611336565b610431565b6040519081526020016101da565b6101f6600481565b6101f6600181565b61022761022236600461134d565b610503565b005b6102507f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff90911681526020016101da565b6101f660fa81565b6101f661451681565b6102507f000000000000000000000000000000000000000000000000000000000000000081565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b610227610c72565b5f546102f49074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b610227610c85565b610227610e1e565b6101b973b932a70a57673d89f4acffbe830e8ed7f75fb9e081565b5f5473ffffffffffffffffffffffffffffffffffffffff166101b9565b6101f66107e481565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6101f65f81565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6102276103b83660046113c5565b610f36565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b6101f66103f2366004611336565b610f87565b61022761040536600461140c565b61118b565b6101b97f000000000000000000000000000000000000000000000000000000000000000081565b5f620186a0821061044457506032919050565b61c35082106104555750602d919050565b6161a8821061046657506020919050565b612710821061047757506019919050565b611388821061048857506014919050565b6109c4821061049957506010919050565b6103e882106104aa5750600d919050565b6101f482106104bb5750600a919050565b60fa82106104cb57506008919050565b606482106104db57506006919050565b603282106104eb57506004919050565b601982106104fb57506002919050565b505f5b919050565b5f5474010000000000000000000000000000000000000000900460ff1661058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74204163746976650000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fd7ab38c0000000000000000000000000000000000000000000000000000000008152600481018490525f907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa158015610615573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261065a9190810190611465565b51116106c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061206d6572676564204865726f0000000000000000000000000000006044820152606401610582565b604080516129c081019091526129838082527f000000000000000000000000000000000000000000000000000000000000000090600160208401833c5f805f5b8581101561090857620186a087878381811061072057610720611537565b905060200201356107319190611591565b91506106258261ffff16116107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420612053706972697400000000000000000000000000000000000000006044820152606401610582565b6040517fd7ab38c000000000000000000000000000000000000000000000000000000000815261ffff831660048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa15801561082d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108729190810190611465565b51156108da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207361637269666963652061204865726f0000000000000000006044820152606401610582565b846001830361ffff16815181106108f3576108f3611537565b016020015160f81c9290920191600101610702565b505f61091383610f87565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156109a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c491906115aa565b6040517f34d50144000000000000000000000000000000000000000000000000000000008152600481018b905267ffffffffffffffff841660248201525f60448201529091507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906334d50144906064015f604051808303815f87803b158015610a62575f80fd5b505af1158015610a74573d5f803e3d5ffd5b50506040517f55f48e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692506355f48e469150610af090339030908d908d9060040161160a565b5f604051808303815f87803b158015610b07575f80fd5b505af1158015610b19573d5f803e3d5ffd5b5050505060fa811015610c2b575f610b32600a8961164d565b90505f600a610b428460fa611591565b610b4c919061164d565b610b57906001611685565b90508115610c285781811015610b6b578091505b6040517f2a6d9e920000000000000000000000000000000000000000000000000000000081523360048201526001602482018190526044820184905260a060648301525f60a483015260848201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690632a6d9e929060c4015f604051808303815f87803b158015610c11575f80fd5b505af1158015610c23573d5f803e3d5ffd5b505050505b50505b887fbd84a40d3e901e494eff8a4bd1b759f006d419982a74d5e9a79a3c18ef2900c2898985604051610c5f93929190611698565b60405180910390a2505050505050505050565b610c7a611242565b610c835f6112c2565b565b610c8d611242565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004808201523390730e847aad9b5b25cea58613851199484be3c4fa1390636352211e90602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1991906116c5565b73ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420746865206f776e6572206f66204461726b2054616c616e6a690000006044820152606401610582565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152306004820152336024820152614516604482015273b932a70a57673d89f4acffbe830e8ed7f75fb9e0906323b872dd906064015f604051808303815f87803b158015610e06575f80fd5b505af1158015610e18573d5f803e3d5ffd5b50505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107e4907f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece91906115aa565b1015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610582565b610f3e611242565b5f805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b5f807f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16421015610fc15742610fed565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff165b90505f610ff984610431565b611004906064611685565b61100e90856116e0565b90505f6110458367ffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016611591565b90505f6110927f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006116f7565b67ffffffffffffffff1690505f7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16856110d59190611591565b90505f6111227f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006116f7565b67ffffffffffffffff1690506111398160046116e0565b61114383806116e0565b61114d85806116e0565b6111579190611591565b61116190876116e0565b61116b919061164d565b61117585876116e0565b61117f9190611591565b98975050505050505050565b611193611242565b73ffffffffffffffffffffffffffffffffffffffff8116611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610582565b61123f816112c2565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610582565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215611346575f80fd5b5035919050565b5f805f6040848603121561135f575f80fd5b83359250602084013567ffffffffffffffff8082111561137d575f80fd5b818601915086601f830112611390575f80fd5b81358181111561139e575f80fd5b8760208260051b85010111156113b2575f80fd5b6020830194508093505050509250925092565b5f602082840312156113d5575f80fd5b813580151581146113e4575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461123f575f80fd5b5f6020828403121561141c575f80fd5b81356113e4816113eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161ffff811681146104fe575f80fd5b5f6020808385031215611476575f80fd5b825167ffffffffffffffff8082111561148d575f80fd5b818501915085601f8301126114a0575f80fd5b8151818111156114b2576114b2611427565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156114f5576114f5611427565b604052918252848201925083810185019188831115611512575f80fd5b938501935b8285101561117f5761152885611454565b84529385019392850192611517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156115a4576115a4611564565b92915050565b5f602082840312156115ba575f80fd5b5051919050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156115f1575f80fd5b8260051b80836020870137939093016020019392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526116436060830184866115c1565b9695505050505050565b5f82611680577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156115a4576115a4611564565b604081525f6116ab6040830185876115c1565b905067ffffffffffffffff83166020830152949350505050565b5f602082840312156116d5575f80fd5b81516113e4816113eb565b80820281158282048414176115a4576115a4611564565b67ffffffffffffffff82811682821603908082111561171857611718611564565b509291505056fea26469706673582212209f74d914d5daf32fe50c05c014b697bb6f0aa8aa14c9df8630f4e619485daf4b64736f6c63430008160033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061019a575f3560e01c806387f0b83d116100e8578063b75bd37111610093578063d7b96d4e1161006e578063d7b96d4e146103bd578063e3cfdff5146103e4578063f2fde38b146103f7578063f4ce23571461040a575f80fd5b8063b75bd3711461037c578063b8ddbcb314610383578063cfa84401146103aa575f80fd5b80638da5cb5b116100c35780638da5cb5b1461032f578063a2abdea41461034c578063ac210cc714610355575f80fd5b806387f0b83d1461030457806389d1c1a11461030c5780638aeb697414610314575f80fd5b80635e8f2a5211610148578063706025791161012357806370602579146102a1578063715018a6146102c85780637494f249146102d0575f80fd5b80635e8f2a52146102695780635fbf898e146102715780636a7148d61461027a575f80fd5b80633d68e5bb116101785780633d68e5bb1461020c57806340400c6114610214578063420cd56e14610229575f80fd5b806306b2d07e1461019e57806309e80299146101e357806324d504dd14610204575b5f80fd5b6101b9730e847aad9b5b25cea58613851199484be3c4fa1381565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6101f66101f1366004611336565b610431565b6040519081526020016101da565b6101f6600481565b6101f6600181565b61022761022236600461134d565b610503565b005b6102507f000000000000000000000000000000000000000000000000000000006774857f81565b60405167ffffffffffffffff90911681526020016101da565b6101f660fa81565b6101f661451681565b6102507f000000000000000000000000000000000000000000000000000000006273869581565b6101b97f00000000000000000000000055124b7c32ab50932725ec6e34bdb53725e2bbd281565b610227610c72565b5f546102f49074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016101da565b610227610c85565b610227610e1e565b6101b973b932a70a57673d89f4acffbe830e8ed7f75fb9e081565b5f5473ffffffffffffffffffffffffffffffffffffffff166101b9565b6101f66107e481565b6101b97f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a181565b6101f65f81565b6101b97f000000000000000000000000fb0ecd5d5cad8e498f49000a6ce5423763b039ec81565b6102276103b83660046113c5565b610f36565b6101b97f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0381565b6101f66103f2366004611336565b610f87565b61022761040536600461140c565b61118b565b6101b97f000000000000000000000000b6c6de2c865bc497a5cf8a9480dd2e67504425ae81565b5f620186a0821061044457506032919050565b61c35082106104555750602d919050565b6161a8821061046657506020919050565b612710821061047757506019919050565b611388821061048857506014919050565b6109c4821061049957506010919050565b6103e882106104aa5750600d919050565b6101f482106104bb5750600a919050565b60fa82106104cb57506008919050565b606482106104db57506006919050565b603282106104eb57506004919050565b601982106104fb57506002919050565b505f5b919050565b5f5474010000000000000000000000000000000000000000900460ff1661058b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74204163746976650000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6040517fd7ab38c0000000000000000000000000000000000000000000000000000000008152600481018490525f907f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0373ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa158015610615573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261065a9190810190611465565b51116106c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f742061206d6572676564204865726f0000000000000000000000000000006044820152606401610582565b604080516129c081019091526129838082527f000000000000000000000000b6c6de2c865bc497a5cf8a9480dd2e67504425ae90600160208401833c5f805f5b8581101561090857620186a087878381811061072057610720611537565b905060200201356107319190611591565b91506106258261ffff16116107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420612053706972697400000000000000000000000000000000000000006044820152606401610582565b6040517fd7ab38c000000000000000000000000000000000000000000000000000000000815261ffff831660048201527f0000000000000000000000001eb4490091bd0fff6c3973623c014d082936ea0373ffffffffffffffffffffffffffffffffffffffff169063d7ab38c0906024015f60405180830381865afa15801561082d573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108729190810190611465565b51156108da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207361637269666963652061204865726f0000000000000000006044820152606401610582565b846001830361ffff16815181106108f3576108f3611537565b016020015160f81c9290920191600101610702565b505f61091383610f87565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f9073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a116906370a0823190602401602060405180830381865afa1580156109a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c491906115aa565b6040517f34d50144000000000000000000000000000000000000000000000000000000008152600481018b905267ffffffffffffffff841660248201525f60448201529091507f00000000000000000000000055124b7c32ab50932725ec6e34bdb53725e2bbd273ffffffffffffffffffffffffffffffffffffffff16906334d50144906064015f604051808303815f87803b158015610a62575f80fd5b505af1158015610a74573d5f803e3d5ffd5b50506040517f55f48e4600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a11692506355f48e469150610af090339030908d908d9060040161160a565b5f604051808303815f87803b158015610b07575f80fd5b505af1158015610b19573d5f803e3d5ffd5b5050505060fa811015610c2b575f610b32600a8961164d565b90505f600a610b428460fa611591565b610b4c919061164d565b610b57906001611685565b90508115610c285781811015610b6b578091505b6040517f2a6d9e920000000000000000000000000000000000000000000000000000000081523360048201526001602482018190526044820184905260a060648301525f60a483015260848201527f000000000000000000000000fb0ecd5d5cad8e498f49000a6ce5423763b039ec73ffffffffffffffffffffffffffffffffffffffff1690632a6d9e929060c4015f604051808303815f87803b158015610c11575f80fd5b505af1158015610c23573d5f803e3d5ffd5b505050505b50505b887fbd84a40d3e901e494eff8a4bd1b759f006d419982a74d5e9a79a3c18ef2900c2898985604051610c5f93929190611698565b60405180910390a2505050505050505050565b610c7a611242565b610c835f6112c2565b565b610c8d611242565b6040517f6352211e0000000000000000000000000000000000000000000000000000000081526004808201523390730e847aad9b5b25cea58613851199484be3c4fa1390636352211e90602401602060405180830381865afa158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1991906116c5565b73ffffffffffffffffffffffffffffffffffffffff1614610d96576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f7420746865206f776e6572206f66204461726b2054616c616e6a690000006044820152606401610582565b6040517f23b872dd000000000000000000000000000000000000000000000000000000008152306004820152336024820152614516604482015273b932a70a57673d89f4acffbe830e8ed7f75fb9e0906323b872dd906064015f604051808303815f87803b158015610e06575f80fd5b505af1158015610e18573d5f803e3d5ffd5b50505050565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107e4907f00000000000000000000000003bebcf3d62c1e7465f8a095bfa08a79ca2892a173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610eaa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ece91906115aa565b1015610c8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420756e6c6f636b656400000000000000000000000000000000000000006044820152606401610582565b610f3e611242565b5f805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055565b5f807f000000000000000000000000000000000000000000000000000000006774857f67ffffffffffffffff16421015610fc15742610fed565b7f000000000000000000000000000000000000000000000000000000006774857f67ffffffffffffffff165b90505f610ff984610431565b611004906064611685565b61100e90856116e0565b90505f6110458367ffffffffffffffff7f000000000000000000000000000000000000000000000000000000006774857f16611591565b90505f6110927f00000000000000000000000000000000000000000000000000000000627386957f000000000000000000000000000000000000000000000000000000006774857f6116f7565b67ffffffffffffffff1690505f7f000000000000000000000000000000000000000000000000000000006273869567ffffffffffffffff16856110d59190611591565b90505f6111227f00000000000000000000000000000000000000000000000000000000627386957f000000000000000000000000000000000000000000000000000000006774857f6116f7565b67ffffffffffffffff1690506111398160046116e0565b61114383806116e0565b61114d85806116e0565b6111579190611591565b61116190876116e0565b61116b919061164d565b61117585876116e0565b61117f9190611591565b98975050505050505050565b611193611242565b73ffffffffffffffffffffffffffffffffffffffff8116611236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610582565b61123f816112c2565b50565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610c83576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610582565b5f805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215611346575f80fd5b5035919050565b5f805f6040848603121561135f575f80fd5b83359250602084013567ffffffffffffffff8082111561137d575f80fd5b818601915086601f830112611390575f80fd5b81358181111561139e575f80fd5b8760208260051b85010111156113b2575f80fd5b6020830194508093505050509250925092565b5f602082840312156113d5575f80fd5b813580151581146113e4575f80fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461123f575f80fd5b5f6020828403121561141c575f80fd5b81356113e4816113eb565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b805161ffff811681146104fe575f80fd5b5f6020808385031215611476575f80fd5b825167ffffffffffffffff8082111561148d575f80fd5b818501915085601f8301126114a0575f80fd5b8151818111156114b2576114b2611427565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156114f5576114f5611427565b604052918252848201925083810185019188831115611512575f80fd5b938501935b8285101561117f5761152885611454565b84529385019392850192611517565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b818103818111156115a4576115a4611564565b92915050565b5f602082840312156115ba575f80fd5b5051919050565b8183525f7f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156115f1575f80fd5b8260051b80836020870137939093016020019392505050565b5f73ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526116436060830184866115c1565b9695505050505050565b5f82611680577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b808201808211156115a4576115a4611564565b604081525f6116ab6040830185876115c1565b905067ffffffffffffffff83166020830152949350505050565b5f602082840312156116d5575f80fd5b81516113e4816113eb565b80820281158282048414176115a4576115a4611564565b67ffffffffffffffff82811682821603908082111561171857611718611564565b509291505056fea26469706673582212209f74d914d5daf32fe50c05c014b697bb6f0aa8aa14c9df8630f4e619485daf4b64736f6c63430008160033

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.