MOVR Price: $2.31 (+0.35%)

Contract

0x6b3518E0260aE1515976A30FA67513C760De2570

Overview

MOVR Balance

Moonriver Chain LogoMoonriver Chain LogoMoonriver Chain Logo0 MOVR

MOVR Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Withdraw All32297922022-12-20 16:09:121131 days ago1671552552IN
DODO: Mining V1
0 MOVR0.000150991.01
Withdraw All26793492022-10-01 4:05:121212 days ago1664597112IN
DODO: Mining V1
0 MOVR0.000210582.5
Withdraw All26793452022-10-01 4:04:241212 days ago1664597064IN
DODO: Mining V1
0 MOVR0.00025042.5
Withdraw All25409722022-09-10 15:56:301232 days ago1662825390IN
DODO: Mining V1
0 MOVR0.00021062.5
Claim25409712022-09-10 15:56:181232 days ago1662825378IN
DODO: Mining V1
0 MOVR0.000240582.5
Withdraw All25175732022-09-06 21:15:181236 days ago1662498918IN
DODO: Mining V1
0 MOVR0.00021062.5
Claim25175702022-09-06 21:14:301236 days ago1662498870IN
DODO: Mining V1
0 MOVR0.000190832.5
Claim24754402022-08-31 2:54:321243 days ago1661914472IN
DODO: Mining V1
0 MOVR0.000066372.5
Withdraw All24754382022-08-31 2:54:061243 days ago1661914446IN
DODO: Mining V1
0 MOVR0.00021062.5
Withdraw All24754362022-08-31 2:53:421243 days ago1661914422IN
DODO: Mining V1
0 MOVR0.000210582.5
Claim24754352022-08-31 2:53:301243 days ago1661914410IN
DODO: Mining V1
0 MOVR0.00019082.5
Withdraw All24633402022-08-29 3:42:181245 days ago1661744538IN
DODO: Mining V1
0 MOVR0.000250382.5
Withdraw All24556782022-08-27 21:25:541246 days ago1661635554IN
DODO: Mining V1
0 MOVR0.000210582.5
Withdraw All24556742022-08-27 21:25:001246 days ago1661635500IN
DODO: Mining V1
0 MOVR0.00021062.5
Claim24553982022-08-27 20:20:181246 days ago1661631618IN
DODO: Mining V1
0 MOVR0.000349434.57776204
Claim24553942022-08-27 20:19:181246 days ago1661631558IN
DODO: Mining V1
0 MOVR0.000926899.633
Withdraw All24525442022-08-27 9:17:121246 days ago1661591832IN
DODO: Mining V1
0 MOVR0.000210582.5
Withdraw All24513682022-08-27 4:40:061247 days ago1661575206IN
DODO: Mining V1
0 MOVR0.00021062.5
Withdraw All24491642022-08-26 20:04:001247 days ago1661544240IN
DODO: Mining V1
0 MOVR0.000210582.5
Claim24491592022-08-26 20:03:001247 days ago1661544180IN
DODO: Mining V1
0 MOVR0.000240552.5
Withdraw All24474902022-08-26 13:20:361247 days ago1661520036IN
DODO: Mining V1
0 MOVR0.00025042.5
Withdraw All24473692022-08-26 12:52:061247 days ago1661518326IN
DODO: Mining V1
0 MOVR0.000084231
Withdraw All24473652022-08-26 12:51:001247 days ago1661518260IN
DODO: Mining V1
0 MOVR0.00021062.5
Withdraw All24471382022-08-26 11:56:061247 days ago1661514966IN
DODO: Mining V1
0 MOVR0.000250382.5
Withdraw All24467382022-08-26 10:23:181247 days ago1661509398IN
DODO: Mining V1
0 MOVR0.00021062.5
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
13795892022-01-27 4:54:001459 days ago1643259240
DODO: Mining V1
 Contract Creation0 MOVR
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DODOMine

Compiler Version
v0.6.9+commit.3e3065ac

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Apache-2.0 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at moonriver.moonscan.io on 2022-01-27
*/

/**
 *Submitted for verification at moonriver.moonscan.io on 2022-01-26
*/

/**
 *Submitted for verification at polygonscan.com on 2022-01-20
*/

// File: contracts/lib/Ownable.sol

/*

    Copyright 2020 DODO ZOO.
    SPDX-License-Identifier: Apache-2.0

*/

pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;

/**
 * @title Ownable
 * @author DODO Breeder
 *
 * @notice Ownership related functions
 */
contract Ownable {
    address public _OWNER_;
    address public _NEW_OWNER_;

    // ============ Events ============

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

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

    // ============ Modifiers ============

    modifier onlyOwner() {
        require(msg.sender == _OWNER_, "NOT_OWNER");
        _;
    }

    // ============ Functions ============

    constructor() internal {
        _OWNER_ = msg.sender;
        emit OwnershipTransferred(address(0), _OWNER_);
    }

    function transferOwnership(address newOwner) external onlyOwner {
        emit OwnershipTransferPrepared(_OWNER_, newOwner);
        _NEW_OWNER_ = newOwner;
    }

    function claimOwnership() external {
        require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
        emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
        _OWNER_ = _NEW_OWNER_;
        _NEW_OWNER_ = address(0);
    }
}

// File: contracts/lib/SafeMath.sol

/**
 * @title SafeMath
 * @author DODO Breeder
 *
 * @notice Math operations with safety checks that revert on error
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "MUL_ERROR");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "DIVIDING_ERROR");
        return a / b;
    }

    function divCeil(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 quotient = div(a, b);
        uint256 remainder = a - quotient * b;
        if (remainder > 0) {
            return quotient + 1;
        } else {
            return quotient;
        }
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SUB_ERROR");
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "ADD_ERROR");
        return c;
    }

    function sqrt(uint256 x) internal pure returns (uint256 y) {
        uint256 z = x / 2 + 1;
        y = x;
        while (z < y) {
            y = z;
            z = (x / z + z) / 2;
        }
    }
}

// File: contracts/lib/DecimalMath.sol

/**
 * @title DecimalMath
 * @author DODO Breeder
 *
 * @notice Functions for fixed point number with 18 decimals
 */
library DecimalMath {
    using SafeMath for uint256;

    uint256 internal constant ONE = 10**18;
    uint256 internal constant ONE2 = 10**36;

    function mulFloor(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(d) / (10**18);
    }

    function mulCeil(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(d).divCeil(10**18);
    }

    function divFloor(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(10**18).div(d);
    }

    function divCeil(uint256 target, uint256 d) internal pure returns (uint256) {
        return target.mul(10**18).divCeil(d);
    }

    function reciprocalFloor(uint256 target) internal pure returns (uint256) {
        return uint256(10**36).div(target);
    }

    function reciprocalCeil(uint256 target) internal pure returns (uint256) {
        return uint256(10**36).divCeil(target);
    }
}

// File: contracts/intf/IERC20.sol


/**
 * @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);

    function decimals() external view returns (uint8);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    /**
     * @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);
}

// File: contracts/lib/SafeERC20.sol

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(
            token,
            abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
        );
    }

    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves.

        // A Solidity high level call has three parts:
        //  1. The target address is checked to verify it contains contract code
        //  2. The call itself is made, and success asserted
        //  3. The return value is decoded, which in turn checks the size of the returned data.
        // solhint-disable-next-line max-line-length

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) {
            // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/DODOToken/DODORewardVault.sol



interface IDODORewardVault {
    function reward(address to, uint256 amount) external;
}


contract DODORewardVault is Ownable {
    using SafeERC20 for IERC20;

    address public dodoToken;

    constructor(address _dodoToken) public {
        dodoToken = _dodoToken;
    }

    function reward(address to, uint256 amount) external onlyOwner {
        IERC20(dodoToken).safeTransfer(to, amount);
    }
}

// File: contracts/DODOToken/DODOMine.sol

contract DODOMine is Ownable {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;

    // Info of each user.
    struct UserInfo {
        uint256 amount; // How many LP tokens the user has provided.
        uint256 rewardDebt; // Reward debt. See explanation below.
        //
        // We do some fancy math here. Basically, any point in time, the amount of DODOs
        // entitled to a user but is pending to be distributed is:
        //
        //   pending reward = (user.amount * pool.accDODOPerShare) - user.rewardDebt
        //
        // Whenever a user deposits or withdraws LP tokens to a pool. Here's what happens:
        //   1. The pool's `accDODOPerShare` (and `lastRewardBlock`) gets updated.
        //   2. User receives the pending reward sent to his/her address.
        //   3. User's `amount` gets updated.
        //   4. User's `rewardDebt` gets updated.
    }

    // Info of each pool.
    struct PoolInfo {
        address lpToken; // Address of LP token contract.
        uint256 allocPoint; // How many allocation points assigned to this pool. DODOs to distribute per block.
        uint256 lastRewardBlock; // Last block number that DODOs distribution occurs.
        uint256 accDODOPerShare; // Accumulated DODOs per share, times 1e12. See below.
    }

    address public dodoRewardVault;
    uint256 public dodoPerBlock;

    // Info of each pool.
    PoolInfo[] public poolInfos;
    mapping(address => uint256) public lpTokenRegistry;

    // Info of each user that stakes LP tokens.
    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    mapping(address => uint256) public realizedReward;

    // Total allocation points. Must be the sum of all allocation points in all pools.
    uint256 public totalAllocPoint = 0;
    // The block number when DODO mining starts.
    uint256 public startBlock;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event Claim(address indexed user, uint256 amount);

    constructor(address _dodoToken, uint256 _startBlock) public {
        dodoRewardVault = address(new DODORewardVault(_dodoToken));
        startBlock = _startBlock;
    }

    // ============ Modifiers ============

    modifier lpTokenExist(address lpToken) {
        require(lpTokenRegistry[lpToken] > 0, "LP Token Not Exist");
        _;
    }

    modifier lpTokenNotExist(address lpToken) {
        require(lpTokenRegistry[lpToken] == 0, "LP Token Already Exist");
        _;
    }

    // ============ Helper ============

    function poolLength() external view returns (uint256) {
        return poolInfos.length;
    }

    function getPid(address _lpToken) public view lpTokenExist(_lpToken) returns (uint256) {
        return lpTokenRegistry[_lpToken] - 1;
    }

    function getUserLpBalance(address _lpToken, address _user) public view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        return userInfo[pid][_user].amount;
    }

    // ============ Ownable ============

    function addLpToken(
        address _lpToken,
        uint256 _allocPoint,
        bool _withUpdate
    ) public lpTokenNotExist(_lpToken) onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
        totalAllocPoint = totalAllocPoint.add(_allocPoint);
        poolInfos.push(
            PoolInfo({
                lpToken: _lpToken,
                allocPoint: _allocPoint,
                lastRewardBlock: lastRewardBlock,
                accDODOPerShare: 0
            })
        );
        lpTokenRegistry[_lpToken] = poolInfos.length;
    }

    function setLpToken(
        address _lpToken,
        uint256 _allocPoint,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 pid = getPid(_lpToken);
        totalAllocPoint = totalAllocPoint.sub(poolInfos[pid].allocPoint).add(_allocPoint);
        poolInfos[pid].allocPoint = _allocPoint;
    }

    function setReward(uint256 _dodoPerBlock, bool _withUpdate) external onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        dodoPerBlock = _dodoPerBlock;
    }

    // ============ View Rewards ============

    function getPendingReward(address _lpToken, address _user) external view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][_user];
        uint256 accDODOPerShare = pool.accDODOPerShare;
        uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 DODOReward = block
                .number
                .sub(pool.lastRewardBlock)
                .mul(dodoPerBlock)
                .mul(pool.allocPoint)
                .div(totalAllocPoint);
            accDODOPerShare = accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
        }
        return DecimalMath.mulFloor(user.amount, accDODOPerShare).sub(user.rewardDebt);
    }

    function getAllPendingReward(address _user) external view returns (uint256) {
        uint256 length = poolInfos.length;
        uint256 totalReward = 0;
        for (uint256 pid = 0; pid < length; ++pid) {
            if (userInfo[pid][_user].amount == 0 || poolInfos[pid].allocPoint == 0) {
                continue; // save gas
            }
            PoolInfo storage pool = poolInfos[pid];
            UserInfo storage user = userInfo[pid][_user];
            uint256 accDODOPerShare = pool.accDODOPerShare;
            uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
            if (block.number > pool.lastRewardBlock && lpSupply != 0) {
                uint256 DODOReward = block
                    .number
                    .sub(pool.lastRewardBlock)
                    .mul(dodoPerBlock)
                    .mul(pool.allocPoint)
                    .div(totalAllocPoint);
                accDODOPerShare = accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
            }
            totalReward = totalReward.add(
                DecimalMath.mulFloor(user.amount, accDODOPerShare).sub(user.rewardDebt)
            );
        }
        return totalReward;
    }

    function getRealizedReward(address _user) external view returns (uint256) {
        return realizedReward[_user];
    }

    function getDlpMiningSpeed(address _lpToken) external view returns (uint256) {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        return dodoPerBlock.mul(pool.allocPoint).div(totalAllocPoint);
    }

    // ============ Update Pools ============

    // Update reward vairables for all pools. Be careful of gas spending!
    function massUpdatePools() public {
        uint256 length = poolInfos.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            updatePool(pid);
        }
    }

    // Update reward variables of the given pool to be up-to-date.
    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfos[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = IERC20(pool.lpToken).balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        uint256 DODOReward = block
            .number
            .sub(pool.lastRewardBlock)
            .mul(dodoPerBlock)
            .mul(pool.allocPoint)
            .div(totalAllocPoint);
        pool.accDODOPerShare = pool.accDODOPerShare.add(DecimalMath.divFloor(DODOReward, lpSupply));
        pool.lastRewardBlock = block.number;
    }

    // ============ Deposit & Withdraw & Claim ============
    // Deposit & withdraw will also trigger claim

    function deposit(address _lpToken, uint256 _amount) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        updatePool(pid);
        if (user.amount > 0) {
            uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
                user.rewardDebt
            );
            safeDODOTransfer(msg.sender, pending);
        }
        IERC20(pool.lpToken).safeTransferFrom(address(msg.sender), address(this), _amount);
        user.amount = user.amount.add(_amount);
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        emit Deposit(msg.sender, pid, _amount);
    }

    function withdraw(address _lpToken, uint256 _amount) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        require(user.amount >= _amount, "withdraw too much");
        updatePool(pid);
        uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
            user.rewardDebt
        );
        safeDODOTransfer(msg.sender, pending);
        user.amount = user.amount.sub(_amount);
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        IERC20(pool.lpToken).safeTransfer(address(msg.sender), _amount);
        emit Withdraw(msg.sender, pid, _amount);
    }

    function withdrawAll(address _lpToken) public {
        uint256 balance = getUserLpBalance(_lpToken, msg.sender);
        withdraw(_lpToken, balance);
    }

    // Withdraw without caring about rewards. EMERGENCY ONLY.
    function emergencyWithdraw(address _lpToken) public {
        uint256 pid = getPid(_lpToken);
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        IERC20(pool.lpToken).safeTransfer(address(msg.sender), user.amount);
        user.amount = 0;
        user.rewardDebt = 0;
    }

    function claim(address _lpToken) public {
        uint256 pid = getPid(_lpToken);
        if (userInfo[pid][msg.sender].amount == 0 || poolInfos[pid].allocPoint == 0) {
            return; // save gas
        }
        PoolInfo storage pool = poolInfos[pid];
        UserInfo storage user = userInfo[pid][msg.sender];
        updatePool(pid);
        uint256 pending = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(
            user.rewardDebt
        );
        user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        safeDODOTransfer(msg.sender, pending);
    }

    function claimAll() public {
        uint256 length = poolInfos.length;
        uint256 pending = 0;
        for (uint256 pid = 0; pid < length; ++pid) {
            if (userInfo[pid][msg.sender].amount == 0 || poolInfos[pid].allocPoint == 0) {
                continue; // save gas
            }
            PoolInfo storage pool = poolInfos[pid];
            UserInfo storage user = userInfo[pid][msg.sender];
            updatePool(pid);
            pending = pending.add(
                DecimalMath.mulFloor(user.amount, pool.accDODOPerShare).sub(user.rewardDebt)
            );
            user.rewardDebt = DecimalMath.mulFloor(user.amount, pool.accDODOPerShare);
        }
        safeDODOTransfer(msg.sender, pending);
    }

    // Safe DODO transfer function
    function safeDODOTransfer(address _to, uint256 _amount) internal {
        IDODORewardVault(dodoRewardVault).reward(_to, _amount);
        realizedReward[_to] = realizedReward[_to].add(_amount);
        emit Claim(_to, _amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_dodoToken","type":"address"},{"internalType":"uint256","name":"_startBlock","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Claim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"addLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dodoPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dodoRewardVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getAllPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getDlpMiningSpeed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"getPendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"getPid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"getRealizedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"address","name":"_user","type":"address"}],"name":"getUserLpBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lpTokenRegistry","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfos","outputs":[{"internalType":"address","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accDODOPerShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"realizedReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_dodoPerBlock","type":"uint256"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"setReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpToken","type":"address"}],"name":"withdrawAll","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006008553480156200001657600080fd5b5060405162002195380380620021958339810160408190526200003991620000f3565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3816040516200009190620000e5565b6200009d91906200012d565b604051809103906000f080158015620000ba573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b03929092169190911790556009555062000141565b6106398062001b5c83390190565b6000806040838503121562000106578182fd5b82516001600160a01b03811681146200011d578283fd5b6020939093015192949293505050565b6001600160a01b0391909116815260200190565b611a0b80620001516000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636ff1c9bc11610104578063d1058e59116100a2578063f3fef3a311610071578063f3fef3a3146103a2578063fa09e630146103b5578063fb7276f4146103c8578063fe0f3a13146103db576101da565b8063d1058e5914610361578063ec83a76a14610369578063f146b8091461037c578063f2fde38b1461038f576101da565b80638af70336116100de5780638af703361461031d57806393f1a40b146103255780639599af1314610346578063bea006e01461034e576101da565b80636ff1c9bc146102ef5780637f10179f146103025780638456db1514610315576101da565b806343b55f351161017c57806351eb05a61161014b57806351eb05a61461029e578063630b5ba1146102b1578063689d84e4146102b95780636dc2cc8c146102dc576101da565b806343b55f351461026857806347e7ef241461027b57806348cd4cb11461028e5780634e71e0c814610296576101da565b806319a78f55116101b857806319a78f551461021a5780631e83409a1461022d57806334ea5389146102425780633d16433e14610255576101da565b8063081e3eda146101df57806316048bc4146101fd57806317caf6f114610212575b600080fd5b6101e76103ee565b6040516101f491906119b0565b60405180910390f35b6102056103f4565b6040516101f49190611758565b6101e7610403565b6101e76102283660046115d7565b610409565b61024061023b3660046115bc565b610442565b005b610240610250366004611635565b610532565b6101e76102633660046115bc565b6105f2565b6101e76102763660046115bc565b610604565b61024061028936600461160b565b61065c565b6101e7610763565b610240610769565b6102406102ac36600461169d565b6107f7565b610240610931565b6102cc6102c736600461169d565b610954565b6040516101f494939291906117a9565b6101e76102ea3660046115bc565b610995565b6102406102fd3660046115bc565b6109b0565b6102406103103660046116f0565b610a27565b610205610a65565b6101e7610a74565b6103386103333660046116cd565b610a7a565b6040516101f49291906119b9565b610205610a9e565b61024061035c366004611635565b610aad565b610240610c50565b6101e76103773660046115bc565b610d46565b6101e761038a3660046115bc565b610d58565b61024061039d3660046115bc565b610f25565b6102406103b036600461160b565b610faa565b6102406103c33660046115bc565b6110cf565b6101e76103d63660046115bc565b6110e7565b6101e76103e93660046115d7565b61113b565b60045490565b6000546001600160a01b031681565b60085481565b60008061041584610604565b60009081526006602090815260408083206001600160a01b03871684529091529020549150505b92915050565b600061044d82610604565b6000818152600660209081526040808320338452909152902054909150158061049457506004818154811061047e57fe5b9060005260206000209060040201600101546000145b1561049f575061052f565b6000600482815481106104ae57fe5b600091825260208083208584526006825260408085203386529092529220600490910290910191506104df836107f7565b600061050782600101546104fb84600001548660030154611286565b9063ffffffff6112b016565b905061051b82600001548460030154611286565b600183015561052a33826112d8565b505050505b50565b6000546001600160a01b031633146105655760405162461bcd60e51b815260040161055c906118a1565b60405180910390fd5b801561057357610573610931565b600061057e84610604565b90506105c3836105b76004848154811061059457fe5b9060005260206000209060040201600101546008546112b090919063ffffffff16565b9063ffffffff6113be16565b60088190555082600482815481106105d757fe5b90600052602060002090600402016001018190555050505050565b60056020526000908152604090205481565b6001600160a01b038116600090815260056020526040812054829061063b5760405162461bcd60e51b815260040161055c906118c4565b50506001600160a01b03166000908152600560205260409020546000190190565b600061066783610604565b905060006004828154811061067857fe5b600091825260208083208584526006825260408085203386529092529220600490910290910191506106a9836107f7565b8054156106da5760006106cc82600101546104fb84600001548660030154611286565b90506106d833826112d8565b505b81546106f7906001600160a01b031633308763ffffffff6113ea16565b8054610709908563ffffffff6113be16565b808255600383015461071b9190611286565b6001820155604051839033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906107549088906119b0565b60405180910390a35050505050565b60095481565b6001546001600160a01b031633146107935760405162461bcd60e51b815260040161055c906117cf565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006004828154811061080657fe5b9060005260206000209060040201905080600201544311610827575061052f565b80546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610857903090600401611758565b60206040518083038186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a791906116b5565b9050806108bb57504360029091015561052f565b60006109006008546108f485600101546108e86003546108e88960020154436112b090919063ffffffff16565b9063ffffffff61144816565b9063ffffffff61148216565b905061092061090f82846114ac565b60038501549063ffffffff6113be16565b600384015550504360029091015550565b60045460005b8181101561095057610948816107f7565b600101610937565b5050565b6004818154811061096157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b6001600160a01b031660009081526007602052604090205490565b60006109bb82610604565b90506000600482815481106109cc57fe5b60009182526020808320858452600682526040808520338087529352909320805460049093029093018054909450610a17926001600160a01b0391909116919063ffffffff6114ca16565b6000808255600190910155505050565b6000546001600160a01b03163314610a515760405162461bcd60e51b815260040161055c906118a1565b8015610a5f57610a5f610931565b50600355565b6001546001600160a01b031681565b60035481565b60066020908152600092835260408084209091529082529020805460019091015482565b6002546001600160a01b031681565b6001600160a01b038316600090815260056020526040902054839015610ae55760405162461bcd60e51b815260040161055c9061195d565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161055c906118a1565b8115610b1d57610b1d610931565b60006009544311610b3057600954610b32565b435b600854909150610b48908563ffffffff6113be16565b600855604080516080810182526001600160a01b0396871680825260208083019788528284019485526000606084018181526004805460018101825581845295517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b96820296870180546001600160a01b03191691909d1617909b5598517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c85015594517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d84015596517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e909201919091559554958252600590945292909220929092555050565b6004546000805b82811015610d3b5760008181526006602090815260408083203384529091529020541580610ca3575060048181548110610c8d57fe5b9060005260206000209060040201600101546000145b15610cad57610d33565b600060048281548110610cbc57fe5b60009182526020808320858452600682526040808520338652909252922060049091029091019150610ced836107f7565b610d17610d0a82600101546104fb84600001548660030154611286565b859063ffffffff6113be16565b9350610d2b81600001548360030154611286565b600190910155505b600101610c57565b5061095033826112d8565b60076020526000908152604090205481565b60045460009081805b82811015610f1d5760008181526006602090815260408083206001600160a01b03891684529091529020541580610db6575060048181548110610da057fe5b9060005260206000209060040201600101546000145b15610dc057610f15565b600060048281548110610dcf57fe5b600091825260208083208584526006825260408085206001600160a01b038c81168752935280852060049485029092016003810154815492516370a0823160e01b815291975092959294929391909116916370a0823191610e3291309101611758565b60206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906116b5565b9050836002015443118015610e9657508015155b15610ee8576000610ec86008546108f487600101546108e86003546108e88b60020154436112b090919063ffffffff16565b9050610ee4610ed782846114ac565b849063ffffffff6113be16565b9250505b610f0e610f0184600101546104fb866000015486611286565b879063ffffffff6113be16565b9550505050505b600101610d61565b509392505050565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260040161055c906118a1565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fb583610604565b9050600060048281548110610fc657fe5b60009182526020808320858452600682526040808520338652909252922080546004909202909201925084111561100f5760405162461bcd60e51b815260040161055c90611876565b611018836107f7565b600061103482600101546104fb84600001548660030154611286565b905061104033826112d8565b8154611052908663ffffffff6112b016565b80835560038401546110649190611286565b60018301558254611085906001600160a01b0316338763ffffffff6114ca16565b83336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568876040516110bf91906119b0565b60405180910390a3505050505050565b60006110db8233610409565b90506109508282610faa565b6000806110f383610604565b905060006004828154811061110457fe5b906000526020600020906004020190506111336008546108f4836001015460035461144890919063ffffffff16565b949350505050565b60008061114784610604565b905060006004828154811061115857fe5b600091825260208083208584526006825260408085206001600160a01b038a81168752935280852060049485029092016003810154815492516370a0823160e01b815291975092959294929391909116916370a08231916111bb91309101611758565b60206040518083038186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906116b5565b905083600201544311801561121f57508015155b156112645760006112516008546108f487600101546108e86003546108e88b60020154436112b090919063ffffffff16565b9050611260610ed782846114ac565b9250505b61127a83600101546104fb856000015485611286565b98975050505050505050565b6000670de0b6b3a76400006112a1848463ffffffff61144816565b816112a857fe5b049392505050565b6000828211156112d25760405162461bcd60e51b815260040161055c90611853565b50900390565b6002546040516310b3879160e11b81526001600160a01b03909116906321670f229061130a9085908590600401611790565b600060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b5050506001600160a01b03831660009081526007602052604090205461136591508263ffffffff6113be16565b6001600160a01b038316600081815260076020526040908190209290925590517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4906113b29084906119b0565b60405180910390a25050565b6000828201838110156113e35760405162461bcd60e51b815260040161055c906118f0565b9392505050565b611442846323b872dd60e01b85858560405160240161140b9392919061176c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526114ee565b50505050565b6000826114575750600061043c565b8282028284828161146457fe5b04146113e35760405162461bcd60e51b815260040161055c9061198d565b60008082116114a35760405162461bcd60e51b815260040161055c9061182b565b8183816112a857fe5b60006113e3826108f485670de0b6b3a764000063ffffffff61144816565b6114e98363a9059cbb60e01b848460405160240161140b929190611790565b505050565b60006060836001600160a01b03168360405161150a919061171f565b6000604051808303816000865af19150503d8060008114611547576040519150601f19603f3d011682016040523d82523d6000602084013e61154c565b606091505b50915091508161156e5760405162461bcd60e51b815260040161055c906117f6565b80511561144257808060200190518101906115899190611681565b6114425760405162461bcd60e51b815260040161055c90611913565b80356001600160a01b038116811461043c57600080fd5b6000602082840312156115cd578081fd5b6113e383836115a5565b600080604083850312156115e9578081fd5b6115f384846115a5565b915061160284602085016115a5565b90509250929050565b6000806040838503121561161d578182fd5b61162784846115a5565b946020939093013593505050565b600080600060608486031215611649578081fd5b83356001600160a01b038116811461165f578182fd5b9250602084013591506040840135611676816119c7565b809150509250925092565b600060208284031215611692578081fd5b81516113e3816119c7565b6000602082840312156116ae578081fd5b5035919050565b6000602082840312156116c6578081fd5b5051919050565b600080604083850312156116df578182fd5b8235915061160284602085016115a5565b60008060408385031215611702578182fd5b823591506020830135611714816119c7565b809150509250929050565b60008251815b8181101561173f5760208186018101518583015201611725565b8181111561174d5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b6020808252601190820152700eed2e8d0c8e4c2ee40e8dede40daeac6d607b1b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b602080825260129082015271131408151bdad95b88139bdd08115e1a5cdd60721b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b602080825260169082015275131408151bdad95b88105b1c9958591e48115e1a5cdd60521b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b918252602082015260400190565b801515811461052f57600080fdfea2646970667358221220a8bd723ed688f56f7b65ca2821868b375cd1667655d9ad125c2ac974e7ab1ee364736f6c63430006090033608060405234801561001057600080fd5b5060405161063938038061063983398101604081905261002f9161009d565b600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600280546001600160a01b0319166001600160a01b03929092169190911790556100cb565b6000602082840312156100ae578081fd5b81516001600160a01b03811681146100c4578182fd5b9392505050565b61055f806100da6000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806316048bc41461006757806321670f22146100855780634e71e0c81461009a57806375123ff9146100a25780638456db15146100aa578063f2fde38b146100b2575b600080fd5b61006f6100c5565b60405161007c9190610433565b60405180910390f35b6100986100933660046103b0565b6100d4565b005b610098610128565b61006f6101b6565b61006f6101c5565b6100986100c036600461038e565b6101d4565b6000546001600160a01b031681565b6000546001600160a01b031633146101075760405162461bcd60e51b81526004016100fe906104bc565b60405180910390fd5b600254610124906001600160a01b0316838363ffffffff61025916565b5050565b6001546001600160a01b031633146101525760405162461bcd60e51b81526004016100fe90610460565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6002546001600160a01b031681565b6001546001600160a01b031681565b6000546001600160a01b031633146101fe5760405162461bcd60e51b81526004016100fe906104bc565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6102af8363a9059cbb60e01b8484604051602401610278929190610447565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526102b4565b505050565b60006060836001600160a01b0316836040516102d091906103fa565b6000604051808303816000865af19150503d806000811461030d576040519150601f19603f3d011682016040523d82523d6000602084013e610312565b606091505b5091509150816103345760405162461bcd60e51b81526004016100fe90610487565b80511561036b578080602001905181019061034f91906103da565b61036b5760405162461bcd60e51b81526004016100fe906104df565b50505050565b80356001600160a01b038116811461038857600080fd5b92915050565b60006020828403121561039f578081fd5b6103a98383610371565b9392505050565b600080604083850312156103c2578081fd5b6103cc8484610371565b946020939093013593505050565b6000602082840312156103eb578081fd5b815180151581146103a9578182fd5b60008251815b8181101561041a5760208186018101518583015201610400565b818111156104285782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b60608201526080019056fea26469706673582212207db8a939598119439cad8a5fbc2c960bb37b3935ba122acca18c6b5e1471b67664736f6c6343000609003300000000000000000000000098878b06940ae243284ca214f92bb71a2b032b8a00000000000000000000000000000000000000000000000000000000001527d7

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80636ff1c9bc11610104578063d1058e59116100a2578063f3fef3a311610071578063f3fef3a3146103a2578063fa09e630146103b5578063fb7276f4146103c8578063fe0f3a13146103db576101da565b8063d1058e5914610361578063ec83a76a14610369578063f146b8091461037c578063f2fde38b1461038f576101da565b80638af70336116100de5780638af703361461031d57806393f1a40b146103255780639599af1314610346578063bea006e01461034e576101da565b80636ff1c9bc146102ef5780637f10179f146103025780638456db1514610315576101da565b806343b55f351161017c57806351eb05a61161014b57806351eb05a61461029e578063630b5ba1146102b1578063689d84e4146102b95780636dc2cc8c146102dc576101da565b806343b55f351461026857806347e7ef241461027b57806348cd4cb11461028e5780634e71e0c814610296576101da565b806319a78f55116101b857806319a78f551461021a5780631e83409a1461022d57806334ea5389146102425780633d16433e14610255576101da565b8063081e3eda146101df57806316048bc4146101fd57806317caf6f114610212575b600080fd5b6101e76103ee565b6040516101f491906119b0565b60405180910390f35b6102056103f4565b6040516101f49190611758565b6101e7610403565b6101e76102283660046115d7565b610409565b61024061023b3660046115bc565b610442565b005b610240610250366004611635565b610532565b6101e76102633660046115bc565b6105f2565b6101e76102763660046115bc565b610604565b61024061028936600461160b565b61065c565b6101e7610763565b610240610769565b6102406102ac36600461169d565b6107f7565b610240610931565b6102cc6102c736600461169d565b610954565b6040516101f494939291906117a9565b6101e76102ea3660046115bc565b610995565b6102406102fd3660046115bc565b6109b0565b6102406103103660046116f0565b610a27565b610205610a65565b6101e7610a74565b6103386103333660046116cd565b610a7a565b6040516101f49291906119b9565b610205610a9e565b61024061035c366004611635565b610aad565b610240610c50565b6101e76103773660046115bc565b610d46565b6101e761038a3660046115bc565b610d58565b61024061039d3660046115bc565b610f25565b6102406103b036600461160b565b610faa565b6102406103c33660046115bc565b6110cf565b6101e76103d63660046115bc565b6110e7565b6101e76103e93660046115d7565b61113b565b60045490565b6000546001600160a01b031681565b60085481565b60008061041584610604565b60009081526006602090815260408083206001600160a01b03871684529091529020549150505b92915050565b600061044d82610604565b6000818152600660209081526040808320338452909152902054909150158061049457506004818154811061047e57fe5b9060005260206000209060040201600101546000145b1561049f575061052f565b6000600482815481106104ae57fe5b600091825260208083208584526006825260408085203386529092529220600490910290910191506104df836107f7565b600061050782600101546104fb84600001548660030154611286565b9063ffffffff6112b016565b905061051b82600001548460030154611286565b600183015561052a33826112d8565b505050505b50565b6000546001600160a01b031633146105655760405162461bcd60e51b815260040161055c906118a1565b60405180910390fd5b801561057357610573610931565b600061057e84610604565b90506105c3836105b76004848154811061059457fe5b9060005260206000209060040201600101546008546112b090919063ffffffff16565b9063ffffffff6113be16565b60088190555082600482815481106105d757fe5b90600052602060002090600402016001018190555050505050565b60056020526000908152604090205481565b6001600160a01b038116600090815260056020526040812054829061063b5760405162461bcd60e51b815260040161055c906118c4565b50506001600160a01b03166000908152600560205260409020546000190190565b600061066783610604565b905060006004828154811061067857fe5b600091825260208083208584526006825260408085203386529092529220600490910290910191506106a9836107f7565b8054156106da5760006106cc82600101546104fb84600001548660030154611286565b90506106d833826112d8565b505b81546106f7906001600160a01b031633308763ffffffff6113ea16565b8054610709908563ffffffff6113be16565b808255600383015461071b9190611286565b6001820155604051839033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15906107549088906119b0565b60405180910390a35050505050565b60095481565b6001546001600160a01b031633146107935760405162461bcd60e51b815260040161055c906117cf565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60006004828154811061080657fe5b9060005260206000209060040201905080600201544311610827575061052f565b80546040516370a0823160e01b81526000916001600160a01b0316906370a0823190610857903090600401611758565b60206040518083038186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a791906116b5565b9050806108bb57504360029091015561052f565b60006109006008546108f485600101546108e86003546108e88960020154436112b090919063ffffffff16565b9063ffffffff61144816565b9063ffffffff61148216565b905061092061090f82846114ac565b60038501549063ffffffff6113be16565b600384015550504360029091015550565b60045460005b8181101561095057610948816107f7565b600101610937565b5050565b6004818154811061096157fe5b600091825260209091206004909102018054600182015460028301546003909301546001600160a01b039092169350919084565b6001600160a01b031660009081526007602052604090205490565b60006109bb82610604565b90506000600482815481106109cc57fe5b60009182526020808320858452600682526040808520338087529352909320805460049093029093018054909450610a17926001600160a01b0391909116919063ffffffff6114ca16565b6000808255600190910155505050565b6000546001600160a01b03163314610a515760405162461bcd60e51b815260040161055c906118a1565b8015610a5f57610a5f610931565b50600355565b6001546001600160a01b031681565b60035481565b60066020908152600092835260408084209091529082529020805460019091015482565b6002546001600160a01b031681565b6001600160a01b038316600090815260056020526040902054839015610ae55760405162461bcd60e51b815260040161055c9061195d565b6000546001600160a01b03163314610b0f5760405162461bcd60e51b815260040161055c906118a1565b8115610b1d57610b1d610931565b60006009544311610b3057600954610b32565b435b600854909150610b48908563ffffffff6113be16565b600855604080516080810182526001600160a01b0396871680825260208083019788528284019485526000606084018181526004805460018101825581845295517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b96820296870180546001600160a01b03191691909d1617909b5598517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19c85015594517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19d84015596517f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19e909201919091559554958252600590945292909220929092555050565b6004546000805b82811015610d3b5760008181526006602090815260408083203384529091529020541580610ca3575060048181548110610c8d57fe5b9060005260206000209060040201600101546000145b15610cad57610d33565b600060048281548110610cbc57fe5b60009182526020808320858452600682526040808520338652909252922060049091029091019150610ced836107f7565b610d17610d0a82600101546104fb84600001548660030154611286565b859063ffffffff6113be16565b9350610d2b81600001548360030154611286565b600190910155505b600101610c57565b5061095033826112d8565b60076020526000908152604090205481565b60045460009081805b82811015610f1d5760008181526006602090815260408083206001600160a01b03891684529091529020541580610db6575060048181548110610da057fe5b9060005260206000209060040201600101546000145b15610dc057610f15565b600060048281548110610dcf57fe5b600091825260208083208584526006825260408085206001600160a01b038c81168752935280852060049485029092016003810154815492516370a0823160e01b815291975092959294929391909116916370a0823191610e3291309101611758565b60206040518083038186803b158015610e4a57600080fd5b505afa158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8291906116b5565b9050836002015443118015610e9657508015155b15610ee8576000610ec86008546108f487600101546108e86003546108e88b60020154436112b090919063ffffffff16565b9050610ee4610ed782846114ac565b849063ffffffff6113be16565b9250505b610f0e610f0184600101546104fb866000015486611286565b879063ffffffff6113be16565b9550505050505b600101610d61565b509392505050565b6000546001600160a01b03163314610f4f5760405162461bcd60e51b815260040161055c906118a1565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000610fb583610604565b9050600060048281548110610fc657fe5b60009182526020808320858452600682526040808520338652909252922080546004909202909201925084111561100f5760405162461bcd60e51b815260040161055c90611876565b611018836107f7565b600061103482600101546104fb84600001548660030154611286565b905061104033826112d8565b8154611052908663ffffffff6112b016565b80835560038401546110649190611286565b60018301558254611085906001600160a01b0316338763ffffffff6114ca16565b83336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568876040516110bf91906119b0565b60405180910390a3505050505050565b60006110db8233610409565b90506109508282610faa565b6000806110f383610604565b905060006004828154811061110457fe5b906000526020600020906004020190506111336008546108f4836001015460035461144890919063ffffffff16565b949350505050565b60008061114784610604565b905060006004828154811061115857fe5b600091825260208083208584526006825260408085206001600160a01b038a81168752935280852060049485029092016003810154815492516370a0823160e01b815291975092959294929391909116916370a08231916111bb91309101611758565b60206040518083038186803b1580156111d357600080fd5b505afa1580156111e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120b91906116b5565b905083600201544311801561121f57508015155b156112645760006112516008546108f487600101546108e86003546108e88b60020154436112b090919063ffffffff16565b9050611260610ed782846114ac565b9250505b61127a83600101546104fb856000015485611286565b98975050505050505050565b6000670de0b6b3a76400006112a1848463ffffffff61144816565b816112a857fe5b049392505050565b6000828211156112d25760405162461bcd60e51b815260040161055c90611853565b50900390565b6002546040516310b3879160e11b81526001600160a01b03909116906321670f229061130a9085908590600401611790565b600060405180830381600087803b15801561132457600080fd5b505af1158015611338573d6000803e3d6000fd5b5050506001600160a01b03831660009081526007602052604090205461136591508263ffffffff6113be16565b6001600160a01b038316600081815260076020526040908190209290925590517f47cee97cb7acd717b3c0aa1435d004cd5b3c8c57d70dbceb4e4458bbd60e39d4906113b29084906119b0565b60405180910390a25050565b6000828201838110156113e35760405162461bcd60e51b815260040161055c906118f0565b9392505050565b611442846323b872dd60e01b85858560405160240161140b9392919061176c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526114ee565b50505050565b6000826114575750600061043c565b8282028284828161146457fe5b04146113e35760405162461bcd60e51b815260040161055c9061198d565b60008082116114a35760405162461bcd60e51b815260040161055c9061182b565b8183816112a857fe5b60006113e3826108f485670de0b6b3a764000063ffffffff61144816565b6114e98363a9059cbb60e01b848460405160240161140b929190611790565b505050565b60006060836001600160a01b03168360405161150a919061171f565b6000604051808303816000865af19150503d8060008114611547576040519150601f19603f3d011682016040523d82523d6000602084013e61154c565b606091505b50915091508161156e5760405162461bcd60e51b815260040161055c906117f6565b80511561144257808060200190518101906115899190611681565b6114425760405162461bcd60e51b815260040161055c90611913565b80356001600160a01b038116811461043c57600080fd5b6000602082840312156115cd578081fd5b6113e383836115a5565b600080604083850312156115e9578081fd5b6115f384846115a5565b915061160284602085016115a5565b90509250929050565b6000806040838503121561161d578182fd5b61162784846115a5565b946020939093013593505050565b600080600060608486031215611649578081fd5b83356001600160a01b038116811461165f578182fd5b9250602084013591506040840135611676816119c7565b809150509250925092565b600060208284031215611692578081fd5b81516113e3816119c7565b6000602082840312156116ae578081fd5b5035919050565b6000602082840312156116c6578081fd5b5051919050565b600080604083850312156116df578182fd5b8235915061160284602085016115a5565b60008060408385031215611702578182fd5b823591506020830135611714816119c7565b809150509250929050565b60008251815b8181101561173f5760208186018101518583015201611725565b8181111561174d5782828501525b509190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0394909416845260208401929092526040830152606082015260800190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b6020808252818101527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604082015260600190565b6020808252600e908201526d2224ab24a224a723afa2a92927a960911b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b6020808252601190820152700eed2e8d0c8e4c2ee40e8dede40daeac6d607b1b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b602080825260129082015271131408151bdad95b88139bdd08115e1a5cdd60721b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b602080825260169082015275131408151bdad95b88105b1c9958591e48115e1a5cdd60521b604082015260600190565b60208082526009908201526826aaa62fa2a92927a960b91b604082015260600190565b90815260200190565b918252602082015260400190565b801515811461052f57600080fdfea2646970667358221220a8bd723ed688f56f7b65ca2821868b375cd1667655d9ad125c2ac974e7ab1ee364736f6c63430006090033

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

00000000000000000000000098878b06940ae243284ca214f92bb71a2b032b8a00000000000000000000000000000000000000000000000000000000001527d7

-----Decoded View---------------
Arg [0] : _dodoToken (address): 0x98878B06940aE243284CA214f92Bb71a2b032B8A
Arg [1] : _startBlock (uint256): 1386455

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000098878b06940ae243284ca214f92bb71a2b032b8a
Arg [1] : 00000000000000000000000000000000000000000000000000000000001527d7


Deployed Bytecode Sourcemap

10221:11992:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12910:96;;;:::i;:::-;;;;;;;;;;;;;;;;460:22;;;:::i;:::-;;;;;;;;12017:34;;;:::i;13164:183::-;;;;;;;;;:::i;20554:617::-;;;;;;;;;:::i;:::-;;14088:390;;;;;;;;;:::i;11692:50::-;;;;;;;;;:::i;13014:142::-;;;;;;;;;:::i;18461:754::-;;;;;;;;;:::i;12108:25::-;;;:::i;1251:230::-;;;:::i;17620:719::-;;;;;;;;;:::i;17363:181::-;;;:::i;11658:27::-;;;;;;;;;:::i;:::-;;;;;;;;;;;16855:121;;;;;;;;;:::i;20202:344::-;;;;;;;;;:::i;14486:197::-;;;;;;;;;:::i;489:26::-;;;:::i;11595:27::-;;;:::i;11800:64::-;;;;;;;;;:::i;:::-;;;;;;;;;11558:30;;;:::i;13399:681::-;;;;;;;;;:::i;21179:749::-;;;:::i;11871:49::-;;;;;;;;;:::i;15613:1234::-;;;;;;;;;:::i;1078:165::-;;;;;;;;;:::i;19223:741::-;;;;;;;;;:::i;19972:159::-;;;;;;;;;:::i;16984:247::-;;;;;;;;;:::i;14740:865::-;;;;;;;;;:::i;12910:96::-;12982:9;:16;12910:96;:::o;460:22::-;;;-1:-1:-1;;;;;460:22:0;;:::o;12017:34::-;;;;:::o;13164:183::-;13244:7;13264:11;13278:16;13285:8;13278:6;:16::i;:::-;13312:13;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;13312:20:0;;;;;;;;;:27;;-1:-1:-1;;13164:183:0;;;;;:::o;20554:617::-;20605:11;20619:16;20626:8;20619:6;:16::i;:::-;20650:13;;;;:8;:13;;;;;;;;20664:10;20650:25;;;;;;;:32;20605:30;;-1:-1:-1;20650:37:0;;:71;;;20691:9;20701:3;20691:14;;;;;;;;;;;;;;;;;;:25;;;20720:1;20691:30;20650:71;20646:122;;;20738:7;;;20646:122;20778:21;20802:9;20812:3;20802:14;;;;;;;;;;;;;;;;20851:13;;;:8;:13;;;;;;20865:10;20851:25;;;;;;;20802:14;;;;;;;;-1:-1:-1;20887:15:0;20860:3;20887:10;:15::i;:::-;20913;20931:100;21005:4;:15;;;20931:55;20952:4;:11;;;20965:4;:20;;;20931;:55::i;:::-;:59;:100;:59;:100;:::i;:::-;20913:118;;21060:55;21081:4;:11;;;21094:4;:20;;;21060;:55::i;:::-;21042:15;;;:73;21126:37;21143:10;21155:7;21126:16;:37::i;:::-;20554:617;;;;;;:::o;14088:390::-;856:7;;-1:-1:-1;;;;;856:7:0;842:10;:21;834:43;;;;-1:-1:-1;;;834:43:0;;;;;;;;;;;;;;;;;14231:11:::1;14227:61;;;14259:17;:15;:17::i;:::-;14298:11;14312:16;14319:8;14312:6;:16::i;:::-;14298:30;;14357:63;14408:11;14357:46;14377:9;14387:3;14377:14;;;;;;;;;;;;;;;;;;:25;;;14357:15;;:19;;:46;;;;:::i;:::-;:50:::0;:63:::1;:50;:63;:::i;:::-;14339:15;:81;;;;14459:11;14431:9;14441:3;14431:14;;;;;;;;;;;;;;;;;;:25;;:39;;;;888:1;14088:390:::0;;;:::o;11692:50::-;;;;;;;;;;;;;:::o;13014:142::-;-1:-1:-1;;;;;12643:24:0;;13092:7;12643:24;;;:15;:24;;;;;;13073:8;;12635:59;;;;-1:-1:-1;;;12635:59:0;;;;;;;;;-1:-1:-1;;;;;;;13119:25:0::1;;::::0;;;:15:::1;:25;::::0;;;;;-1:-1:-1;;13119:29:0;;13014:142::o;18461:754::-;18531:11;18545:16;18552:8;18545:6;:16::i;:::-;18531:30;;18572:21;18596:9;18606:3;18596:14;;;;;;;;;;;;;;;;18645:13;;;:8;:13;;;;;;18659:10;18645:25;;;;;;;18596:14;;;;;;;;-1:-1:-1;18681:15:0;18654:3;18681:10;:15::i;:::-;18711:11;;:15;18707:226;;18743:15;18761:108;18839:4;:15;;;18761:55;18782:4;:11;;;18795:4;:20;;;18761;:55::i;:108::-;18743:126;;18884:37;18901:10;18913:7;18884:16;:37::i;:::-;18707:226;;18950:12;;18943:82;;-1:-1:-1;;;;;18950:12:0;18989:10;19010:4;19017:7;18943:82;:37;:82;:::i;:::-;19050:11;;:24;;19066:7;19050:24;:15;:24;:::i;:::-;19036:38;;;19137:20;;;;19103:55;;19036:38;19103:20;:55::i;:::-;19085:15;;;:73;19174:33;;19194:3;;19182:10;;19174:33;;;;19199:7;;19174:33;;;;;;;;;;18461:754;;;;;:::o;12108:25::-;;;;:::o;1251:230::-;1319:11;;-1:-1:-1;;;;;1319:11:0;1305:10;:25;1297:51;;;;-1:-1:-1;;;1297:51:0;;;;;;;;;1394:11;;;1385:7;;1364:42;;-1:-1:-1;;;;;1394:11:0;;;;1385:7;;;;1364:42;;;1427:11;;;;1417:21;;-1:-1:-1;;;;;;1417:21:0;;;-1:-1:-1;;;;;1427:11:0;;1417:21;;;;1449:24;;;1251:230::o;17620:719::-;17672:21;17696:9;17706:4;17696:15;;;;;;;;;;;;;;;;;;17672:39;;17742:4;:20;;;17726:12;:36;17722:75;;17779:7;;;17722:75;17833:12;;17826:45;;-1:-1:-1;;;17826:45:0;;17807:16;;-1:-1:-1;;;;;17833:12:0;;17826:30;;:45;;17865:4;;17826:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17807:64;-1:-1:-1;17886:13:0;17882:102;;-1:-1:-1;17939:12:0;17916:20;;;;:35;17966:7;;17882:102;17994:18;18015:168;18167:15;;18015:133;18132:4;:15;;;18015:98;18100:12;;18015:66;18060:4;:20;;;18015:26;:44;;:66;;;;:::i;:::-;:84;:98;:84;:98;:::i;:133::-;:151;:168;:151;:168;:::i;:::-;17994:189;;18217:68;18242:42;18263:10;18275:8;18242:20;:42::i;:::-;18217:20;;;;;:68;:24;:68;:::i;:::-;18194:20;;;:91;-1:-1:-1;;18319:12:0;18296:20;;;;:35;17620:719;:::o;17363:181::-;17425:9;:16;17408:14;17452:85;17480:6;17474:3;:12;17452:85;;;17510:15;17521:3;17510:10;:15::i;:::-;17488:5;;17452:85;;;;17363:181;:::o;11658:27::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11658:27:0;;;;-1:-1:-1;11658:27:0;;;:::o;16855:121::-;-1:-1:-1;;;;;16947:21:0;16920:7;16947:21;;;:14;:21;;;;;;;16855:121::o;20202:344::-;20265:11;20279:16;20286:8;20279:6;:16::i;:::-;20265:30;;20306:21;20330:9;20340:3;20330:14;;;;;;;;;;;;;;;;20379:13;;;:8;:13;;;;;;20393:10;20379:25;;;;;;;;20470:11;;20330:14;;;;;;;20422:12;;20330:14;;-1:-1:-1;20415:67:0;;-1:-1:-1;;;;;20422:12:0;;;;;20393:10;20415:67;:33;:67;:::i;:::-;20507:1;20493:15;;;20519;;;;:19;-1:-1:-1;;;20202:344:0:o;14486:197::-;856:7;;-1:-1:-1;;;;;856:7:0;842:10;:21;834:43;;;;-1:-1:-1;;;834:43:0;;;;;;;;;14580:11:::1;14576:61;;;14608:17;:15;:17::i;:::-;-1:-1:-1::0;14647:12:0::1;:28:::0;14486:197::o;489:26::-;;;-1:-1:-1;;;;;489:26:0;;:::o;11595:27::-;;;;:::o;11800:64::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11558:30::-;;;-1:-1:-1;;;;;11558:30:0;;:::o;13399:681::-;-1:-1:-1;;;;;12783:24:0;;;;;;:15;:24;;;;;;13533:8;;12783:29;12775:64;;;;-1:-1:-1;;;12775:64:0;;;;;;;;;856:7:::1;::::0;-1:-1:-1;;;;;856:7:0::1;842:10;:21;834:43;;;;-1:-1:-1::0;;;834:43:0::1;;;;;;;;;13568:11:::2;13564:61;;;13596:17;:15;:17::i;:::-;13635:23;13676:10;;13661:12;:25;:53;;13704:10;;13661:53;;;13689:12;13661:53;13743:15;::::0;13635:79;;-1:-1:-1;13743:32:0::2;::::0;13763:11;13743:32:::2;:19;:32;:::i;:::-;13725:15;:50:::0;13815:191:::2;::::0;;::::2;::::0;::::2;::::0;;-1:-1:-1;;;;;13815:191:0;;::::2;::::0;;;::::2;::::0;;::::2;::::0;;;;;;;;;-1:-1:-1;13815:191:0;;;;;;13786:9:::2;:231:::0;;::::2;::::0;::::2;::::0;;;;;;;;;;::::2;::::0;;::::2;::::0;;-1:-1:-1;;;;;;13786:231:0::2;::::0;;;::::2;;::::0;;;;;;;;;;;;;;;;;;;;;;;;;14056:16;;14028:25;;;:15:::2;:25:::0;;;;;;;:44;;;;-1:-1:-1;;13399:681:0:o;21179:749::-;21234:9;:16;21217:14;;21291:582;21319:6;21313:3;:12;21291:582;;;21353:13;;;;:8;:13;;;;;;;;21367:10;21353:25;;;;;;;:32;:37;;:71;;;21394:9;21404:3;21394:14;;;;;;;;;;;;;;;;;;:25;;;21423:1;21394:30;21353:71;21349:132;;;21445:8;;21349:132;21495:21;21519:9;21529:3;21519:14;;;;;;;;;;;;;;;;21572:13;;;:8;:13;;;;;;21586:10;21572:25;;;;;;;21519:14;;;;;;;;-1:-1:-1;21612:15:0;21581:3;21612:10;:15::i;:::-;21652:121;21682:76;21742:4;:15;;;21682:55;21703:4;:11;;;21716:4;:20;;;21682;:55::i;:76::-;21652:7;;:121;:11;:121;:::i;:::-;21642:131;;21806:55;21827:4;:11;;;21840:4;:20;;;21806;:55::i;:::-;21788:15;;;;:73;-1:-1:-1;21291:582:0;21327:5;;21291:582;;;;21883:37;21900:10;21912:7;21883:16;:37::i;11871:49::-;;;;;;;;;;;;;:::o;15613:1234::-;15717:9;:16;15680:7;;;;15778:1033;15806:6;15800:3;:12;15778:1033;;;15840:13;;;;:8;:13;;;;;;;;-1:-1:-1;;;;;15840:20:0;;;;;;;;;:27;:32;;:66;;;15876:9;15886:3;15876:14;;;;;;;;;;;;;;;;;;:25;;;15905:1;15876:30;15840:66;15836:127;;;15927:8;;15836:127;15977:21;16001:9;16011:3;16001:14;;;;;;;;;;;;;;;;16054:13;;;:8;:13;;;;;;-1:-1:-1;;;;;16054:20:0;;;;;;;;;;16001:14;;;;;;;16115:20;;;;16176:12;;16169:45;;-1:-1:-1;;;16169:45:0;;16001:14;;-1:-1:-1;16054:20:0;;16115;;16001:14;;16176:12;;;;;16169:30;;:45;;16208:4;;16169:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16150:64;;16248:4;:20;;;16233:12;:35;:52;;;;-1:-1:-1;16272:13:0;;;16233:52;16229:422;;;16306:18;16327:208;16519:15;;16327:165;16476:4;:15;;;16327:122;16436:12;;16327:82;16388:4;:20;;;16327:34;:60;;:82;;;;:::i;:208::-;16306:229;;16572:63;16592:42;16613:10;16625:8;16592:20;:42::i;:::-;16572:15;;:63;:19;:63;:::i;:::-;16554:81;;16229:422;;16679:120;16713:71;16768:4;:15;;;16713:50;16734:4;:11;;;16747:15;16713:20;:50::i;:71::-;16679:11;;:120;:15;:120;:::i;:::-;16665:134;;15778:1033;;;;;15814:5;;15778:1033;;;-1:-1:-1;16828:11:0;15613:1234;-1:-1:-1;;;15613:1234:0:o;1078:165::-;856:7;;-1:-1:-1;;;;;856:7:0;842:10;:21;834:43;;;;-1:-1:-1;;;834:43:0;;;;;;;;;1184:7:::1;::::0;;1158:44:::1;::::0;-1:-1:-1;;;;;1158:44:0;;::::1;::::0;1184:7;::::1;::::0;1158:44:::1;::::0;::::1;1213:11;:22:::0;;-1:-1:-1;;;;;;1213:22:0::1;-1:-1:-1::0;;;;;1213:22:0;;;::::1;::::0;;;::::1;::::0;;1078:165::o;19223:741::-;19294:11;19308:16;19315:8;19308:6;:16::i;:::-;19294:30;;19335:21;19359:9;19369:3;19359:14;;;;;;;;;;;;;;;;19408:13;;;:8;:13;;;;;;19422:10;19408:25;;;;;;;19452:11;;19359:14;;;;;;;;-1:-1:-1;19452:22:0;-1:-1:-1;19452:22:0;19444:52;;;;-1:-1:-1;;;19444:52:0;;;;;;;;;19507:15;19518:3;19507:10;:15::i;:::-;19533;19551:100;19625:4;:15;;;19551:55;19572:4;:11;;;19585:4;:20;;;19551;:55::i;:100::-;19533:118;;19662:37;19679:10;19691:7;19662:16;:37::i;:::-;19724:11;;:24;;19740:7;19724:24;:15;:24;:::i;:::-;19710:38;;;19811:20;;;;19777:55;;19710:38;19777:20;:55::i;:::-;19759:15;;;:73;19850:12;;19843:63;;-1:-1:-1;;;;;19850:12:0;19885:10;19898:7;19843:63;:33;:63;:::i;:::-;19943:3;19931:10;-1:-1:-1;;;;;19922:34:0;;19948:7;19922:34;;;;;;;;;;;;;;;19223:741;;;;;;:::o;19972:159::-;20029:15;20047:38;20064:8;20074:10;20047:16;:38::i;:::-;20029:56;;20096:27;20105:8;20115:7;20096:8;:27::i;16984:247::-;17052:7;17072:11;17086:16;17093:8;17086:6;:16::i;:::-;17072:30;;17113:21;17137:9;17147:3;17137:14;;;;;;;;;;;;;;;;;;17113:38;;17169:54;17207:15;;17169:33;17186:4;:15;;;17169:12;;:16;;:33;;;;:::i;:54::-;17162:61;16984:247;-1:-1:-1;;;;16984:247:0:o;14740:865::-;14822:7;14842:11;14856:16;14863:8;14856:6;:16::i;:::-;14842:30;;14883:21;14907:9;14917:3;14907:14;;;;;;;;;;;;;;;;14956:13;;;:8;:13;;;;;;-1:-1:-1;;;;;14956:20:0;;;;;;;;;;14907:14;;;;;;;15013:20;;;;15070:12;;15063:45;;-1:-1:-1;;;15063:45:0;;14907:14;;-1:-1:-1;14956:20:0;;15013;;14907:14;;15070:12;;;;;15063:30;;:45;;15102:4;;15063:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15044:64;;15138:4;:20;;;15123:12;:35;:52;;;;-1:-1:-1;15162:13:0;;;15123:52;15119:390;;;15192:18;15213:188;15385:15;;15213:149;15346:4;:15;;;15213:110;15310:12;;15213:74;15266:4;:20;;;15213:30;:52;;:74;;;;:::i;:188::-;15192:209;;15434:63;15454:42;15475:10;15487:8;15454:20;:42::i;15434:63::-;15416:81;;15119:390;;15526:71;15581:4;:15;;;15526:50;15547:4;:11;;;15560:15;15526:20;:50::i;:71::-;15519:78;14740:865;-1:-1:-1;;;;;;;;14740:865:0:o;3204:127::-;3272:7;3316:6;3299:13;:6;3310:1;3299:13;:10;:13;:::i;:::-;:24;;;;;;;3204:127;-1:-1:-1;;;3204:127:0:o;2357:137::-;2415:7;2448:1;2443;:6;;2435:28;;;;-1:-1:-1;;;2435:28:0;;;;;;;;;-1:-1:-1;2481:5:0;;;2357:137::o;21972:238::-;22065:15;;22048:54;;-1:-1:-1;;;22048:54:0;;-1:-1:-1;;;;;22065:15:0;;;;22048:40;;:54;;22089:3;;22094:7;;22048:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;22135:19:0;;;;;;:14;:19;;;;;;:32;;-1:-1:-1;22159:7:0;22135:32;:23;:32;:::i;:::-;-1:-1:-1;;;;;22113:19:0;;;;;;:14;:19;;;;;;;:54;;;;22183:19;;;;;;22194:7;;22183:19;;;;;;;;;;21972:238;;:::o;2502:161::-;2560:7;2592:5;;;2616:6;;;;2608:28;;;;-1:-1:-1;;;2608:28:0;;;;;;;;;2654:1;2502:161;-1:-1:-1;;;2502:161:0:o;7287:285::-;7431:133;7465:5;7508:27;;;7537:4;7543:2;7547:5;7485:68;;;;;;;;;;;;;;;-1:-1:-1;;7485:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;7485:68:0;-1:-1:-1;;;;;;7485:68:0;;;;;;;;;;7431:19;:133::i;:::-;7287:285;;;;:::o;1678:226::-;1736:7;1760:6;1756:47;;-1:-1:-1;1790:1:0;1783:8;;1756:47;1827:5;;;1831:1;1827;:5;:1;1851:5;;;;;:10;1843:32;;;;-1:-1:-1;;;1843:32:0;;;;;;;;1912:141;1970:7;2002:1;1998;:5;1990:32;;;;-1:-1:-1;;;1990:32:0;;;;;;;;;2044:1;2040;:5;;;;3478:128;3546:7;3573:25;3596:1;3573:18;:6;3584;3573:18;:10;:18;:::i;7068:211::-;7185:86;7205:5;7235:23;;;7260:2;7264:5;7212:58;;;;;;;;;;7185:86;7068:211;;;:::o;8641:1046::-;9301:12;9315:23;9350:5;-1:-1:-1;;;;;9342:19:0;9362:4;9342:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9300:67;;;;9386:7;9378:52;;;;-1:-1:-1;;;9378:52:0;;;;;;;;;9447:17;;:21;9443:237;;9602:10;9591:30;;;;;;;;;;;;;;9583:85;;;;-1:-1:-1;;;9583:85:0;;;;;;;;5:130:-1;72:20;;-1:-1;;;;;15711:54;;16192:35;;16182:2;;16241:1;;16231:12;686:241;;790:2;778:9;769:7;765:23;761:32;758:2;;;-1:-1;;796:12;758:2;858:53;903:7;879:22;858:53;;934:366;;;1055:2;1043:9;1034:7;1030:23;1026:32;1023:2;;;-1:-1;;1061:12;1023:2;1123:53;1168:7;1144:22;1123:53;;;1113:63;;1231:53;1276:7;1213:2;1256:9;1252:22;1231:53;;;1221:63;;1017:283;;;;;;1307:366;;;1428:2;1416:9;1407:7;1403:23;1399:32;1396:2;;;-1:-1;;1434:12;1396:2;1496:53;1541:7;1517:22;1496:53;;;1486:63;1586:2;1625:22;;;;475:20;;-1:-1;;;1390:283;1680:485;;;;1815:2;1803:9;1794:7;1790:23;1786:32;1783:2;;;-1:-1;;1821:12;1783:2;72:20;;-1:-1;;;;;15711:54;;16192:35;;16182:2;;-1:-1;;16231:12;16182:2;1873:63;-1:-1;1973:2;2012:22;;475:20;;-1:-1;2081:2;2117:22;;206:20;231:30;206:20;231:30;;;2089:60;;;;1777:388;;;;;;2172:257;;2284:2;2272:9;2263:7;2259:23;2255:32;2252:2;;;-1:-1;;2290:12;2252:2;354:6;348:13;366:30;390:5;366:30;;2436:241;;2540:2;2528:9;2519:7;2515:23;2511:32;2508:2;;;-1:-1;;2546:12;2508:2;-1:-1;475:20;;2502:175;-1:-1;2502:175;2684:263;;2799:2;2787:9;2778:7;2774:23;2770:32;2767:2;;;-1:-1;;2805:12;2767:2;-1:-1;623:13;;2761:186;-1:-1;2761:186;2954:366;;;3075:2;3063:9;3054:7;3050:23;3046:32;3043:2;;;-1:-1;;3081:12;3043:2;488:6;475:20;3133:63;;3251:53;3296:7;3233:2;3276:9;3272:22;3251:53;;3327:360;;;3445:2;3433:9;3424:7;3420:23;3416:32;3413:2;;;-1:-1;;3451:12;3413:2;488:6;475:20;3503:63;;3603:2;3643:9;3639:22;206:20;231:30;255:5;231:30;;;3611:60;;;;3407:280;;;;;;7923:271;;3974:5;15093:12;-1:-1;15929:101;15943:6;15940:1;15937:13;15929:101;;;4118:4;16010:11;;;;;16004:18;15991:11;;;15984:39;15958:10;15929:101;;;16045:6;16042:1;16039:13;16036:2;;;-1:-1;16101:6;16096:3;16092:16;16085:27;16036:2;-1:-1;4149:16;;;;;8057:137;-1:-1;;8057:137;8201:222;-1:-1;;;;;15711:54;;;;3765:37;;8328:2;8313:18;;8299:124;8430:444;-1:-1;;;;;15711:54;;;3765:37;;15711:54;;;;8777:2;8762:18;;3765:37;8860:2;8845:18;;7874:37;;;;8613:2;8598:18;;8584:290;8881:333;-1:-1;;;;;15711:54;;;;3765:37;;9200:2;9185:18;;7874:37;9036:2;9021:18;;9007:207;9221:556;-1:-1;;;;;15711:54;;;;3765:37;;9597:2;9582:18;;7874:37;;;;9680:2;9665:18;;7874:37;9763:2;9748:18;;7874:37;9432:3;9417:19;;9403:374;9784:416;9984:2;9998:47;;;4402:2;9969:18;;;15391:19;-1:-1;;;15431:14;;;4418:36;4473:12;;;9955:245;10207:416;10407:2;10421:47;;;10392:18;;;15391:19;4760:34;15431:14;;;4740:55;4814:12;;;10378:245;10630:416;10830:2;10844:47;;;5065:2;10815:18;;;15391:19;-1:-1;;;15431:14;;;5081:37;5137:12;;;10801:245;11053:416;11253:2;11267:47;;;5388:1;11238:18;;;15391:19;-1:-1;;;15431:14;;;5403:32;5454:12;;;11224:245;11476:416;11676:2;11690:47;;;5705:2;11661:18;;;15391:19;-1:-1;;;15431:14;;;5721:40;5780:12;;;11647:245;11899:416;12099:2;12113:47;;;6031:1;12084:18;;;15391:19;-1:-1;;;15431:14;;;6046:32;6097:12;;;12070:245;12322:416;12522:2;12536:47;;;6348:2;12507:18;;;15391:19;-1:-1;;;15431:14;;;6364:41;6424:12;;;12493:245;12745:416;12945:2;12959:47;;;6675:1;12930:18;;;15391:19;-1:-1;;;15431:14;;;6690:32;6741:12;;;12916:245;13168:416;13368:2;13382:47;;;6992:2;13353:18;;;15391:19;7028:34;15431:14;;;7008:55;-1:-1;;;7083:12;;;7076:34;7129:12;;;13339:245;13591:416;13791:2;13805:47;;;7380:2;13776:18;;;15391:19;-1:-1;;;15431:14;;;7396:45;7460:12;;;13762:245;14014:416;14214:2;14228:47;;;7711:1;14199:18;;;15391:19;-1:-1;;;15431:14;;;7726:32;7777:12;;;14185:245;14437:222;7874:37;;;14564:2;14549:18;;14535:124;14666:333;7874:37;;;14985:2;14970:18;;7874:37;14821:2;14806:18;;14792:207;16257:111;16338:5;15623:13;15616:21;16316:5;16313:32;16303:2;;16359:1;;16349:12

Swarm Source

ipfs://7db8a939598119439cad8a5fbc2c960bb37b3935ba122acca18c6b5e1471b676

Block Transaction Gas Used Reward
view all blocks collator

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