ETH Price: $3,338.75 (-0.31%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Harvest215159912024-12-30 14:48:5940 hrs ago1735570139IN
0x306be820...2Af946A7D
0 ETH0.0026343816.12084753
Harvest214335322024-12-19 2:17:1113 days ago1734574631IN
0x306be820...2Af946A7D
0 ETH0.0065276233.03286405
Farm214255062024-12-17 23:21:1114 days ago1734477671IN
0x306be820...2Af946A7D
0 ETH0.0055747116.23474114
Farm214001732024-12-14 10:31:2317 days ago1734172283IN
0x306be820...2Af946A7D
0 ETH0.002985268.69372275
Farm213940892024-12-13 14:08:2318 days ago1734098903IN
0x306be820...2Af946A7D
0 ETH0.0056727516.74283747
Farm213761132024-12-11 1:53:4721 days ago1733882027IN
0x306be820...2Af946A7D
0 ETH0.005103614.86357282
Farm213709112024-12-10 8:28:1121 days ago1733819291IN
0x306be820...2Af946A7D
0 ETH0.0050000114.35985706
Farm213468272024-12-06 23:46:3525 days ago1733528795IN
0x306be820...2Af946A7D
0 ETH0.0057020516.60476532
Harvest212944712024-11-29 16:14:3532 days ago1732896875IN
0x306be820...2Af946A7D
0 ETH0.0032942120.15918759
Set Nft Boost212876622024-11-28 17:22:3533 days ago1732814555IN
0x306be820...2Af946A7D
0 ETH0.000320910.96630281
Set Nft Boost212876602024-11-28 17:22:1133 days ago1732814531IN
0x306be820...2Af946A7D
0 ETH0.0003065810.47685937
Set Nft Boost212876512024-11-28 17:20:2333 days ago1732814423IN
0x306be820...2Af946A7D
0 ETH0.000284419.71911795
Harvest212167992024-11-18 19:49:2343 days ago1731959363IN
0x306be820...2Af946A7D
0 ETH0.0030692818.78270954
Set Nft Boost211725862024-11-12 15:46:2349 days ago1731426383IN
0x306be820...2Af946A7D
0 ETH0.0009333531.90846774
Set Nft Boost211725802024-11-12 15:45:1149 days ago1731426311IN
0x306be820...2Af946A7D
0 ETH0.0008858530.28455051
Set Nft Boost211725722024-11-12 15:43:3549 days ago1731426215IN
0x306be820...2Af946A7D
0 ETH0.0008914630.47627051
Farm211402452024-11-08 3:30:3554 days ago1731036635IN
0x306be820...2Af946A7D
0 ETH0.0040275211.72898686
Set APR_PERCENTA...211068542024-11-03 11:35:4758 days ago1730633747IN
0x306be820...2Af946A7D
0 ETH0.000138834.80792353
Set APR_PERCENTA...211068492024-11-03 11:34:4758 days ago1730633687IN
0x306be820...2Af946A7D
0 ETH0.000143884.98302492
Set APR_PERCENTA...211067812024-11-03 11:21:1158 days ago1730632871IN
0x306be820...2Af946A7D
0 ETH0.000100694.18657531
Set APR_PERCENTA...211067692024-11-03 11:18:3558 days ago1730632715IN
0x306be820...2Af946A7D
0 ETH0.000096854.02710139
Farm211051292024-11-03 5:49:5959 days ago1730612999IN
0x306be820...2Af946A7D
0 ETH0.001601054.6625916
Farm211017222024-11-02 18:23:4759 days ago1730571827IN
0x306be820...2Af946A7D
0 ETH0.002820768.10113642
Farm210968942024-11-02 2:11:4760 days ago1730513507IN
0x306be820...2Af946A7D
0 ETH0.001163093.40978659
Farm210963042024-11-02 0:13:1160 days ago1730506391IN
0x306be820...2Af946A7D
0 ETH0.00165294.81343226
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:
NFTStaking

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

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

contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC721 {
    function balanceOf(address owner) external view returns (uint256);

    function ownerOf(uint256 tokenId) external view returns (address);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator)
        external
        view
        returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

abstract contract Pausable is Context {
    bool private _paused;

    constructor() {
        _paused = false;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    function _pause() internal virtual {
        _paused = true;
    }

    function _unpause() internal virtual {
        _paused = false;
    }
}

contract Ownable is Context {
    address private _owner;

    constructor() {
        _owner = 0x0ceE8381e39f19a72B5091C81A053Fdf01099852;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _owner = newOwner;
    }
}

contract NFTStaking is Ownable, Pausable {
    IERC20 public Token;
    IERC721 public NFT_LEVEL1;
    IERC721 public NFT_LEVEL2;
    IERC721 public NFT_LEVEL3;

    // Address where tax fees are sent
    address public taxReceiver;

    // Deduction percentage (e.g., 2500 = 25.00%)
    uint256 public deductionPercentage = 2500;

    // Minimum amount required for staking (1 ether = 10^18 wei)
    uint256 public minStaking = 1 ether;

    // Maximum amount allowed for staking (60,000 ether = 60,000 * 10^18 wei)
    uint256 public maxStaking = 60_000 ether;

    // Total number of stakers
    uint256 public totalStakers;

    // Total amount of tokens staked
    uint256 public totalStaked;

    // Total number of NFTs staked
    uint256 public totalNFTStaked;

    // Mapping for spam addresses
    mapping(address => bool) public isSpam;

    // Mapping for new stakers
    mapping(address => bool) public newStakers;

    // Boost percentages for NFTs (e.g., 500 = 5.00%)
    mapping(address => uint256) public nftBoosts;

    mapping(uint256 => uint256) public APR_PERCENTAGE;
    mapping(uint256 => uint256) public TIME_STEP;
    mapping(address => mapping(uint256 => UserInfo[])) private Users;

    struct UserInfo {
        uint256 planDuration;
        uint256 amount;
        uint256 NFTids;
        uint256 startTime;
        uint256 endTime;
        uint256 withdrawn;
        address NFT;
        string userNFTIDsLevel;
        bool hasHarvested;
    }

    event Deposit(
        address indexed to,
        address indexed from,
        uint256 amount,
        uint256 day,
        uint256 time
    );
    event Harvest(
        address indexed user,
        uint256 NFT,
        uint256 harvestedAmount,
        uint256 totalDeduction,
        uint256 planDuration
    );

    constructor() {
        Token = IERC20(0x7Fd4Abc178a66E26711658763654A041940C75A9);
        NFT_LEVEL1 = IERC721(0x1Ed1df0dca15A7D26CCc1E80984719ea71De7cE4);
        NFT_LEVEL2 = IERC721(0x012B42fb9Bb510a049f66dec225D4a2466AFcae6);
        NFT_LEVEL3 = IERC721(0x8761Ca4aEdc30c4de6E56141161eb0874640925E);
        taxReceiver = owner();

        // Set NFT boost percentages for each level of NFTs
        nftBoosts[address(NFT_LEVEL1)] = 5_00; // Boost 5% for level 1 NFTs
        nftBoosts[address(NFT_LEVEL2)] = 10_00; // Boost 10% for level 2 NFTs
        nftBoosts[address(NFT_LEVEL3)] = 15_00; // Boost 15% for level 3 NFTs

        // Set APR (Annual Percentage Rate) values for different plan durations
        APR_PERCENTAGE[14] = 100_41; // 14-day lock: = 0.41%
        APR_PERCENTAGE[30] = 101_66; // 30-day lock: = 1.66%
        APR_PERCENTAGE[60] = 105_00; // 60-day lock: = 5 %
        APR_PERCENTAGE[90] = 112_50; // 90-day lock: = 12.5%

        // Set time steps for dividend calculations for each plan duration
        TIME_STEP[14] = 14 days; // Time step for 14-day plan
        TIME_STEP[30] = 30 days; // Time step for 30-day plan
        TIME_STEP[60] = 60 days; // Time step for 60-day plan
        TIME_STEP[90] = 90 days; // Time step for 90-day plan
    }

    function farm(
        uint256 _amount,
        uint256 _lockableDays,
        uint256 _tokenID,
        address _nftAddress
    ) external whenNotPaused {
        require(!isSpam[msg.sender], "Account is flagged as spam");
        require(_amount >= minStaking, "Amount below minimum staking");
        require(_amount <= maxStaking, "Amount above maximum staking");
        require(APR_PERCENTAGE[_lockableDays] > 0, "Invalid lockable days");
        require(
            NFT_LEVEL1 == IERC721(_nftAddress) ||
                NFT_LEVEL2 == IERC721(_nftAddress) ||
                NFT_LEVEL3 == IERC721(_nftAddress),
            "Invalid NFT address"
        );

        uint256 lockableDays = TIME_STEP[_lockableDays];

        Token.transferFrom(msg.sender, address(this), _amount);
        IERC721(_nftAddress).transferFrom(msg.sender, address(this), _tokenID);

        string memory nftLevel;
        if (NFT_LEVEL1 == IERC721(_nftAddress)) {
            nftLevel = "Level 1";
        } else if (NFT_LEVEL2 == IERC721(_nftAddress)) {
            nftLevel = "Level 2";
        } else if (NFT_LEVEL3 == IERC721(_nftAddress)) {
            nftLevel = "Level 3";
        }

        UserInfo memory userInfo = UserInfo({
            planDuration: _lockableDays,
            amount: _amount,
            NFTids: _tokenID,
            startTime: block.timestamp,
            endTime: block.timestamp + lockableDays,
            withdrawn: 0,
            NFT: _nftAddress,
            userNFTIDsLevel: nftLevel,
            hasHarvested: false
        });

        Users[msg.sender][_lockableDays].push(userInfo);

        if (!newStakers[msg.sender]) {
            totalStakers++;
            newStakers[msg.sender] = true;
        }
        totalStaked += _amount;
        totalNFTStaked++;

        emit Deposit(
            msg.sender,
            address(this),
            _amount,
            _lockableDays,
            block.timestamp
        );
    }

    function harvest(uint256 planDuration, uint256 index)
        external
        whenNotPaused
    {
        require(!isSpam[msg.sender], "Account is spam!");

        UserInfo[] storage userDeposits = Users[msg.sender][planDuration];
        require(index < userDeposits.length, "Invalid deposit index");

        UserInfo storage deposit = userDeposits[index];
        require(!deposit.hasHarvested, "Already harvested for this deposit");

        uint256 totalHarvestedAmount = 0;
        uint256 totalDeduction = 0;

        if (block.timestamp < deposit.endTime) {
            uint256 deduction = (deposit.amount * deductionPercentage) / 100_00;
            totalHarvestedAmount = deposit.amount - deduction;
            totalDeduction = deduction;

            if (totalDeduction > 0) {
                Token.transfer(taxReceiver, totalDeduction);
            }

            Token.transfer(msg.sender, totalHarvestedAmount);
        } else {
            totalHarvestedAmount = getUserDividends(
                msg.sender,
                planDuration,
                index
            );

            Token.transfer(msg.sender, totalHarvestedAmount);
        }

        IERC721(deposit.NFT).transferFrom(
            address(this),
            msg.sender,
            deposit.NFTids
        );

        deposit.hasHarvested = true;
        deposit.withdrawn += totalHarvestedAmount;

        emit Harvest(
            msg.sender,
            deposit.NFTids,
            totalHarvestedAmount,
            totalDeduction,
            planDuration
        );
    }

    function getUserDividends(
        address _user,
        uint256 _planDuration,
        uint256 index
    ) public view returns (uint256 totalDividends) {
        UserInfo[] storage userDeposits = Users[_user][_planDuration];

        if (
            userDeposits.length == 0 ||
            index >= userDeposits.length ||
            userDeposits[index].hasHarvested
        ) {
            return 0;
        }

        UserInfo storage selectedDeposit = userDeposits[index];
        uint256 timeElapsed = block.timestamp - selectedDeposit.startTime;

        address userNFT = selectedDeposit.NFT;
        uint256 boostPercentage = nftBoosts[userNFT];

        uint256 APR = APR_PERCENTAGE[_planDuration] + boostPercentage;

        uint256 maxDividends = (selectedDeposit.amount * APR) / 100_00;

        if (block.timestamp < selectedDeposit.endTime) {
            totalDividends =
                (selectedDeposit.amount * APR * timeElapsed) /
                (100_00 * TIME_STEP[_planDuration]);
        } else {
            totalDividends = maxDividends;
        }

        if (selectedDeposit.withdrawn + totalDividends > maxDividends) {
            totalDividends = maxDividends - selectedDeposit.withdrawn;
        }

        return totalDividends;
    }

    function futureRewards(address _add, uint256 _lockableDays)
        public
        view
        returns (uint256 reward, uint256 claimedAmount)
    {
        uint256 Reward = 0;
        uint256 apyPercent = APR_PERCENTAGE[_lockableDays];
        uint256 claimed = 0;

        for (uint256 z = 0; z < Users[_add][_lockableDays].length; z++) {
            UserInfo memory user = Users[_add][_lockableDays][z];
            uint256 elapsedTime = block.timestamp - user.startTime;
            address userNFT = user.NFT;
            uint256 boostPercentage = nftBoosts[userNFT];
            uint256 totalAPR = apyPercent + boostPercentage;
            uint256 maxAmount = (user.amount * totalAPR) / 100_00;
            uint256 currentReward;
            if (block.timestamp < user.endTime) {
                currentReward =
                    (user.amount * totalAPR * elapsedTime) /
                    (100_00 * TIME_STEP[_lockableDays]);
            } else {
                currentReward = maxAmount;
            }
            uint256 unclaimedReward = currentReward > user.withdrawn
                ? currentReward - user.withdrawn
                : 0;
            Reward += unclaimedReward;
            claimed += user.withdrawn;
        }

        return (Reward, claimed);
    }

    function getUserDepositInfo(
        address _user,
        uint256 _planDuration,
        uint256 _index
    )
        public
        view
        returns (
            uint256 planDuration,
            uint256 amount,
            uint256 NFTids,
            uint256 startTime,
            uint256 endTime,
            uint256 withdrawn,
            address NFT,
            string memory userNFTIDsLevel,
            bool hasHarvested
        )
    {
        UserInfo[] storage deposits = Users[_user][_planDuration];
        require(_index < deposits.length, "Invalid index");

        UserInfo storage deposit = deposits[_index];
        return (
            deposit.planDuration,
            deposit.amount,
            deposit.NFTids,
            deposit.startTime,
            deposit.endTime,
            deposit.withdrawn,
            deposit.NFT,
            deposit.userNFTIDsLevel,
            deposit.hasHarvested
        );
    }

    function getUserStakesCount(address _user, uint256 _planDuration)
        public
        view
        returns (uint256)
    {
        return Users[_user][_planDuration].length;
    }

    function getUserStakedPlans(address userAddress)
        external
        view
        returns (uint256[] memory)
    {
        UserInfo[] storage userDeposits;
        uint256 maxPlans = 90;
        bool[] memory hasStakedPlan = new bool[](maxPlans + 1);

        for (uint256 i = 0; i <= maxPlans; i++) {
            userDeposits = Users[userAddress][i];
            if (userDeposits.length > 0) {
                hasStakedPlan[i] = true;
            }
        }

        uint256 stakedPlanCount = 0;
        for (uint256 i = 0; i <= maxPlans; i++) {
            if (hasStakedPlan[i]) {
                stakedPlanCount++;
            }
        }

        uint256[] memory uniquePlans = new uint256[](stakedPlanCount);
        uint256 index = 0;
        for (uint256 i = 0; i <= maxPlans; i++) {
            if (hasStakedPlan[i]) {
                uniquePlans[index] = i;
                index++;
            }
        }

        return uniquePlans;
    }

    function withdrawTokens(address _tokenAddress, uint256 _amount)
        external
        onlyOwner
    {
        require(_tokenAddress != address(0), "Invalid token address");
        require(_amount > 0, "Amount must be greater than zero");

        IERC20 token = IERC20(_tokenAddress);
        uint256 contractBalance = token.balanceOf(address(this));
        require(_amount <= contractBalance, "Insufficient contract balance");

        token.transfer(msg.sender, _amount);
    }

    function withdrawNFT(IERC721 _nftContract, uint256 _tokenId)
        external
        onlyOwner
    {
        require(
            address(_nftContract) != address(0),
            "Invalid NFT contract address"
        );
        require(
            _nftContract.ownerOf(_tokenId) == address(this),
            "Contract does not own this NFT"
        );

        _nftContract.safeTransferFrom(address(this), msg.sender, _tokenId);
    }

    function withdrawETH() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH to withdraw");
        payable(owner()).transfer(balance);
    }

    function setToken(IERC20 _token) external onlyOwner {
        Token = _token;
    }

    function pause() external onlyOwner {
        _pause();
    }

    function unpause() external onlyOwner {
        _unpause();
    }

    function setSpamStatus(address _address, bool _status) external onlyOwner {
        isSpam[_address] = _status;
    }

    function updateTaxReceiver(address _newTaxReceiver) external onlyOwner {
        taxReceiver = _newTaxReceiver;
    }

    function updateStakingLimits(uint256 _min, uint256 _max)
        external
        onlyOwner
    {
        minStaking = _min;
        maxStaking = _max;
    }

    function updateDeductionPercentage(uint256 _percentage) external onlyOwner {
        deductionPercentage = _percentage;
    }

    function setNftBoost(address nftAddress, uint256 boostPercentage)
        public
        onlyOwner
    {
        nftBoosts[nftAddress] = boostPercentage;
    }

    function setAPR_PERCENTAGE(uint256 _planDuration, uint256 _aprPercentage)
        public
        onlyOwner
    {
        APR_PERCENTAGE[_planDuration] = _aprPercentage;
    }

    function setTIME_STEP(uint256 _planDuration, uint256 _timeStep)
        public
        onlyOwner
    {
        TIME_STEP[_planDuration] = _timeStep;
    }

    function setNFTContracts(
        IERC721 _nftLevel1,
        IERC721 _nftLevel2,
        IERC721 _nftLevel3
    ) external onlyOwner {
        NFT_LEVEL1 = _nftLevel1;
        NFT_LEVEL2 = _nftLevel2;
        NFT_LEVEL3 = _nftLevel3;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "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":"to","type":"address"},{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"day","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"NFT","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"harvestedAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalDeduction","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"planDuration","type":"uint256"}],"name":"Harvest","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"APR_PERCENTAGE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_LEVEL1","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_LEVEL2","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT_LEVEL3","outputs":[{"internalType":"contract IERC721","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"TIME_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deductionPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_lockableDays","type":"uint256"},{"internalType":"uint256","name":"_tokenID","type":"uint256"},{"internalType":"address","name":"_nftAddress","type":"address"}],"name":"farm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_add","type":"address"},{"internalType":"uint256","name":"_lockableDays","type":"uint256"}],"name":"futureRewards","outputs":[{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"claimedAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_planDuration","type":"uint256"},{"internalType":"uint256","name":"_index","type":"uint256"}],"name":"getUserDepositInfo","outputs":[{"internalType":"uint256","name":"planDuration","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"NFTids","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"withdrawn","type":"uint256"},{"internalType":"address","name":"NFT","type":"address"},{"internalType":"string","name":"userNFTIDsLevel","type":"string"},{"internalType":"bool","name":"hasHarvested","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_planDuration","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getUserDividends","outputs":[{"internalType":"uint256","name":"totalDividends","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"userAddress","type":"address"}],"name":"getUserStakedPlans","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"},{"internalType":"uint256","name":"_planDuration","type":"uint256"}],"name":"getUserStakesCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"planDuration","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSpam","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"newStakers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nftBoosts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_planDuration","type":"uint256"},{"internalType":"uint256","name":"_aprPercentage","type":"uint256"}],"name":"setAPR_PERCENTAGE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"_nftLevel1","type":"address"},{"internalType":"contract IERC721","name":"_nftLevel2","type":"address"},{"internalType":"contract IERC721","name":"_nftLevel3","type":"address"}],"name":"setNFTContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"nftAddress","type":"address"},{"internalType":"uint256","name":"boostPercentage","type":"uint256"}],"name":"setNftBoost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setSpamStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_planDuration","type":"uint256"},{"internalType":"uint256","name":"_timeStep","type":"uint256"}],"name":"setTIME_STEP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"taxReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalNFTStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStakers","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":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"updateDeductionPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_min","type":"uint256"},{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"updateStakingLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTaxReceiver","type":"address"}],"name":"updateTaxReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC721","name":"_nftContract","type":"address"},{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"withdrawNFT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526109c4600655670de0b6b3a7640000600755690cb49b44ba602d80000060085534801561002f575f80fd5b505f80546001600160a81b031916730cee8381e39f19a72b5091c81a053fdf01099852179055600180546001600160a01b0319908116737fd4abc178a66e26711658763654a041940c75a917909155600280548216731ed1df0dca15a7d26ccc1e80984719ea71de7ce417905560038054821673012b42fb9bb510a049f66dec225d4a2466afcae617905560048054909116738761ca4aedc30c4de6e56141161eb0874640925e1790556100ea5f546001600160a01b031690565b600580546001600160a01b0319166001600160a01b0392831617905560025481165f908152600e602090815260408083206101f49055600354841683528083206103e8905560045490931682529181206105dc90556127397f61510b1e54e804ee2580bac0a66e3ff0bcf8eecee98d26e41ad5e6195d21ef9f556127b67ffa57bcc70f4245bf648f1c1b5dc6739ff36391ab05179cdb7480d961813e9713556129047f5f4ce43eeca3a6eb76aceb35660d8793b8274ae3cbbd3b12cc1627ff83553f2055612bf27fc73acaf3c3a9fa91d689682cc00a4ee9b89aeb9b70d254f6012be6d346af4dc7556010909152621275007fd331405802b48c62503c15f58c7a0f7d4e115b3f84eaa7ece1215aeb38f6b4bf5562278d007fd5ade9212b9c22ab8be4e88d97dbfbb3427696b552504fa752517f4f00955d9f55624f1a007fbc587bdcd18c00095cb6e080407f1ba7d64f21f4fedc5335a9f7a7e5f72b651355605a90526276a7007f1fe10f096ad8c702a80ac36abb3182822537d287414faa3a6ebacc3d8bd65c34556123f7806102815f395ff3fe608060405234801561000f575f80fd5b506004361061023e575f3560e01c806377279d1e11610135578063c1bb014f116100b4578063e086e5ec11610079578063e086e5ec1461053a578063e4a4b7b114610542578063e6ef73d614610555578063f2fde38b14610568578063ff5d626c1461057b575f80fd5b8063c1bb014f146104cc578063c2412676146104df578063caa56040146104f2578063cd09920514610505578063df1a9f3714610527575f80fd5b8063872c50ba116100fa578063872c50ba146104655780638da5cb5b1461046e578063ac3a56ac1461047e578063b48aa05e14610491578063b88be686146104b9575f80fd5b806377279d1e14610419578063774c78a714610438578063817b1cd21461044b5780638456cb5914610454578063869890381461045c575f80fd5b806329af9c25116101c15780635b5e4558116101865780635b5e4558146103b15780635c975abb146103c45780636088e93a146103d5578063648b5e32146103e85780636b130dc214610410575f80fd5b806329af9c25146103515780633f4ba83a146103645780634720594d1461036c57806352b817631461038b57806356b096161461039e575f80fd5b80630aa3d065116102075780630aa3d065146102f05780630c9471c7146102f9578063144fa6d71461030c57806319198a361461031f5780631d9bdeae1461033e575f80fd5b8062771c081461024257806303f35bce146102725780630564534c146102a457806306b091f9146102bb57806309ae8c22146102d0575b5f80fd5b600454610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610294610280366004611ed4565b600d6020525f908152604090205460ff1681565b6040519015158152602001610269565b6102ad60075481565b604051908152602001610269565b6102ce6102c9366004611eef565b61058e565b005b6102e36102de366004611ed4565b61078e565b6040516102699190611f19565b6102ad600b5481565b6102ad610307366004611f5c565b610954565b6102ce61031a366004611ed4565b610ade565b6102ad61032d366004611f8e565b60106020525f908152604090205481565b6102ce61034c366004611fa5565b610b29565b600354610255906001600160a01b031681565b6102ce610b63565b6102ad61037a366004611f8e565b600f6020525f908152604090205481565b6102ce610399366004611fa5565b610b9f565b6102ce6103ac366004611ed4565b610bd3565b6102ad6103bf366004611eef565b610c1e565b5f54600160a01b900460ff16610294565b6102ce6103e3366004611eef565b610c48565b6103fb6103f6366004611eef565b610de7565b60408051928352602083019190915201610269565b6102ad60065481565b6102ad610427366004611ed4565b600e6020525f908152604090205481565b6102ce610446366004611fa5565b611098565b6102ad600a5481565b6102ce6110d2565b6102ad60095481565b6102ad60085481565b5f546001600160a01b0316610255565b6102ce61048c366004611fc5565b611112565b6104a461049f366004611f5c565b61117a565b6040516102699998979695949392919061200d565b6102ce6104c7366004611eef565b611304565b6102ce6104da3660046120ac565b611348565b600154610255906001600160a01b031681565b6102ce6105003660046120f7565b6118c1565b610294610513366004611ed4565b600c6020525f908152604090205460ff1681565b600254610255906001600160a01b031681565b6102ce611914565b6102ce610550366004611fa5565b6119ba565b600554610255906001600160a01b031681565b6102ce610576366004611ed4565b611de0565b6102ce610589366004611f8e565b611e8f565b5f546001600160a01b031633146105c05760405162461bcd60e51b81526004016105b79061212e565b60405180910390fd5b6001600160a01b03821661060e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105b7565b5f811161065d5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f60448201526064016105b7565b6040516370a0823160e01b815230600482015282905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156106a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c79190612163565b9050808311156107195760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016105b7565b60405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610763573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610787919061217a565b5050505050565b60605f605a8161079f8260016121a9565b67ffffffffffffffff8111156107b7576107b76121bc565b6040519080825280602002602001820160405280156107e0578160200160208202803683370190505b5090505f5b82811161084f576001600160a01b0386165f908152601160209081526040808320848452909152902080549094501561083d57600182828151811061082c5761082c6121d0565b911515602092830291909101909101525b80610847816121e4565b9150506107e5565b505f805b8381116108995782818151811061086c5761086c6121d0565b6020026020010151156108875781610883816121e4565b9250505b80610891816121e4565b915050610853565b505f8167ffffffffffffffff8111156108b4576108b46121bc565b6040519080825280602002602001820160405280156108dd578160200160208202803683370190505b5090505f805b858111610947578481815181106108fc576108fc6121d0565b602002602001015115610935578083838151811061091c5761091c6121d0565b602090810291909101015281610931816121e4565b9250505b8061093f816121e4565b9150506108e3565b5090979650505050505050565b6001600160a01b0383165f908152601160209081526040808320858452909152812080541580610985575080548310155b806109b4575080838154811061099d5761099d6121d0565b5f91825260209091206008600990920201015460ff165b156109c2575f915050610ad7565b5f8184815481106109d5576109d56121d0565b905f5260205f20906009020190505f8160030154426109f491906121fc565b60068301546001600160a01b03165f818152600e60209081526040808320548b8452600f9092528220549394509192610a2e9083906121a9565b90505f612710828760010154610a44919061220f565b610a4e9190612226565b90508560040154421015610aa2575f8a815260106020526040902054610a769061271061220f565b85838860010154610a87919061220f565b610a91919061220f565b610a9b9190612226565b9750610aa6565b8097505b80888760050154610ab791906121a9565b1115610acf576005860154610acc90826121fc565b97505b505050505050505b9392505050565b5f546001600160a01b03163314610b075760405162461bcd60e51b81526004016105b79061212e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b525760405162461bcd60e51b81526004016105b79061212e565b5f9182526010602052604090912055565b5f546001600160a01b03163314610b8c5760405162461bcd60e51b81526004016105b79061212e565b610b9d5f805460ff60a01b19169055565b565b5f546001600160a01b03163314610bc85760405162461bcd60e51b81526004016105b79061212e565b600791909155600855565b5f546001600160a01b03163314610bfc5760405162461bcd60e51b81526004016105b79061212e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382165f9081526011602090815260408083208484529091529020545b92915050565b5f546001600160a01b03163314610c715760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b038216610cc75760405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964204e465420636f6e747261637420616464726573730000000060448201526064016105b7565b6040516331a9108f60e11b81526004810182905230906001600160a01b03841690636352211e90602401602060405180830381865afa158015610d0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d309190612245565b6001600160a01b031614610d865760405162461bcd60e51b815260206004820152601e60248201527f436f6e747261637420646f6573206e6f74206f776e2074686973204e4654000060448201526064016105b7565b604051632142170760e11b81526001600160a01b038316906342842e0e90610db690309033908690600401612260565b5f604051808303815f87803b158015610dcd575f80fd5b505af1158015610ddf573d5f803e3d5ffd5b505050505050565b5f818152600f60205260408120548190819081805b6001600160a01b0388165f9081526011602090815260408083208a845290915290205481101561108a576001600160a01b0388165f9081526011602090815260408083208a84529091528120805483908110610e5a57610e5a6121d0565b905f5260205f209060090201604051806101200160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600782018054610eeb90612284565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1790612284565b8015610f625780601f10610f3957610100808354040283529160200191610f62565b820191905f5260205f20905b815481529060010190602001808311610f4557829003601f168201915b50505091835250506008919091015460ff16151560209091015260608101519091505f90610f9090426121fc565b60c08301516001600160a01b0381165f908152600e6020526040812054929350909190610fbd82896121a9565b90505f612710828760200151610fd3919061220f565b610fdd9190612226565b90505f8660800151421015611032575f8e8152601060205260409020546110069061271061220f565b86848960200151611017919061220f565b611021919061220f565b61102b9190612226565b9050611035565b50805b5f8760a001518211611047575f611056565b60a088015161105690836121fc565b9050611062818d6121a9565b9b508760a001518a61107491906121a9565b99505060019097019650610dfc95505050505050565b509196919550909350505050565b5f546001600160a01b031633146110c15760405162461bcd60e51b81526004016105b79061212e565b5f918252600f602052604090912055565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016105b79061212e565b610b9d5f805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461113b5760405162461bcd60e51b81526004016105b79061212e565b600280546001600160a01b039485166001600160a01b031991821617909155600380549385169382169390931790925560048054919093169116179055565b6001600160a01b0383165f9081526011602090815260408083208584529091528120805482918291829182918291829160609183918b106111ed5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016105b7565b5f818c81548110611200576112006121d0565b905f5260205f2090600902019050805f015481600101548260020154836003015484600401548560050154866006015f9054906101000a90046001600160a01b031687600701886008015f9054906101000a900460ff1681805461126390612284565b80601f016020809104026020016040519081016040528092919081815260200182805461128f90612284565b80156112da5780601f106112b1576101008083540402835291602001916112da565b820191905f5260205f20905b8154815290600101906020018083116112bd57829003601f168201915b505050505091509a509a509a509a509a509a509a509a509a50505093979b92969a50939750939750565b5f546001600160a01b0316331461132d5760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b039091165f908152600e6020526040902055565b5f54600160a01b900460ff16156113945760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b7565b335f908152600c602052604090205460ff16156113f35760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420697320666c6167676564206173207370616d00000000000060448201526064016105b7565b6007548410156114455760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742062656c6f77206d696e696d756d207374616b696e670000000060448201526064016105b7565b6008548411156114975760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742061626f7665206d6178696d756d207374616b696e670000000060448201526064016105b7565b5f838152600f60205260409020546114e95760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206c6f636b61626c65206461797360581b60448201526064016105b7565b6002546001600160a01b038281169116148061151257506003546001600160a01b038281169116145b8061152a57506004546001600160a01b038281169116145b61156c5760405162461bcd60e51b8152602060048201526013602482015272496e76616c6964204e4654206164647265737360681b60448201526064016105b7565b5f83815260106020526040908190205460015491516323b872dd60e01b815290916001600160a01b0316906323b872dd906115af90339030908a90600401612260565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef919061217a565b506040516323b872dd60e01b81526001600160a01b038316906323b872dd9061162090339030908890600401612260565b5f604051808303815f87803b158015611637575f80fd5b505af1158015611649573d5f803e3d5ffd5b5050600254606092506001600160a01b03808616911603905061168a57506040805180820190915260078152664c6576656c203160c81b60208201526116f8565b6003546001600160a01b038085169116036116c357506040805180820190915260078152662632bb32b6101960c91b60208201526116f8565b6004546001600160a01b038085169116036116f857506040805180820190915260078152664c6576656c203360c81b60208201525b5f604051806101200160405280878152602001888152602001868152602001428152602001844261172991906121a9565b81525f60208083018290526001600160a01b0388811660408086019190915260608086018990526080958601859052338552601184528185208d865284528185208054600180820183559187529585902088516009909702019586559387015193850193909355850151600284015590840151600383015591830151600482015560a0830151600582015560c08301516006820180546001600160a01b031916919093161790915560e0820151919250829160078201906117ea9082612305565b5061010091909101516008909101805460ff1916911515919091179055335f908152600d602052604090205460ff1661184b5760098054905f61182c836121e4565b9091555050335f908152600d60205260409020805460ff191660011790555b86600a5f82825461185c91906121a9565b9091555050600b8054905f611870836121e4565b9091555050604080518881526020810188905242818301529051309133917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a350505050505050565b5f546001600160a01b031633146118ea5760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461193d5760405162461bcd60e51b81526004016105b79061212e565b47806119805760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b60448201526064016105b7565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156119b6573d5f803e3d5ffd5b5050565b5f54600160a01b900460ff1615611a065760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b7565b335f908152600c602052604090205460ff1615611a585760405162461bcd60e51b815260206004820152601060248201526f4163636f756e74206973207370616d2160801b60448201526064016105b7565b335f908152601160209081526040808320858452909152902080548210611ab95760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840c8cae0dee6d2e840d2dcc8caf605b1b60448201526064016105b7565b5f818381548110611acc57611acc6121d0565b5f9182526020909120600990910201600881015490915060ff1615611b3e5760405162461bcd60e51b815260206004820152602260248201527f416c72656164792068617276657374656420666f722074686973206465706f736044820152611a5d60f21b60648201526084016105b7565b5f808260040154421015611c7a575f6127106006548560010154611b62919061220f565b611b6c9190612226565b9050808460010154611b7e91906121fc565b92509050808015611c015760015460055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303815f875af1158015611bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bff919061217a565b505b60015460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c73919061217a565b5050611cfa565b611c85338787610954565b60015460405163a9059cbb60e01b8152336004820152602481018390529193506001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf8919061217a565b505b600683015460028401546040516323b872dd60e01b81526001600160a01b03909216916323b872dd91611d339130913391600401612260565b5f604051808303815f87803b158015611d4a575f80fd5b505af1158015611d5c573d5f803e3d5ffd5b50505060088401805460ff19166001179055506005830180548391905f90611d859084906121a9565b90915550506002830154604080519182526020820184905281018290526060810187905233907f7baefe19499ec89bdfeffd0fc7335c9d0ea87f8ca40bb82c956184634ba170fd9060800160405180910390a2505050505050565b5f546001600160a01b03163314611e095760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b038116611e6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b7565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611eb85760405162461bcd60e51b81526004016105b79061212e565b600655565b6001600160a01b0381168114611ed1575f80fd5b50565b5f60208284031215611ee4575f80fd5b8135610ad781611ebd565b5f8060408385031215611f00575f80fd5b8235611f0b81611ebd565b946020939093013593505050565b602080825282518282018190525f9190848201906040850190845b81811015611f5057835183529284019291840191600101611f34565b50909695505050505050565b5f805f60608486031215611f6e575f80fd5b8335611f7981611ebd565b95602085013595506040909401359392505050565b5f60208284031215611f9e575f80fd5b5035919050565b5f8060408385031215611fb6575f80fd5b50508035926020909101359150565b5f805f60608486031215611fd7575f80fd5b8335611fe281611ebd565b92506020840135611ff281611ebd565b9150604084013561200281611ebd565b809150509250925092565b5f6101208b835260208b60208501528a60408501528960608501528860808501528760a085015260018060a01b03871660c08501528160e0850152855180838601525f92505b8083101561207257868301820151858401610140015291810191612053565b61014092505f83828701015282601f19601f830116860101935050505061209e61010083018415159052565b9a9950505050505050505050565b5f805f80608085870312156120bf575f80fd5b84359350602085013592506040850135915060608501356120df81611ebd565b939692955090935050565b8015158114611ed1575f80fd5b5f8060408385031215612108575f80fd5b823561211381611ebd565b91506020830135612123816120ea565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612173575f80fd5b5051919050565b5f6020828403121561218a575f80fd5b8151610ad7816120ea565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c4257610c42612195565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f600182016121f5576121f5612195565b5060010190565b81810381811115610c4257610c42612195565b8082028115828204841417610c4257610c42612195565b5f8261224057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612255575f80fd5b8151610ad781611ebd565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600181811c9082168061229857607f821691505b6020821081036122b657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561230057805f5260205f20601f840160051c810160208510156122e15750805b601f840160051c820191505b81811015610787575f81556001016122ed565b505050565b815167ffffffffffffffff81111561231f5761231f6121bc565b6123338161232d8454612284565b846122bc565b602080601f831160018114612366575f841561234f5750858301515b5f19600386901b1c1916600185901b178555610ddf565b5f85815260208120601f198616915b8281101561239457888601518255948401946001909101908401612375565b50858210156123b157878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220aae67d37eebe07c682a9dd2af4b5b0cc25f8c980fc482c4ff9c9c9f571b522cc64736f6c63430008180033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061023e575f3560e01c806377279d1e11610135578063c1bb014f116100b4578063e086e5ec11610079578063e086e5ec1461053a578063e4a4b7b114610542578063e6ef73d614610555578063f2fde38b14610568578063ff5d626c1461057b575f80fd5b8063c1bb014f146104cc578063c2412676146104df578063caa56040146104f2578063cd09920514610505578063df1a9f3714610527575f80fd5b8063872c50ba116100fa578063872c50ba146104655780638da5cb5b1461046e578063ac3a56ac1461047e578063b48aa05e14610491578063b88be686146104b9575f80fd5b806377279d1e14610419578063774c78a714610438578063817b1cd21461044b5780638456cb5914610454578063869890381461045c575f80fd5b806329af9c25116101c15780635b5e4558116101865780635b5e4558146103b15780635c975abb146103c45780636088e93a146103d5578063648b5e32146103e85780636b130dc214610410575f80fd5b806329af9c25146103515780633f4ba83a146103645780634720594d1461036c57806352b817631461038b57806356b096161461039e575f80fd5b80630aa3d065116102075780630aa3d065146102f05780630c9471c7146102f9578063144fa6d71461030c57806319198a361461031f5780631d9bdeae1461033e575f80fd5b8062771c081461024257806303f35bce146102725780630564534c146102a457806306b091f9146102bb57806309ae8c22146102d0575b5f80fd5b600454610255906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b610294610280366004611ed4565b600d6020525f908152604090205460ff1681565b6040519015158152602001610269565b6102ad60075481565b604051908152602001610269565b6102ce6102c9366004611eef565b61058e565b005b6102e36102de366004611ed4565b61078e565b6040516102699190611f19565b6102ad600b5481565b6102ad610307366004611f5c565b610954565b6102ce61031a366004611ed4565b610ade565b6102ad61032d366004611f8e565b60106020525f908152604090205481565b6102ce61034c366004611fa5565b610b29565b600354610255906001600160a01b031681565b6102ce610b63565b6102ad61037a366004611f8e565b600f6020525f908152604090205481565b6102ce610399366004611fa5565b610b9f565b6102ce6103ac366004611ed4565b610bd3565b6102ad6103bf366004611eef565b610c1e565b5f54600160a01b900460ff16610294565b6102ce6103e3366004611eef565b610c48565b6103fb6103f6366004611eef565b610de7565b60408051928352602083019190915201610269565b6102ad60065481565b6102ad610427366004611ed4565b600e6020525f908152604090205481565b6102ce610446366004611fa5565b611098565b6102ad600a5481565b6102ce6110d2565b6102ad60095481565b6102ad60085481565b5f546001600160a01b0316610255565b6102ce61048c366004611fc5565b611112565b6104a461049f366004611f5c565b61117a565b6040516102699998979695949392919061200d565b6102ce6104c7366004611eef565b611304565b6102ce6104da3660046120ac565b611348565b600154610255906001600160a01b031681565b6102ce6105003660046120f7565b6118c1565b610294610513366004611ed4565b600c6020525f908152604090205460ff1681565b600254610255906001600160a01b031681565b6102ce611914565b6102ce610550366004611fa5565b6119ba565b600554610255906001600160a01b031681565b6102ce610576366004611ed4565b611de0565b6102ce610589366004611f8e565b611e8f565b5f546001600160a01b031633146105c05760405162461bcd60e51b81526004016105b79061212e565b60405180910390fd5b6001600160a01b03821661060e5760405162461bcd60e51b8152602060048201526015602482015274496e76616c696420746f6b656e206164647265737360581b60448201526064016105b7565b5f811161065d5760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f60448201526064016105b7565b6040516370a0823160e01b815230600482015282905f906001600160a01b038316906370a0823190602401602060405180830381865afa1580156106a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106c79190612163565b9050808311156107195760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e7420636f6e74726163742062616c616e636500000060448201526064016105b7565b60405163a9059cbb60e01b8152336004820152602481018490526001600160a01b0383169063a9059cbb906044016020604051808303815f875af1158015610763573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610787919061217a565b5050505050565b60605f605a8161079f8260016121a9565b67ffffffffffffffff8111156107b7576107b76121bc565b6040519080825280602002602001820160405280156107e0578160200160208202803683370190505b5090505f5b82811161084f576001600160a01b0386165f908152601160209081526040808320848452909152902080549094501561083d57600182828151811061082c5761082c6121d0565b911515602092830291909101909101525b80610847816121e4565b9150506107e5565b505f805b8381116108995782818151811061086c5761086c6121d0565b6020026020010151156108875781610883816121e4565b9250505b80610891816121e4565b915050610853565b505f8167ffffffffffffffff8111156108b4576108b46121bc565b6040519080825280602002602001820160405280156108dd578160200160208202803683370190505b5090505f805b858111610947578481815181106108fc576108fc6121d0565b602002602001015115610935578083838151811061091c5761091c6121d0565b602090810291909101015281610931816121e4565b9250505b8061093f816121e4565b9150506108e3565b5090979650505050505050565b6001600160a01b0383165f908152601160209081526040808320858452909152812080541580610985575080548310155b806109b4575080838154811061099d5761099d6121d0565b5f91825260209091206008600990920201015460ff165b156109c2575f915050610ad7565b5f8184815481106109d5576109d56121d0565b905f5260205f20906009020190505f8160030154426109f491906121fc565b60068301546001600160a01b03165f818152600e60209081526040808320548b8452600f9092528220549394509192610a2e9083906121a9565b90505f612710828760010154610a44919061220f565b610a4e9190612226565b90508560040154421015610aa2575f8a815260106020526040902054610a769061271061220f565b85838860010154610a87919061220f565b610a91919061220f565b610a9b9190612226565b9750610aa6565b8097505b80888760050154610ab791906121a9565b1115610acf576005860154610acc90826121fc565b97505b505050505050505b9392505050565b5f546001600160a01b03163314610b075760405162461bcd60e51b81526004016105b79061212e565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314610b525760405162461bcd60e51b81526004016105b79061212e565b5f9182526010602052604090912055565b5f546001600160a01b03163314610b8c5760405162461bcd60e51b81526004016105b79061212e565b610b9d5f805460ff60a01b19169055565b565b5f546001600160a01b03163314610bc85760405162461bcd60e51b81526004016105b79061212e565b600791909155600855565b5f546001600160a01b03163314610bfc5760405162461bcd60e51b81526004016105b79061212e565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0382165f9081526011602090815260408083208484529091529020545b92915050565b5f546001600160a01b03163314610c715760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b038216610cc75760405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964204e465420636f6e747261637420616464726573730000000060448201526064016105b7565b6040516331a9108f60e11b81526004810182905230906001600160a01b03841690636352211e90602401602060405180830381865afa158015610d0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d309190612245565b6001600160a01b031614610d865760405162461bcd60e51b815260206004820152601e60248201527f436f6e747261637420646f6573206e6f74206f776e2074686973204e4654000060448201526064016105b7565b604051632142170760e11b81526001600160a01b038316906342842e0e90610db690309033908690600401612260565b5f604051808303815f87803b158015610dcd575f80fd5b505af1158015610ddf573d5f803e3d5ffd5b505050505050565b5f818152600f60205260408120548190819081805b6001600160a01b0388165f9081526011602090815260408083208a845290915290205481101561108a576001600160a01b0388165f9081526011602090815260408083208a84529091528120805483908110610e5a57610e5a6121d0565b905f5260205f209060090201604051806101200160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015f9054906101000a90046001600160a01b03166001600160a01b03166001600160a01b03168152602001600782018054610eeb90612284565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1790612284565b8015610f625780601f10610f3957610100808354040283529160200191610f62565b820191905f5260205f20905b815481529060010190602001808311610f4557829003601f168201915b50505091835250506008919091015460ff16151560209091015260608101519091505f90610f9090426121fc565b60c08301516001600160a01b0381165f908152600e6020526040812054929350909190610fbd82896121a9565b90505f612710828760200151610fd3919061220f565b610fdd9190612226565b90505f8660800151421015611032575f8e8152601060205260409020546110069061271061220f565b86848960200151611017919061220f565b611021919061220f565b61102b9190612226565b9050611035565b50805b5f8760a001518211611047575f611056565b60a088015161105690836121fc565b9050611062818d6121a9565b9b508760a001518a61107491906121a9565b99505060019097019650610dfc95505050505050565b509196919550909350505050565b5f546001600160a01b031633146110c15760405162461bcd60e51b81526004016105b79061212e565b5f918252600f602052604090912055565b5f546001600160a01b031633146110fb5760405162461bcd60e51b81526004016105b79061212e565b610b9d5f805460ff60a01b1916600160a01b179055565b5f546001600160a01b0316331461113b5760405162461bcd60e51b81526004016105b79061212e565b600280546001600160a01b039485166001600160a01b031991821617909155600380549385169382169390931790925560048054919093169116179055565b6001600160a01b0383165f9081526011602090815260408083208584529091528120805482918291829182918291829160609183918b106111ed5760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016105b7565b5f818c81548110611200576112006121d0565b905f5260205f2090600902019050805f015481600101548260020154836003015484600401548560050154866006015f9054906101000a90046001600160a01b031687600701886008015f9054906101000a900460ff1681805461126390612284565b80601f016020809104026020016040519081016040528092919081815260200182805461128f90612284565b80156112da5780601f106112b1576101008083540402835291602001916112da565b820191905f5260205f20905b8154815290600101906020018083116112bd57829003601f168201915b505050505091509a509a509a509a509a509a509a509a509a50505093979b92969a50939750939750565b5f546001600160a01b0316331461132d5760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b039091165f908152600e6020526040902055565b5f54600160a01b900460ff16156113945760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b7565b335f908152600c602052604090205460ff16156113f35760405162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420697320666c6167676564206173207370616d00000000000060448201526064016105b7565b6007548410156114455760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742062656c6f77206d696e696d756d207374616b696e670000000060448201526064016105b7565b6008548411156114975760405162461bcd60e51b815260206004820152601c60248201527f416d6f756e742061626f7665206d6178696d756d207374616b696e670000000060448201526064016105b7565b5f838152600f60205260409020546114e95760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964206c6f636b61626c65206461797360581b60448201526064016105b7565b6002546001600160a01b038281169116148061151257506003546001600160a01b038281169116145b8061152a57506004546001600160a01b038281169116145b61156c5760405162461bcd60e51b8152602060048201526013602482015272496e76616c6964204e4654206164647265737360681b60448201526064016105b7565b5f83815260106020526040908190205460015491516323b872dd60e01b815290916001600160a01b0316906323b872dd906115af90339030908a90600401612260565b6020604051808303815f875af11580156115cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ef919061217a565b506040516323b872dd60e01b81526001600160a01b038316906323b872dd9061162090339030908890600401612260565b5f604051808303815f87803b158015611637575f80fd5b505af1158015611649573d5f803e3d5ffd5b5050600254606092506001600160a01b03808616911603905061168a57506040805180820190915260078152664c6576656c203160c81b60208201526116f8565b6003546001600160a01b038085169116036116c357506040805180820190915260078152662632bb32b6101960c91b60208201526116f8565b6004546001600160a01b038085169116036116f857506040805180820190915260078152664c6576656c203360c81b60208201525b5f604051806101200160405280878152602001888152602001868152602001428152602001844261172991906121a9565b81525f60208083018290526001600160a01b0388811660408086019190915260608086018990526080958601859052338552601184528185208d865284528185208054600180820183559187529585902088516009909702019586559387015193850193909355850151600284015590840151600383015591830151600482015560a0830151600582015560c08301516006820180546001600160a01b031916919093161790915560e0820151919250829160078201906117ea9082612305565b5061010091909101516008909101805460ff1916911515919091179055335f908152600d602052604090205460ff1661184b5760098054905f61182c836121e4565b9091555050335f908152600d60205260409020805460ff191660011790555b86600a5f82825461185c91906121a9565b9091555050600b8054905f611870836121e4565b9091555050604080518881526020810188905242818301529051309133917f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f69181900360600190a350505050505050565b5f546001600160a01b031633146118ea5760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f546001600160a01b0316331461193d5760405162461bcd60e51b81526004016105b79061212e565b47806119805760405162461bcd60e51b81526020600482015260126024820152714e6f2045544820746f20776974686472617760701b60448201526064016105b7565b5f80546040516001600160a01b039091169183156108fc02918491818181858888f193505050501580156119b6573d5f803e3d5ffd5b5050565b5f54600160a01b900460ff1615611a065760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b7565b335f908152600c602052604090205460ff1615611a585760405162461bcd60e51b815260206004820152601060248201526f4163636f756e74206973207370616d2160801b60448201526064016105b7565b335f908152601160209081526040808320858452909152902080548210611ab95760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840c8cae0dee6d2e840d2dcc8caf605b1b60448201526064016105b7565b5f818381548110611acc57611acc6121d0565b5f9182526020909120600990910201600881015490915060ff1615611b3e5760405162461bcd60e51b815260206004820152602260248201527f416c72656164792068617276657374656420666f722074686973206465706f736044820152611a5d60f21b60648201526084016105b7565b5f808260040154421015611c7a575f6127106006548560010154611b62919061220f565b611b6c9190612226565b9050808460010154611b7e91906121fc565b92509050808015611c015760015460055460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb906044016020604051808303815f875af1158015611bdb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bff919061217a565b505b60015460405163a9059cbb60e01b8152336004820152602481018590526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015611c4f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c73919061217a565b5050611cfa565b611c85338787610954565b60015460405163a9059cbb60e01b8152336004820152602481018390529193506001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015611cd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf8919061217a565b505b600683015460028401546040516323b872dd60e01b81526001600160a01b03909216916323b872dd91611d339130913391600401612260565b5f604051808303815f87803b158015611d4a575f80fd5b505af1158015611d5c573d5f803e3d5ffd5b50505060088401805460ff19166001179055506005830180548391905f90611d859084906121a9565b90915550506002830154604080519182526020820184905281018290526060810187905233907f7baefe19499ec89bdfeffd0fc7335c9d0ea87f8ca40bb82c956184634ba170fd9060800160405180910390a2505050505050565b5f546001600160a01b03163314611e095760405162461bcd60e51b81526004016105b79061212e565b6001600160a01b038116611e6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b7565b5f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b03163314611eb85760405162461bcd60e51b81526004016105b79061212e565b600655565b6001600160a01b0381168114611ed1575f80fd5b50565b5f60208284031215611ee4575f80fd5b8135610ad781611ebd565b5f8060408385031215611f00575f80fd5b8235611f0b81611ebd565b946020939093013593505050565b602080825282518282018190525f9190848201906040850190845b81811015611f5057835183529284019291840191600101611f34565b50909695505050505050565b5f805f60608486031215611f6e575f80fd5b8335611f7981611ebd565b95602085013595506040909401359392505050565b5f60208284031215611f9e575f80fd5b5035919050565b5f8060408385031215611fb6575f80fd5b50508035926020909101359150565b5f805f60608486031215611fd7575f80fd5b8335611fe281611ebd565b92506020840135611ff281611ebd565b9150604084013561200281611ebd565b809150509250925092565b5f6101208b835260208b60208501528a60408501528960608501528860808501528760a085015260018060a01b03871660c08501528160e0850152855180838601525f92505b8083101561207257868301820151858401610140015291810191612053565b61014092505f83828701015282601f19601f830116860101935050505061209e61010083018415159052565b9a9950505050505050505050565b5f805f80608085870312156120bf575f80fd5b84359350602085013592506040850135915060608501356120df81611ebd565b939692955090935050565b8015158114611ed1575f80fd5b5f8060408385031215612108575f80fd5b823561211381611ebd565b91506020830135612123816120ea565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215612173575f80fd5b5051919050565b5f6020828403121561218a575f80fd5b8151610ad7816120ea565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610c4257610c42612195565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f600182016121f5576121f5612195565b5060010190565b81810381811115610c4257610c42612195565b8082028115828204841417610c4257610c42612195565b5f8261224057634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215612255575f80fd5b8151610ad781611ebd565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600181811c9082168061229857607f821691505b6020821081036122b657634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561230057805f5260205f20601f840160051c810160208510156122e15750805b601f840160051c820191505b81811015610787575f81556001016122ed565b505050565b815167ffffffffffffffff81111561231f5761231f6121bc565b6123338161232d8454612284565b846122bc565b602080601f831160018114612366575f841561234f5750858301515b5f19600386901b1c1916600185901b178555610ddf565b5f85815260208120601f198616915b8281101561239457888601518255948401946001909101908401612375565b50858210156123b157878501515f19600388901b60f8161c191681555b5050505050600190811b0190555056fea2646970667358221220aae67d37eebe07c682a9dd2af4b5b0cc25f8c980fc482c4ff9c9c9f571b522cc64736f6c63430008180033

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.