ETH Price: $1,956.57 (-0.33%)
Gas: 0.05 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Unstake All243933662026-02-05 21:39:3524 days ago1770327575IN
0x3d6a1F73...591C0FD42
0 ETH0.001282917.92509494
Unstake All243035852026-01-24 8:53:3536 days ago1769244815IN
0x3d6a1F73...591C0FD42
0 ETH0.000297462.03971785
Unstake All239373632025-12-04 3:56:1187 days ago1764820571IN
0x3d6a1F73...591C0FD42
0 ETH0.000000250.01091971
Unstake All239145412025-11-30 22:43:5991 days ago1764542639IN
0x3d6a1F73...591C0FD42
0 ETH0.000165332.05113634
Unstake All238769442025-11-25 16:18:3596 days ago1764087515IN
0x3d6a1F73...591C0FD42
0 ETH0.000300962.31879548
Unstake All238179232025-11-17 9:12:47104 days ago1763370767IN
0x3d6a1F73...591C0FD42
0 ETH0.000205962.10797727
Unstake All238144752025-11-16 21:37:59105 days ago1763329079IN
0x3d6a1F73...591C0FD42
0 ETH0.000171862.10466134
Unstake All238053052025-11-15 14:51:59106 days ago1763218319IN
0x3d6a1F73...591C0FD42
0 ETH0.000202572.07333338
Unstake All237996202025-11-14 19:49:11107 days ago1763149751IN
0x3d6a1F73...591C0FD42
0 ETH0.00002080.25475796
Unstake All237720922025-11-10 23:20:47111 days ago1762816847IN
0x3d6a1F73...591C0FD42
0 ETH0.000178332.18382847
Unstake All237066202025-11-01 19:38:47120 days ago1762025927IN
0x3d6a1F73...591C0FD42
0 ETH0.000017620.18040787
Unstake All236851062025-10-29 19:22:23123 days ago1761765743IN
0x3d6a1F73...591C0FD42
0 ETH0.000163322
Unstake All236442922025-10-24 2:16:23128 days ago1761272183IN
0x3d6a1F73...591C0FD42
0 ETH0.000134872.08912692
Unstake All235704182025-10-13 17:57:11139 days ago1760378231IN
0x3d6a1F73...591C0FD42
0 ETH0.000170162.08381955
Unstake All234866902025-10-02 1:01:35150 days ago1759366895IN
0x3d6a1F73...591C0FD42
0 ETH0.000103191.26374286
Unstake All234299972025-09-24 2:45:35158 days ago1758681935IN
0x3d6a1F73...591C0FD42
0 ETH0.000047080.17
Unstake All234299462025-09-24 2:35:11158 days ago1758681311IN
0x3d6a1F73...591C0FD42
0 ETH0.000003770.16
Unstake All232202302025-08-25 19:31:47188 days ago1756150307IN
0x3d6a1F73...591C0FD42
0 ETH0.000486651.64061835
Unstake All226710792025-06-10 2:06:35264 days ago1749521195IN
0x3d6a1F73...591C0FD42
0 ETH0.000197532.02173633
Unstake All225326922025-05-21 17:15:35284 days ago1747847735IN
0x3d6a1F73...591C0FD42
0 ETH0.00093049.52247184
Unstake All225181672025-05-19 16:22:23286 days ago1747671743IN
0x3d6a1F73...591C0FD42
0 ETH0.000476473.67101098
Unstake All224920232025-05-16 0:17:35290 days ago1747354655IN
0x3d6a1F73...591C0FD42
0 ETH0.000153761.57379369
Unstake All220448922025-03-14 11:42:59352 days ago1741952579IN
0x3d6a1F73...591C0FD42
0 ETH0.00009641.18059496
Unstake All218948982025-02-21 13:05:23373 days ago1740143123IN
0x3d6a1F73...591C0FD42
0 ETH0.000185111.8946197
Unstake All217714602025-02-04 6:51:23390 days ago1738651883IN
0x3d6a1F73...591C0FD42
0 ETH0.000183871.88188624
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TheHumanoidsStaking

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

/*
                    ████████╗██╗  ██╗███████╗
                    ╚══██╔══╝██║  ██║██╔════╝
                       ██║   ███████║█████╗
                       ██║   ██╔══██║██╔══╝
                       ██║   ██║  ██║███████╗
                       ╚═╝   ╚═╝  ╚═╝╚══════╝
██╗  ██╗██╗   ██╗███╗   ███╗ █████╗ ███╗   ██╗ ██████╗ ██╗██████╗ ███████╗
██║  ██║██║   ██║████╗ ████║██╔══██╗████╗  ██║██╔═══██╗██║██╔══██╗██╔════╝
███████║██║   ██║██╔████╔██║███████║██╔██╗ ██║██║   ██║██║██║  ██║███████╗
██╔══██║██║   ██║██║╚██╔╝██║██╔══██║██║╚██╗██║██║   ██║██║██║  ██║╚════██║
██║  ██║╚██████╔╝██║ ╚═╝ ██║██║  ██║██║ ╚████║╚██████╔╝██║██████╔╝███████║
╚═╝  ╚═╝ ╚═════╝ ╚═╝     ╚═╝╚═╝  ╚═╝╚═╝  ╚═══╝ ╚═════╝ ╚═╝╚═════╝ ╚══════╝


The Humanoids Staking Contract

*/

pragma solidity =0.8.11;

import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./IStakingReward.sol";

contract TheHumanoidsStaking is Ownable {
    bool public canStake;
    address public stakingRewardContract;

    IERC721 private constant _NFT_CONTRACT = IERC721(0x3a5051566b2241285BE871f650C445A88A970edd);

    struct Token {
        address owner;
        uint64 timestamp;
        uint16 index;
    }
    mapping(uint256 => Token) private _tokens;
    mapping(address => uint16[]) private _stakedTokens;

    constructor() {}

    function setStaking(bool _canStake) external onlyOwner {
        canStake = _canStake;
    }

    function setStakingRewardContract(address newStakingRewardContract) external onlyOwner {
        address oldStakingRewardContract = stakingRewardContract;
        require(newStakingRewardContract != oldStakingRewardContract, "New staking reward contract is same as old contract");
        if (oldStakingRewardContract != address(0)) {
            IStakingReward(oldStakingRewardContract).willBeReplacedByContract(newStakingRewardContract);
        }
        stakingRewardContract = newStakingRewardContract;
        if (newStakingRewardContract != address(0)) {
            IStakingReward(newStakingRewardContract).didReplaceContract(oldStakingRewardContract);
        }
    }


    function stakedTokensBalanceOf(address account) external view returns (uint256) {
        return _stakedTokens[account].length;
    }

    function stakedTokensOf(address account) external view returns (uint16[] memory) {
        return _stakedTokens[account];
    }

    function ownerOf(uint256 tokenId) external view returns (address) {
        address owner = _tokens[tokenId].owner;
        require(owner != address(0), "Token not staked");
        return owner;
    }

    function timestampOf(uint256 tokenId) external view returns (uint256) {
        uint256 timestamp = uint256(_tokens[tokenId].timestamp);
        require(timestamp != 0, "Token not staked");
        return timestamp;
    }


    function stake(uint16[] calldata tokenIds) external {
        require(canStake, "Staking not enabled");
        uint length = tokenIds.length;
        require(length > 0, "tokenIds array is empty");

        if (stakingRewardContract != address(0)) {
            IStakingReward(stakingRewardContract).willStakeTokens(msg.sender, tokenIds);
        }

        uint64 timestamp = uint64(block.timestamp);
        uint16[] storage stakedTokens = _stakedTokens[msg.sender];
        uint16 index = uint16(stakedTokens.length);
        unchecked {
            for (uint i=0; i<length; i++) {
                uint16 tokenId = tokenIds[i];
                _NFT_CONTRACT.transferFrom(msg.sender, address(this), tokenId);

                Token storage token = _tokens[tokenId];
                token.owner = msg.sender;
                token.timestamp = timestamp;
                token.index = index;
                index++;

                stakedTokens.push(tokenId);
            }
        }
    }

    function unstake(uint16[] calldata tokenIds) external {
        uint length = tokenIds.length;
        require(length > 0, "tokenIds array is empty");

        if (stakingRewardContract != address(0)) {
            IStakingReward(stakingRewardContract).willUnstakeTokens(msg.sender, tokenIds);
        }

        unchecked {
            uint16[] storage stakedTokens = _stakedTokens[msg.sender];

            for (uint i=0; i<length; i++) {
                uint256 tokenId = tokenIds[i];
                require(_tokens[tokenId].owner == msg.sender, "Token not staked or not owned");

                uint index = _tokens[tokenId].index;
                uint lastIndex = stakedTokens.length-1;
                if (index != lastIndex) {
                    uint16 lastTokenId = stakedTokens[lastIndex];
                    stakedTokens[index] = lastTokenId;
                    _tokens[lastTokenId].index = uint16(index);
                }

                stakedTokens.pop();

                delete _tokens[tokenId];
                _NFT_CONTRACT.transferFrom(address(this), msg.sender, tokenId);
            }
        }
    }

    function unstakeAll() external {
        uint16[] storage stakedTokens = _stakedTokens[msg.sender];
        uint length = stakedTokens.length;
        require(length > 0, "Nothing staked");

        if (stakingRewardContract != address(0)) {
            IStakingReward(stakingRewardContract).willUnstakeTokens(msg.sender, stakedTokens);
        }

        unchecked {
            for (uint i=0; i<length; i++) {
                uint256 tokenId = stakedTokens[i];
                delete _tokens[tokenId];
                _NFT_CONTRACT.transferFrom(address(this), msg.sender, tokenId);
            }
        }

        delete _stakedTokens[msg.sender];
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC721/IERC721.sol)

pragma solidity ^0.8.0;

import "../../utils/introspection/IERC165.sol";

/**
 * @dev Required interface of an ERC721 compliant contract.
 */
interface IERC721 is IERC165 {
    /**
     * @dev Emitted when `tokenId` token is transferred from `from` to `to`.
     */
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.
     */
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    /**
     * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.
     */
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /**
     * @dev Returns the number of tokens in ``owner``'s account.
     */
    function balanceOf(address owner) external view returns (uint256 balance);

    /**
     * @dev Returns the owner of the `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function ownerOf(uint256 tokenId) external view returns (address owner);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients
     * are aware of the ERC721 protocol to prevent tokens from being forever locked.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Transfers `tokenId` token from `from` to `to`.
     *
     * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    /**
     * @dev Gives permission to `to` to transfer `tokenId` token to another account.
     * The approval is cleared when the token is transferred.
     *
     * Only a single account can be approved at a time, so approving the zero address clears previous approvals.
     *
     * Requirements:
     *
     * - The caller must own the token or be an approved operator.
     * - `tokenId` must exist.
     *
     * Emits an {Approval} event.
     */
    function approve(address to, uint256 tokenId) external;

    /**
     * @dev Returns the account approved for `tokenId` token.
     *
     * Requirements:
     *
     * - `tokenId` must exist.
     */
    function getApproved(uint256 tokenId) external view returns (address operator);

    /**
     * @dev Approve or remove `operator` as an operator for the caller.
     * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.
     *
     * Requirements:
     *
     * - The `operator` cannot be the caller.
     *
     * Emits an {ApprovalForAll} event.
     */
    function setApprovalForAll(address operator, bool _approved) external;

    /**
     * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.
     *
     * See {setApprovalForAll}
     */
    function isApprovedForAll(address owner, address operator) external view returns (bool);

    /**
     * @dev Safely transfers `tokenId` token from `from` to `to`.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `tokenId` token must exist and be owned by `from`.
     * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.
     * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.
     *
     * Emits a {Transfer} event.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (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 Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _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);
    }
}

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IStakingReward {
    function willStakeTokens(address account, uint16[] calldata tokenIds) external;
    function willUnstakeTokens(address account, uint16[] calldata tokenIds) external;

    function willBeReplacedByContract(address stakingRewardContract) external;
    function didReplaceContract(address stakingRewardContract) external;
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC165 standard, as defined in the
 * https://eips.ethereum.org/EIPS/eip-165[EIP].
 *
 * Implementers can declare support of contract interfaces, which can then be
 * queried by others ({ERC165Checker}).
 *
 * For an implementation, see {ERC165}.
 */
interface IERC165 {
    /**
     * @dev Returns true if this contract implements the interface defined by
     * `interfaceId`. See the corresponding
     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
     * to learn more about how these ids are created.
     *
     * This function call must use less than 30 000 gas.
     */
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// 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": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"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"},{"inputs":[],"name":"canStake","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":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_canStake","type":"bool"}],"name":"setStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newStakingRewardContract","type":"address"}],"name":"setStakingRewardContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"stakedTokensBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"stakedTokensOf","outputs":[{"internalType":"uint16[]","name":"","type":"uint16[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRewardContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"timestampOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"tokenIds","type":"uint16[]"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakeAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61137f8061007e6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063910730a811610066578063910730a8146101d85780639ed27809146101eb578063ab08d4fc1461020f578063f2fde38b1461022f57600080fd5b8063715018a6146101ac5780637c7db3b3146101b45780638da5cb5b146101c757600080fd5b8063382f57c5116100c8578063382f57c51461013257806357c1af93146101455780636352211e146101585780636731d2f31461018357600080fd5b80632bdcfe72146100ef5780632d9c77e11461010457806335322f371461012a575b600080fd5b6101026100fd366004610e19565b610242565b005b610117610112366004610e8e565b6104b1565b6040519081526020015b60405180910390f35b610102610517565b610102610140366004610ea7565b6106d6565b610102610153366004610e19565b610869565b61016b610166366004610e8e565b610b8b565b6040516001600160a01b039091168152602001610121565b610117610191366004610ea7565b6001600160a01b031660009081526003602052604090205490565b610102610be3565b60015461016b906001600160a01b031681565b6000546001600160a01b031661016b565b6101026101e6366004610ed7565b610c19565b6000546101ff90600160a01b900460ff1681565b6040519015158152602001610121565b61022261021d366004610ea7565b610c61565b6040516101219190610ef9565b61010261023d366004610ea7565b610cf5565b600054600160a01b900460ff166102965760405162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81b9bdd08195b98589b1959606a1b60448201526064015b60405180910390fd5b80806102de5760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b031615610356576001546040516389a7c16360e01b81526001600160a01b03909116906389a7c1639061032390339087908790600401610f58565b600060405180830381600087803b15801561033d57600080fd5b505af1158015610351573d6000803e3d6000fd5b505050505b336000908152600360205260408120805442925b848110156104a857600087878381811061038657610386610fb2565b905060200201602081019061039b9190610fc8565b6040516323b872dd60e01b815233600482015230602482015261ffff82166044820152909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b1580156103fa57600080fd5b505af115801561040e573d6000803e3d6000fd5b5050505061ffff9081166000818152600260208181526040832080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8c16021761ffff60e01b1916600160e01b89881602179055875460018181018a558985529190932060108404018054600f9094169092026101000a9485021990921693909202929092179055918201910161036a565b50505050505050565b600081815260026020526040812054600160a01b900467ffffffffffffffff16806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b92915050565b3360009081526003602052604090208054806105665760405162461bcd60e51b815260206004820152600e60248201526d139bdd1a1a5b99c81cdd185ad95960921b604482015260640161028d565b6001546001600160a01b0316156105dc5760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906105a99033908690600401610fe3565b600060405180830381600087803b1580156105c357600080fd5b505af11580156105d7573d6000803e3d6000fd5b505050505b60005b818110156106b95760008382815481106105fb576105fb610fb2565b6000918252602080832060108304015461ffff6002600f90941684026101000a9091041680845291905260409182902080546001600160f01b031916905590516323b872dd60e01b815230600482015233602482015260448101829052909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050600190930192506105df915050565b503360009081526003602052604081206106d291610de0565b5050565b6000546001600160a01b031633146107005760405162461bcd60e51b815260040161028d906112fe565b6001546001600160a01b0390811690821681141561077c5760405162461bcd60e51b815260206004820152603360248201527f4e6577207374616b696e672072657761726420636f6e74726163742069732073604482015272185b5948185cc81bdb190818dbdb9d1c9858dd606a1b606482015260840161028d565b6001600160a01b038116156107e757604051630cc6b63160e01b81526001600160a01b038381166004830152821690630cc6b63190602401600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b505050505b600180546001600160a01b0319166001600160a01b038416908117909155156106d257604051635732a8e360e11b81526001600160a01b03828116600483015283169063ae6551c690602401600060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050505050565b80806108b15760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b0316156109295760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906108f690339087908790600401610f58565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b505050505b336000908152600360205260408120905b82811015610b8457600085858381811061095657610956610fb2565b905060200201602081019061096b9190610fc8565b61ffff166000818152600260205260409020549091506001600160a01b031633146109d85760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f74207374616b6564206f72206e6f74206f776e6564000000604482015260640161028d565b6000818152600260205260409020548354600160e01b90910461ffff169060001901808214610aa8576000858281548110610a1557610a15610fb2565b90600052602060002090601091828204019190066002029054906101000a900461ffff16905080868481548110610a4e57610a4e610fb2565b600091825260208083206010830401805461ffff9586166002600f90951685026101000a90810290870219909116179055938316825290925260409091208054918416600160e01b0261ffff60e01b199092169190911790555b84805480610ab857610ab8611333565b60008281526020808220601060001994909401938404018054600f851660029081026101000a61ffff021990911690915592909355858152915260409081902080546001600160f01b0319169055516323b872dd60e01b815230600482015233602482015260448101849052733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50506001909501945061093a9350505050565b5050505050565b6000818152600260205260408120546001600160a01b0316806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161028d906112fe565b610c176000610d90565b565b6000546001600160a01b03163314610c435760405162461bcd60e51b815260040161028d906112fe565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cb05790505b50505050509050919050565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161028d906112fe565b6001600160a01b038116610d845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b610d8d81610d90565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f016010900490600052602060002090810190610d8d91905b80821115610e155760008155600101610e01565b5090565b60008060208385031215610e2c57600080fd5b823567ffffffffffffffff80821115610e4457600080fd5b818501915085601f830112610e5857600080fd5b813581811115610e6757600080fd5b8660208260051b8501011115610e7c57600080fd5b60209290920196919550909350505050565b600060208284031215610ea057600080fd5b5035919050565b600060208284031215610eb957600080fd5b81356001600160a01b0381168114610ed057600080fd5b9392505050565b600060208284031215610ee957600080fd5b81358015158114610ed057600080fd5b6020808252825182820181905260009190848201906040850190845b81811015610f3557835161ffff1683529284019291840191600101610f15565b50909695505050505050565b803561ffff81168114610f5357600080fd5b919050565b6001600160a01b038416815260406020808301829052908201839052600090849060608401835b86811015610fa65761ffff610f9385610f41565b1682529282019290820190600101610f7f565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fda57600080fd5b610ed082610f41565b6000604080830160018060a01b03861684526020828186015281865461100d818590815260200190565b60008981526020812095509092505b81600f8201101561114c57845461ffff8082168552601082901c81168686015281861c811688860152603082901c8116606080870191909152608061106a81880184868d1c1661ffff169052565b60a0611080818901858760501c1661ffff169052565b60c0611095818a018688871c1661ffff169052565b60e093506110ad848a01868860701c1661ffff169052565b61ffff86841c8616166101008a01526110d26101208a01868860901c1661ffff169052565b61ffff86831c8616166101408a01526110f76101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a015250505061111f6101a08701838560d01c1661ffff169052565b82901c1661ffff166101c085015260f01c6101e0840152600194909401936102009092019160100161101c565b935493818110156111665761ffff85168352918301916001015b8181101561118157601085901c61ffff168352918301916001015b8181101561119a5784841c61ffff168352918301916001015b818110156111b557603085901c61ffff168352918301916001015b818110156111ce5784861c61ffff168352918301916001015b818110156111e957605085901c61ffff168352918301916001015b8181101561120457606085901c61ffff168352918301916001015b8181101561121f57607085901c61ffff168352918301916001015b8181101561123a57608085901c61ffff168352918301916001015b8181101561125557609085901c61ffff168352918301916001015b818110156112705760a085901c61ffff168352918301916001015b8181101561128b5760b085901c61ffff168352918301916001015b818110156112a65760c085901c61ffff168352918301916001015b818110156112c15760d085901c61ffff168352918301916001015b818110156112dc5760e085901c61ffff168352918301916001015b818110156112f05760f085901c8352918301915b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212200631a73d59bd44f894c3d90ff85929b4289df7a0074237348e8309e5cccbb75964736f6c634300080b0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063910730a811610066578063910730a8146101d85780639ed27809146101eb578063ab08d4fc1461020f578063f2fde38b1461022f57600080fd5b8063715018a6146101ac5780637c7db3b3146101b45780638da5cb5b146101c757600080fd5b8063382f57c5116100c8578063382f57c51461013257806357c1af93146101455780636352211e146101585780636731d2f31461018357600080fd5b80632bdcfe72146100ef5780632d9c77e11461010457806335322f371461012a575b600080fd5b6101026100fd366004610e19565b610242565b005b610117610112366004610e8e565b6104b1565b6040519081526020015b60405180910390f35b610102610517565b610102610140366004610ea7565b6106d6565b610102610153366004610e19565b610869565b61016b610166366004610e8e565b610b8b565b6040516001600160a01b039091168152602001610121565b610117610191366004610ea7565b6001600160a01b031660009081526003602052604090205490565b610102610be3565b60015461016b906001600160a01b031681565b6000546001600160a01b031661016b565b6101026101e6366004610ed7565b610c19565b6000546101ff90600160a01b900460ff1681565b6040519015158152602001610121565b61022261021d366004610ea7565b610c61565b6040516101219190610ef9565b61010261023d366004610ea7565b610cf5565b600054600160a01b900460ff166102965760405162461bcd60e51b815260206004820152601360248201527214dd185ada5b99c81b9bdd08195b98589b1959606a1b60448201526064015b60405180910390fd5b80806102de5760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b031615610356576001546040516389a7c16360e01b81526001600160a01b03909116906389a7c1639061032390339087908790600401610f58565b600060405180830381600087803b15801561033d57600080fd5b505af1158015610351573d6000803e3d6000fd5b505050505b336000908152600360205260408120805442925b848110156104a857600087878381811061038657610386610fb2565b905060200201602081019061039b9190610fc8565b6040516323b872dd60e01b815233600482015230602482015261ffff82166044820152909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b1580156103fa57600080fd5b505af115801561040e573d6000803e3d6000fd5b5050505061ffff9081166000818152600260208181526040832080546001600160e01b0319163367ffffffffffffffff60a01b191617600160a01b67ffffffffffffffff8c16021761ffff60e01b1916600160e01b89881602179055875460018181018a558985529190932060108404018054600f9094169092026101000a9485021990921693909202929092179055918201910161036a565b50505050505050565b600081815260026020526040812054600160a01b900467ffffffffffffffff16806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b92915050565b3360009081526003602052604090208054806105665760405162461bcd60e51b815260206004820152600e60248201526d139bdd1a1a5b99c81cdd185ad95960921b604482015260640161028d565b6001546001600160a01b0316156105dc5760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906105a99033908690600401610fe3565b600060405180830381600087803b1580156105c357600080fd5b505af11580156105d7573d6000803e3d6000fd5b505050505b60005b818110156106b95760008382815481106105fb576105fb610fb2565b6000918252602080832060108304015461ffff6002600f90941684026101000a9091041680845291905260409182902080546001600160f01b031916905590516323b872dd60e01b815230600482015233602482015260448101829052909150733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b15801561069457600080fd5b505af11580156106a8573d6000803e3d6000fd5b5050600190930192506105df915050565b503360009081526003602052604081206106d291610de0565b5050565b6000546001600160a01b031633146107005760405162461bcd60e51b815260040161028d906112fe565b6001546001600160a01b0390811690821681141561077c5760405162461bcd60e51b815260206004820152603360248201527f4e6577207374616b696e672072657761726420636f6e74726163742069732073604482015272185b5948185cc81bdb190818dbdb9d1c9858dd606a1b606482015260840161028d565b6001600160a01b038116156107e757604051630cc6b63160e01b81526001600160a01b038381166004830152821690630cc6b63190602401600060405180830381600087803b1580156107ce57600080fd5b505af11580156107e2573d6000803e3d6000fd5b505050505b600180546001600160a01b0319166001600160a01b038416908117909155156106d257604051635732a8e360e11b81526001600160a01b03828116600483015283169063ae6551c690602401600060405180830381600087803b15801561084d57600080fd5b505af1158015610861573d6000803e3d6000fd5b505050505050565b80806108b15760405162461bcd60e51b8152602060048201526017602482015276746f6b656e49647320617272617920697320656d70747960481b604482015260640161028d565b6001546001600160a01b0316156109295760015460405163267c5e0f60e21b81526001600160a01b03909116906399f1783c906108f690339087908790600401610f58565b600060405180830381600087803b15801561091057600080fd5b505af1158015610924573d6000803e3d6000fd5b505050505b336000908152600360205260408120905b82811015610b8457600085858381811061095657610956610fb2565b905060200201602081019061096b9190610fc8565b61ffff166000818152600260205260409020549091506001600160a01b031633146109d85760405162461bcd60e51b815260206004820152601d60248201527f546f6b656e206e6f74207374616b6564206f72206e6f74206f776e6564000000604482015260640161028d565b6000818152600260205260409020548354600160e01b90910461ffff169060001901808214610aa8576000858281548110610a1557610a15610fb2565b90600052602060002090601091828204019190066002029054906101000a900461ffff16905080868481548110610a4e57610a4e610fb2565b600091825260208083206010830401805461ffff9586166002600f90951685026101000a90810290870219909116179055938316825290925260409091208054918416600160e01b0261ffff60e01b199092169190911790555b84805480610ab857610ab8611333565b60008281526020808220601060001994909401938404018054600f851660029081026101000a61ffff021990911690915592909355858152915260409081902080546001600160f01b0319169055516323b872dd60e01b815230600482015233602482015260448101849052733a5051566b2241285be871f650c445a88a970edd906323b872dd90606401600060405180830381600087803b158015610b5d57600080fd5b505af1158015610b71573d6000803e3d6000fd5b50506001909501945061093a9350505050565b5050505050565b6000818152600260205260408120546001600160a01b0316806105115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881b9bdd081cdd185ad95960821b604482015260640161028d565b6000546001600160a01b03163314610c0d5760405162461bcd60e51b815260040161028d906112fe565b610c176000610d90565b565b6000546001600160a01b03163314610c435760405162461bcd60e51b815260040161028d906112fe565b60008054911515600160a01b0260ff60a01b19909216919091179055565b6001600160a01b038116600090815260036020908152604091829020805483518184028101840190945280845260609392830182828015610ce957602002820191906000526020600020906000905b82829054906101000a900461ffff1661ffff1681526020019060020190602082600101049283019260010382029150808411610cb05790505b50505050509050919050565b6000546001600160a01b03163314610d1f5760405162461bcd60e51b815260040161028d906112fe565b6001600160a01b038116610d845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161028d565b610d8d81610d90565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b50805460008255600f016010900490600052602060002090810190610d8d91905b80821115610e155760008155600101610e01565b5090565b60008060208385031215610e2c57600080fd5b823567ffffffffffffffff80821115610e4457600080fd5b818501915085601f830112610e5857600080fd5b813581811115610e6757600080fd5b8660208260051b8501011115610e7c57600080fd5b60209290920196919550909350505050565b600060208284031215610ea057600080fd5b5035919050565b600060208284031215610eb957600080fd5b81356001600160a01b0381168114610ed057600080fd5b9392505050565b600060208284031215610ee957600080fd5b81358015158114610ed057600080fd5b6020808252825182820181905260009190848201906040850190845b81811015610f3557835161ffff1683529284019291840191600101610f15565b50909695505050505050565b803561ffff81168114610f5357600080fd5b919050565b6001600160a01b038416815260406020808301829052908201839052600090849060608401835b86811015610fa65761ffff610f9385610f41565b1682529282019290820190600101610f7f565b50979650505050505050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610fda57600080fd5b610ed082610f41565b6000604080830160018060a01b03861684526020828186015281865461100d818590815260200190565b60008981526020812095509092505b81600f8201101561114c57845461ffff8082168552601082901c81168686015281861c811688860152603082901c8116606080870191909152608061106a81880184868d1c1661ffff169052565b60a0611080818901858760501c1661ffff169052565b60c0611095818a018688871c1661ffff169052565b60e093506110ad848a01868860701c1661ffff169052565b61ffff86841c8616166101008a01526110d26101208a01868860901c1661ffff169052565b61ffff86831c8616166101408a01526110f76101608a01868860b01c1661ffff169052565b61ffff86821c8616166101808a015250505061111f6101a08701838560d01c1661ffff169052565b82901c1661ffff166101c085015260f01c6101e0840152600194909401936102009092019160100161101c565b935493818110156111665761ffff85168352918301916001015b8181101561118157601085901c61ffff168352918301916001015b8181101561119a5784841c61ffff168352918301916001015b818110156111b557603085901c61ffff168352918301916001015b818110156111ce5784861c61ffff168352918301916001015b818110156111e957605085901c61ffff168352918301916001015b8181101561120457606085901c61ffff168352918301916001015b8181101561121f57607085901c61ffff168352918301916001015b8181101561123a57608085901c61ffff168352918301916001015b8181101561125557609085901c61ffff168352918301916001015b818110156112705760a085901c61ffff168352918301916001015b8181101561128b5760b085901c61ffff168352918301916001015b818110156112a65760c085901c61ffff168352918301916001015b818110156112c15760d085901c61ffff168352918301916001015b818110156112dc5760e085901c61ffff168352918301916001015b818110156112f05760f085901c8352918301915b509098975050505050505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603160045260246000fdfea26469706673582212200631a73d59bd44f894c3d90ff85929b4289df7a0074237348e8309e5cccbb75964736f6c634300080b0033

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.