POL Price: $0.218716 (-0.58%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo16.456147889920998587 POL

POL Value

$3.60 (@ $0.22/POL)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Deposit662970602025-01-04 13:58:41108 days ago1735999121IN
0x496ebDb1...E10a1b655
0 POL0.0158680248.16330264
Deposit662920082025-01-04 10:47:59108 days ago1735987679IN
0x496ebDb1...E10a1b655
0.2 POL0.0126316830.00000005
Deposit662917552025-01-04 10:38:29108 days ago1735987109IN
0x496ebDb1...E10a1b655
0.1 POL0.0122152830.00000004
Enable Anticipat...662913932025-01-04 10:25:09108 days ago1735986309IN
0x496ebDb1...E10a1b655
0.00511673 POL0.011377230.00000007
Withdraw Deposit647304412024-11-25 22:21:44148 days ago1732573304IN
0x496ebDb1...E10a1b655
0 POL0.0105510334.61501453
Deposit647191942024-11-25 15:36:40148 days ago1732549000IN
0x496ebDb1...E10a1b655
5 POL0.07114595161.23145068
Withdraw Deposit646446912024-11-23 18:24:34150 days ago1732386274IN
0x496ebDb1...E10a1b655
0 POL0.03192464104.78194323
Withdraw Deposit646082092024-11-22 20:31:23151 days ago1732307483IN
0x496ebDb1...E10a1b655
0 POL0.0050859844.94464143
Deposit645688732024-11-21 21:05:22152 days ago1732223122IN
0x496ebDb1...E10a1b655
5 POL0.0126046230.00244755
Enable Anticipat...645688412024-11-21 21:04:14152 days ago1732223054IN
0x496ebDb1...E10a1b655
0.00799361 POL0.0122670930.0046283
Deposit643634832024-11-16 17:55:04157 days ago1731779704IN
0x496ebDb1...E10a1b655
0.3 POL0.015818637.01489134
Enable Anticipat...642168572024-11-13 1:45:55161 days ago1731462355IN
0x496ebDb1...E10a1b655
0.01204053 POL0.0278839771
Enable Anticipat...642166532024-11-13 1:38:41161 days ago1731461921IN
0x496ebDb1...E10a1b655
0.01204051 POL0.0388157100
Withdraw Deposit636420972024-10-29 18:00:17175 days ago1730224817IN
0x496ebDb1...E10a1b655
0 POL0.0045380533.10151582
Anticipate636420812024-10-29 17:59:43175 days ago1730224783IN
0x496ebDb1...E10a1b655
0 POL0.0114563733.62846932
Deposit636420132024-10-29 17:57:17175 days ago1730224637IN
0x496ebDb1...E10a1b655
10 POL0.0147041835.91239885
Enable Anticipat...635291782024-10-26 22:25:48178 days ago1729981548IN
0x496ebDb1...E10a1b655
0.02083 POL0.012265230.00000002
Withdraw Deposit632156092024-10-19 3:53:34186 days ago1729310014IN
0x496ebDb1...E10a1b655
0 POL0.0104872335.99999834
Anticipate632125772024-10-19 2:05:21186 days ago1729303521IN
0x496ebDb1...E10a1b655
0 POL0.0135807735.58391509
Compound629609342024-10-12 21:04:37192 days ago1728767077IN
0x496ebDb1...E10a1b655
0 POL0.0103315530.00000002
Deposit629607602024-10-12 20:58:27192 days ago1728766707IN
0x496ebDb1...E10a1b655
15.16118835 POL0.0122886930.00000002
Anticipate629331272024-10-12 4:37:39193 days ago1728707859IN
0x496ebDb1...E10a1b655
0 POL0.0124967136.00000003
Deposit629329192024-10-12 4:30:17193 days ago1728707417IN
0x496ebDb1...E10a1b655
2 POL0.0141512436.00000003
Anticipate629328192024-10-12 4:26:45193 days ago1728707205IN
0x496ebDb1...E10a1b655
0 POL0.0135721836.00000004
Withdraw Deposit629315442024-10-12 3:41:34193 days ago1728704494IN
0x496ebDb1...E10a1b655
0 POL0.0090002430.00000048
View all transactions

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
705995002025-04-22 3:29:4028 hrs ago1745292580
0x496ebDb1...E10a1b655
0.0042394 POL
705557842025-04-21 1:39:182 days ago1745199558
0x496ebDb1...E10a1b655
0.418625 POL
705557612025-04-21 1:38:302 days ago1745199510
0x496ebDb1...E10a1b655
0.4161625 POL
705556422025-04-21 1:34:162 days ago1745199256
0x496ebDb1...E10a1b655
0.34054179 POL
705556302025-04-21 1:33:502 days ago1745199230
0x496ebDb1...E10a1b655
0.33713593 POL
705544872025-04-21 0:53:142 days ago1745196794
0x496ebDb1...E10a1b655
0.00000001 POL
702719372025-04-14 1:10:239 days ago1744593023
0x496ebDb1...E10a1b655
0.00196369 POL
702719062025-04-14 1:09:179 days ago1744592957
0x496ebDb1...E10a1b655
0.00682297 POL
701095262025-04-10 1:10:3713 days ago1744247437
0x496ebDb1...E10a1b655
0.0063866 POL
701094942025-04-10 1:09:2913 days ago1744247369
0x496ebDb1...E10a1b655
0.3866125 POL
701094682025-04-10 1:08:3313 days ago1744247313
0x496ebDb1...E10a1b655
0.02409399 POL
701093942025-04-10 1:05:5713 days ago1744247157
0x496ebDb1...E10a1b655
1.23125 POL
700720652025-04-09 2:57:1314 days ago1744167433
0x496ebDb1...E10a1b655
0.00444494 POL
700132782025-04-07 15:57:5115 days ago1744041471
0x496ebDb1...E10a1b655
0.00516726 POL
699451492025-04-05 23:30:1017 days ago1743895810
0x496ebDb1...E10a1b655
0.03235517 POL
698483362025-04-03 14:03:4019 days ago1743689020
0x496ebDb1...E10a1b655
0.09603775 POL
698482312025-04-03 13:59:5619 days ago1743688796
0x496ebDb1...E10a1b655
0.00849906 POL
690001922025-03-13 13:47:3540 days ago1741873655
0x496ebDb1...E10a1b655
0 POL
689999482025-03-13 13:38:5540 days ago1741873135
0x496ebDb1...E10a1b655
0.0000006 POL
687712822025-03-07 21:13:0546 days ago1741381985
0x496ebDb1...E10a1b655
0.15664588 POL
679619512025-02-15 17:46:3766 days ago1739641597
0x496ebDb1...E10a1b655
0 POL
676832012025-02-08 11:41:1273 days ago1739014872
0x496ebDb1...E10a1b655
0 POL
676459262025-02-07 12:43:2474 days ago1738932204
0x496ebDb1...E10a1b655
0.00031232 POL
673391712025-01-30 18:55:2982 days ago1738263329
0x496ebDb1...E10a1b655
0.54426032 POL
672992902025-01-29 19:10:3283 days ago1738177832
0x496ebDb1...E10a1b655
0.00539241 POL
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Employer

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
Yes with 2000000 runs

Other Settings:
byzantium EvmVersion
File 1 of 2 : Employer.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./ITimeToken.sol";

/**
 * @title TIME Token Employer contract
 * @dev Smart contract used to model the first Use Case for TIME Token - The Employer. It pays some interest over the native cryptocurrency deposited from investors
 **/
contract Employer {

    bool private _isOperationLocked;

    address public constant DEVELOPER_ADDRESS = 0x731591207791A93fB0Ec481186fb086E16A7d6D0;
    address public immutable TIME_TOKEN_ADDRESS;

    uint256 public constant D = 10**18;
    uint256 public constant FACTOR = 10**18;
    uint256 public immutable FIRST_BLOCK;
    uint256 public immutable ONE_YEAR;
    uint256 public availableNative;
    uint256 public currentDepositedNative;
    uint256 public totalAnticipatedTime;
    uint256 public totalBurnedTime;
    uint256 public totalDepositedNative;
    uint256 public totalDepositedTime;
    uint256 public totalEarnedNative;
    uint256 public totalTimeSaved;
    
    mapping (address => bool) public anticipationEnabled;

    mapping (address => uint256) public deposited;
    mapping (address => uint256) public earned;
    mapping (address => uint256) public lastBlock;
    mapping (address => uint256) public remainingTime;

    constructor(address timeTokenAddress_) {
        FIRST_BLOCK = block.number;
        TIME_TOKEN_ADDRESS = timeTokenAddress_;
        ONE_YEAR = ITimeToken(timeTokenAddress_).TIME_BASE_LIQUIDITY() * 52;
    }

    /**
     * @dev Implement security to avoid reentrancy attacks
     **/
    modifier nonReentrant() {
        require(!_isOperationLocked, "Operation is locked");
        _isOperationLocked = true;
        _;
        _isOperationLocked = false;
	}
    
    /**
     * @dev Update the blocks from caller (msg.sender), contract address, and burn TIME tokens accordingly. It also extracts ETH from TIME contract, compounds and transfer earnings to depositants
     **/
    modifier update(bool mustCompound) {
        if (lastBlock[address(this)] == 0 && block.number != 0)
            lastBlock[address(this)] = block.number;
        if ((lastBlock[msg.sender] == 0 && block.number != 0) || remainingTime[msg.sender] == 0)
            lastBlock[msg.sender] = block.number;
        uint256 timeToBurn = (block.number - lastBlock[address(this)]) * D;
        uint256 timeToBurnDepositant = (block.number - lastBlock[msg.sender]) * D;
        earned[msg.sender] += queryEarnings(msg.sender);
        _;
        if (mustCompound)
            _compoundDepositantEarnings(msg.sender);
        else
            _transferDepositantEarnings(msg.sender);
        ITimeToken timeToken = ITimeToken(TIME_TOKEN_ADDRESS);
        _earnInterestAndAllocate(timeToken);
        if (timeToBurn > remainingTime[address(this)])
            timeToBurn = remainingTime[address(this)];
        if (timeToBurnDepositant > remainingTime[msg.sender])
            timeToBurnDepositant = remainingTime[msg.sender];
        if (timeToBurn > 0)
            _burnTime(timeToken, address(this), timeToBurn);
        if (timeToBurnDepositant > 0)
            _burnTime(timeToken, msg.sender, timeToBurnDepositant);
        lastBlock[address(this)] = block.number;
        lastBlock[msg.sender] = block.number;
    }

    fallback() external payable {
        require(msg.data.length == 0);
    }

    receive() external payable {
        if (msg.sender != TIME_TOKEN_ADDRESS) {
            require(msg.value > 0, "Please deposit some amount");
            availableNative += msg.value;
        }
    }

    /**
     * @dev Common function to anticipate gains earned from investments from deposited amount
     * @param timeAmount TIME token amount used to anticipate the earnings in terms of blocks
     **/
    function _anticipateEarnings(uint256 timeAmount) private {
        earned[msg.sender] += queryAnticipatedEarnings(msg.sender, timeAmount);
        totalAnticipatedTime += timeAmount;
        remainingTime[address(this)] += timeAmount;
    }

    /**
     * @dev Burn TIME according to the amount set from selected depositant
     * @param timeToken The instance of TIME Token contract
     * @param depositant Address of depositant account
     * @param amount Amount to be burned
     **/
    function _burnTime(ITimeToken timeToken, address depositant, uint256 amount) private {
        if (amount > timeToken.balanceOf(address(this)))
            amount = timeToken.balanceOf(address(this));
        try timeToken.burn(amount) {
            totalBurnedTime += amount;
            remainingTime[depositant] -= amount;
        } catch {
            revert("Unable to burn TIME");
        }
    }

    /**
     * @dev Claim the withdrawable amount earned from the TIME Community Pool
     * @param timeToken The instance of TIME Token contract
     * @return earnings The amount earned from TIME Token Community Pool
     **/
    function _claimEarningsFromTime(ITimeToken timeToken) private returns (uint256 earnings) {
        uint256 currentBalance = address(this).balance;
        if (timeToken.withdrawableShareBalance(address(this)) > 0) {
            try timeToken.withdrawShare() {
                earnings = (address(this).balance - currentBalance);
                _payComission(earnings / 2);
                earnings /= 2;
                return earnings;
            } catch {
                return earnings;
            }
        } else {
            return earnings;
        }
    }

    /**
     * @dev Compound earned amount from selected depositant
     * @param depositant Address of depositant account
     **/
    function _compoundDepositantEarnings(address depositant) private {
        if (earned[depositant] > 0) {
            require(availableNative >= earned[depositant], "Not enough amount to transfer");
            availableNative -= earned[depositant];
            deposited[depositant] += earned[depositant];
            currentDepositedNative += earned[depositant];
            earned[depositant] = 0;
        }        
    }

    /**
     * @dev Claim earnings from TIME contract and buy 10% of them in TIME tokens 
     * @param timeToken The instance of TIME Token contract
     **/
    function _earnInterestAndAllocate(ITimeToken timeToken) private {
        uint256 earnedNative = _claimEarningsFromTime(timeToken);
        totalEarnedNative += earnedNative;
        _saveTime(timeToken, earnedNative / 10);
        availableNative += (earnedNative - (earnedNative / 10));
    }

    /**
     * @notice Called when need to pay comission for miner (block.coinbase) and developer
     * @param comissionAmount The total comission amount in ETH which will be paid
    **/
    function _payComission(uint256 comissionAmount) private {
        if (comissionAmount > 0) {
            uint256 share = comissionAmount / 4;
            _saveTime(ITimeToken(TIME_TOKEN_ADDRESS), share);
            payable(DEVELOPER_ADDRESS).transfer(share);
            availableNative += share;
            totalEarnedNative += share;
            if (block.coinbase == address(0))
                payable(DEVELOPER_ADDRESS).transfer(share);
            else
                payable(block.coinbase).transfer(share);
        }
    }

    /**
     * @dev Buy (save) TIME tokens from the TIME Token contract and update the amount to be burned
     * @param timeToken The instance of TIME Token contract
     * @param amountToSave Amount to be bought
     **/
    function _saveTime(ITimeToken timeToken, uint256 amountToSave) private {
        if (amountToSave > 0) {
            require(address(this).balance >= amountToSave, "Not enough amount to save TIME");
            uint256 currentTime = timeToken.balanceOf(address(this));
            try timeToken.saveTime{value: amountToSave}() {
                uint256 timeSaved = (timeToken.balanceOf(address(this)) - currentTime);
                remainingTime[address(this)] += timeSaved;
                totalTimeSaved += timeSaved;
            } catch { 
                revert("Not able to save TIME");
            }
        }
    }

    /**
     * @dev Withdraw all available earnings to the depositant address
     * @param depositant Address of depositant account
     **/
    function _transferDepositantEarnings(address depositant) private {
        if (earned[depositant] > 0) {
            require(availableNative >= earned[depositant], "Not enough amount to transfer");
            availableNative -= earned[depositant];
            payable(depositant).transfer(earned[depositant]);
            earned[depositant] = 0;
        }
    }

    /**
     * @dev Withdraw all deposited amount to the depositant address and transfer the deposited TIME from depositant to the Employer account
     **/
    function _withdraw() private {
        require(deposited[msg.sender] > 0, "Depositant does not have any amount to withdraw");
        require(currentDepositedNative >= deposited[msg.sender], "Not enough in contract to withdraw");
        remainingTime[address(this)] += remainingTime[msg.sender];
        remainingTime[msg.sender] = 0;
        currentDepositedNative -= deposited[msg.sender];
        payable(msg.sender).transfer(deposited[msg.sender]);
        deposited[msg.sender] = 0;       
    }

    /**
     * @dev Deposit only TIME in order to anticipate interest over previous deposited ETH
     * @notice Pre-condition: the depositant must have previous deposited ETH and also should approve (allow to spend) the TIME tokens to deposit. Anticipation is mandatory in this case
     * @param timeAmount The amount in TIME an investor should deposit to anticipate
     **/
    function anticipate(uint256 timeAmount) public payable nonReentrant update(false) {
        require(deposited[msg.sender] > 0, "Depositant does not have any amount to anticipate");
        require(timeAmount > 0, "Please deposit some TIME amount");
        ITimeToken timeToken = ITimeToken(TIME_TOKEN_ADDRESS);
        require(timeToken.allowance(msg.sender, address(this)) >= timeAmount, "Should allow TIME to be spent");
        try timeToken.transferFrom(msg.sender, address(this), timeAmount) {
            totalDepositedTime += timeAmount;
            _anticipateEarnings(timeAmount);
        } catch {
            revert("Problem when transferring TIME");
        }
    }      

    /**
     * @dev Calculate the anticipation fee an investor needs to pay in order to anticipate TIME Tokens in the Employer contract
     * @return fee The fee amount calculated
     **/
    function anticipationFee() public view returns (uint256) {
        return (ITimeToken(TIME_TOKEN_ADDRESS).fee() * 11);
    }

    /**
     * @dev Compound available earnings into the depositant account
     * @notice Pre-condition: the depositant should approve (allow to spend) the TIME tokens to deposit. Also, if they want to anticipate yield, they must enabled anticipation before the function call
     * @param timeAmount (Optional. Can be zero) The amount of TIME Tokens an investor wants to continue receiveing or anticipating earnings 
     * @param mustAnticipateTime Informs whether an investor wants to anticipate earnings to be compounded
     **/
    function compound(uint256 timeAmount, bool mustAnticipateTime) public nonReentrant update(true) {
        require(deposited[msg.sender] > 0, "Depositant does not have any amount to compound");
        if (mustAnticipateTime) 
            require(anticipationEnabled[msg.sender], "Depositant is not enabled to anticipate TIME");
        if (timeAmount > 0) {
            ITimeToken timeToken = ITimeToken(TIME_TOKEN_ADDRESS);
            require(timeToken.allowance(msg.sender, address(this)) >= timeAmount, "Should allow TIME to be spent");
            try timeToken.transferFrom(msg.sender, address(this), timeAmount) {
                totalDepositedTime += timeAmount;
                if (mustAnticipateTime) {
                    _anticipateEarnings(timeAmount);
                } else {
                    remainingTime[msg.sender] += timeAmount;               
                }
            } catch {
                revert("Problem when transferring TIME");
            }
        }
    }

    /**
     * @dev Deposit ETH and TIME in order to earn interest over them
     * @notice Pre-condition: the depositant should approve (allow to spend) the TIME tokens to deposit. Also, if they want to anticipate yield, they must enabled anticipation before the function call
     * @param timeAmount The amount in TIME an investor should deposit
     * @param mustAnticipateTime Informs if the depositant wants to anticipate the yield or not
     **/
    function deposit(uint256 timeAmount, bool mustAnticipateTime) public payable nonReentrant update(false) {
        require(msg.value > 0, "Please deposit some amount");
        require(timeAmount > 0, "Please deposit some TIME amount");
        if (mustAnticipateTime)
            require(anticipationEnabled[msg.sender], "Depositant is not enabled to anticipate TIME");
        ITimeToken timeToken = ITimeToken(TIME_TOKEN_ADDRESS);
        require(timeToken.allowance(msg.sender, address(this)) >= timeAmount, "Should allow TIME to be spent");

        uint256 comission = msg.value / 50;
        uint256 depositAmount = msg.value - comission;
        deposited[msg.sender] += depositAmount;
        currentDepositedNative += depositAmount;
        totalDepositedNative += msg.value;
        try timeToken.transferFrom(msg.sender, address(this), timeAmount) {
            totalDepositedTime += timeAmount;
            if (mustAnticipateTime) {
                _anticipateEarnings(timeAmount);
            } else {
                remainingTime[msg.sender] += timeAmount;               
            }
            _payComission(comission);
        } catch {
            revert("Problem when transferring TIME");
        }
    }

    /**
     * @dev Public call for earning interest for Employer (if it has any to receive)
     **/
    function earn() public nonReentrant {
        _earnInterestAndAllocate(ITimeToken(TIME_TOKEN_ADDRESS));
    }

    /**
     * @dev Enable an investor to anticipate yields using TIME tokens
     **/
    function enableAnticipation() public payable nonReentrant update(false) {
        require(!anticipationEnabled[msg.sender], "Address is already enabled for TIME anticipation");
        uint256 fee = ITimeToken(TIME_TOKEN_ADDRESS).fee() * 10;
        require(msg.value >= fee, "Please provide the enough fee amount to enable TIME anticipation");
        uint256 comission = fee / 5;
        _payComission(comission);
        totalEarnedNative += msg.value;
        availableNative += (msg.value - comission);
        anticipationEnabled[msg.sender] = true;
    }

    /**
     * @dev Inform the current Return Of Investment the Employer contract is giving
     * @return roi The current amount returned to investors
     **/
    function getCurrentROI() public view returns (uint256) {
        if (availableNative == 0)
            return 0;
        if (currentDepositedNative == 0)
            return 10**50;
        return ((availableNative * FACTOR) / currentDepositedNative);
    }

    /**
     * @dev Inform the current Return Of Investment per Block the Employer contract is giving
     * @return roi The current amount per block returned to investors
     **/
    function getCurrentROIPerBlock() public view returns (uint256) {
        return ((getCurrentROI() * FACTOR) / ONE_YEAR);
    }

    /**
     * @dev Inform the historical Return Of Investment the Employer contract is giving
     * @return roi The historical amount returned to investors
     **/
    function getROI() public view returns (uint256) {
        if (totalEarnedNative == 0)
            return 0;
        if (totalDepositedNative == 0)
            return 10**50;
        return ((totalEarnedNative * FACTOR) / totalDepositedNative); 
    }

    /**
     * @dev Inform the historical Return Of Investment per Block the Employer contract is giving
     * @return roi The historical amount per block returned to investors
     **/
    function getROIPerBlock() public view returns (uint256) {
        return ((getROI() * FACTOR) / ONE_YEAR);
    }

    /**
     * @dev Inform the earnings an investor can anticipate (without waiting for a given time) according to the informed TIME amount
     * @param depositant Address of the depositant account
     * @param anticipatedTime Amount of TIME informed by a depositant as anticipation
     * @return earnings Amount a depositant can anticipate
     **/
    function queryAnticipatedEarnings(address depositant, uint256 anticipatedTime) public view returns (uint256) {
        return ((availableNative * anticipatedTime * deposited[depositant]) / ((ONE_YEAR * currentDepositedNative) + 1));
    }

    /**
     * @dev Inform the earnings an investor can currently receive
     * @param depositant Address of the depositant account
     * @return earnings Amount a depositant can receive
     **/
    function queryEarnings(address depositant) public view returns (uint256) {
        uint256 numberOfBlocks = (block.number - lastBlock[depositant]) * D;
        if (numberOfBlocks <= remainingTime[depositant]) {       
            return ((availableNative * numberOfBlocks * deposited[depositant]) / ((ONE_YEAR * currentDepositedNative) + 1));
        } else {
            return ((availableNative * remainingTime[depositant] * deposited[depositant]) / ((ONE_YEAR * currentDepositedNative) + 1));
        }
    }

    /**
     * @dev Withdraw earnings (only) of a depositant (msg.sender)
     * @notice All functions are in modifiers. It only checks if the depositant has earning something
     **/
    function withdrawEarnings() public nonReentrant update(false) {
        require(earned[msg.sender] > 0, "Depositant does not have any earnings to withdraw");
    }

    /**
     * @dev Withdraw all deposited values of a depositant (msg.sender)
     **/
    function withdrawDeposit() public nonReentrant update(false) {
        _withdraw();
    }

    /**
     * @dev Withdraw all deposited values of a depositant (msg.sender) without any check for earnings (emergency)
     **/
    function withdrawDepositEmergency() public nonReentrant {
        _withdraw();
    }
}

File 2 of 2 : ITimeToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface ITimeToken {
    function DEVELOPER_ADDRESS() external returns (address);
    function BASE_FEE() external returns (uint256);
    function COMISSION_RATE() external returns (uint256);
    function SHARE_RATE() external returns (uint256);
    function TIME_BASE_LIQUIDITY() external returns (uint256);
    function TIME_BASE_FEE() external returns (uint256);
    function TOLERANCE() external returns (uint256);
    function dividendPerToken() external returns (uint256);
    function firstBlock() external returns (uint256);
    function liquidityFactorNative() external returns (uint256);
    function liquidityFactorTime() external returns (uint256);
    function numberOfHolders() external returns (uint256);
    function numberOfMiners() external returns (uint256);
    function sharedBalance() external returns (uint256);
    function poolBalance() external returns (uint256);
    function totalMinted() external returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function burn(uint256 amount) external;
    function transfer(address to, uint256 amount) external returns (bool success);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
    function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool success);
    function averageMiningRate() external view returns (uint256);
    function donateEth() external payable;
    function enableMining() external payable;
    function enableMiningWithTimeToken() external;
    function fee() external view returns (uint256);
    function feeInTime() external view returns (uint256);
    function mining() external;
    function saveTime() external payable returns (bool success);
    function spendTime(uint256 timeAmount) external returns (bool success);
    function swapPriceNative(uint256 amountNative) external view returns (uint256);
    function swapPriceTimeInverse(uint256 amountTime) external view returns (uint256);
    function accountShareBalance(address account) external view returns (uint256);
    function withdrawableShareBalance(address account) external view returns (uint256);
    function withdrawShare() external;
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"timeTokenAddress_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"D","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEVELOPER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FACTOR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIRST_BLOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_YEAR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_TOKEN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeAmount","type":"uint256"}],"name":"anticipate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"anticipationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"anticipationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"availableNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeAmount","type":"uint256"},{"internalType":"bool","name":"mustAnticipateTime","type":"bool"}],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentDepositedNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"timeAmount","type":"uint256"},{"internalType":"bool","name":"mustAnticipateTime","type":"bool"}],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"earn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableAnticipation","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getCurrentROI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentROIPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getROI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getROIPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositant","type":"address"},{"internalType":"uint256","name":"anticipatedTime","type":"uint256"}],"name":"queryAnticipatedEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"depositant","type":"address"}],"name":"queryEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"remainingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAnticipatedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDepositedNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDepositedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalEarnedNative","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTimeSaved","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawDepositEmergency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawEarnings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040523480156200001157600080fd5b5060405162003963380380620039638339810160408190526200003491620000f9565b4360a052600160a060020a0381166c010000000000000000000000008102608052604080517fc3497b09000000000000000000000000000000000000000000000000000000008152905163c3497b09916004808201926020929091908290030181600087803b158015620000a757600080fd5b505af1158015620000bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e2919062000129565b620000ef90603462000142565b60c0525062000187565b6000602082840312156200010b578081fd5b8151600160a060020a038116811462000122578182fd5b9392505050565b6000602082840312156200013b578081fd5b5051919050565b600081600019048311821515161562000182577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b500290565b6080516c01000000000000000000000000900460a05160c05161372c62000237600039600081816108b701528181610aaf01528181610b3701528181610bc60152818161216b015261225d015260006108db015260008181610256015281816107cf0152818161096801528181610e3a01528181611078015281816113220152818161175b01528181611c2201528181611e600152818161206e015281816122080152612a8e015261372c6000f3fe608060405260043610610239576000357c0100000000000000000000000000000000000000000000000000000000900480638576ea3a1161013a578063b841a3e8116100cd578063cebca0601161009c578063d3bff50c11610081578063d3bff50c146105c5578063d90bb24c146105e5578063e6f2a029146105fa576102d8565b8063cebca0601461059b578063d389800f146105b0576102d8565b8063b841a3e81461053e578063bd94319c14610553578063bfde682c14610568578063cb13cddb1461057b576102d8565b80639a408321116101095780639a408321146104ec578063aa436105146104ff578063aefb79f914610514578063b73c6ce914610529576102d8565b80638576ea3a146104755780638d88f48d146104a257806393b8840e146104b7578063952ca92c146104cc576102d8565b806335815b95116101cd578063454e66c81161019c57806350a8242b1161018157806350a8242b1461042d578063561acaf01461044d5780637d523aad14610455576102d8565b8063454e66c8146103f6578063456ca60c14610418576102d8565b806335815b951461032e578063377d9088146103ac57806337de6e20146103c15780634306cc3f146103d6576102d8565b806316d3bfbb1161020957806316d3bfbb14610358578063249b16de1461036d578063269d7b051461038257806332f23fe114610397576102d8565b80628cc262146102e35780630d814d04146103195780630f529ba21461032e578063117df08814610343576102d8565b366102d8573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146102d657600034116102be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613474565b60405180910390fd5b34600160008282546102d09190613614565b90915550505b005b36156102d657600080fd5b3480156102ef57600080fd5b506103036102fe366004612ff1565b61060f565b604051610310919061360b565b60405180910390f35b34801561032557600080fd5b50610303610621565b34801561033a57600080fd5b50610303610627565b34801561034f57600080fd5b506102d6610633565b34801561036457600080fd5b506103036108b5565b34801561037957600080fd5b506103036108d9565b34801561038e57600080fd5b506103036108fd565b3480156103a357600080fd5b5061030361095e565b3480156103b857600080fd5b50610303610964565b3480156103cd57600080fd5b50610303610a2b565b3480156103e257600080fd5b506103036103f1366004612ff1565b610a31565b34801561040257600080fd5b5061040b610baa565b60405161031091906130af565b34801561042457600080fd5b50610303610bc2565b34801561043957600080fd5b506102d6610448366004613080565b610c00565b6102d6611160565b34801561046157600080fd5b50610303610470366004612ff1565b6114ba565b34801561048157600080fd5b50610495610490366004612ff1565b6114cc565b6040516103109190613128565b3480156104ae57600080fd5b506103036114e1565b3480156104c357600080fd5b506103036114e7565b3480156104d857600080fd5b506103036104e7366004612ff1565b6114ed565b6102d66104fa366004613080565b6114ff565b34801561050b57600080fd5b50610303611a09565b34801561052057600080fd5b50610303611a0f565b34801561053557600080fd5b506102d6611a60565b34801561054a57600080fd5b50610303611c1a565b34801561055f57600080fd5b5061040b611c20565b6102d6610576366004613050565b611c44565b34801561058757600080fd5b50610303610596366004612ff1565b612155565b3480156105a757600080fd5b50610303612167565b3480156105bc57600080fd5b506102d661219b565b3480156105d157600080fd5b506103036105e036600461300b565b612256565b3480156105f157600080fd5b506103036122e0565b34801561060657600080fd5b506102d66122e6565b600b6020526000908152604090205481565b60065481565b670de0b6b3a764000081565b60005460ff1615610670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c60205260408120541580156106b457504315155b156106cc57306000908152600c602052604090204390555b336000908152600c60205260409020541580156106e857504315155b806107005750336000908152600d6020526040902054155b1561071857336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061073c90436136a2565b6107469190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061076e90436136a2565b6107789190613665565b905061078333610a31565b336000908152600b6020526040812080549091906107a2908490613614565b909155506107b09050612352565b82156107c4576107bf3361248f565b6107cd565b6107cd33612607565b7f00000000000000000000000000000000000000000000000000000000000000006107f781612746565b306000908152600d602052604090205483111561082157306000908152600d602052604090205492505b336000908152600d602052604090205482111561084b57336000908152600d602052604090205491505b821561085c5761085c8130856127ae565b811561086d5761086d8133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754600014156109125750600061095b565b600554610935575074446c3b15f9926687d2c40534fdb56400000000000061095b565b600554670de0b6b3a764000060075461094e9190613665565b610958919061362c565b90505b90565b60025481565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190613068565b61095890600b613665565b60085481565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c60205260408120548190670de0b6b3a764000090610a6d90436136a2565b610a779190613665565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d60205260409020549091508111610b2e57600254610ad3907f0000000000000000000000000000000000000000000000000000000000000000613665565b610ade906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054600154610b12908490613665565b610b1c9190613665565b610b26919061362c565b915050610ba5565b600254610b5b907f0000000000000000000000000000000000000000000000000000000000000000613665565b610b66906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020908152604080832054600d90925290912054600154610b129190613665565b919050565b73731591207791a93fb0ec481186fb086e16a7d6d081565b60007f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000610bf66108fd565b61094e9190613665565b60005460ff1615610c3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255308252600c602052604090912054158015610c8457504315155b15610c9c57306000908152600c602052604090204390555b336000908152600c6020526040902054158015610cb857504315155b80610cd05750336000908152600d6020526040902054155b15610ce857336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090610d0c90436136a2565b610d169190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090610d3e90436136a2565b610d489190613665565b9050610d5333610a31565b336000908152600b602052604081208054909190610d72908490613614565b9091555050336000908152600a6020526040902054610dbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613326565b8315610e0c573360009081526009602052604090205460ff16610e0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906131c7565b8415611059576040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090869073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90610e8a90339030906004016130d0565b60206040518083038186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613068565b1015610f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90610f6890339030908b906004016130f7565b602060405180830381600087803b158015610f8257600080fd5b505af1925050508015610fd0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610fcd91810190613034565b60015b611006576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b5085600660008282546110199190613614565b909155505084156110325761102d86612a06565b611057565b336000908152600d602052604081208054889290611051908490613614565b90915550505b505b821561106d576110683361248f565b611076565b61107633612607565b7f00000000000000000000000000000000000000000000000000000000000000006110a081612746565b306000908152600d60205260409020548311156110ca57306000908152600d602052604090205492505b336000908152600d60205260409020548211156110f457336000908152600d602052604090205491505b8215611105576111058130856127ae565b8115611116576111168133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050565b60005460ff161561119d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c60205260408120541580156111e157504315155b156111f957306000908152600c602052604090204390555b336000908152600c602052604090205415801561121557504315155b8061122d5750336000908152600d6020526040902054155b1561124557336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061126990436136a2565b6112739190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061129b90436136a2565b6112a59190613665565b90506112b033610a31565b336000908152600b6020526040812080549091906112cf908490613614565b90915550503360009081526009602052604090205460ff161561131e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906134ab565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da9190613068565b6113e590600a613665565b905080341015611421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906135ad565b600061142e60058361362c565b905061143981612a74565b346007600082825461144b9190613614565b9091555061145b905081346136a2565b6001600082825461146c9190613614565b909155505033600090815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505082156107c4576107bf3361248f565b600d6020526000908152604090205481565b60096020526000908152604090205460ff1681565b60075481565b60045481565b600c6020526000908152604090205481565b60005460ff161561153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c602052604081205415801561158057504315155b1561159857306000908152600c602052604090204390555b336000908152600c60205260409020541580156115b457504315155b806115cc5750336000908152600d6020526040902054155b156115e457336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061160890436136a2565b6116129190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061163a90436136a2565b6116449190613665565b905061164f33610a31565b336000908152600b60205260408120805490919061166e908490613614565b9091555050346116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613474565b600085116116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613508565b8315611733573360009081526009602052604090205460ff16611733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906131c7565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090869073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e906117ab90339030906004016130d0565b60206040518083038186803b1580156117c357600080fd5b505afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb9190613068565b1015611833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b600061184060323461362c565b9050600061184e82346136a2565b336000908152600a6020526040812080549293508392909190611872908490613614565b92505081905550806002600082825461188b9190613614565b9250508190555034600560008282546118a49190613614565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906118ff90339030908d906004016130f7565b602060405180830381600087803b15801561191957600080fd5b505af1925050508015611967575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261196491810190613034565b60015b61199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b5087600660008282546119b09190613614565b909155505086156119c9576119c488612a06565b6119ee565b336000908152600d6020526040812080548a92906119e8908490613614565b90915550505b6119f782612a74565b505050821561106d576110683361248f565b60035481565b600060015460001415611a245750600061095b565b600254611a47575074446c3b15f9926687d2c40534fdb56400000000000061095b565b600254670de0b6b3a764000060015461094e9190613665565b60005460ff1615611a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c6020526040812054158015611ae157504315155b15611af957306000908152600c602052604090204390555b336000908152600c6020526040902054158015611b1557504315155b80611b2d5750336000908152600d6020526040902054155b15611b4557336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090611b6990436136a2565b611b739190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090611b9b90436136a2565b611ba59190613665565b9050611bb033610a31565b336000908152600b602052604081208054909190611bcf908490613614565b9091555050336000908152600b60205260409020546107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613383565b60015481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60005460ff1615611c81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c6020526040812054158015611cc557504315155b15611cdd57306000908152600c602052604090204390555b336000908152600c6020526040902054158015611cf957504315155b80611d115750336000908152600d6020526040902054155b15611d2957336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090611d4d90436136a2565b611d579190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090611d7f90436136a2565b611d899190613665565b9050611d9433610a31565b336000908152600b602052604081208054909190611db3908490613614565b9091555050336000908152600a6020526040902054611dfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061325b565b60008411611e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613508565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000090859073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90611eb090339030906004016130d0565b60206040518083038186803b158015611ec857600080fd5b505afa158015611edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f009190613068565b1015611f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611f8e90339030908a906004016130f7565b602060405180830381600087803b158015611fa857600080fd5b505af1925050508015611ff6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ff391810190613034565b60015b61202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b50846006600082825461203f9190613614565b9091555061204e905085612a06565b5082156120635761205e3361248f565b61206c565b61206c33612607565b7f000000000000000000000000000000000000000000000000000000000000000061209681612746565b306000908152600d60205260409020548311156120c057306000908152600d602052604090205492505b336000908152600d60205260409020548211156120ea57336000908152600d602052604090205491505b82156120fb576120fb8130856127ae565b811561210c5761210c8133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050565b600a6020526000908152604090205481565b60007f0000000000000000000000000000000000000000000000000000000000000000670de0b6b3a7640000610bf6611a0f565b60005460ff16156121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561222c7f0000000000000000000000000000000000000000000000000000000000000000612746565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60006002547f00000000000000000000000000000000000000000000000000000000000000006122869190613665565b612291906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60205260409020546001546122c5908590613665565b6122cf9190613665565b6122d9919061362c565b9392505050565b60055481565b60005460ff1615612323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561222c5b336000908152600a6020526040902054612398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906133e0565b336000908152600a602052604090205460025410156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613133565b336000908152600d60205260408082205430835290822080549192909161240b908490613614565b9091555050336000908152600d60209081526040808320839055600a90915281205460028054919290916124409084906136a2565b9091555050336000818152600a602052604080822054905181156108fc0292818181858888f1935050505015801561247c573d6000803e3d6000fd5b50336000908152600a6020526040812055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054156126045773ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054600154101561251b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613190565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460018054919290916125549084906136a2565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832054600a909252822080549192909161259a908490613614565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460028054919290916125d8908490613614565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b60205260408120555b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054156126045773ffffffffffffffffffffffffffffffffffffffff81166000908152600b60205260409020546001541015612693576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613190565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460018054919290916126cc9084906136a2565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822054905181156108fc0292818181858888f1935050505015801561271e573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152600b6020526040812055565b600061275182612ba2565b905080600760008282546127659190613614565b9091555061277f90508261277a600a8461362c565b612d01565b61278a600a8261362c565b61279490826136a2565b600160008282546127a59190613614565b90915550505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906128009030906004016130af565b60206040518083038186803b15801561281857600080fd5b505afa15801561282c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128509190613068565b8111156128fc576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906128a99030906004016130af565b60206040518083038186803b1580156128c157600080fd5b505afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f99190613068565b90505b6040517f42966c6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906342966c689061294e90849060040161360b565b600060405180830381600087803b15801561296857600080fd5b505af1925050508015612979575060015b6129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061353f565b80600460008282546129c19190613614565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040812080548392906129fb9084906136a2565b90915550505b505050565b612a103382612256565b336000908152600b602052604081208054909190612a2f908490613614565b925050819055508060036000828254612a489190613614565b9091555050306000908152600d602052604081208054839290612a6c908490613614565b909155505050565b8015612604576000612a8760048361362c565b9050612ab37f000000000000000000000000000000000000000000000000000000000000000082612d01565b60405173731591207791a93fb0ec481186fb086e16a7d6d09082156108fc029083906000818181858888f19350505050158015612af4573d6000803e3d6000fd5b508060016000828254612b079190613614565b925050819055508060076000828254612b209190613614565b909155505041612b715760405173731591207791a93fb0ec481186fb086e16a7d6d09082156108fc029083906000818181858888f19350505050158015612b6b573d6000803e3d6000fd5b50612b9e565b604051419082156108fc029083906000818181858888f19350505050158015612a01573d6000803e3d6000fd5b5050565b6040517f901362bd00000000000000000000000000000000000000000000000000000000815260009030803191839173ffffffffffffffffffffffffffffffffffffffff86169163901362bd91612bfb916004016130af565b60206040518083038186803b158015612c1357600080fd5b505afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4b9190613068565b1115612cfb578273ffffffffffffffffffffffffffffffffffffffff1663243496716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015612cb557600080fd5b505af1925050508015612cc6575060015b612cd05750610ba5565b612cdb8130316136a2565b9150612cf0612ceb60028461362c565b612a74565b610b2660028361362c565b50610ba5565b8015612b9e573031811115612d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061343d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190612d979030906004016130af565b60206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613068565b90508273ffffffffffffffffffffffffffffffffffffffff166310e7b9f2836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016020604051808303818588803b158015612e4d57600080fd5b505af193505050508015612e9c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e9991810190613034565b60015b612ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132ef565b506000818473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612f2b91906130af565b60206040518083038186803b158015612f4357600080fd5b505afa158015612f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7b9190613068565b612f8591906136a2565b306000908152600d6020526040812080549293508392909190612fa9908490613614565b925050819055508060086000828254612fc29190613614565b909155505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ba557600080fd5b600060208284031215613002578081fd5b6122d982612fcd565b6000806040838503121561301d578081fd5b61302683612fcd565b946020939093013593505050565b600060208284031215613045578081fd5b81516122d9816136e8565b600060208284031215613061578081fd5b5035919050565b600060208284031215613079578081fd5b5051919050565b60008060408385031215613092578182fd5b8235915060208301356130a4816136e8565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526022908201527f4e6f7420656e6f75676820696e20636f6e747261637420746f2077697468647260408201527f6177000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f4e6f7420656e6f75676820616d6f756e7420746f207472616e73666572000000604082015260600190565b6020808252602c908201527f4465706f736974616e74206973206e6f7420656e61626c656420746f20616e7460408201527f696369706174652054494d450000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4f7065726174696f6e206973206c6f636b656400000000000000000000000000604082015260600190565b60208082526031908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f20616e7469636970617465000000000000000000000000000000606082015260800190565b6020808252601d908201527f53686f756c6420616c6c6f772054494d4520746f206265207370656e74000000604082015260600190565b60208082526015908201527f4e6f742061626c6520746f20736176652054494d450000000000000000000000604082015260600190565b6020808252602f908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f20636f6d706f756e640000000000000000000000000000000000606082015260800190565b60208082526031908201527f4465706f736974616e7420646f6573206e6f74206861766520616e792065617260408201527f6e696e677320746f207769746864726177000000000000000000000000000000606082015260800190565b6020808252602f908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f2077697468647261770000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4e6f7420656e6f75676820616d6f756e7420746f20736176652054494d450000604082015260600190565b6020808252601a908201527f506c65617365206465706f73697420736f6d6520616d6f756e74000000000000604082015260600190565b60208082526030908201527f4164647265737320697320616c726561647920656e61626c656420666f72205460408201527f494d4520616e74696369706174696f6e00000000000000000000000000000000606082015260800190565b6020808252601f908201527f506c65617365206465706f73697420736f6d652054494d4520616d6f756e7400604082015260600190565b60208082526013908201527f556e61626c6520746f206275726e2054494d4500000000000000000000000000604082015260600190565b6020808252601e908201527f50726f626c656d207768656e207472616e7366657272696e672054494d450000604082015260600190565b602080825260409082018190527f506c656173652070726f766964652074686520656e6f7567682066656520616d908201527f6f756e7420746f20656e61626c652054494d4520616e74696369706174696f6e606082015260800190565b90815260200190565b60008219821115613627576136276136b9565b500190565b600082613660577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369d5761369d6136b9565b500290565b6000828210156136b4576136b46136b9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b801515811461260457600080fdfea26469706673582212206d2c1fac4629eff89ef72b9b8f9938e6f2c6313915e84dbb9e04f62b1161b4d464736f6c634300080000330000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a36

Deployed Bytecode

0x608060405260043610610239576000357c0100000000000000000000000000000000000000000000000000000000900480638576ea3a1161013a578063b841a3e8116100cd578063cebca0601161009c578063d3bff50c11610081578063d3bff50c146105c5578063d90bb24c146105e5578063e6f2a029146105fa576102d8565b8063cebca0601461059b578063d389800f146105b0576102d8565b8063b841a3e81461053e578063bd94319c14610553578063bfde682c14610568578063cb13cddb1461057b576102d8565b80639a408321116101095780639a408321146104ec578063aa436105146104ff578063aefb79f914610514578063b73c6ce914610529576102d8565b80638576ea3a146104755780638d88f48d146104a257806393b8840e146104b7578063952ca92c146104cc576102d8565b806335815b95116101cd578063454e66c81161019c57806350a8242b1161018157806350a8242b1461042d578063561acaf01461044d5780637d523aad14610455576102d8565b8063454e66c8146103f6578063456ca60c14610418576102d8565b806335815b951461032e578063377d9088146103ac57806337de6e20146103c15780634306cc3f146103d6576102d8565b806316d3bfbb1161020957806316d3bfbb14610358578063249b16de1461036d578063269d7b051461038257806332f23fe114610397576102d8565b80628cc262146102e35780630d814d04146103195780630f529ba21461032e578063117df08814610343576102d8565b366102d8573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3616146102d657600034116102be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613474565b60405180910390fd5b34600160008282546102d09190613614565b90915550505b005b36156102d657600080fd5b3480156102ef57600080fd5b506103036102fe366004612ff1565b61060f565b604051610310919061360b565b60405180910390f35b34801561032557600080fd5b50610303610621565b34801561033a57600080fd5b50610303610627565b34801561034f57600080fd5b506102d6610633565b34801561036457600080fd5b506103036108b5565b34801561037957600080fd5b506103036108d9565b34801561038e57600080fd5b506103036108fd565b3480156103a357600080fd5b5061030361095e565b3480156103b857600080fd5b50610303610964565b3480156103cd57600080fd5b50610303610a2b565b3480156103e257600080fd5b506103036103f1366004612ff1565b610a31565b34801561040257600080fd5b5061040b610baa565b60405161031091906130af565b34801561042457600080fd5b50610303610bc2565b34801561043957600080fd5b506102d6610448366004613080565b610c00565b6102d6611160565b34801561046157600080fd5b50610303610470366004612ff1565b6114ba565b34801561048157600080fd5b50610495610490366004612ff1565b6114cc565b6040516103109190613128565b3480156104ae57600080fd5b506103036114e1565b3480156104c357600080fd5b506103036114e7565b3480156104d857600080fd5b506103036104e7366004612ff1565b6114ed565b6102d66104fa366004613080565b6114ff565b34801561050b57600080fd5b50610303611a09565b34801561052057600080fd5b50610303611a0f565b34801561053557600080fd5b506102d6611a60565b34801561054a57600080fd5b50610303611c1a565b34801561055f57600080fd5b5061040b611c20565b6102d6610576366004613050565b611c44565b34801561058757600080fd5b50610303610596366004612ff1565b612155565b3480156105a757600080fd5b50610303612167565b3480156105bc57600080fd5b506102d661219b565b3480156105d157600080fd5b506103036105e036600461300b565b612256565b3480156105f157600080fd5b506103036122e0565b34801561060657600080fd5b506102d66122e6565b600b6020526000908152604090205481565b60065481565b670de0b6b3a764000081565b60005460ff1615610670576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c60205260408120541580156106b457504315155b156106cc57306000908152600c602052604090204390555b336000908152600c60205260409020541580156106e857504315155b806107005750336000908152600d6020526040902054155b1561071857336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061073c90436136a2565b6107469190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061076e90436136a2565b6107789190613665565b905061078333610a31565b336000908152600b6020526040812080549091906107a2908490613614565b909155506107b09050612352565b82156107c4576107bf3361248f565b6107cd565b6107cd33612607565b7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a366107f781612746565b306000908152600d602052604090205483111561082157306000908152600d602052604090205492505b336000908152600d602052604090205482111561084b57336000908152600d602052604090205491505b821561085c5761085c8130856127ae565b811561086d5761086d8133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555050565b7f000000000000000000000000000000000000000000089a49213386742400000081565b7f00000000000000000000000000000000000000000000000000000000027958cf81565b6000600754600014156109125750600061095b565b600554610935575074446c3b15f9926687d2c40534fdb56400000000000061095b565b600554670de0b6b3a764000060075461094e9190613665565b610958919061362c565b90505b90565b60025481565b60007f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156109e857600080fd5b505afa1580156109fc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a209190613068565b61095890600b613665565b60085481565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600c60205260408120548190670de0b6b3a764000090610a6d90436136a2565b610a779190613665565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d60205260409020549091508111610b2e57600254610ad3907f000000000000000000000000000000000000000000089a492133867424000000613665565b610ade906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020526040902054600154610b12908490613665565b610b1c9190613665565b610b26919061362c565b915050610ba5565b600254610b5b907f000000000000000000000000000000000000000000089a492133867424000000613665565b610b66906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a6020908152604080832054600d90925290912054600154610b129190613665565b919050565b73731591207791a93fb0ec481186fb086e16a7d6d081565b60007f000000000000000000000000000000000000000000089a492133867424000000670de0b6b3a7640000610bf66108fd565b61094e9190613665565b60005460ff1615610c3d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081178255308252600c602052604090912054158015610c8457504315155b15610c9c57306000908152600c602052604090204390555b336000908152600c6020526040902054158015610cb857504315155b80610cd05750336000908152600d6020526040902054155b15610ce857336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090610d0c90436136a2565b610d169190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090610d3e90436136a2565b610d489190613665565b9050610d5333610a31565b336000908152600b602052604081208054909190610d72908490613614565b9091555050336000908152600a6020526040902054610dbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613326565b8315610e0c573360009081526009602052604090205460ff16610e0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906131c7565b8415611059576040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3690869073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90610e8a90339030906004016130d0565b60206040518083038186803b158015610ea257600080fd5b505afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613068565b1015610f12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90610f6890339030908b906004016130f7565b602060405180830381600087803b158015610f8257600080fd5b505af1925050508015610fd0575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610fcd91810190613034565b60015b611006576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b5085600660008282546110199190613614565b909155505084156110325761102d86612a06565b611057565b336000908152600d602052604081208054889290611051908490613614565b90915550505b505b821561106d576110683361248f565b611076565b61107633612607565b7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a366110a081612746565b306000908152600d60205260409020548311156110ca57306000908152600d602052604090205492505b336000908152600d60205260409020548211156110f457336000908152600d602052604090205491505b8215611105576111058130856127ae565b8115611116576111168133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905550505050565b60005460ff161561119d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c60205260408120541580156111e157504315155b156111f957306000908152600c602052604090204390555b336000908152600c602052604090205415801561121557504315155b8061122d5750336000908152600d6020526040902054155b1561124557336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061126990436136a2565b6112739190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061129b90436136a2565b6112a59190613665565b90506112b033610a31565b336000908152600b6020526040812080549091906112cf908490613614565b90915550503360009081526009602052604090205460ff161561131e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906134ab565b60007f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3673ffffffffffffffffffffffffffffffffffffffff1663ddca3f436040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040160206040518083038186803b1580156113a257600080fd5b505afa1580156113b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113da9190613068565b6113e590600a613665565b905080341015611421576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906135ad565b600061142e60058361362c565b905061143981612a74565b346007600082825461144b9190613614565b9091555061145b905081346136a2565b6001600082825461146c9190613614565b909155505033600090815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055505082156107c4576107bf3361248f565b600d6020526000908152604090205481565b60096020526000908152604090205460ff1681565b60075481565b60045481565b600c6020526000908152604090205481565b60005460ff161561153c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c602052604081205415801561158057504315155b1561159857306000908152600c602052604090204390555b336000908152600c60205260409020541580156115b457504315155b806115cc5750336000908152600d6020526040902054155b156115e457336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a76400009061160890436136a2565b6116129190613665565b336000908152600c602052604081205491925090670de0b6b3a76400009061163a90436136a2565b6116449190613665565b905061164f33610a31565b336000908152600b60205260408120805490919061166e908490613614565b9091555050346116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613474565b600085116116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613508565b8315611733573360009081526009602052604090205460ff16611733576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906131c7565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3690869073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e906117ab90339030906004016130d0565b60206040518083038186803b1580156117c357600080fd5b505afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb9190613068565b1015611833576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b600061184060323461362c565b9050600061184e82346136a2565b336000908152600a6020526040812080549293508392909190611872908490613614565b92505081905550806002600082825461188b9190613614565b9250508190555034600560008282546118a49190613614565b90915550506040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906323b872dd906118ff90339030908d906004016130f7565b602060405180830381600087803b15801561191957600080fd5b505af1925050508015611967575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261196491810190613034565b60015b61199d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b5087600660008282546119b09190613614565b909155505086156119c9576119c488612a06565b6119ee565b336000908152600d6020526040812080548a92906119e8908490613614565b90915550505b6119f782612a74565b505050821561106d576110683361248f565b60035481565b600060015460001415611a245750600061095b565b600254611a47575074446c3b15f9926687d2c40534fdb56400000000000061095b565b600254670de0b6b3a764000060015461094e9190613665565b60005460ff1615611a9d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c6020526040812054158015611ae157504315155b15611af957306000908152600c602052604090204390555b336000908152600c6020526040902054158015611b1557504315155b80611b2d5750336000908152600d6020526040902054155b15611b4557336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090611b6990436136a2565b611b739190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090611b9b90436136a2565b611ba59190613665565b9050611bb033610a31565b336000908152600b602052604081208054909190611bcf908490613614565b9091555050336000908152600b60205260409020546107b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613383565b60015481565b7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3681565b60005460ff1615611c81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001178155308152600c6020526040812054158015611cc557504315155b15611cdd57306000908152600c602052604090204390555b336000908152600c6020526040902054158015611cf957504315155b80611d115750336000908152600d6020526040902054155b15611d2957336000908152600c602052604090204390555b306000908152600c6020526040812054670de0b6b3a764000090611d4d90436136a2565b611d579190613665565b336000908152600c602052604081205491925090670de0b6b3a764000090611d7f90436136a2565b611d899190613665565b9050611d9433610a31565b336000908152600b602052604081208054909190611db3908490613614565b9091555050336000908152600a6020526040902054611dfe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061325b565b60008411611e38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613508565b6040517fdd62ed3e0000000000000000000000000000000000000000000000000000000081527f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3690859073ffffffffffffffffffffffffffffffffffffffff83169063dd62ed3e90611eb090339030906004016130d0565b60206040518083038186803b158015611ec857600080fd5b505afa158015611edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f009190613068565b1015611f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132b8565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611f8e90339030908a906004016130f7565b602060405180830381600087803b158015611fa857600080fd5b505af1925050508015611ff6575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611ff391810190613034565b60015b61202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613576565b50846006600082825461203f9190613614565b9091555061204e905085612a06565b5082156120635761205e3361248f565b61206c565b61206c33612607565b7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3661209681612746565b306000908152600d60205260409020548311156120c057306000908152600d602052604090205492505b336000908152600d60205260409020548211156120ea57336000908152600d602052604090205491505b82156120fb576120fb8130856127ae565b811561210c5761210c8133846127ae565b5050306000908152600c602052604080822043908190553383529082205580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055505050565b600a6020526000908152604090205481565b60007f000000000000000000000000000000000000000000089a492133867424000000670de0b6b3a7640000610bf6611a0f565b60005460ff16156121d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561222c7f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a36612746565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60006002547f000000000000000000000000000000000000000000089a4921338674240000006122869190613665565b612291906001613614565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600a60205260409020546001546122c5908590613665565b6122cf9190613665565b6122d9919061362c565b9392505050565b60055481565b60005460ff1615612323576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613224565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561222c5b336000908152600a6020526040902054612398576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906133e0565b336000908152600a602052604090205460025410156123e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613133565b336000908152600d60205260408082205430835290822080549192909161240b908490613614565b9091555050336000908152600d60209081526040808320839055600a90915281205460028054919290916124409084906136a2565b9091555050336000818152600a602052604080822054905181156108fc0292818181858888f1935050505015801561247c573d6000803e3d6000fd5b50336000908152600a6020526040812055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054156126045773ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054600154101561251b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613190565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460018054919290916125549084906136a2565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020908152604080832054600a909252822080549192909161259a908490613614565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460028054919290916125d8908490613614565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000908152600b60205260408120555b50565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b6020526040902054156126045773ffffffffffffffffffffffffffffffffffffffff81166000908152600b60205260409020546001541015612693576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b590613190565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600b602052604081205460018054919290916126cc9084906136a2565b909155505073ffffffffffffffffffffffffffffffffffffffff81166000818152600b602052604080822054905181156108fc0292818181858888f1935050505015801561271e573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152600b6020526040812055565b600061275182612ba2565b905080600760008282546127659190613614565b9091555061277f90508261277a600a8461362c565b612d01565b61278a600a8261362c565b61279490826136a2565b600160008282546127a59190613614565b90915550505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906128009030906004016130af565b60206040518083038186803b15801561281857600080fd5b505afa15801561282c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128509190613068565b8111156128fc576040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906128a99030906004016130af565b60206040518083038186803b1580156128c157600080fd5b505afa1580156128d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128f99190613068565b90505b6040517f42966c6800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906342966c689061294e90849060040161360b565b600060405180830381600087803b15801561296857600080fd5b505af1925050508015612979575060015b6129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061353f565b80600460008282546129c19190613614565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600d6020526040812080548392906129fb9084906136a2565b90915550505b505050565b612a103382612256565b336000908152600b602052604081208054909190612a2f908490613614565b925050819055508060036000828254612a489190613614565b9091555050306000908152600d602052604081208054839290612a6c908490613614565b909155505050565b8015612604576000612a8760048361362c565b9050612ab37f0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a3682612d01565b60405173731591207791a93fb0ec481186fb086e16a7d6d09082156108fc029083906000818181858888f19350505050158015612af4573d6000803e3d6000fd5b508060016000828254612b079190613614565b925050819055508060076000828254612b209190613614565b909155505041612b715760405173731591207791a93fb0ec481186fb086e16a7d6d09082156108fc029083906000818181858888f19350505050158015612b6b573d6000803e3d6000fd5b50612b9e565b604051419082156108fc029083906000818181858888f19350505050158015612a01573d6000803e3d6000fd5b5050565b6040517f901362bd00000000000000000000000000000000000000000000000000000000815260009030803191839173ffffffffffffffffffffffffffffffffffffffff86169163901362bd91612bfb916004016130af565b60206040518083038186803b158015612c1357600080fd5b505afa158015612c27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c4b9190613068565b1115612cfb578273ffffffffffffffffffffffffffffffffffffffff1663243496716040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401600060405180830381600087803b158015612cb557600080fd5b505af1925050508015612cc6575060015b612cd05750610ba5565b612cdb8130316136a2565b9150612cf0612ceb60028461362c565b612a74565b610b2660028361362c565b50610ba5565b8015612b9e573031811115612d42576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b59061343d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190612d979030906004016130af565b60206040518083038186803b158015612daf57600080fd5b505afa158015612dc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de79190613068565b90508273ffffffffffffffffffffffffffffffffffffffff166310e7b9f2836040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016020604051808303818588803b158015612e4d57600080fd5b505af193505050508015612e9c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252612e9991810190613034565b60015b612ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b5906132ef565b506000818473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401612f2b91906130af565b60206040518083038186803b158015612f4357600080fd5b505afa158015612f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f7b9190613068565b612f8591906136a2565b306000908152600d6020526040812080549293508392909190612fa9908490613614565b925050819055508060086000828254612fc29190613614565b909155505050505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ba557600080fd5b600060208284031215613002578081fd5b6122d982612fcd565b6000806040838503121561301d578081fd5b61302683612fcd565b946020939093013593505050565b600060208284031215613045578081fd5b81516122d9816136e8565b600060208284031215613061578081fd5b5035919050565b600060208284031215613079578081fd5b5051919050565b60008060408385031215613092578182fd5b8235915060208301356130a4816136e8565b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b901515815260200190565b60208082526022908201527f4e6f7420656e6f75676820696e20636f6e747261637420746f2077697468647260408201527f6177000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f4e6f7420656e6f75676820616d6f756e7420746f207472616e73666572000000604082015260600190565b6020808252602c908201527f4465706f736974616e74206973206e6f7420656e61626c656420746f20616e7460408201527f696369706174652054494d450000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4f7065726174696f6e206973206c6f636b656400000000000000000000000000604082015260600190565b60208082526031908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f20616e7469636970617465000000000000000000000000000000606082015260800190565b6020808252601d908201527f53686f756c6420616c6c6f772054494d4520746f206265207370656e74000000604082015260600190565b60208082526015908201527f4e6f742061626c6520746f20736176652054494d450000000000000000000000604082015260600190565b6020808252602f908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f20636f6d706f756e640000000000000000000000000000000000606082015260800190565b60208082526031908201527f4465706f736974616e7420646f6573206e6f74206861766520616e792065617260408201527f6e696e677320746f207769746864726177000000000000000000000000000000606082015260800190565b6020808252602f908201527f4465706f736974616e7420646f6573206e6f74206861766520616e7920616d6f60408201527f756e7420746f2077697468647261770000000000000000000000000000000000606082015260800190565b6020808252601e908201527f4e6f7420656e6f75676820616d6f756e7420746f20736176652054494d450000604082015260600190565b6020808252601a908201527f506c65617365206465706f73697420736f6d6520616d6f756e74000000000000604082015260600190565b60208082526030908201527f4164647265737320697320616c726561647920656e61626c656420666f72205460408201527f494d4520616e74696369706174696f6e00000000000000000000000000000000606082015260800190565b6020808252601f908201527f506c65617365206465706f73697420736f6d652054494d4520616d6f756e7400604082015260600190565b60208082526013908201527f556e61626c6520746f206275726e2054494d4500000000000000000000000000604082015260600190565b6020808252601e908201527f50726f626c656d207768656e207472616e7366657272696e672054494d450000604082015260600190565b602080825260409082018190527f506c656173652070726f766964652074686520656e6f7567682066656520616d908201527f6f756e7420746f20656e61626c652054494d4520616e74696369706174696f6e606082015260800190565b90815260200190565b60008219821115613627576136276136b9565b500190565b600082613660577f4e487b710000000000000000000000000000000000000000000000000000000081526012600452602481fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561369d5761369d6136b9565b500290565b6000828210156136b4576136b46136b9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b801515811461260457600080fdfea26469706673582212206d2c1fac4629eff89ef72b9b8f9938e6f2c6313915e84dbb9e04f62b1161b4d464736f6c63430008000033

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

0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a36

-----Decoded View---------------
Arg [0] : timeTokenAddress_ (address): 0x1666Cf136d89Ba9071C476eaF23035Bccd7f3A36

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001666cf136d89ba9071c476eaf23035bccd7f3a36


Block Transaction 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
[ 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.