ETH Price: $3,468.62 (-0.53%)

Contract

0x7354F36fD74A656b4db8429C3FD937b99CD69e45
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw And Red...212453832024-11-22 19:33:3533 days ago1732304015IN
0x7354F36f...99CD69e45
0 ETH0.001832515.19704318
Withdraw And Red...133816872021-10-09 1:32:071173 days ago1633743127IN
0x7354F36f...99CD69e45
0 ETH0.00911438170
Withdraw And Red...133816592021-10-09 1:24:511173 days ago1633742691IN
0x7354F36f...99CD69e45
0 ETH0.00911438170
Withdraw And Red...124032922021-05-10 0:07:221325 days ago1620605242IN
0x7354F36f...99CD69e45
0 ETH0.00988927106
Withdraw And Red...122088692021-04-10 0:21:311355 days ago1618014091IN
0x7354F36f...99CD69e45
0 ETH0.01579419170
Withdraw And Red...121306102021-03-28 23:28:171367 days ago1616974097IN
0x7354F36f...99CD69e45
0 ETH0.00821338170
Withdraw And Red...119665302021-03-03 16:55:571393 days ago1614790557IN
0x7354F36f...99CD69e45
0 ETH0.01579419170
Withdraw And Red...119554202021-03-01 23:56:311394 days ago1614642991IN
0x7354F36f...99CD69e45
0 ETH0.0078745873
Withdraw And Red...119521172021-03-01 11:41:161395 days ago1614598876IN
0x7354F36f...99CD69e45
0 ETH0.01324011170
Redeem119227772021-02-24 23:27:191399 days ago1614209239IN
0x7354F36f...99CD69e45
0 ETH0.01240779170
Redeem118997092021-02-21 10:23:501403 days ago1613903030IN
0x7354F36f...99CD69e45
0 ETH0.0071527298
Withdraw And Red...118992252021-02-21 8:35:231403 days ago1613896523IN
0x7354F36f...99CD69e45
0 ETH0.01207791130
Withdraw And Red...118917882021-02-20 4:51:341404 days ago1613796694IN
0x7354F36f...99CD69e45
0 ETH0.01579215170
Withdraw And Red...118623032021-02-15 16:01:181409 days ago1613404878IN
0x7354F36f...99CD69e45
0 ETH0.01579419170
Withdraw And Red...118227682021-02-09 14:19:561415 days ago1612880396IN
0x7354F36f...99CD69e45
0 ETH0.01147738170
Withdraw And Red...118221952021-02-09 12:19:081415 days ago1612873148IN
0x7354F36f...99CD69e45
0 ETH0.00531454110
Withdraw And Red...118169512021-02-08 16:38:271416 days ago1612802307IN
0x7354F36f...99CD69e45
0 ETH0.00821338170
Withdraw And Red...118146932021-02-08 8:26:271416 days ago1612772787IN
0x7354F36f...99CD69e45
0 ETH0.01578807170
Redeem117515922021-01-29 15:31:181426 days ago1611934278IN
0x7354F36f...99CD69e45
0 ETH0.00515287170
Withdraw And Red...117515842021-01-29 15:29:051426 days ago1611934145IN
0x7354F36f...99CD69e45
0 ETH0.00821338170
Withdraw And Red...117397432021-01-27 19:29:211428 days ago1611775761IN
0x7354F36f...99CD69e45
0 ETH0.0092907100
Withdraw And Red...117372162021-01-27 10:13:361428 days ago1611742416IN
0x7354F36f...99CD69e45
0 ETH0.01834011170
Withdraw And Red...117195552021-01-24 16:56:541431 days ago1611507414IN
0x7354F36f...99CD69e45
0 ETH0.00821338170
Redeem117195492021-01-24 16:55:321431 days ago1611507332IN
0x7354F36f...99CD69e45
0 ETH0.00841687170
Withdraw And Red...116873012021-01-19 18:14:131436 days ago1611080053IN
0x7354F36f...99CD69e45
0 ETH0.00821338170
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block
From
To
109890552020-10-04 11:20:281543 days ago1601810428
0x7354F36f...99CD69e45
0.05 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Staking

Compiler Version
v0.6.2+commit.bacdbe57

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at Etherscan.io on 2020-09-11
*/

pragma solidity ^0.6.2;



/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
contract ReentrancyGuard {
    bool private _notEntered;

    constructor () internal {
        // Storing an initial non-zero value makes deployment a bit more
        // expensive, but in exchange the refund on every call to nonReentrant
        // will be lower in amount. Since refunds are capped to a percetange of
        // the total transaction's gas, it is best to keep them low in cases
        // like this one, to increase the likelihood of the full refund coming
        // into effect.
        _notEntered = true;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_notEntered, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _notEntered = false;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _notEntered = true;
    }
}


interface IStaking {

    function getFrozenFrom() external view returns (uint256);

    function getFrozenUntil() external view returns (uint256);

    function getDripPerBlock() external view returns (uint256);

    function getTotalDeposited() external view returns (uint256);

    function getTokenToStake() external view returns (address);

    function getIssuingToken() external view returns (address);

    function getUserDeposit(address user) external view returns (uint256);

    function initializeNewRound(uint256 frozenFrom, uint256 frozenUntil, uint256 drip) external returns (bool);

    function deposit(uint256 amount) external returns (bool);

    function withdrawAndRedeem(uint256 amount) external returns (bool);

    function redeem() external returns (bool);

    function accumulated(address account) external view returns (uint256);
}

contract Staking is IStaking, Ownable, ReentrancyGuard  {
    //using SafeERC20 for IERC20;
    using SafeMath for uint256;

    address internal tokenToStake;
    address internal issuingToken;
    uint256 internal frozenFrom;
    uint256 internal frozenUntil;
    uint256 internal dripPerBlock;
    uint256 internal totalDeposited;
    uint256 internal totalDepositedDynamic;
    mapping(address => uint256) internal deposited;
    mapping(address => uint256) internal latestRedeem;

    event Deposited(address account, uint256 amount);
    event WithdrawnAndRedeemed(address acount, uint256 amount, uint256 issued);
    event Redeemed(address account, uint256 amount);

    constructor(
        address stakedToken,
        address issuedToken
    ) public {
        tokenToStake  = stakedToken;
        issuingToken = issuedToken;
    }

    /**
    *
    */
    function getFrozenFrom() external view override returns (uint256) {
        return frozenFrom;
    }

    /**
    *
    */
    function getFrozenUntil() external view override returns (uint256) {
        return frozenUntil;
    }

    /**
    *
    */
    function getDripPerBlock() external view override returns (uint256) {
        return dripPerBlock;
    }

    /**
    *
    */
    function getTotalDeposited() external view override returns (uint256) {
        return totalDepositedDynamic;
    }

    /**
    *
    */
    function getTokenToStake() external view override returns (address) {
        return tokenToStake;
    }

    /**
    *
    */
    function getIssuingToken() external view override returns (address) {
        return issuingToken;
    }

    /**
    *
    */
    function getUserDeposit(address user) external view override returns (uint256) {
        return deposited[user];
    }

    /**
    *
    */
    function setTimeWindow(uint256 from, uint256 to) internal returns (bool) {
        require(from > block.number, "'from' too small");
        require(to > block.number, "'to' too small");
        require(from < to, "'from' is larger than 'to'");
        frozenFrom = from;
        frozenUntil = to;
        return true;
    }

    /**
    *
    */
    function setDripRate(uint256 drip) internal returns (bool) {
        dripPerBlock = drip;
        return true;
    }

    /**
    *
    */
    function initializeNewRound(
        uint256 _frozenFrom,
        uint256 _frozenUntil,
        uint256 drip) external onlyOwner override returns (bool) {
        setTimeWindow(_frozenFrom, _frozenUntil);
        dripPerBlock = drip;
        return true;
    }

    /**
    *
    */
    function deposit(uint256 amount) external override nonReentrant returns (bool) {
        require(block.number < frozenFrom, "deposits not allowed");
        deposited[msg.sender] = deposited[msg.sender].add(amount);
        totalDeposited = totalDeposited.add(amount);
        totalDepositedDynamic = totalDepositedDynamic.add(amount);
        latestRedeem[msg.sender] = frozenFrom;
        emit Deposited(msg.sender, amount);
        require(IERC20(tokenToStake).transferFrom(msg.sender, address(this), amount),"deposit() failed.");
        return true;
    }

    /**
    *
    */
    function withdrawAndRedeem(uint256 amount) external override nonReentrant returns (bool) {
        require(deposited[msg.sender] >= amount, "deposit too small");
        if(block.number < frozenFrom){
            deposited[msg.sender] = deposited[msg.sender].sub(amount);
            totalDeposited = totalDeposited.sub(amount);
            totalDepositedDynamic = totalDepositedDynamic.sub(amount);
            require(IERC20(tokenToStake).transfer(msg.sender, amount),"withdrawAndRedeem() failed.");
        } else {
            require(block.number >= frozenUntil, "withdraws not allowed");
            uint256 accumulated = accumulated(msg.sender);
            deposited[msg.sender] = deposited[msg.sender].sub(amount);
            emit WithdrawnAndRedeemed(msg.sender, amount, accumulated);
            totalDepositedDynamic = totalDepositedDynamic.sub(amount);
            require(_redeem(msg.sender, accumulated), "Failed to redeem tokens");
            require(IERC20(tokenToStake).transfer(msg.sender, amount),"withdrawAndRedeem() failed.");
        }
        return true;
    }

    /**
    *
    */
    function redeem() external override nonReentrant returns (bool) {
        uint256 accumulated = accumulated(msg.sender);
        Redeemed(msg.sender, accumulated);
        return _redeem(msg.sender, accumulated);
    }

    /**
    *
    */
    function _redeem(address account, uint256 amount) internal returns (bool) {
        if (block.number >= frozenUntil) {
            latestRedeem[account] = frozenUntil;
        } else {
            if(block.number > frozenFrom){
                latestRedeem[account] = block.number;
            } else {
                latestRedeem[account] = frozenFrom;
            }
        }
        if(amount > 0) {
            IERC20(issuingToken).transfer(account, amount);
        }
        return true;
    }

    /**
    *
    */
    function accumulated(address account) public view override returns (uint256) {
        if(deposited[account] == 0) {
            return 0;
        }
        if(block.number > frozenFrom) {
            if(block.number <= frozenUntil) {
                return deposited[account].mul(
                    dripPerBlock.mul(
                        block.number.sub(
                            latestRedeem[account]
                        )
                    )
                ).div(totalDeposited);
            } else {
                return deposited[account].mul(
                    dripPerBlock.mul(
                        frozenUntil.sub(
                            latestRedeem[account]
                        )
                    )
                ).div(totalDeposited);
            }
        } else {
            return 0;
        }
    }


}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"stakedToken","type":"address"},{"internalType":"address","name":"issuedToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Redeemed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"acount","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"issued","type":"uint256"}],"name":"WithdrawnAndRedeemed","type":"event"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"accumulated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getDripPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFrozenFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFrozenUntil","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getIssuingToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTokenToStake","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDeposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getUserDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_frozenFrom","type":"uint256"},{"internalType":"uint256","name":"_frozenUntil","type":"uint256"},{"internalType":"uint256","name":"drip","type":"uint256"}],"name":"initializeNewRound","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"redeem","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawAndRedeem","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506040516112f23803806112f28339818101604052604081101561003357600080fd5b508051602090910151600061004f6001600160e01b036100dd16565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000805460ff60a01b1916600160a01b179055600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100e1565b3390565b611202806100f06000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bc2b883f11610097578063d6bc40e811610066578063d6bc40e814610208578063d7ae342a14610225578063e33150551461022d578063f2fde38b14610235576100f5565b8063bc2b883f146101ac578063be040fb0146101b4578063c084b10b146101bc578063cc2153d1146101e2576100f5565b80639f4be64b116100d35780639f4be64b14610142578063a7947a731461017f578063b68ef55914610187578063b6b55f251461018f576100f5565b80632982f047146100fa578063715018a6146101145780638da5cb5b1461011e575b600080fd5b61010261025b565b60408051918252519081900360200190f35b61011c610261565b005b610126610315565b604080516001600160a01b039092168252519081900360200190f35b61016b6004803603606081101561015857600080fd5b5080359060208101359060400135610324565b604080519115158252519081900360200190f35b6101026103a7565b6101026103ad565b61016b600480360360208110156101a557600080fd5b50356103b3565b610102610600565b61016b610606565b610102600480360360208110156101d257600080fd5b50356001600160a01b03166106dc565b610102600480360360208110156101f857600080fd5b50356001600160a01b03166106fb565b61016b6004803603602081101561021e57600080fd5b50356107f8565b610126610c24565b610126610c33565b61011c6004803603602081101561024b57600080fd5b50356001600160a01b0316610c42565b60055490565b610269610d4c565b6000546001600160a01b039081169116146102cb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600061032e610d4c565b6000546001600160a01b03908116911614610390576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61039a8484610d50565b5050600555506001919050565b60035490565b60075490565b60008054600160a01b900460ff16610412576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b19169055600354431061046c576040805162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d1cc81b9bdd08185b1b1bddd95960621b604482015290519081900360640190fd5b3360009081526008602052604090205461048c908363ffffffff610e4616565b336000908152600860205260409020556006546104af908363ffffffff610e4616565b6006556007546104c5908363ffffffff610e4616565b6007556003543360008181526009602090815260409182902093909355805191825291810184905281517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4929181900390910190a1600154604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b505050506040513d602081101561059e57600080fd5b50516105e5576040805162461bcd60e51b81526020600482015260116024820152703232b837b9b4ba1414903330b4b632b21760791b604482015290519081900360640190fd5b5060016000805460ff60a01b1916600160a01b179055919050565b60045490565b60008054600160a01b900460ff16610665576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b1916815561067b336106fb565b604080513381526020810183905281519293507f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369929081900390910190a16106c33382610ea7565b9150506000805460ff60a01b1916600160a01b17905590565b6001600160a01b0381166000908152600860205260409020545b919050565b6001600160a01b038116600090815260086020526040812054610720575060006106f6565b6003544311156107f05760045443116107b4576006546001600160a01b0383166000908152600960205260409020546107ad91906107a19061077c9061076d90439063ffffffff610fac16565b6005549063ffffffff610fee16565b6001600160a01b0386166000908152600860205260409020549063ffffffff610fee16565b9063ffffffff61104716565b90506106f6565b6006546001600160a01b0383166000908152600960205260409020546004546107ad92916107a19161077c9161076d919063ffffffff610fac16565b5060006106f6565b60008054600160a01b900460ff16610857576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b19168155338152600860205260409020548211156108b9576040805162461bcd60e51b815260206004820152601160248201527019195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015290519081900360640190fd5b6003544310156109f557336000908152600860205260409020546108e3908363ffffffff610fac16565b33600090815260086020526040902055600654610906908363ffffffff610fac16565b60065560075461091c908363ffffffff610fac16565b6007556001546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561097357600080fd5b505af1158015610987573d6000803e3d6000fd5b505050506040513d602081101561099d57600080fd5b50516109f0576040805162461bcd60e51b815260206004820152601b60248201527f7769746864726177416e6452656465656d2829206661696c65642e0000000000604482015290519081900360640190fd5b6105e5565b600454431015610a44576040805162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985ddcc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b6000610a4f336106fb565b33600090815260086020526040902054909150610a72908463ffffffff610fac16565b3360008181526008602090815260409182902093909355805191825291810185905280820183905290517fb249bb65be6863c0d7a124b81b64a1c8efffe3cdde637be66fc9cec21b95139c9181900360600190a1600754610ad9908463ffffffff610fac16565b600755610ae63382610ea7565b610b37576040805162461bcd60e51b815260206004820152601760248201527f4661696c656420746f2072656465656d20746f6b656e73000000000000000000604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b505050506040513d6020811015610bb557600080fd5b5051610c08576040805162461bcd60e51b815260206004820152601b60248201527f7769746864726177416e6452656465656d2829206661696c65642e0000000000604482015290519081900360640190fd5b505060016000805460ff60a01b1916600160a01b179055919050565b6001546001600160a01b031690565b6002546001600160a01b031690565b610c4a610d4c565b6000546001600160a01b03908116911614610cac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610cf15760405162461bcd60e51b81526004018080602001828103825260268152602001806111866026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000438311610d99576040805162461bcd60e51b815260206004820152601060248201526f09d99c9bdb49c81d1bdbc81cdb585b1b60821b604482015290519081900360640190fd5b438211610dde576040805162461bcd60e51b815260206004820152600e60248201526d09dd1bc9c81d1bdbc81cdb585b1b60921b604482015290519081900360640190fd5b818310610e32576040805162461bcd60e51b815260206004820152601a60248201527f2766726f6d27206973206c6172676572207468616e2027746f27000000000000604482015290519081900360640190fd5b506003829055600481905560015b92915050565b600082820183811015610ea0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006004544310610ed3576004546001600160a01b038416600090815260096020526040902055610f1a565b600354431115610efd576001600160a01b0383166000908152600960205260409020439055610f1a565b6003546001600160a01b0384166000908152600960205260409020555b8115610fa3576002546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b50505b50600192915050565b6000610ea083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611089565b600082610ffd57506000610e40565b8282028284828161100a57fe5b0414610ea05760405162461bcd60e51b81526004018080602001828103825260218152602001806111ac6021913960400191505060405180910390fd5b6000610ea083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611120565b600081848411156111185760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110dd5781810151838201526020016110c5565b50505050905090810190601f16801561110a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361116f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110dd5781810151838201526020016110c5565b50600083858161117b57fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207007c5c4a87e27781a799a426f516bb754d61efd3b8b4a097e905304f10a1bc864736f6c634300060200330000000000000000000000001d287cc25dad7ccaf76a26bc660c5f7c8e2a05bd0000000000000000000000002e1e15c44ffe4df6a0cb7371cd00d5028e571d14

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100f55760003560e01c8063bc2b883f11610097578063d6bc40e811610066578063d6bc40e814610208578063d7ae342a14610225578063e33150551461022d578063f2fde38b14610235576100f5565b8063bc2b883f146101ac578063be040fb0146101b4578063c084b10b146101bc578063cc2153d1146101e2576100f5565b80639f4be64b116100d35780639f4be64b14610142578063a7947a731461017f578063b68ef55914610187578063b6b55f251461018f576100f5565b80632982f047146100fa578063715018a6146101145780638da5cb5b1461011e575b600080fd5b61010261025b565b60408051918252519081900360200190f35b61011c610261565b005b610126610315565b604080516001600160a01b039092168252519081900360200190f35b61016b6004803603606081101561015857600080fd5b5080359060208101359060400135610324565b604080519115158252519081900360200190f35b6101026103a7565b6101026103ad565b61016b600480360360208110156101a557600080fd5b50356103b3565b610102610600565b61016b610606565b610102600480360360208110156101d257600080fd5b50356001600160a01b03166106dc565b610102600480360360208110156101f857600080fd5b50356001600160a01b03166106fb565b61016b6004803603602081101561021e57600080fd5b50356107f8565b610126610c24565b610126610c33565b61011c6004803603602081101561024b57600080fd5b50356001600160a01b0316610c42565b60055490565b610269610d4c565b6000546001600160a01b039081169116146102cb576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600061032e610d4c565b6000546001600160a01b03908116911614610390576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61039a8484610d50565b5050600555506001919050565b60035490565b60075490565b60008054600160a01b900460ff16610412576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b19169055600354431061046c576040805162461bcd60e51b815260206004820152601460248201527319195c1bdcda5d1cc81b9bdd08185b1b1bddd95960621b604482015290519081900360640190fd5b3360009081526008602052604090205461048c908363ffffffff610e4616565b336000908152600860205260409020556006546104af908363ffffffff610e4616565b6006556007546104c5908363ffffffff610e4616565b6007556003543360008181526009602090815260409182902093909355805191825291810184905281517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4929181900390910190a1600154604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561057457600080fd5b505af1158015610588573d6000803e3d6000fd5b505050506040513d602081101561059e57600080fd5b50516105e5576040805162461bcd60e51b81526020600482015260116024820152703232b837b9b4ba1414903330b4b632b21760791b604482015290519081900360640190fd5b5060016000805460ff60a01b1916600160a01b179055919050565b60045490565b60008054600160a01b900460ff16610665576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b1916815561067b336106fb565b604080513381526020810183905281519293507f4896181ff8f4543cc00db9fe9b6fb7e6f032b7eb772c72ab1ec1b4d2e03b9369929081900390910190a16106c33382610ea7565b9150506000805460ff60a01b1916600160a01b17905590565b6001600160a01b0381166000908152600860205260409020545b919050565b6001600160a01b038116600090815260086020526040812054610720575060006106f6565b6003544311156107f05760045443116107b4576006546001600160a01b0383166000908152600960205260409020546107ad91906107a19061077c9061076d90439063ffffffff610fac16565b6005549063ffffffff610fee16565b6001600160a01b0386166000908152600860205260409020549063ffffffff610fee16565b9063ffffffff61104716565b90506106f6565b6006546001600160a01b0383166000908152600960205260409020546004546107ad92916107a19161077c9161076d919063ffffffff610fac16565b5060006106f6565b60008054600160a01b900460ff16610857576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6000805460ff60a01b19168155338152600860205260409020548211156108b9576040805162461bcd60e51b815260206004820152601160248201527019195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015290519081900360640190fd5b6003544310156109f557336000908152600860205260409020546108e3908363ffffffff610fac16565b33600090815260086020526040902055600654610906908363ffffffff610fac16565b60065560075461091c908363ffffffff610fac16565b6007556001546040805163a9059cbb60e01b81523360048201526024810185905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561097357600080fd5b505af1158015610987573d6000803e3d6000fd5b505050506040513d602081101561099d57600080fd5b50516109f0576040805162461bcd60e51b815260206004820152601b60248201527f7769746864726177416e6452656465656d2829206661696c65642e0000000000604482015290519081900360640190fd5b6105e5565b600454431015610a44576040805162461bcd60e51b81526020600482015260156024820152741dda5d1a191c985ddcc81b9bdd08185b1b1bddd959605a1b604482015290519081900360640190fd5b6000610a4f336106fb565b33600090815260086020526040902054909150610a72908463ffffffff610fac16565b3360008181526008602090815260409182902093909355805191825291810185905280820183905290517fb249bb65be6863c0d7a124b81b64a1c8efffe3cdde637be66fc9cec21b95139c9181900360600190a1600754610ad9908463ffffffff610fac16565b600755610ae63382610ea7565b610b37576040805162461bcd60e51b815260206004820152601760248201527f4661696c656420746f2072656465656d20746f6b656e73000000000000000000604482015290519081900360640190fd5b6001546040805163a9059cbb60e01b81523360048201526024810186905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610b8b57600080fd5b505af1158015610b9f573d6000803e3d6000fd5b505050506040513d6020811015610bb557600080fd5b5051610c08576040805162461bcd60e51b815260206004820152601b60248201527f7769746864726177416e6452656465656d2829206661696c65642e0000000000604482015290519081900360640190fd5b505060016000805460ff60a01b1916600160a01b179055919050565b6001546001600160a01b031690565b6002546001600160a01b031690565b610c4a610d4c565b6000546001600160a01b03908116911614610cac576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116610cf15760405162461bcd60e51b81526004018080602001828103825260268152602001806111866026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b6000438311610d99576040805162461bcd60e51b815260206004820152601060248201526f09d99c9bdb49c81d1bdbc81cdb585b1b60821b604482015290519081900360640190fd5b438211610dde576040805162461bcd60e51b815260206004820152600e60248201526d09dd1bc9c81d1bdbc81cdb585b1b60921b604482015290519081900360640190fd5b818310610e32576040805162461bcd60e51b815260206004820152601a60248201527f2766726f6d27206973206c6172676572207468616e2027746f27000000000000604482015290519081900360640190fd5b506003829055600481905560015b92915050565b600082820183811015610ea0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60006004544310610ed3576004546001600160a01b038416600090815260096020526040902055610f1a565b600354431115610efd576001600160a01b0383166000908152600960205260409020439055610f1a565b6003546001600160a01b0384166000908152600960205260409020555b8115610fa3576002546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d6020811015610fa057600080fd5b50505b50600192915050565b6000610ea083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611089565b600082610ffd57506000610e40565b8282028284828161100a57fe5b0414610ea05760405162461bcd60e51b81526004018080602001828103825260218152602001806111ac6021913960400191505060405180910390fd5b6000610ea083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611120565b600081848411156111185760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110dd5781810151838201526020016110c5565b50505050905090810190601f16801561110a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361116f5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156110dd5781810151838201526020016110c5565b50600083858161117b57fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212207007c5c4a87e27781a799a426f516bb754d61efd3b8b4a097e905304f10a1bc864736f6c63430006020033

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

0000000000000000000000001d287cc25dad7ccaf76a26bc660c5f7c8e2a05bd0000000000000000000000002e1e15c44ffe4df6a0cb7371cd00d5028e571d14

-----Decoded View---------------
Arg [0] : stakedToken (address): 0x1D287CC25dAD7cCaF76a26bc660c5F7C8E2a05BD
Arg [1] : issuedToken (address): 0x2e1E15C44Ffe4Df6a0cb7371CD00d5028e571d14

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d287cc25dad7ccaf76a26bc660c5f7c8e2a05bd
Arg [1] : 0000000000000000000000002e1e15c44ffe4df6a0cb7371cd00d5028e571d14


Deployed Bytecode Sourcemap

14367:6115:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14367:6115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15534:106;;;:::i;:::-;;;;;;;;;;;;;;;;2758:148;;;:::i;:::-;;2116:79;;;:::i;:::-;;;;-1:-1:-1;;;;;2116:79:0;;;;;;;;;;;;;;16763:267;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16763:267:0;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;15264:102;;;:::i;15672:117::-;;;:::i;17062:569::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17062:569:0;;:::i;15398:104::-;;;:::i;18799:222::-;;;:::i;16097:120::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16097:120:0;-1:-1:-1;;;;;16097:120:0;;:::i;19599:876::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19599:876:0;-1:-1:-1;;;;;19599:876:0;;:::i;17663:1104::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17663:1104:0;;:::i;15821:106::-;;;:::i;15959:::-;;;:::i;3061:244::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3061:244:0;-1:-1:-1;;;;;3061:244:0;;:::i;15534:106::-;15620:12;;15534:106;:::o;2758:148::-;2338:12;:10;:12::i;:::-;2328:6;;-1:-1:-1;;;;;2328:6:0;;;:22;;;2320:67;;;;;-1:-1:-1;;;2320:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2865:1:::1;2849:6:::0;;2828:40:::1;::::0;-1:-1:-1;;;;;2849:6:0;;::::1;::::0;2828:40:::1;::::0;2865:1;;2828:40:::1;2896:1;2879:19:::0;;-1:-1:-1;;;;;;2879:19:0::1;::::0;;2758:148::o;2116:79::-;2154:7;2181:6;-1:-1:-1;;;;;2181:6:0;2116:79;:::o;16763:267::-;16913:4;2338:12;:10;:12::i;:::-;2328:6;;-1:-1:-1;;;;;2328:6:0;;;:22;;;2320:67;;;;;-1:-1:-1;;;2320:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16930:40:::1;16944:11;16957:12;16930:13;:40::i;:::-;-1:-1:-1::0;;16981:12:0::1;:19:::0;-1:-1:-1;17018:4:0::1;::::0;16763:267;-1:-1:-1;16763:267:0:o;15264:102::-;15348:10;;15264:102;:::o;15672:117::-;15760:21;;15672:117;:::o;17062:569::-;17135:4;13138:11;;-1:-1:-1;;;13138:11:0;;;;13130:55;;;;;-1:-1:-1;;;13130:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:5;13263:19;;-1:-1:-1;;;;13263:19:0;;;17175:10:::1;::::0;17160:12:::1;:25;17152:58;;;::::0;;-1:-1:-1;;;17152:58:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17152:58:0;;;;;;;;;;;;;::::1;;17255:10;17245:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;17271:6;17245:33:::1;:25;:33;:::i;:::-;17231:10;17221:21;::::0;;;:9:::1;:21;::::0;;;;:57;17306:14:::1;::::0;:26:::1;::::0;17325:6;17306:26:::1;:18;:26;:::i;:::-;17289:14;:43:::0;17367:21:::1;::::0;:33:::1;::::0;17393:6;17367:33:::1;:25;:33;:::i;:::-;17343:21;:57:::0;17438:10:::1;::::0;17424::::1;17411:24;::::0;;;:12:::1;:24;::::0;;;;;;;;:37;;;;17464:29;;;;;;;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;17519:12;::::0;17512:68:::1;::::0;;-1:-1:-1;;;17512:68:0;;17546:10:::1;17512:68;::::0;::::1;::::0;17566:4:::1;17512:68:::0;;;;;;;;;;;;-1:-1:-1;;;;;17519:12:0;;::::1;::::0;17512:33:::1;::::0;:68;;;;;::::1;::::0;;;;;;;;;17519:12:::1;::::0;17512:68;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;17512:68:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;17512:68:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;17512:68:0;17504:97:::1;;;::::0;;-1:-1:-1;;;17504:97:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17504:97:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;17619:4:0::1;13443:11:::0;:18;;-1:-1:-1;;;;13443:18:0;-1:-1:-1;;;13443:18:0;;;17062:569;;-1:-1:-1;17062:569:0:o;15398:104::-;15483:11;;15398:104;:::o;18799:222::-;18857:4;13138:11;;-1:-1:-1;;;13138:11:0;;;;13130:55;;;;;-1:-1:-1;;;13130:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:5;13263:19;;-1:-1:-1;;;;13263:19:0;;;18896:23:::1;18908:10;18896:11;:23::i;:::-;18930:33;::::0;;18939:10:::1;18930:33:::0;;::::1;::::0;::::1;::::0;;;;;18874:45;;-1:-1:-1;18930:33:0::1;::::0;;;;;;;;;::::1;18981:32;18989:10;19001:11;18981:7;:32::i;:::-;18974:39;;;13443:11:::0;:18;;-1:-1:-1;;;;13443:18:0;-1:-1:-1;;;13443:18:0;;;18799:222;:::o;16097:120::-;-1:-1:-1;;;;;16194:15:0;;16167:7;16194:15;;;:9;:15;;;;;;16097:120;;;;:::o;19599:876::-;-1:-1:-1;;;;;19690:18:0;;19667:7;19690:18;;;:9;:18;;;;;;19687:63;;-1:-1:-1;19737:1:0;19730:8;;19687:63;19778:10;;19763:12;:25;19760:708;;;19824:11;;19808:12;:27;19805:611;;20093:14;;-1:-1:-1;;;;;19998:21:0;;;;;;:12;:21;;;;;;19863:245;;20093:14;19863:225;;19908:161;;19951:95;;:12;;:95;:16;:95;:::i;:::-;19908:12;;;:161;:16;:161;:::i;:::-;-1:-1:-1;;;;;19863:18:0;;;;;;:9;:18;;;;;;;:225;:22;:225;:::i;:::-;:229;:245;:229;:245;:::i;:::-;19856:252;;;;19805:611;20385:14;;-1:-1:-1;;;;;20290:21:0;;;;;;:12;:21;;;;;;20244:11;;20156:244;;20385:14;20156:224;;20201:160;;20244:94;;:11;:94;:15;:94;:::i;19760:708::-;-1:-1:-1;20455:1:0;20448:8;;17663:1104;17746:4;13138:11;;-1:-1:-1;;;13138:11:0;;;;13130:55;;;;;-1:-1:-1;;;13130:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13277:5;13263:19;;-1:-1:-1;;;;13263:19:0;;;17781:10:::1;17771:21:::0;;:9:::1;:21;::::0;;;;;:31;-1:-1:-1;17771:31:0::1;17763:61;;;::::0;;-1:-1:-1;;;17763:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17763:61:0;;;;;;;;;;;;;::::1;;17853:10;;17838:12;:25;17835:903;;;17913:10;17903:21;::::0;;;:9:::1;:21;::::0;;;;;:33:::1;::::0;17929:6;17903:33:::1;:25;:33;:::i;:::-;17889:10;17879:21;::::0;;;:9:::1;:21;::::0;;;;:57;17968:14:::1;::::0;:26:::1;::::0;17987:6;17968:26:::1;:18;:26;:::i;:::-;17951:14;:43:::0;18033:21:::1;::::0;:33:::1;::::0;18059:6;18033:33:::1;:25;:33;:::i;:::-;18009:21;:57:::0;18096:12:::1;::::0;18089:49:::1;::::0;;-1:-1:-1;;;18089:49:0;;18119:10:::1;18089:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;18096:12:0;;::::1;::::0;18089:29:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;;18096:12:::1;::::0;18089:49;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;18089:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18089:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;18089:49:0;18081:88:::1;;;::::0;;-1:-1:-1;;;18081:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17835:903;;;18226:11;;18210:12;:27;;18202:61;;;::::0;;-1:-1:-1;;;18202:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18202:61:0;;;;;;;;;;;;;::::1;;18278:19;18300:23;18312:10;18300:11;:23::i;:::-;18372:10;18362:21;::::0;;;:9:::1;:21;::::0;;;;;18278:45;;-1:-1:-1;18362:33:0::1;::::0;18388:6;18362:33:::1;:25;:33;:::i;:::-;18348:10;18338:21;::::0;;;:9:::1;:21;::::0;;;;;;;;:57;;;;18415:53;;;;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;18507:21;::::0;:33:::1;::::0;18533:6;18507:33:::1;:25;:33;:::i;:::-;18483:21;:57:::0;18563:32:::1;18571:10;18583:11:::0;18563:7:::1;:32::i;:::-;18555:68;;;::::0;;-1:-1:-1;;;18555:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;18653:12;::::0;18646:49:::1;::::0;;-1:-1:-1;;;18646:49:0;;18676:10:::1;18646:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;18653:12:0;;::::1;::::0;18646:29:::1;::::0;:49;;;;;::::1;::::0;;;;;;;;;18653:12:::1;::::0;18646:49;::::1;;5:2:-1::0;::::1;;;30:1;27::::0;20:12:::1;5:2;18646:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39::::0;24:38:::1;77:16;74:1;67:27;5:2;18646:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26::::0;19:12:::1;2:2;-1:-1:::0;18646:49:0;18638:88:::1;;;::::0;;-1:-1:-1;;;18638:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;17835:903;-1:-1:-1::0;18755:4:0::1;13443:11:::0;:18;;-1:-1:-1;;;;13443:18:0;-1:-1:-1;;;13443:18:0;;;17663:1104;;-1:-1:-1;17663:1104:0:o;15821:106::-;15907:12;;-1:-1:-1;;;;;15907:12:0;15821:106;:::o;15959:::-;16045:12;;-1:-1:-1;;;;;16045:12:0;15959:106;:::o;3061:244::-;2338:12;:10;:12::i;:::-;2328:6;;-1:-1:-1;;;;;2328:6:0;;;:22;;;2320:67;;;;;-1:-1:-1;;;2320:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3150:22:0;::::1;3142:73;;;;-1:-1:-1::0;;;3142:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3252:6;::::0;;3231:38:::1;::::0;-1:-1:-1;;;;;3231:38:0;;::::1;::::0;3252:6;::::1;::::0;3231:38:::1;::::0;::::1;3280:6;:17:::0;;-1:-1:-1;;;;;;3280:17:0::1;-1:-1:-1::0;;;;;3280:17:0;;;::::1;::::0;;;::::1;::::0;;3061:244::o;756:106::-;844:10;756:106;:::o;16249:331::-;16316:4;16348:12;16341:4;:19;16333:48;;;;;-1:-1:-1;;;16333:48:0;;;;;;;;;;;;-1:-1:-1;;;16333:48:0;;;;;;;;;;;;;;;16405:12;16400:2;:17;16392:44;;;;;-1:-1:-1;;;16392:44:0;;;;;;;;;;;;-1:-1:-1;;;16392:44:0;;;;;;;;;;;;;;;16462:2;16455:4;:9;16447:48;;;;;-1:-1:-1;;;16447:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16506:10:0;:17;;;16534:11;:16;;;16568:4;16249:331;;;;;:::o;6857:181::-;6915:7;6947:5;;;6971:6;;;;6963:46;;;;;-1:-1:-1;;;6963:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7029:1;6857:181;-1:-1:-1;;;6857:181:0:o;19053:514::-;19121:4;19158:11;;19142:12;:27;19138:302;;19210:11;;-1:-1:-1;;;;;19186:21:0;;;;;;:12;:21;;;;;:35;19138:302;;;19272:10;;19257:12;:25;19254:175;;;-1:-1:-1;;;;;19302:21:0;;;;;;:12;:21;;;;;19326:12;19302:36;;19254:175;;;19403:10;;-1:-1:-1;;;;;19379:21:0;;;;;;:12;:21;;;;;:34;19254:175;19453:10;;19450:88;;19487:12;;19480:46;;;-1:-1:-1;;;19480:46:0;;-1:-1:-1;;;;;19480:46:0;;;;;;;;;;;;;;;19487:12;;;;;19480:29;;:46;;;;;;;;;;;;;;19487:12;;19480:46;;;5:2:-1;;;;30:1;27;20:12;5:2;19480:46:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19480:46:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;19450:88:0;-1:-1:-1;19555:4:0;19053:514;;;;:::o;7313:136::-;7371:7;7398:43;7402:1;7405;7398:43;;;;;;;;;;;;;;;;;:3;:43::i;8187:471::-;8245:7;8490:6;8486:47;;-1:-1:-1;8520:1:0;8513:8;;8486:47;8557:5;;;8561:1;8557;:5;:1;8581:5;;;;;:10;8573:56;;;;-1:-1:-1;;;8573:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9126:132;9184:7;9211:39;9215:1;9218;9211:39;;;;;;;;;;;;;;;;;:3;:39::i;7744:192::-;7830:7;7866:12;7858:6;;;;7850:29;;;;-1:-1:-1;;;7850:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7850:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7902:5:0;;;7744:192::o;9746:345::-;9832:7;9934:12;9927:5;9919:28;;;;-1:-1:-1;;;9919:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;9919:28:0;;9958:9;9974:1;9970;:5;;;;;;;9746:345;-1:-1:-1;;;;;9746:345:0:o

Swarm Source

ipfs://7007c5c4a87e27781a799a426f516bb754d61efd3b8b4a097e905304f10a1bc8

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ 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.