BNB Price: $628.15 (-0.53%)
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Transfer949588272026-04-27 9:57:526 mins ago1777283872IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949534242026-04-27 9:17:1947 mins ago1777281439IN
0x3013013C...35e8845dD
0 BNB0.000007410.065
Transfer949530122026-04-27 9:14:1350 mins ago1777281253IN
0x3013013C...35e8845dD
0 BNB0.000007230.06565
Transfer949529682026-04-27 9:13:5450 mins ago1777281234IN
0x3013013C...35e8845dD
0 BNB0.000007230.06565
Transfer949528982026-04-27 9:13:2251 mins ago1777281202IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949492892026-04-27 8:46:161 hr ago1777279576IN
0x3013013C...35e8845dD
0 BNB0.000007480.06565
Transfer949489572026-04-27 8:43:461 hr ago1777279426IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949460322026-04-27 8:21:491 hr ago1777278109IN
0x3013013C...35e8845dD
0 BNB0.000007230.06565
Transfer949455182026-04-27 8:17:571 hr ago1777277877IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949438462026-04-27 8:05:241 hr ago1777277124IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949374772026-04-27 7:17:352 hrs ago1777274255IN
0x3013013C...35e8845dD
0 BNB0.000007910.06565
Transfer949324802026-04-27 6:40:043 hrs ago1777272004IN
0x3013013C...35e8845dD
0 BNB0.000007070.06565
Transfer949250222026-04-27 5:44:044 hrs ago1777268644IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer949023572026-04-27 2:53:517 hrs ago1777258431IN
0x3013013C...35e8845dD
0 BNB0.000007730.06565
Transfer949001642026-04-27 2:37:237 hrs ago1777257443IN
0x3013013C...35e8845dD
0 BNB0.000007740.06565
Transfer948980612026-04-27 2:21:367 hrs ago1777256496IN
0x3013013C...35e8845dD
0 BNB0.000007480.06565
Transfer948949082026-04-27 1:57:568 hrs ago1777255076IN
0x3013013C...35e8845dD
0 BNB0.000007470.06565
Transfer948891692026-04-27 1:14:508 hrs ago1777252490IN
0x3013013C...35e8845dD
0 BNB0.000007480.06565
Transfer948883282026-04-27 1:08:318 hrs ago1777252111IN
0x3013013C...35e8845dD
0 BNB0.000007660.065
Transfer948765122026-04-26 23:39:4710 hrs ago1777246787IN
0x3013013C...35e8845dD
0 BNB0.000007230.06565
Transfer948762712026-04-26 23:37:5910 hrs ago1777246679IN
0x3013013C...35e8845dD
0 BNB0.000007230.06565
Transfer948757812026-04-26 23:34:1810 hrs ago1777246458IN
0x3013013C...35e8845dD
0 BNB0.000007160.065
Transfer948757162026-04-26 23:33:4910 hrs ago1777246429IN
0x3013013C...35e8845dD
0 BNB0.000007160.065
Transfer948756542026-04-26 23:33:2110 hrs ago1777246401IN
0x3013013C...35e8845dD
0 BNB0.000007160.065
Transfer948755722026-04-26 23:32:4410 hrs ago1777246364IN
0x3013013C...35e8845dD
0 BNB0.000007160.065
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
949590312026-04-27 9:59:245 mins ago1777283964
0x3013013C...35e8845dD
0.0025 BNB
949588272026-04-27 9:57:526 mins ago1777283872
0x3013013C...35e8845dD
0.01746 BNB
949585142026-04-27 9:55:318 mins ago1777283731
0x3013013C...35e8845dD
0.025 BNB
949576972026-04-27 9:49:2315 mins ago1777283363
0x3013013C...35e8845dD
0.025 BNB
949576362026-04-27 9:48:5615 mins ago1777283336
0x3013013C...35e8845dD
0.0025 BNB
949575502026-04-27 9:48:1716 mins ago1777283297
0x3013013C...35e8845dD
0.0025 BNB
949575112026-04-27 9:47:5916 mins ago1777283279
0x3013013C...35e8845dD
0.025 BNB
949574762026-04-27 9:47:4316 mins ago1777283263
0x3013013C...35e8845dD
0.0025 BNB
949572902026-04-27 9:46:2018 mins ago1777283180
0x3013013C...35e8845dD
0.0025 BNB
949570162026-04-27 9:44:1620 mins ago1777283056
0x3013013C...35e8845dD
0.0025 BNB
949565822026-04-27 9:41:0123 mins ago1777282861
0x3013013C...35e8845dD
0.005 BNB
949562782026-04-27 9:38:4425 mins ago1777282724
0x3013013C...35e8845dD
0.005 BNB
949561932026-04-27 9:38:0526 mins ago1777282685
0x3013013C...35e8845dD
0.025 BNB
949560952026-04-27 9:37:2127 mins ago1777282641
0x3013013C...35e8845dD
0.025 BNB
949560632026-04-27 9:37:0727 mins ago1777282627
0x3013013C...35e8845dD
0.025 BNB
949560322026-04-27 9:36:5327 mins ago1777282613
0x3013013C...35e8845dD
0.025 BNB
949559692026-04-27 9:36:2528 mins ago1777282585
0x3013013C...35e8845dD
0.025 BNB
949559402026-04-27 9:36:1228 mins ago1777282572
0x3013013C...35e8845dD
0.0025 BNB
949556472026-04-27 9:34:0030 mins ago1777282440
0x3013013C...35e8845dD
0.025 BNB
949556152026-04-27 9:33:4530 mins ago1777282425
0x3013013C...35e8845dD
0.025 BNB
949555772026-04-27 9:33:2831 mins ago1777282408
0x3013013C...35e8845dD
0.025 BNB
949553172026-04-27 9:31:3132 mins ago1777282291
0x3013013C...35e8845dD
0.025 BNB
949535482026-04-27 9:18:1546 mins ago1777281495
0x3013013C...35e8845dD
0.025 BNB
949534242026-04-27 9:17:1947 mins ago1777281439
0x3013013C...35e8845dD
0.01306 BNB
949530122026-04-27 9:14:1350 mins ago1777281253
0x3013013C...35e8845dD
0.013335 BNB
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NodeNFT

Compiler Version
v0.8.31+commit.fd3a2265

Optimization Enabled:
Yes with 200 runs

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

interface IERC20_Minimal {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
}

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

contract NodeNFT {
    string public name;
    string public symbol;
    
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    
    mapping(address => uint256[]) private _ownedTokens;
    mapping(uint256 => uint256) private _ownedTokensIndex;

    mapping(uint256 => uint256) public receivedAt;

    uint256 public totalSupply;
    uint256 public maxSupply;
    
    address public okToken;
    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    uint256 public transferLockDuration = 30 days;
    
    uint256 public accBnbPerShare;
    uint256 public accTokenPerShare;
    
    mapping(address => uint256) public bnbRewardDebt;
    mapping(address => uint256) public tokenRewardDebt;
    mapping(address => uint256) public bnbOwedHigh;
    mapping(address => uint256) public tokenOwedHigh;
    
    address public owner;
    
    string private _baseTokenURI;
    bool private locked;

    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event Claim(address indexed user, uint256 bnbAmount, uint256 tokenAmount);
    event DepositRewards(uint256 bnbAmount, uint256 tokenAmount);
    event OkTokenUpdated(address oldToken, address newToken);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }
    
    modifier nonReentrant() {
        require(!locked, "R");
        locked = true;
        _;
        locked = false;
    }

    constructor(string memory _name, string memory _symbol, address _okToken, uint256 _maxSupply) {
        owner = msg.sender;
        name = _name;
        symbol = _symbol;
        okToken = _okToken;
        maxSupply = _maxSupply;
        emit OwnershipTransferred(address(0), owner);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "Invalid owner");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function renounceOwnership() external onlyOwner {
        emit OwnershipTransferred(owner, DEAD);
        owner = DEAD;
    }

    function setOkToken(address _okToken) external onlyOwner {
        require(_okToken != address(0), "Invalid address");
        address oldToken = okToken;
        okToken = _okToken;
        emit OkTokenUpdated(oldToken, _okToken);
    }

    function setMaxSupply(uint256 _maxSupply) external onlyOwner {
        require(_maxSupply >= totalSupply, "New max supply below total supply");
        maxSupply = _maxSupply;
    }

    function setTransferLockDuration(uint256 newDuration) external onlyOwner {
        transferLockDuration = newDuration;
    }

    function _getRewardShares(address user) internal view returns (uint256) {
        uint256 balance = _balances[user];
        return balance;
    }

    function balanceOf(address _owner) public view returns (uint256) {
        return _balances[_owner];
    }

    function ownerOf(uint256 tokenId) public view returns (address) {
        address _owner = _owners[tokenId];
        require(_owner != address(0), "Nonexistent token");
        return _owner;
    }

    function approve(address to, uint256 tokenId) public {
        address _owner = ownerOf(tokenId);
        require(to != _owner, "Approval to current owner");
        require(msg.sender == _owner || isApprovedForAll(_owner, msg.sender), "Not authorized");
        _tokenApprovals[tokenId] = to;
        emit Approval(_owner, to, tokenId);
    }

    function getApproved(uint256 tokenId) public view returns (address) {
        require(_owners[tokenId] != address(0), "Nonexistent token");
        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public {
        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function isApprovedForAll(address _owner, address operator) public view returns (bool) {
        return _operatorApprovals[_owner][operator];
    }

    function transferFrom(address from, address to, uint256 tokenId) public {
        require(_isApprovedOrOwner(msg.sender, tokenId), "Not authorized");
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public {
        transferFrom(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "Transfer to non ERC721Receiver implementer");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        safeTransferFrom(from, to, tokenId, "");
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view returns (bool) {
        address _owner = ownerOf(tokenId);
        return (spender == _owner || getApproved(tokenId) == spender || isApprovedForAll(_owner, spender));
    }

    function _transfer(address from, address to, uint256 tokenId) internal {
        require(ownerOf(tokenId) == from, "Incorrect owner");
        require(to != address(this), "Transfer to this address");
        uint256 lastReceived = receivedAt[tokenId];
        require(lastReceived == 0 || block.timestamp >= lastReceived + transferLockDuration, "Transfer locked");

        _accrue(from);
        _accrue(to);

        _approve(address(0), tokenId);
        
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        receivedAt[tokenId] = block.timestamp;

        _removeTokenFromOwnerEnumeration(from, tokenId);
        _addTokenToOwnerEnumeration(to, tokenId);

        bnbRewardDebt[from] = _balances[from] * accBnbPerShare;
        tokenRewardDebt[from] = _balances[from] * accTokenPerShare;
        bnbRewardDebt[to] = _balances[to] * accBnbPerShare;
        tokenRewardDebt[to] = _balances[to] * accTokenPerShare;

        emit Transfer(from, to, tokenId);
    }
    
    function _approve(address to, uint256 tokenId) internal {
        _tokenApprovals[tokenId] = to;
        emit Approval(ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data) private returns (bool) {
        if (to.code.length > 0) {
            try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver.onERC721Received.selector;
            } catch {
                return false;
            }
        }
        return true;
    }

    function mint(address to) external onlyOwner nonReentrant {
        require(totalSupply < maxSupply, "Max supply reached");
        _claimAllForUser(to);
        
        totalSupply++;
        uint256 tokenId = totalSupply;
        
        _balances[to] += 1;
        _owners[tokenId] = to;
        
        _addTokenToOwnerEnumeration(to, tokenId);

        bnbRewardDebt[to] += accBnbPerShare;
        tokenRewardDebt[to] += accTokenPerShare;
        
        emit Transfer(address(0), to, tokenId);
    }

    function batchMint(address to, uint256 amount) external onlyOwner nonReentrant {
        require(totalSupply + amount <= maxSupply, "Max supply reached");
        _claimAllForUser(to);
        
        uint256 startId = totalSupply + 1;
        totalSupply += amount;
        _balances[to] += amount;
        
        bnbRewardDebt[to] += amount * accBnbPerShare;
        tokenRewardDebt[to] += amount * accTokenPerShare;
        
        for (uint256 i = 0; i < amount; i++) {
            uint256 tokenId = startId + i;
            _owners[tokenId] = to;
            
            _addTokenToOwnerEnumeration(to, tokenId);
            
            emit Transfer(address(0), to, tokenId);
        }
    }

    receive() external payable nonReentrant {
        if (msg.value == 0) {
            _claimAllForUser(msg.sender);
        } else {
            emit DepositRewards(msg.value, 0);
        }
    }

    uint256 public lastBnbBalance;
    uint256 public lastTokenBalance;

    function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
        return interfaceId == 0x80ac58cd || // ERC721
               interfaceId == 0x01ffc9a7 || // ERC165
               interfaceId == 0x5b5e139f;   // ERC721Metadata
    }

    function updatePool() public {
        uint256 supply = totalSupply;
        uint256 burned = _balances[address(0)] + _balances[DEAD];
        if (supply <= burned) return;
        uint256 effectiveSupply = supply - burned;

        uint256 currentBnbBalance = address(this).balance;
        if (currentBnbBalance > lastBnbBalance) {
            uint256 newBnb = currentBnbBalance - lastBnbBalance;
            uint256 shareIncrease = _mulDiv(newBnb, 1e10, effectiveSupply);
            if (shareIncrease > 0) {
                accBnbPerShare += shareIncrease;
                lastBnbBalance += _mulDiv(shareIncrease, effectiveSupply, 1e10);
            }
        } else if (currentBnbBalance < lastBnbBalance) {
            lastBnbBalance = currentBnbBalance;
        }

        if (okToken != address(0) && okToken.code.length > 0) {
            uint256 currentTokenBalance = IERC20_Minimal(okToken).balanceOf(address(this));
            if (currentTokenBalance > lastTokenBalance) {
                uint256 newToken = currentTokenBalance - lastTokenBalance;
                uint256 shareIncrease = _mulDiv(newToken, 1e10, effectiveSupply);
                if (shareIncrease > 0) {
                    accTokenPerShare += shareIncrease;
                    lastTokenBalance += _mulDiv(shareIncrease, effectiveSupply, 1e10);
                }
            } else if (currentTokenBalance < lastTokenBalance) {
                lastTokenBalance = currentTokenBalance;
            }
        }
    }

    function claimAll() external nonReentrant {
        _claimAllForUser(msg.sender);
    }

    function _accrue(address user) internal {
        updatePool();
        
        uint256 shares = _getRewardShares(user);
        uint256 accumulatedBnb = shares * accBnbPerShare;
        if (accumulatedBnb > bnbRewardDebt[user]) {
            bnbOwedHigh[user] += accumulatedBnb - bnbRewardDebt[user];
        }
        bnbRewardDebt[user] = accumulatedBnb;

        uint256 accumulatedToken = shares * accTokenPerShare;
        if (accumulatedToken > tokenRewardDebt[user]) {
            tokenOwedHigh[user] += accumulatedToken - tokenRewardDebt[user];
        }
        tokenRewardDebt[user] = accumulatedToken;
    }

    function _claimAllForUser(address user) internal {
        updatePool();
        
        uint256 shares = _getRewardShares(user);
        if (shares == 0 && bnbOwedHigh[user] == 0 && tokenOwedHigh[user] == 0) return;

        uint256 accumulatedBnb = shares * accBnbPerShare;
        uint256 pendingBnb = 0;
        if (accumulatedBnb > bnbRewardDebt[user]) {
            pendingBnb = accumulatedBnb - bnbRewardDebt[user];
        }

        uint256 accumulatedToken = shares * accTokenPerShare;
        uint256 pendingToken = 0;
        if (accumulatedToken > tokenRewardDebt[user]) {
            pendingToken = accumulatedToken - tokenRewardDebt[user];
        }

        uint256 totalBnbHigh = pendingBnb + bnbOwedHigh[user];
        uint256 claimedBnbHigh = _payoutBnb(user, totalBnbHigh);
        bnbOwedHigh[user] = totalBnbHigh - claimedBnbHigh;
        bnbRewardDebt[user] = accumulatedBnb;

        uint256 totalTokenHigh = pendingToken + tokenOwedHigh[user];
        uint256 claimedTokenHigh = _payoutToken(user, totalTokenHigh);
        tokenOwedHigh[user] = totalTokenHigh - claimedTokenHigh;
        tokenRewardDebt[user] = accumulatedToken;
        
        emit Claim(user, claimedBnbHigh / 1e10, claimedTokenHigh / 1e10);
    }

    function _payoutBnb(address user, uint256 totalHigh) internal returns (uint256 claimedHigh) {
        if (totalHigh == 0) return 0;
        uint256 amount = totalHigh / 1e10;
        if (amount == 0) return 0;

        uint256 bal = address(this).balance;
        uint256 accounted = lastBnbBalance;
        if (accounted > bal) accounted = bal;
        if (amount > accounted) amount = accounted;
        if (amount == 0) return 0;

        (bool success, ) = user.call{value: amount}("");
        if (!success) return 0;

        lastBnbBalance = accounted - amount;
        uint256 curBal = address(this).balance;
        if (lastBnbBalance > curBal) lastBnbBalance = curBal;

        return amount * 1e10;
    }

    function _payoutToken(address user, uint256 totalHigh) internal returns (uint256 claimedHigh) {
        if (totalHigh == 0) return 0;
        uint256 amount = totalHigh / 1e10;
        if (amount == 0) return 0;
        address token = okToken;
        if (token == address(0) || token.code.length == 0) return 0;

        uint256 bal = IERC20_Minimal(token).balanceOf(address(this));
        uint256 accounted = lastTokenBalance;
        if (accounted > bal) accounted = bal;
        if (amount > accounted) amount = accounted;
        if (amount == 0) return 0;

        bool success = _safeTokenTransfer(token, user, amount);
        if (!success) return 0;

        lastTokenBalance = accounted - amount;
        uint256 curBal = IERC20_Minimal(token).balanceOf(address(this));
        if (lastTokenBalance > curBal) lastTokenBalance = curBal;

        return amount * 1e10;
    }

    function _safeTokenTransfer(
        address token,
        address to,
        uint256 amount
    ) internal returns (bool) {
        (bool success, bytes memory data) = token.call(
            abi.encodeWithSelector(0xa9059cbb, to, amount)
        );
        if (!success) return false;
        if (data.length == 0) return true;
        if (data.length < 32) return false;
        return abi.decode(data, (bool));
    }
    
    function claim(uint256[] calldata tokenIds) external nonReentrant {
        for (uint256 i = 0; i < tokenIds.length; i++) {
            require(ownerOf(tokenIds[i]) == msg.sender, "Not owner");
        }
        _claimAllForUser(msg.sender);
    }

    function _mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {
            uint256 prod0;
            uint256 prod1;
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

            if (prod1 == 0) {
                return prod0 / denominator;
            }
            if (denominator <= prod1) revert();

            uint256 remainder;
            assembly {
                remainder := mulmod(x, y, denominator)
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

            uint256 twos = denominator & (~denominator + 1);
            assembly {
                denominator := div(denominator, twos)
                prod0 := div(prod0, twos)
                twos := add(div(sub(0, twos), twos), 1)
            }
            prod0 |= prod1 * twos;

            uint256 inv = (3 * denominator) ^ 2;
            inv *= 2 - denominator * inv;
            inv *= 2 - denominator * inv;
            inv *= 2 - denominator * inv;
            inv *= 2 - denominator * inv;
            inv *= 2 - denominator * inv;
            inv *= 2 - denominator * inv;

            result = prod0 * inv;
            return result;
        }
    }
    
    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = _ownedTokens[to].length;
        _ownedTokens[to].push(tokenId);
        _ownedTokensIndex[tokenId] = length;
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        uint256 lastTokenIndex = _ownedTokens[from].length - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }

        _ownedTokens[from].pop();
        delete _ownedTokensIndex[tokenId];
    }

    function setBaseURI(string calldata baseURI) external onlyOwner {
        _baseTokenURI = baseURI;
    }

    function tokenURI(uint256 tokenId) public view returns (string memory) {
        require(_owners[tokenId] != address(0), "Nonexistent token");
        return string(abi.encodePacked(_baseTokenURI, toString(tokenId)));
    }

    function toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function emergencyWithdraw(address token) external onlyOwner {
        if (token == address(0)) {
            uint256 balance = address(this).balance;
            (bool success, ) = owner.call{value: balance}("");
            require(success, "Transfer failed");
            lastBnbBalance = 0;
        } else {
            uint256 bal = IERC20_Minimal(token).balanceOf(address(this));
            IERC20_Minimal(token).transfer(owner, bal);
            if (token == okToken) {
                lastTokenBalance = 0;
            }
        }
    }

    function sync() external {
        lastBnbBalance = address(this).balance;
        if (okToken != address(0) && okToken.code.length > 0) {
            lastTokenBalance = IERC20_Minimal(okToken).balanceOf(address(this));
        } else {
            lastTokenBalance = 0;
        }
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_okToken","type":"address"},{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"bnbAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"DepositRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldToken","type":"address"},{"indexed":false,"internalType":"address","name":"newToken","type":"address"}],"name":"OkTokenUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accBnbPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accTokenPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"batchMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bnbOwedHigh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bnbRewardDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBnbBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"okToken","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"receivedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_okToken","type":"address"}],"name":"setOkToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"setTransferLockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenOwedHigh","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokenRewardDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferLockDuration","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":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405262278d00600c55348015610016575f5ffd5b506040516131a53803806131a58339810160408190526100359161015b565b601380546001600160a01b031916331790555f610052858261026a565b50600161005f848261026a565b50600b80546001600160a01b0319166001600160a01b0384811691909117909155600a8290556013546040519116905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350505050610324565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126100e1575f5ffd5b81516001600160401b038111156100fa576100fa6100be565b604051601f8201601f19908116603f011681016001600160401b0381118282101715610128576101286100be565b60405281815283820160200185101561013f575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f5f5f6080858703121561016e575f5ffd5b84516001600160401b03811115610183575f5ffd5b61018f878288016100d2565b602087015190955090506001600160401b038111156101ac575f5ffd5b6101b8878288016100d2565b604087015190945090506001600160a01b03811681146101d6575f5ffd5b6060959095015193969295505050565b600181811c908216806101fa57607f821691505b60208210810361021857634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561026557805f5260205f20601f840160051c810160208510156102435750805b601f840160051c820191505b81811015610262575f815560010161024f565b50505b505050565b81516001600160401b03811115610283576102836100be565b6102978161029184546101e6565b8461021e565b6020601f8211600181146102c9575f83156102b25750848201515b5f19600385901b1c1916600184901b178455610262565b5f84815260208120601f198516915b828110156102f857878501518255602094850194600190920191016102d8565b508482101561031557868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b612e74806103315f395ff3fe608060405260043610610241575f3560e01c80638da5cb5b11610134578063c4c815b1116100b3578063e3161ddd11610078578063e3161ddd14610737578063e985e9c51461074b578063f163f74f1461076a578063f2fde38b1461077f578063fc36bfca1461079e578063fff6cae9146107c9575f5ffd5b8063c4c815b1146106a5578063c87b56dd146106d0578063d1058e59146106ef578063d5abeb0114610703578063d899773f14610718575f5ffd5b8063a9427cd6116100f9578063a9427cd6146105fc578063aec7eb1b1461061b578063b88d4fde14610630578063be5de6631461064f578063bee97b751461067a575f5ffd5b80638da5cb5b146105765780638f6629151461059557806395d89b41146105aa5780639b7ecb1e146105be578063a22cb465146105dd575f5ffd5b806343508b05116101c05780636f8b44b0116101855780636f8b44b0146104db5780636ff1c9bc146104fa57806370a0823114610519578063715018a61461054d578063862a9f2f14610561575f5ffd5b806343508b051461044057806355f804b31461045f5780636352211e1461047e5780636a6278421461049d5780636ba4c138146104bc575f5ffd5b806318160ddd1161020657806318160ddd1461039f57806323b872dd146103c25780632d498eb2146103e15780633f73cf361461040c57806342842e0e14610421575f5ffd5b806301ffc9a7146102dd57806303fd2a451461031157806306fdde031461033e578063081812fc1461035f578063095ea7b31461037e575f5ffd5b366102d95760155460ff16156102725760405162461bcd60e51b815260040161026990612767565b60405180910390fd5b6015805460ff19166001179055345f036102945761028f336107dd565b6102cd565b604080513481525f60208201527ff35f95f47bca6d62bdc5bc7f14da33e6e8d8d7acdb29e8bb3ac08aad5cc7dbe5910160405180910390a15b6015805460ff19169055005b5f5ffd5b3480156102e8575f5ffd5b506102fc6102f7366004612797565b610a12565b60405190151581526020015b60405180910390f35b34801561031c575f5ffd5b5061032661dead81565b6040516001600160a01b039091168152602001610308565b348015610349575f5ffd5b50610352610a63565b60405161030891906127e0565b34801561036a575f5ffd5b506103266103793660046127f2565b610aee565b348015610389575f5ffd5b5061039d610398366004612824565b610b3c565b005b3480156103aa575f5ffd5b506103b460095481565b604051908152602001610308565b3480156103cd575f5ffd5b5061039d6103dc36600461284c565b610c5d565b3480156103ec575f5ffd5b506103b46103fb366004612886565b60126020525f908152604090205481565b348015610417575f5ffd5b506103b4600c5481565b34801561042c575f5ffd5b5061039d61043b36600461284c565b610cb4565b34801561044b575f5ffd5b5061039d61045a366004612824565b610cce565b34801561046a575f5ffd5b5061039d61047936600461289f565b610ee3565b348015610489575f5ffd5b506103266104983660046127f2565b610f1a565b3480156104a8575f5ffd5b5061039d6104b7366004612886565b610f4e565b3480156104c7575f5ffd5b5061039d6104d636600461290d565b611110565b3480156104e6575f5ffd5b5061039d6104f53660046127f2565b6111b2565b348015610505575f5ffd5b5061039d610514366004612886565b61123d565b348015610524575f5ffd5b506103b4610533366004612886565b6001600160a01b03165f9081526003602052604090205490565b348015610558575f5ffd5b5061039d611413565b34801561056c575f5ffd5b506103b460175481565b348015610581575f5ffd5b50601354610326906001600160a01b031681565b3480156105a0575f5ffd5b506103b4600e5481565b3480156105b5575f5ffd5b5061035261148c565b3480156105c9575f5ffd5b5061039d6105d83660046127f2565b611499565b3480156105e8575f5ffd5b5061039d6105f736600461297b565b6114c8565b348015610607575f5ffd5b50600b54610326906001600160a01b031681565b348015610626575f5ffd5b506103b4600d5481565b34801561063b575f5ffd5b5061039d61064a3660046129c4565b611533565b34801561065a575f5ffd5b506103b46106693660046127f2565b60086020525f908152604090205481565b348015610685575f5ffd5b506103b4610694366004612886565b600f6020525f908152604090205481565b3480156106b0575f5ffd5b506103b46106bf366004612886565b60106020525f908152604090205481565b3480156106db575f5ffd5b506103526106ea3660046127f2565b6115af565b3480156106fa575f5ffd5b5061039d611617565b34801561070e575f5ffd5b506103b4600a5481565b348015610723575f5ffd5b5061039d610732366004612886565b61165c565b348015610742575f5ffd5b5061039d61172f565b348015610756575f5ffd5b506102fc610765366004612aa1565b611954565b348015610775575f5ffd5b506103b460165481565b34801561078a575f5ffd5b5061039d610799366004612886565b611981565b3480156107a9575f5ffd5b506103b46107b8366004612886565b60116020525f908152604090205481565b3480156107d4575f5ffd5b5061039d611a4c565b6107e561172f565b6001600160a01b0381165f908152600360205260409020548015801561082057506001600160a01b0382165f90815260116020526040902054155b801561084157506001600160a01b0382165f90815260126020526040902054155b1561084a575050565b5f600d54826108599190612ae6565b6001600160a01b0384165f908152600f6020526040812054919250908211156108a1576001600160a01b0384165f908152600f602052604090205461089e9083612afd565b90505b5f600e54846108b09190612ae6565b6001600160a01b0386165f90815260106020526040812054919250908211156108f8576001600160a01b0386165f908152601060205260409020546108f59083612afd565b90505b6001600160a01b0386165f9081526011602052604081205461091a9085612b10565b90505f6109278883611aef565b90506109338183612afd565b6001600160a01b0389165f90815260116020908152604080832093909355600f8152828220899055601290529081205461096d9085612b10565b90505f61097a8a83611bea565b90506109868183612afd565b6001600160a01b038b165f8181526012602090815260408083209490945560109052919091208790557f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf76109df6402540be40086612b37565b6109ee6402540be40085612b37565b6040805192835260208301919091520160405180910390a250505050505050505050565b5f6380ac58cd60e01b6001600160e01b031983161480610a4257506301ffc9a760e01b6001600160e01b03198316145b80610a5d5750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f8054610a6f90612b4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9b90612b4a565b8015610ae65780601f10610abd57610100808354040283529160200191610ae6565b820191905f5260205f20905b815481529060010190602001808311610ac957829003601f168201915b505050505081565b5f818152600260205260408120546001600160a01b0316610b215760405162461bcd60e51b815260040161026990612b82565b505f908152600460205260409020546001600160a01b031690565b5f610b4682610f1a565b9050806001600160a01b0316836001600160a01b031603610ba95760405162461bcd60e51b815260206004820152601960248201527f417070726f76616c20746f2063757272656e74206f776e6572000000000000006044820152606401610269565b336001600160a01b0382161480610bc55750610bc58133611954565b610c025760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610269565b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610c673382611da6565b610ca45760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610269565b610caf838383611e04565b505050565b610caf83838360405180602001604052805f815250611533565b6013546001600160a01b03163314610cf85760405162461bcd60e51b815260040161026990612bad565b60155460ff1615610d1b5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055600a54600954610d39908390612b10565b1115610d7c5760405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b6044820152606401610269565b610d85826107dd565b5f6009546001610d959190612b10565b90508160095f828254610da89190612b10565b90915550506001600160a01b0383165f9081526003602052604081208054849290610dd4908490612b10565b9091555050600d54610de69083612ae6565b6001600160a01b0384165f908152600f602052604081208054909190610e0d908490612b10565b9091555050600e54610e1f9083612ae6565b6001600160a01b0384165f9081526010602052604081208054909190610e46908490612b10565b909155505f90505b82811015610ed3575f610e618284612b10565b5f81815260026020526040902080546001600160a01b0319166001600160a01b0388161790559050610e9385826120ef565b60405181906001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101610e4e565b50506015805460ff191690555050565b6013546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161026990612bad565b6014610caf828483612c14565b5f818152600260205260408120546001600160a01b031680610a5d5760405162461bcd60e51b815260040161026990612b82565b6013546001600160a01b03163314610f785760405162461bcd60e51b815260040161026990612bad565b60155460ff1615610f9b5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055600a5460095410610ff05760405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b6044820152606401610269565b610ff9816107dd565b60098054905f61100883612cce565b90915550506009546001600160a01b0382165f908152600360205260408120805460019290611038908490612b10565b90915550505f81815260026020526040902080546001600160a01b0319166001600160a01b03841617905561106d82826120ef565b600d546001600160a01b0383165f908152600f602052604081208054909190611097908490612b10565b9091555050600e546001600160a01b0383165f90815260106020526040812080549091906110c6908490612b10565b909155505060405181906001600160a01b038416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450506015805460ff19169055565b60155460ff16156111335760405162461bcd60e51b815260040161026990612767565b6015805460ff191660011790555f5b8181101561119a573361116c84848481811061116057611160612ce6565b90506020020135610f1a565b6001600160a01b0316146111925760405162461bcd60e51b815260040161026990612bad565b600101611142565b506111a4336107dd565b50506015805460ff19169055565b6013546001600160a01b031633146111dc5760405162461bcd60e51b815260040161026990612bad565b6009548110156112385760405162461bcd60e51b815260206004820152602160248201527f4e6577206d617820737570706c792062656c6f7720746f74616c20737570706c6044820152607960f81b6064820152608401610269565b600a55565b6013546001600160a01b031633146112675760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166113145760135460405147915f916001600160a01b039091169083908381818185875af1925050503d805f81146112c3576040519150601f19603f3d011682016040523d82523d5f602084013e6112c8565b606091505b505090508061130b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610269565b50505f60165550565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611358573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137c9190612cfa565b60135460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303815f875af11580156113ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f29190612d11565b50600b546001600160a01b039081169083160361140e575f6017555b505b50565b6013546001600160a01b0316331461143d5760405162461bcd60e51b815260040161026990612bad565b60135460405161dead916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601380546001600160a01b03191661dead179055565b60018054610a6f90612b4a565b6013546001600160a01b031633146114c35760405162461bcd60e51b815260040161026990612bad565b600c55565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61153e848484610c5d565b61154a8484848461212a565b6115a95760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220746f206e6f6e204552433732315265636569766572206960448201526936b83632b6b2b73a32b960b11b6064820152608401610269565b50505050565b5f818152600260205260409020546060906001600160a01b03166115e55760405162461bcd60e51b815260040161026990612b82565b60146115f0836121d7565b604051602001611601929190612d43565b6040516020818303038152906040529050919050565b60155460ff161561163a5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055611650336107dd565b6015805460ff19169055565b6013546001600160a01b031633146116865760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610269565b600b80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f84eb45aa5c303b55df1b0828ab67183106e782c0e53d6a1aa04bb0fb61f4ae63910160405180910390a15050565b60095460036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c545f8080527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54909161178a91612b10565b9050808211611797575050565b5f6117a28284612afd565b601654909150479081111561181f575f601654826117c09190612afd565b90505f6117d3826402540be400866122d4565b905080156118185780600d5f8282546117ec9190612b10565b90915550611802905081856402540be4006122d4565b60165f8282546118129190612b10565b90915550505b505061182f565b60165481101561182f5760168190555b600b546001600160a01b0316158015906118545750600b546001600160a01b03163b15155b156115a957600b546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561189f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c39190612cfa565b905060175481111561193d575f601754826118de9190612afd565b90505f6118f1826402540be400876122d4565b905080156119365780600e5f82825461190a9190612b10565b90915550611920905081866402540be4006122d4565b60175f8282546119309190612b10565b90915550505b505061194d565b60175481101561194d5760178190555b5050505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6013546001600160a01b031633146119ab5760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166119f15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610269565b6013546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b47601655600b546001600160a01b031615801590611a755750600b546001600160a01b03163b15155b15611ae957600b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ac0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae49190612cfa565b601755565b5f601755565b5f815f03611afe57505f610a5d565b5f611b0e6402540be40084612b37565b9050805f03611b20575f915050610a5d565b601654479081811115611b305750805b80831115611b3c578092505b825f03611b4e575f9350505050610a5d565b5f866001600160a01b0316846040515f6040518083038185875af1925050503d805f8114611b97576040519150601f19603f3d011682016040523d82523d5f602084013e611b9c565b606091505b5050905080611bb1575f945050505050610a5d565b611bbb8483612afd565b60168190554790811015611bcf5760168190555b611bde856402540be400612ae6565b98975050505050505050565b5f815f03611bf957505f610a5d565b5f611c096402540be40084612b37565b9050805f03611c1b575f915050610a5d565b600b546001600160a01b0316801580611c3c57506001600160a01b0381163b155b15611c4b575f92505050610a5d565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190612cfa565b60175490915081811115611cc45750805b80841115611cd0578093505b835f03611ce3575f945050505050610a5d565b5f611cef848987612383565b905080611d03575f95505050505050610a5d565b611d0d8583612afd565b6017556040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015611d54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d789190612cfa565b9050806017541115611d8a5760178190555b611d99866402540be400612ae6565b9998505050505050505050565b5f5f611db183610f1a565b9050806001600160a01b0316846001600160a01b03161480611dec5750836001600160a01b0316611de184610aee565b6001600160a01b0316145b80611dfc5750611dfc8185611954565b949350505050565b826001600160a01b0316611e1782610f1a565b6001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152600f60248201526e24b731b7b93932b1ba1037bbb732b960891b6044820152606401610269565b306001600160a01b03831603611eb75760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f2074686973206164647265737300000000000000006044820152606401610269565b5f81815260086020526040902054801580611ede5750600c54611eda9082612b10565b4210155b611f1c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c881b1bd8dad959608a1b6044820152606401610269565b611f258461248c565b611f2e8361248c565b611f385f836125e5565b6001600160a01b0384165f908152600360205260408120805460019290611f60908490612afd565b90915550506001600160a01b0383165f908152600360205260408120805460019290611f8d908490612b10565b90915550505f82815260026020908152604080832080546001600160a01b0319166001600160a01b03881617905560089091529020429055611fcf8483612652565b611fd983836120ef565b600d546001600160a01b0385165f90815260036020526040902054611ffe9190612ae6565b6001600160a01b0385165f908152600f6020908152604080832093909355600e546003909152919020546120329190612ae6565b6001600160a01b038086165f90815260106020908152604080832094909455600d54928716825260039052919091205461206c9190612ae6565b6001600160a01b0384165f908152600f6020908152604080832093909355600e546003909152919020546120a09190612ae6565b6001600160a01b038085165f81815260106020526040808220949094559251859391928816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b6001600160a01b039091165f908152600660209081526040808320805460018101825590845282842081018590559383526007909152902055565b5f6001600160a01b0384163b156121cc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061216d903390899088908890600401612dbf565b6020604051808303815f875af19250505080156121a7575060408051601f3d908101601f191682019092526121a491810190612df1565b60015b6121b257505f611dfc565b6001600160e01b031916630a85bd0160e11b149050611dfc565b506001949350505050565b6060815f036121fd5750506040805180820190915260018152600360fc1b602082015290565b815f5b8115612226578061221081612cce565b915061221f9050600a83612b37565b9150612200565b5f8167ffffffffffffffff811115612240576122406129b0565b6040519080825280601f01601f19166020018201604052801561226a576020820181803683370190505b5090505b8415611dfc5761227f600183612afd565b915061228c600a86612e0c565b612297906030612b10565b60f81b8183815181106122ac576122ac612ce6565b60200101906001600160f81b03191690815f1a9053506122cd600a86612b37565b945061226e565b5f80805f19858709858702925082811083820303915050805f0361230b5783828161230157612301612b23565b049250505061237c565b808411612316575f5ffd5b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f5f5f856001600160a01b031663a9059cbb86866040516024016123bc9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516123f59190612e1f565b5f604051808303815f865af19150503d805f811461242e576040519150601f19603f3d011682016040523d82523d5f602084013e612433565b606091505b509150915081612447575f9250505061237c565b80515f0361245a5760019250505061237c565b60208151101561246e575f9250505061237c565b808060200190518101906124829190612d11565b9695505050505050565b61249461172f565b6001600160a01b0381165f90815260036020526040812054600d549091906124bc9083612ae6565b6001600160a01b0384165f908152600f602052604090205490915081111561252d576001600160a01b0383165f908152600f60205260409020546125009082612afd565b6001600160a01b0384165f9081526011602052604081208054909190612527908490612b10565b90915550505b6001600160a01b0383165f908152600f60205260408120829055600e546125549084612ae6565b6001600160a01b0385165f908152601060205260409020549091508111156125c5576001600160a01b0384165f908152601060205260409020546125989082612afd565b6001600160a01b0385165f90815260126020526040812080549091906125bf908490612b10565b90915550505b6001600160a01b039093165f908152601060205260409020929092555050565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061261982610f1a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b0382165f9081526006602052604081205461267690600190612afd565b5f83815260076020526040902054909150808214612716576001600160a01b0384165f9081526006602052604081208054849081106126b7576126b7612ce6565b905f5260205f20015490508060065f876001600160a01b03166001600160a01b031681526020019081526020015f2083815481106126f7576126f7612ce6565b5f91825260208083209091019290925591825260079052604090208190555b6001600160a01b0384165f90815260066020526040902080548061273c5761273c612e2a565b5f828152602080822083015f1990810183905590920190925593815260079093525050604081205550565b6020808252600190820152602960f91b604082015260600190565b6001600160e01b031981168114611410575f5ffd5b5f602082840312156127a7575f5ffd5b813561237c81612782565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61237c60208301846127b2565b5f60208284031215612802575f5ffd5b5035919050565b80356001600160a01b038116811461281f575f5ffd5b919050565b5f5f60408385031215612835575f5ffd5b61283e83612809565b946020939093013593505050565b5f5f5f6060848603121561285e575f5ffd5b61286784612809565b925061287560208501612809565b929592945050506040919091013590565b5f60208284031215612896575f5ffd5b61237c82612809565b5f5f602083850312156128b0575f5ffd5b823567ffffffffffffffff8111156128c6575f5ffd5b8301601f810185136128d6575f5ffd5b803567ffffffffffffffff8111156128ec575f5ffd5b8560208284010111156128fd575f5ffd5b6020919091019590945092505050565b5f5f6020838503121561291e575f5ffd5b823567ffffffffffffffff811115612934575f5ffd5b8301601f81018513612944575f5ffd5b803567ffffffffffffffff81111561295a575f5ffd5b8560208260051b84010111156128fd575f5ffd5b8015158114611410575f5ffd5b5f5f6040838503121561298c575f5ffd5b61299583612809565b915060208301356129a58161296e565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156129d7575f5ffd5b6129e085612809565b93506129ee60208601612809565b925060408501359150606085013567ffffffffffffffff811115612a10575f5ffd5b8501601f81018713612a20575f5ffd5b803567ffffffffffffffff811115612a3a57612a3a6129b0565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612a6957612a696129b0565b604052818152828201602001891015612a80575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f60408385031215612ab2575f5ffd5b612abb83612809565b9150612ac960208401612809565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5d57610a5d612ad2565b81810381811115610a5d57610a5d612ad2565b80820180821115610a5d57610a5d612ad2565b634e487b7160e01b5f52601260045260245ffd5b5f82612b4557612b45612b23565b500490565b600181811c90821680612b5e57607f821691505b602082108103612b7c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601190820152702737b732bc34b9ba32b73a103a37b5b2b760791b604082015260600190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b601f821115610caf57805f5260205f20601f840160051c81016020851015612bf55750805b601f840160051c820191505b8181101561194d575f8155600101612c01565b67ffffffffffffffff831115612c2c57612c2c6129b0565b612c4083612c3a8354612b4a565b83612bd0565b5f601f841160018114612c71575f8515612c5a5750838201355b5f19600387901b1c1916600186901b17835561194d565b5f83815260208120601f198716915b82811015612ca05786850135825560209485019460019092019101612c80565b5086821015612cbc575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60018201612cdf57612cdf612ad2565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612d0a575f5ffd5b5051919050565b5f60208284031215612d21575f5ffd5b815161237c8161296e565b5f81518060208401855e5f93019283525090919050565b5f5f8454612d5081612b4a565b600182168015612d675760018114612d7c57612da9565b60ff1983168652811515820286019350612da9565b875f5260205f205f5b83811015612da157815488820152600190910190602001612d85565b505081860193505b505050612db68185612d2c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612482908301846127b2565b5f60208284031215612e01575f5ffd5b815161237c81612782565b5f82612e1a57612e1a612b23565b500690565b5f61237c8284612d2c565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212209608212d58275735644ddbe1236e49219c3b9ced8fec1a2818c4d9f302eb09cf64736f6c634300081f0033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000d484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610241575f3560e01c80638da5cb5b11610134578063c4c815b1116100b3578063e3161ddd11610078578063e3161ddd14610737578063e985e9c51461074b578063f163f74f1461076a578063f2fde38b1461077f578063fc36bfca1461079e578063fff6cae9146107c9575f5ffd5b8063c4c815b1146106a5578063c87b56dd146106d0578063d1058e59146106ef578063d5abeb0114610703578063d899773f14610718575f5ffd5b8063a9427cd6116100f9578063a9427cd6146105fc578063aec7eb1b1461061b578063b88d4fde14610630578063be5de6631461064f578063bee97b751461067a575f5ffd5b80638da5cb5b146105765780638f6629151461059557806395d89b41146105aa5780639b7ecb1e146105be578063a22cb465146105dd575f5ffd5b806343508b05116101c05780636f8b44b0116101855780636f8b44b0146104db5780636ff1c9bc146104fa57806370a0823114610519578063715018a61461054d578063862a9f2f14610561575f5ffd5b806343508b051461044057806355f804b31461045f5780636352211e1461047e5780636a6278421461049d5780636ba4c138146104bc575f5ffd5b806318160ddd1161020657806318160ddd1461039f57806323b872dd146103c25780632d498eb2146103e15780633f73cf361461040c57806342842e0e14610421575f5ffd5b806301ffc9a7146102dd57806303fd2a451461031157806306fdde031461033e578063081812fc1461035f578063095ea7b31461037e575f5ffd5b366102d95760155460ff16156102725760405162461bcd60e51b815260040161026990612767565b60405180910390fd5b6015805460ff19166001179055345f036102945761028f336107dd565b6102cd565b604080513481525f60208201527ff35f95f47bca6d62bdc5bc7f14da33e6e8d8d7acdb29e8bb3ac08aad5cc7dbe5910160405180910390a15b6015805460ff19169055005b5f5ffd5b3480156102e8575f5ffd5b506102fc6102f7366004612797565b610a12565b60405190151581526020015b60405180910390f35b34801561031c575f5ffd5b5061032661dead81565b6040516001600160a01b039091168152602001610308565b348015610349575f5ffd5b50610352610a63565b60405161030891906127e0565b34801561036a575f5ffd5b506103266103793660046127f2565b610aee565b348015610389575f5ffd5b5061039d610398366004612824565b610b3c565b005b3480156103aa575f5ffd5b506103b460095481565b604051908152602001610308565b3480156103cd575f5ffd5b5061039d6103dc36600461284c565b610c5d565b3480156103ec575f5ffd5b506103b46103fb366004612886565b60126020525f908152604090205481565b348015610417575f5ffd5b506103b4600c5481565b34801561042c575f5ffd5b5061039d61043b36600461284c565b610cb4565b34801561044b575f5ffd5b5061039d61045a366004612824565b610cce565b34801561046a575f5ffd5b5061039d61047936600461289f565b610ee3565b348015610489575f5ffd5b506103266104983660046127f2565b610f1a565b3480156104a8575f5ffd5b5061039d6104b7366004612886565b610f4e565b3480156104c7575f5ffd5b5061039d6104d636600461290d565b611110565b3480156104e6575f5ffd5b5061039d6104f53660046127f2565b6111b2565b348015610505575f5ffd5b5061039d610514366004612886565b61123d565b348015610524575f5ffd5b506103b4610533366004612886565b6001600160a01b03165f9081526003602052604090205490565b348015610558575f5ffd5b5061039d611413565b34801561056c575f5ffd5b506103b460175481565b348015610581575f5ffd5b50601354610326906001600160a01b031681565b3480156105a0575f5ffd5b506103b4600e5481565b3480156105b5575f5ffd5b5061035261148c565b3480156105c9575f5ffd5b5061039d6105d83660046127f2565b611499565b3480156105e8575f5ffd5b5061039d6105f736600461297b565b6114c8565b348015610607575f5ffd5b50600b54610326906001600160a01b031681565b348015610626575f5ffd5b506103b4600d5481565b34801561063b575f5ffd5b5061039d61064a3660046129c4565b611533565b34801561065a575f5ffd5b506103b46106693660046127f2565b60086020525f908152604090205481565b348015610685575f5ffd5b506103b4610694366004612886565b600f6020525f908152604090205481565b3480156106b0575f5ffd5b506103b46106bf366004612886565b60106020525f908152604090205481565b3480156106db575f5ffd5b506103526106ea3660046127f2565b6115af565b3480156106fa575f5ffd5b5061039d611617565b34801561070e575f5ffd5b506103b4600a5481565b348015610723575f5ffd5b5061039d610732366004612886565b61165c565b348015610742575f5ffd5b5061039d61172f565b348015610756575f5ffd5b506102fc610765366004612aa1565b611954565b348015610775575f5ffd5b506103b460165481565b34801561078a575f5ffd5b5061039d610799366004612886565b611981565b3480156107a9575f5ffd5b506103b46107b8366004612886565b60116020525f908152604090205481565b3480156107d4575f5ffd5b5061039d611a4c565b6107e561172f565b6001600160a01b0381165f908152600360205260409020548015801561082057506001600160a01b0382165f90815260116020526040902054155b801561084157506001600160a01b0382165f90815260126020526040902054155b1561084a575050565b5f600d54826108599190612ae6565b6001600160a01b0384165f908152600f6020526040812054919250908211156108a1576001600160a01b0384165f908152600f602052604090205461089e9083612afd565b90505b5f600e54846108b09190612ae6565b6001600160a01b0386165f90815260106020526040812054919250908211156108f8576001600160a01b0386165f908152601060205260409020546108f59083612afd565b90505b6001600160a01b0386165f9081526011602052604081205461091a9085612b10565b90505f6109278883611aef565b90506109338183612afd565b6001600160a01b0389165f90815260116020908152604080832093909355600f8152828220899055601290529081205461096d9085612b10565b90505f61097a8a83611bea565b90506109868183612afd565b6001600160a01b038b165f8181526012602090815260408083209490945560109052919091208790557f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf76109df6402540be40086612b37565b6109ee6402540be40085612b37565b6040805192835260208301919091520160405180910390a250505050505050505050565b5f6380ac58cd60e01b6001600160e01b031983161480610a4257506301ffc9a760e01b6001600160e01b03198316145b80610a5d5750635b5e139f60e01b6001600160e01b03198316145b92915050565b5f8054610a6f90612b4a565b80601f0160208091040260200160405190810160405280929190818152602001828054610a9b90612b4a565b8015610ae65780601f10610abd57610100808354040283529160200191610ae6565b820191905f5260205f20905b815481529060010190602001808311610ac957829003601f168201915b505050505081565b5f818152600260205260408120546001600160a01b0316610b215760405162461bcd60e51b815260040161026990612b82565b505f908152600460205260409020546001600160a01b031690565b5f610b4682610f1a565b9050806001600160a01b0316836001600160a01b031603610ba95760405162461bcd60e51b815260206004820152601960248201527f417070726f76616c20746f2063757272656e74206f776e6572000000000000006044820152606401610269565b336001600160a01b0382161480610bc55750610bc58133611954565b610c025760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610269565b5f8281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b610c673382611da6565b610ca45760405162461bcd60e51b815260206004820152600e60248201526d139bdd08185d5d1a1bdc9a5e995960921b6044820152606401610269565b610caf838383611e04565b505050565b610caf83838360405180602001604052805f815250611533565b6013546001600160a01b03163314610cf85760405162461bcd60e51b815260040161026990612bad565b60155460ff1615610d1b5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055600a54600954610d39908390612b10565b1115610d7c5760405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b6044820152606401610269565b610d85826107dd565b5f6009546001610d959190612b10565b90508160095f828254610da89190612b10565b90915550506001600160a01b0383165f9081526003602052604081208054849290610dd4908490612b10565b9091555050600d54610de69083612ae6565b6001600160a01b0384165f908152600f602052604081208054909190610e0d908490612b10565b9091555050600e54610e1f9083612ae6565b6001600160a01b0384165f9081526010602052604081208054909190610e46908490612b10565b909155505f90505b82811015610ed3575f610e618284612b10565b5f81815260026020526040902080546001600160a01b0319166001600160a01b0388161790559050610e9385826120ef565b60405181906001600160a01b038716905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450600101610e4e565b50506015805460ff191690555050565b6013546001600160a01b03163314610f0d5760405162461bcd60e51b815260040161026990612bad565b6014610caf828483612c14565b5f818152600260205260408120546001600160a01b031680610a5d5760405162461bcd60e51b815260040161026990612b82565b6013546001600160a01b03163314610f785760405162461bcd60e51b815260040161026990612bad565b60155460ff1615610f9b5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055600a5460095410610ff05760405162461bcd60e51b815260206004820152601260248201527113585e081cdd5c1c1b1e481c995858da195960721b6044820152606401610269565b610ff9816107dd565b60098054905f61100883612cce565b90915550506009546001600160a01b0382165f908152600360205260408120805460019290611038908490612b10565b90915550505f81815260026020526040902080546001600160a01b0319166001600160a01b03841617905561106d82826120ef565b600d546001600160a01b0383165f908152600f602052604081208054909190611097908490612b10565b9091555050600e546001600160a01b0383165f90815260106020526040812080549091906110c6908490612b10565b909155505060405181906001600160a01b038416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450506015805460ff19169055565b60155460ff16156111335760405162461bcd60e51b815260040161026990612767565b6015805460ff191660011790555f5b8181101561119a573361116c84848481811061116057611160612ce6565b90506020020135610f1a565b6001600160a01b0316146111925760405162461bcd60e51b815260040161026990612bad565b600101611142565b506111a4336107dd565b50506015805460ff19169055565b6013546001600160a01b031633146111dc5760405162461bcd60e51b815260040161026990612bad565b6009548110156112385760405162461bcd60e51b815260206004820152602160248201527f4e6577206d617820737570706c792062656c6f7720746f74616c20737570706c6044820152607960f81b6064820152608401610269565b600a55565b6013546001600160a01b031633146112675760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166113145760135460405147915f916001600160a01b039091169083908381818185875af1925050503d805f81146112c3576040519150601f19603f3d011682016040523d82523d5f602084013e6112c8565b606091505b505090508061130b5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610269565b50505f60165550565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611358573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137c9190612cfa565b60135460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810183905291925083169063a9059cbb906044016020604051808303815f875af11580156113ce573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f29190612d11565b50600b546001600160a01b039081169083160361140e575f6017555b505b50565b6013546001600160a01b0316331461143d5760405162461bcd60e51b815260040161026990612bad565b60135460405161dead916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601380546001600160a01b03191661dead179055565b60018054610a6f90612b4a565b6013546001600160a01b031633146114c35760405162461bcd60e51b815260040161026990612bad565b600c55565b335f8181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b61153e848484610c5d565b61154a8484848461212a565b6115a95760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220746f206e6f6e204552433732315265636569766572206960448201526936b83632b6b2b73a32b960b11b6064820152608401610269565b50505050565b5f818152600260205260409020546060906001600160a01b03166115e55760405162461bcd60e51b815260040161026990612b82565b60146115f0836121d7565b604051602001611601929190612d43565b6040516020818303038152906040529050919050565b60155460ff161561163a5760405162461bcd60e51b815260040161026990612767565b6015805460ff19166001179055611650336107dd565b6015805460ff19169055565b6013546001600160a01b031633146116865760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166116ce5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610269565b600b80546001600160a01b038381166001600160a01b031983168117909355604080519190921680825260208201939093527f84eb45aa5c303b55df1b0828ab67183106e782c0e53d6a1aa04bb0fb61f4ae63910160405180910390a15050565b60095460036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c545f8080527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff54909161178a91612b10565b9050808211611797575050565b5f6117a28284612afd565b601654909150479081111561181f575f601654826117c09190612afd565b90505f6117d3826402540be400866122d4565b905080156118185780600d5f8282546117ec9190612b10565b90915550611802905081856402540be4006122d4565b60165f8282546118129190612b10565b90915550505b505061182f565b60165481101561182f5760168190555b600b546001600160a01b0316158015906118545750600b546001600160a01b03163b15155b156115a957600b546040516370a0823160e01b81523060048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa15801561189f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118c39190612cfa565b905060175481111561193d575f601754826118de9190612afd565b90505f6118f1826402540be400876122d4565b905080156119365780600e5f82825461190a9190612b10565b90915550611920905081866402540be4006122d4565b60175f8282546119309190612b10565b90915550505b505061194d565b60175481101561194d5760178190555b5050505050565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b6013546001600160a01b031633146119ab5760405162461bcd60e51b815260040161026990612bad565b6001600160a01b0381166119f15760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b6044820152606401610269565b6013546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3601380546001600160a01b0319166001600160a01b0392909216919091179055565b47601655600b546001600160a01b031615801590611a755750600b546001600160a01b03163b15155b15611ae957600b546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611ac0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ae49190612cfa565b601755565b5f601755565b5f815f03611afe57505f610a5d565b5f611b0e6402540be40084612b37565b9050805f03611b20575f915050610a5d565b601654479081811115611b305750805b80831115611b3c578092505b825f03611b4e575f9350505050610a5d565b5f866001600160a01b0316846040515f6040518083038185875af1925050503d805f8114611b97576040519150601f19603f3d011682016040523d82523d5f602084013e611b9c565b606091505b5050905080611bb1575f945050505050610a5d565b611bbb8483612afd565b60168190554790811015611bcf5760168190555b611bde856402540be400612ae6565b98975050505050505050565b5f815f03611bf957505f610a5d565b5f611c096402540be40084612b37565b9050805f03611c1b575f915050610a5d565b600b546001600160a01b0316801580611c3c57506001600160a01b0381163b155b15611c4b575f92505050610a5d565b6040516370a0823160e01b81523060048201525f906001600160a01b038316906370a0823190602401602060405180830381865afa158015611c8f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cb39190612cfa565b60175490915081811115611cc45750805b80841115611cd0578093505b835f03611ce3575f945050505050610a5d565b5f611cef848987612383565b905080611d03575f95505050505050610a5d565b611d0d8583612afd565b6017556040516370a0823160e01b81523060048201525f906001600160a01b038616906370a0823190602401602060405180830381865afa158015611d54573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d789190612cfa565b9050806017541115611d8a5760178190555b611d99866402540be400612ae6565b9998505050505050505050565b5f5f611db183610f1a565b9050806001600160a01b0316846001600160a01b03161480611dec5750836001600160a01b0316611de184610aee565b6001600160a01b0316145b80611dfc5750611dfc8185611954565b949350505050565b826001600160a01b0316611e1782610f1a565b6001600160a01b031614611e5f5760405162461bcd60e51b815260206004820152600f60248201526e24b731b7b93932b1ba1037bbb732b960891b6044820152606401610269565b306001600160a01b03831603611eb75760405162461bcd60e51b815260206004820152601860248201527f5472616e7366657220746f2074686973206164647265737300000000000000006044820152606401610269565b5f81815260086020526040902054801580611ede5750600c54611eda9082612b10565b4210155b611f1c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c881b1bd8dad959608a1b6044820152606401610269565b611f258461248c565b611f2e8361248c565b611f385f836125e5565b6001600160a01b0384165f908152600360205260408120805460019290611f60908490612afd565b90915550506001600160a01b0383165f908152600360205260408120805460019290611f8d908490612b10565b90915550505f82815260026020908152604080832080546001600160a01b0319166001600160a01b03881617905560089091529020429055611fcf8483612652565b611fd983836120ef565b600d546001600160a01b0385165f90815260036020526040902054611ffe9190612ae6565b6001600160a01b0385165f908152600f6020908152604080832093909355600e546003909152919020546120329190612ae6565b6001600160a01b038086165f90815260106020908152604080832094909455600d54928716825260039052919091205461206c9190612ae6565b6001600160a01b0384165f908152600f6020908152604080832093909355600e546003909152919020546120a09190612ae6565b6001600160a01b038085165f81815260106020526040808220949094559251859391928816917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a450505050565b6001600160a01b039091165f908152600660209081526040808320805460018101825590845282842081018590559383526007909152902055565b5f6001600160a01b0384163b156121cc57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061216d903390899088908890600401612dbf565b6020604051808303815f875af19250505080156121a7575060408051601f3d908101601f191682019092526121a491810190612df1565b60015b6121b257505f611dfc565b6001600160e01b031916630a85bd0160e11b149050611dfc565b506001949350505050565b6060815f036121fd5750506040805180820190915260018152600360fc1b602082015290565b815f5b8115612226578061221081612cce565b915061221f9050600a83612b37565b9150612200565b5f8167ffffffffffffffff811115612240576122406129b0565b6040519080825280601f01601f19166020018201604052801561226a576020820181803683370190505b5090505b8415611dfc5761227f600183612afd565b915061228c600a86612e0c565b612297906030612b10565b60f81b8183815181106122ac576122ac612ce6565b60200101906001600160f81b03191690815f1a9053506122cd600a86612b37565b945061226e565b5f80805f19858709858702925082811083820303915050805f0361230b5783828161230157612301612b23565b049250505061237c565b808411612316575f5ffd5b5f848688098519600190810187169687900496828603819004959092119093035f82900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b5f5f5f856001600160a01b031663a9059cbb86866040516024016123bc9291906001600160a01b03929092168252602082015260400190565b6040516020818303038152906040529060e01b6020820180516001600160e01b0383818316178352505050506040516123f59190612e1f565b5f604051808303815f865af19150503d805f811461242e576040519150601f19603f3d011682016040523d82523d5f602084013e612433565b606091505b509150915081612447575f9250505061237c565b80515f0361245a5760019250505061237c565b60208151101561246e575f9250505061237c565b808060200190518101906124829190612d11565b9695505050505050565b61249461172f565b6001600160a01b0381165f90815260036020526040812054600d549091906124bc9083612ae6565b6001600160a01b0384165f908152600f602052604090205490915081111561252d576001600160a01b0383165f908152600f60205260409020546125009082612afd565b6001600160a01b0384165f9081526011602052604081208054909190612527908490612b10565b90915550505b6001600160a01b0383165f908152600f60205260408120829055600e546125549084612ae6565b6001600160a01b0385165f908152601060205260409020549091508111156125c5576001600160a01b0384165f908152601060205260409020546125989082612afd565b6001600160a01b0385165f90815260126020526040812080549091906125bf908490612b10565b90915550505b6001600160a01b039093165f908152601060205260409020929092555050565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061261982610f1a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6001600160a01b0382165f9081526006602052604081205461267690600190612afd565b5f83815260076020526040902054909150808214612716576001600160a01b0384165f9081526006602052604081208054849081106126b7576126b7612ce6565b905f5260205f20015490508060065f876001600160a01b03166001600160a01b031681526020019081526020015f2083815481106126f7576126f7612ce6565b5f91825260208083209091019290925591825260079052604090208190555b6001600160a01b0384165f90815260066020526040902080548061273c5761273c612e2a565b5f828152602080822083015f1990810183905590920190925593815260079093525050604081205550565b6020808252600190820152602960f91b604082015260600190565b6001600160e01b031981168114611410575f5ffd5b5f602082840312156127a7575f5ffd5b813561237c81612782565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61237c60208301846127b2565b5f60208284031215612802575f5ffd5b5035919050565b80356001600160a01b038116811461281f575f5ffd5b919050565b5f5f60408385031215612835575f5ffd5b61283e83612809565b946020939093013593505050565b5f5f5f6060848603121561285e575f5ffd5b61286784612809565b925061287560208501612809565b929592945050506040919091013590565b5f60208284031215612896575f5ffd5b61237c82612809565b5f5f602083850312156128b0575f5ffd5b823567ffffffffffffffff8111156128c6575f5ffd5b8301601f810185136128d6575f5ffd5b803567ffffffffffffffff8111156128ec575f5ffd5b8560208284010111156128fd575f5ffd5b6020919091019590945092505050565b5f5f6020838503121561291e575f5ffd5b823567ffffffffffffffff811115612934575f5ffd5b8301601f81018513612944575f5ffd5b803567ffffffffffffffff81111561295a575f5ffd5b8560208260051b84010111156128fd575f5ffd5b8015158114611410575f5ffd5b5f5f6040838503121561298c575f5ffd5b61299583612809565b915060208301356129a58161296e565b809150509250929050565b634e487b7160e01b5f52604160045260245ffd5b5f5f5f5f608085870312156129d7575f5ffd5b6129e085612809565b93506129ee60208601612809565b925060408501359150606085013567ffffffffffffffff811115612a10575f5ffd5b8501601f81018713612a20575f5ffd5b803567ffffffffffffffff811115612a3a57612a3a6129b0565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715612a6957612a696129b0565b604052818152828201602001891015612a80575f5ffd5b816020840160208301375f6020838301015280935050505092959194509250565b5f5f60408385031215612ab2575f5ffd5b612abb83612809565b9150612ac960208401612809565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a5d57610a5d612ad2565b81810381811115610a5d57610a5d612ad2565b80820180821115610a5d57610a5d612ad2565b634e487b7160e01b5f52601260045260245ffd5b5f82612b4557612b45612b23565b500490565b600181811c90821680612b5e57607f821691505b602082108103612b7c57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601190820152702737b732bc34b9ba32b73a103a37b5b2b760791b604082015260600190565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b601f821115610caf57805f5260205f20601f840160051c81016020851015612bf55750805b601f840160051c820191505b8181101561194d575f8155600101612c01565b67ffffffffffffffff831115612c2c57612c2c6129b0565b612c4083612c3a8354612b4a565b83612bd0565b5f601f841160018114612c71575f8515612c5a5750838201355b5f19600387901b1c1916600186901b17835561194d565b5f83815260208120601f198716915b82811015612ca05786850135825560209485019460019092019101612c80565b5086821015612cbc575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b5f60018201612cdf57612cdf612ad2565b5060010190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612d0a575f5ffd5b5051919050565b5f60208284031215612d21575f5ffd5b815161237c8161296e565b5f81518060208401855e5f93019283525090919050565b5f5f8454612d5081612b4a565b600182168015612d675760018114612d7c57612da9565b60ff1983168652811515820286019350612da9565b875f5260205f205f5b83811015612da157815488820152600190910190602001612d85565b505081860193505b505050612db68185612d2c565b95945050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90612482908301846127b2565b5f60208284031215612e01575f5ffd5b815161237c81612782565b5f82612e1a57612e1a612b23565b500690565b5f61237c8284612d2c565b634e487b7160e01b5f52603160045260245ffdfea26469706673582212209608212d58275735644ddbe1236e49219c3b9ced8fec1a2818c4d9f302eb09cf64736f6c634300081f0033

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

000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000000d484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): HLOK-大-NODE
Arg [1] : _symbol (string): HLOK-大-NODE
Arg [2] : _okToken (address): 0x0000000000000000000000000000000000000000
Arg [3] : _maxSupply (uint256): 100

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000064
Arg [4] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [5] : 484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000
Arg [6] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [7] : 484c4f4b2de5a4a72d4e4f444500000000000000000000000000000000000000


Block Transaction Gas Used Reward
view all blocks produced
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
View All Validatorset

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  ]
[ 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.