ETH Price: $2,343.63 (-2.85%)
Gas: 6.45 Gwei

Contract

0x6D9438CD0DF10a78De373f5d9B5b5E7227E3822D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Exit127584802021-07-04 2:46:281160 days ago1625366788IN
0x6D9438CD...227E3822D
0 ETH0.000649584
Get Reward118565012021-02-14 18:41:071299 days ago1613328067IN
0x6D9438CD...227E3822D
0 ETH0.00757428120
Exit118564922021-02-14 18:38:501299 days ago1613327930IN
0x6D9438CD...227E3822D
0 ETH0.02490084120
Get Reward118041042021-02-06 17:27:341307 days ago1612632454IN
0x6D9438CD...227E3822D
0 ETH0.01313956208
Exit116545022021-01-14 17:14:321330 days ago1610644472IN
0x6D9438CD...227E3822D
0 ETH0.0150994866
Exit116513452021-01-14 5:21:191331 days ago1610601679IN
0x6D9438CD...227E3822D
0 ETH0.0144131463
Exit116507502021-01-14 3:08:001331 days ago1610593680IN
0x6D9438CD...227E3822D
0 ETH0.0098338846
Exit116459632021-01-13 10:00:451331 days ago1610532045IN
0x6D9438CD...227E3822D
0 ETH0.0091925443
Exit116318262021-01-11 6:00:291334 days ago1610344829IN
0x6D9438CD...227E3822D
0 ETH0.0127078260
Exit114373112020-12-12 9:33:361363 days ago1607765616IN
0x6D9438CD...227E3822D
0 ETH0.0046817821.9000016
Exit114170452020-12-09 6:24:551367 days ago1607495095IN
0x6D9438CD...227E3822D
0 ETH0.0080555548
Stake114111102020-12-08 8:34:261367 days ago1607416466IN
0x6D9438CD...227E3822D
0 ETH0.0073628746.50601998
Get Reward113974362020-12-06 6:10:561370 days ago1607235056IN
0x6D9438CD...227E3822D
0 ETH0.0018429717.00000145
Get Reward113950922020-12-05 21:33:381370 days ago1607204018IN
0x6D9438CD...227E3822D
0 ETH0.0020272618.7
Exit113799842020-12-03 13:45:541372 days ago1607003154IN
0x6D9438CD...227E3822D
0 ETH0.006863430.00000156
Exit113751322020-12-02 19:55:561373 days ago1606938956IN
0x6D9438CD...227E3822D
0 ETH0.0036342617
Exit113658172020-12-01 9:33:021374 days ago1606815182IN
0x6D9438CD...227E3822D
0 ETH0.0155570468
Exit113608072020-11-30 14:56:191375 days ago1606748179IN
0x6D9438CD...227E3822D
0 ETH0.0331731145
Exit113564952020-11-29 23:16:591376 days ago1606691819IN
0x6D9438CD...227E3822D
0 ETH0.0031262917.1
Exit113549232020-11-29 17:16:381376 days ago1606670198IN
0x6D9438CD...227E3822D
0 ETH0.0063773138
Exit113517532020-11-29 5:31:581377 days ago1606627918IN
0x6D9438CD...227E3822D
0 ETH0.0025867312.1
Get Reward113458572020-11-28 8:13:351377 days ago1606551215IN
0x6D9438CD...227E3822D
0 ETH0.0015177414
Get Reward113446712020-11-28 3:48:061378 days ago1606535286IN
0x6D9438CD...227E3822D
0 ETH0.0015827814.6
Get Reward113440222020-11-28 1:29:251378 days ago1606526965IN
0x6D9438CD...227E3822D
0 ETH0.0017345616
Exit113398482020-11-27 9:42:321378 days ago1606470152IN
0x6D9438CD...227E3822D
0 ETH0.0057720627
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x859a9d0d...17e1De535
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
StakingRewards

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-10-30
*/

library Math {
  function max(uint a, uint b) internal pure returns (uint) {
    return a >= b ? a : b;
  }

  function min(uint a, uint b) internal pure returns (uint) {
    return a < b ? a : b;
  }

  function average(uint a, uint b) internal pure returns (uint) {
    // (a + b) / 2 can overflow, so we distribute
    return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
  }
}

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) {
        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;
    }
}

contract Ownable {

  address public owner;

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

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

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

  function isOwner() public view returns (bool) {
    return msg.sender == owner;
  }

  function renounceOwnership() public onlyOwner {
    emit OwnershipTransferred(owner, address(0));
    owner = address(0);
  }

  function transferOwnership(address newOwner) public onlyOwner {
    _transferOwnership(newOwner);
  }

  function _transferOwnership(address newOwner) internal {
    require(newOwner != address(0), "Ownable: new owner is the zero address");
    emit OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }
}

interface IERC20 {
  function totalSupply() external view returns (uint);
  function balanceOf(address account) external view returns (uint);
  function transfer(address recipient, uint amount) external returns (bool);
  function allowance(address owner, address spender) external view returns (uint);
  function approve(address spender, uint amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}

interface IRewardReceiver {

  function pushRewards() external;
}

contract StakingRewards is Ownable {

  using SafeMath for uint;

  IERC20 public lpt;
  IERC20 public rewardToken;

  uint public totalSupply;
  uint public DURATION = 7 days;
  IRewardReceiver public rewardReceiver;

  uint public starttime;
  uint public periodFinish = 0;
  uint public rewardRate = 0;
  uint public lastUpdateTime;
  uint public rewardPerTokenStored;

  mapping(address => uint) public userRewardPerTokenPaid;
  mapping(address => uint) public rewards;
  mapping(address => uint) public balanceOf;

  event RewardAdded(uint reward);
  event Staked(address indexed user, uint amount);
  event Withdrawn(address indexed user, uint amount);
  event RewardPaid(address indexed user, uint reward);

  constructor(address _rewardToken, address _lptoken, IRewardReceiver _rewardReceiver) public {
    rewardToken  = IERC20(_rewardToken);
    lpt = IERC20(_lptoken);
    rewardReceiver = _rewardReceiver;
    starttime = block.timestamp;
  }

  modifier checkStart() {
    require(block.timestamp >= starttime, "not start");
    _;
  }

  modifier updateReward(address _account) {
    rewardPerTokenStored = rewardPerToken();
    lastUpdateTime = lastTimeRewardApplicable();
    if (_account != address(0)) {
      rewards[_account] = earned(_account);
      userRewardPerTokenPaid[_account] = rewardPerTokenStored;
    }
    _;
  }

  modifier pullRewards() {
    rewardReceiver.pushRewards();
    _;
  }

  function lastTimeRewardApplicable() public view returns (uint) {
    return Math.min(block.timestamp, periodFinish);
  }

  function rewardPerToken() public view returns (uint) {
    if (totalSupply == 0) {
      return rewardPerTokenStored;
    }
    return
      rewardPerTokenStored.add(
        lastTimeRewardApplicable()
          .sub(lastUpdateTime)
          .mul(rewardRate)
          .mul(1e18)
          .div(totalSupply)
      );
  }

  function earned(address _account) public view returns (uint) {
    return
      balanceOf[_account]
        .mul(rewardPerToken().sub(userRewardPerTokenPaid[_account]))
        .div(1e18)
        .add(rewards[_account]);
  }

  // stake visibility is public as overriding LPTokenWrapper's stake() function
  function stake(uint _amount) public pullRewards updateReward(msg.sender) checkStart {
    require(_amount > 0, "Cannot stake 0");
    totalSupply = totalSupply.add(_amount);
    balanceOf[msg.sender] = balanceOf[msg.sender].add(_amount);
    lpt.transferFrom(msg.sender, address(this), _amount);
    emit Staked(msg.sender, _amount);
  }

  function withdraw(uint _amount) public pullRewards updateReward(msg.sender) checkStart {
    require(_amount > 0, "Cannot withdraw 0");
    totalSupply = totalSupply.sub(_amount);
    balanceOf[msg.sender] = balanceOf[msg.sender].sub(_amount);
    lpt.transfer(msg.sender, _amount);
    emit Withdrawn(msg.sender, _amount);
  }

  function exit() public {
    withdraw(balanceOf[msg.sender]);
    getReward();
  }

  function getReward() public updateReward(msg.sender) checkStart {
    uint reward = earned(msg.sender);
    if (reward > 0) {
      rewards[msg.sender] = 0;
      rewardToken.transfer(msg.sender, reward);
      emit RewardPaid(msg.sender, reward);
    }
  }

  function notifyRewardAmount(uint _reward)
    public
    updateReward(address(0))
  {
    require(msg.sender == owner || msg.sender == address(rewardReceiver), "invalid reward source");

    if (block.timestamp > starttime) {
      if (block.timestamp >= periodFinish) {
        rewardRate = _reward.div(DURATION);
      } else {
        uint remaining = periodFinish.sub(block.timestamp);
        uint leftover = remaining.mul(rewardRate);
        rewardRate = _reward.add(leftover).div(DURATION);
      }
      lastUpdateTime = block.timestamp;
      periodFinish = block.timestamp.add(DURATION);
      emit RewardAdded(_reward);
    } else {
      rewardRate = _reward.div(DURATION);
      lastUpdateTime = starttime;
      periodFinish = starttime.add(DURATION);
      emit RewardAdded(_reward);
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_rewardToken","type":"address"},{"internalType":"address","name":"_lptoken","type":"address"},{"internalType":"contract IRewardReceiver","name":"_rewardReceiver","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint256","name":"reward","type":"uint256"}],"name":"RewardAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"reward","type":"uint256"}],"name":"RewardPaid","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"earned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdateTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpt","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_reward","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"periodFinish","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardPerToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTokenStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardReceiver","outputs":[{"internalType":"contract IRewardReceiver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"starttime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","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":"address","name":"","type":"address"}],"name":"userRewardPerTokenPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101725760003560e01c80638b876347116100de578063cd3daf9d11610097578063e9fad8ee11610071578063e9fad8ee1461031a578063ebe2b12b14610322578063f2fde38b1461032a578063f7c618c11461035057610172565b8063cd3daf9d14610302578063ce5fc8d01461030a578063df136d651461031257610172565b80638b8763471461028b5780638da58897146102b15780638da5cb5b146102b95780638f32d59b146102c1578063a694fc3a146102dd578063c8f33c91146102fa57610172565b80633c6b16ab116101305780633c6b16ab146102285780633d18b9121461024557806370a082311461024d578063715018a6146102735780637b0a47ee1461027b57806380faa57d1461028357610172565b80628cc262146101775780630700037d146101af57806318160ddd146101d55780631be05289146101dd5780631dac30b0146101e55780632e1a7d4d14610209575b600080fd5b61019d6004803603602081101561018d57600080fd5b50356001600160a01b0316610358565b60408051918252519081900360200190f35b61019d600480360360208110156101c557600080fd5b50356001600160a01b03166103d6565b61019d6103e8565b61019d6103ee565b6101ed6103f4565b604080516001600160a01b039092168252519081900360200190f35b6102266004803603602081101561021f57600080fd5b5035610403565b005b6102266004803603602081101561023e57600080fd5b5035610647565b61022661082a565b61019d6004803603602081101561026357600080fd5b50356001600160a01b03166109a6565b6102266109b8565b61019d610a5b565b61019d610a61565b61019d600480360360208110156102a157600080fd5b50356001600160a01b0316610a75565b61019d610a87565b6101ed610a8d565b6102c9610a9c565b604080519115158252519081900360200190f35b610226600480360360208110156102f357600080fd5b5035610aad565b61019d610cf4565b61019d610cfa565b6101ed610d48565b61019d610d57565b610226610d5d565b61019d610d80565b6102266004803603602081101561034057600080fd5b50356001600160a01b0316610d86565b6101ed610deb565b6001600160a01b0381166000908152600c6020908152604080832054600b9092528220546103d091906103ca90670de0b6b3a7640000906103c4906103a59061039f610cfa565b90610dfa565b6001600160a01b0388166000908152600d602052604090205490610e43565b90610e9c565b90610ede565b92915050565b600c6020526000908152604090205481565b60035481565b60045481565b6005546001600160a01b031681565b600560009054906101000a90046001600160a01b03166001600160a01b0316632a167eb86040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561045357600080fd5b505af1158015610467573d6000803e3d6000fd5b5050505033610474610cfa565b600a5561047f610a61565b6009556001600160a01b038116156104c65761049a81610358565b6001600160a01b0382166000908152600c6020908152604080832093909355600a54600b909152919020555b600654421015610509576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610552576040805162461bcd60e51b8152602060048201526011602482015270043616e6e6f74207769746864726177203607c1b604482015290519081900360640190fd5b60035461055f9083610dfa565b600355336000908152600d602052604090205461057c9083610dfa565b336000818152600d6020908152604080832094909455600154845163a9059cbb60e01b815260048101949094526024840187905293516001600160a01b039094169363a9059cbb93604480820194918390030190829087803b1580156105e157600080fd5b505af11580156105f5573d6000803e3d6000fd5b505050506040513d602081101561060b57600080fd5b505060408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a25050565b6000610651610cfa565b600a5561065c610a61565b6009556001600160a01b038116156106a35761067781610358565b6001600160a01b0382166000908152600c6020908152604080832093909355600a54600b909152919020555b6000546001600160a01b03163314806106c657506005546001600160a01b031633145b61070f576040805162461bcd60e51b8152602060048201526015602482015274696e76616c69642072657761726420736f7572636560581b604482015290519081900360640190fd5b6006544211156107c957600754421061073857600454610730908390610e9c565b60085561077b565b6007546000906107489042610dfa565b9050600061076160085483610e4390919063ffffffff16565b600454909150610775906103c48684610ede565b60085550505b42600981905560045461078e9190610ede565b6007556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1610826565b6004546107d7908390610e9c565b60085560065460098190556004546107ef9190610ede565b6007556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15b5050565b33610833610cfa565b600a5561083e610a61565b6009556001600160a01b038116156108855761085981610358565b6001600160a01b0382166000908152600c6020908152604080832093909355600a54600b909152919020555b6006544210156108c8576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60006108d333610358565b9050801561082657336000818152600c60209081526040808320839055600254815163a9059cbb60e01b815260048101959095526024850186905290516001600160a01b039091169363a9059cbb9360448083019493928390030190829087803b15801561094057600080fd5b505af1158015610954573d6000803e3d6000fd5b505050506040513d602081101561096a57600080fd5b505060408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25050565b600d6020526000908152604090205481565b6109c0610a9c565b610a11576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60085481565b6000610a6f42600754610f38565b90505b90565b600b6020526000908152604090205481565b60065481565b6000546001600160a01b031681565b6000546001600160a01b0316331490565b600560009054906101000a90046001600160a01b03166001600160a01b0316632a167eb86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610afd57600080fd5b505af1158015610b11573d6000803e3d6000fd5b5050505033610b1e610cfa565b600a55610b29610a61565b6009556001600160a01b03811615610b7057610b4481610358565b6001600160a01b0382166000908152600c6020908152604080832093909355600a54600b909152919020555b600654421015610bb3576040805162461bcd60e51b81526020600482015260096024820152681b9bdd081cdd185c9d60ba1b604482015290519081900360640190fd5b60008211610bf9576040805162461bcd60e51b815260206004820152600e60248201526d043616e6e6f74207374616b6520360941b604482015290519081900360640190fd5b600354610c069083610ede565b600355336000908152600d6020526040902054610c239083610ede565b336000818152600d602090815260408083209490945560015484516323b872dd60e01b815260048101949094523060248501526044840187905293516001600160a01b03909416936323b872dd93606480820194918390030190829087803b158015610c8e57600080fd5b505af1158015610ca2573d6000803e3d6000fd5b505050506040513d6020811015610cb857600080fd5b505060408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050565b60095481565b600060035460001415610d105750600a54610a72565b610a6f610d3f6003546103c4670de0b6b3a7640000610d39600854610d3960095461039f610a61565b90610e43565b600a5490610ede565b6001546001600160a01b031681565b600a5481565b336000908152600d6020526040902054610d7690610403565b610d7e61082a565b565b60075481565b610d8e610a9c565b610ddf576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610de881610f4e565b50565b6002546001600160a01b031681565b6000610e3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610fee565b9392505050565b600082610e52575060006103d0565b82820282848281610e5f57fe5b0414610e3c5760405162461bcd60e51b81526004018080602001828103825260218152602001806111116021913960400191505060405180910390fd5b6000610e3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611085565b600082820183811015610e3c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000818310610f475781610e3c565b5090919050565b6001600160a01b038116610f935760405162461bcd60e51b81526004018080602001828103825260268152602001806110eb6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000818484111561107d5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561104257818101518382015260200161102a565b50505050905090810190601f16801561106f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836110d45760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561104257818101518382015260200161102a565b5060008385816110e057fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a2646970667358221220477548b197d5a4fa9e44548a5a4896f3f2f003c596fa75f764b2109ca7c7aa0864736f6c634300060c0033

Deployed Bytecode Sourcemap

6734:4143:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8676:230;;;;;;;;;;;;;;;;-1:-1:-1;8676:230:0;-1:-1:-1;;;;;8676:230:0;;:::i;:::-;;;;;;;;;;;;;;;;7185:39;;;;;;;;;;;;;;;;-1:-1:-1;7185:39:0;-1:-1:-1;;;;;7185:39:0;;:::i;6860:23::-;;;:::i;6888:29::-;;;:::i;6922:37::-;;;:::i;:::-;;;;-1:-1:-1;;;;;6922:37:0;;;;;;;;;;;;;;9342:333;;;;;;;;;;;;;;;;-1:-1:-1;9342:333:0;;:::i;:::-;;10042:832;;;;;;;;;;;;;;;;-1:-1:-1;10042:832:0;;:::i;9772:264::-;;;:::i;7229:41::-;;;;;;;;;;;;;;;;-1:-1:-1;7229:41:0;-1:-1:-1;;;;;7229:41:0;;:::i;5562:128::-;;;:::i;7025:26::-;;;:::i;8209:122::-;;;:::i;7126:54::-;;;;;;;;;;;;;;;;-1:-1:-1;7126:54:0;-1:-1:-1;;;;;7126:54:0;;:::i;6966:21::-;;;:::i;5141:20::-;;;:::i;5471:85::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;8993:343;;;;;;;;;;;;;;;;-1:-1:-1;8993:343:0;;:::i;7056:26::-;;;:::i;8337:333::-;;;:::i;6806:17::-;;;:::i;7087:32::-;;;:::i;9681:85::-;;;:::i;6992:28::-;;;:::i;5696:103::-;;;;;;;;;;;;;;;;-1:-1:-1;5696:103:0;-1:-1:-1;;;;;5696:103:0;;:::i;6828:25::-;;;:::i;8676:230::-;-1:-1:-1;;;;;8882:17:0;;8731:4;8882:17;;;:7;:17;;;;;;;;;8813:22;:32;;;;;;8758:142;;8882:17;8758:109;;8862:4;;8758:89;;8792:54;;:16;:14;:16::i;:::-;:20;;:54::i;:::-;-1:-1:-1;;;;;8758:19:0;;;;;;:9;:19;;;;;;;:33;:89::i;:::-;:103;;:109::i;:::-;:123;;:142::i;:::-;8744:156;8676:230;-1:-1:-1;;8676:230:0:o;7185:39::-;;;;;;;;;;;;;:::o;6860:23::-;;;;:::o;6888:29::-;;;;:::o;6922:37::-;;;-1:-1:-1;;;;;6922:37:0;;:::o;9342:333::-;8161:14;;;;;;;;;-1:-1:-1;;;;;8161:14:0;-1:-1:-1;;;;;8161:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9406:10:::1;7894:16;:14;:16::i;:::-;7871:20;:39:::0;7934:26:::1;:24;:26::i;:::-;7917:14;:43:::0;-1:-1:-1;;;;;7971:22:0;::::1;::::0;7967:145:::1;;8024:16;8031:8;8024:6;:16::i;:::-;-1:-1:-1::0;;;;;8004:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:36;;;;8084:20:::1;::::0;8049:22:::1;:32:::0;;;;;;:55;7967:145:::1;7781:9:::2;;7762:15;:28;;7754:50;;;::::0;;-1:-1:-1;;;7754:50:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;7754:50:0;;;;;;;;;;;;;::::2;;9454:1:::3;9444:7;:11;9436:41;;;::::0;;-1:-1:-1;;;9436:41:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;9436:41:0;;;;;;;;;;;;;::::3;;9498:11;::::0;:24:::3;::::0;9514:7;9498:15:::3;:24::i;:::-;9484:11;:38:::0;9563:10:::3;9553:21;::::0;;;:9:::3;:21;::::0;;;;;:34:::3;::::0;9579:7;9553:25:::3;:34::i;:::-;9539:10;9529:21;::::0;;;:9:::3;:21;::::0;;;;;;;:58;;;;9594:3:::3;::::0;:33;;-1:-1:-1;;;9594:33:0;;::::3;::::0;::::3;::::0;;;;;;;;;;;;-1:-1:-1;;;;;9594:3:0;;::::3;::::0;:12:::3;::::0;:33;;;;;;;;;;;;;:3;:33;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;;9639:30:0::3;::::0;;;;;;;9649:10:::3;::::0;9639:30:::3;::::0;;;;;9594:33:::3;9639:30:::0;;::::3;8196:1:::1;9342:333:::0;:::o;10042:832::-;10122:1;7894:16;:14;:16::i;:::-;7871:20;:39;7934:26;:24;:26::i;:::-;7917:14;:43;-1:-1:-1;;;;;7971:22:0;;;7967:145;;8024:16;8031:8;8024:6;:16::i;:::-;-1:-1:-1;;;;;8004:17:0;;;;;;:7;:17;;;;;;;;:36;;;;8084:20;;8049:22;:32;;;;;;:55;7967:145;10158:5:::1;::::0;-1:-1:-1;;;;;10158:5:0::1;10144:10;:19;::::0;:60:::1;;-1:-1:-1::0;10189:14:0::1;::::0;-1:-1:-1;;;;;10189:14:0::1;10167:10;:37;10144:60;10136:94;;;::::0;;-1:-1:-1;;;10136:94:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10136:94:0;;;;;;;;;;;;;::::1;;10261:9;;10243:15;:27;10239:630;;;10304:12;;10285:15;:31;10281:280;;10354:8;::::0;10342:21:::1;::::0;:7;;:11:::1;:21::i;:::-;10329:10;:34:::0;10281:280:::1;;;10407:12;::::0;10390:14:::1;::::0;10407:33:::1;::::0;10424:15:::1;10407:16;:33::i;:::-;10390:50;;10451:13;10467:25;10481:10;;10467:9;:13;;:25;;;;:::i;:::-;10542:8;::::0;10451:41;;-1:-1:-1;10516:35:0::1;::::0;:21:::1;:7:::0;10451:41;10516:11:::1;:21::i;:35::-;10503:10;:48:::0;-1:-1:-1;;10281:280:0::1;10586:15;10569:14;:32:::0;;;10645:8:::1;::::0;10625:29:::1;::::0;10586:15;10625:19:::1;:29::i;:::-;10610:12;:44:::0;10668:20:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;10239:630;;;10736:8;::::0;10724:21:::1;::::0;:7;;:11:::1;:21::i;:::-;10711:10;:34:::0;10771:9:::1;::::0;10754:14:::1;:26:::0;;;10818:8:::1;::::0;10804:23:::1;::::0;10771:9;10804:13:::1;:23::i;:::-;10789:12;:38:::0;10841:20:::1;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;10239:630;10042:832:::0;;:::o;9772:264::-;9813:10;7894:16;:14;:16::i;:::-;7871:20;:39;7934:26;:24;:26::i;:::-;7917:14;:43;-1:-1:-1;;;;;7971:22:0;;;7967:145;;8024:16;8031:8;8024:6;:16::i;:::-;-1:-1:-1;;;;;8004:17:0;;;;;;:7;:17;;;;;;;;:36;;;;8084:20;;8049:22;:32;;;;;;:55;7967:145;7781:9:::1;;7762:15;:28;;7754:50;;;::::0;;-1:-1:-1;;;7754:50:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;7754:50:0;;;;;;;;;;;;;::::1;;9843:11:::2;9857:18;9864:10;9857:6;:18::i;:::-;9843:32:::0;-1:-1:-1;9886:10:0;;9882:149:::2;;9915:10;9929:1;9907:19:::0;;;:7:::2;:19;::::0;;;;;;;:23;;;9939:11:::2;::::0;:40;;-1:-1:-1;;;9939:40:0;;::::2;::::0;::::2;::::0;;;;;;;;;;;;-1:-1:-1;;;;;9939:11:0;;::::2;::::0;:20:::2;::::0;:40;;;;;9907:19;9939:40;;;;;;;;:11;:40;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;9993:30:0::2;::::0;;;;;;;10004:10:::2;::::0;9993:30:::2;::::0;;;;;9939:40:::2;9993:30:::0;;::::2;7811:1;9772:264:::0;:::o;7229:41::-;;;;;;;;;;;;;:::o;5562:128::-;5405:9;:7;:9::i;:::-;5397:54;;;;;-1:-1:-1;;;5397:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5656:1:::1;5641:5:::0;;5620:39:::1;::::0;-1:-1:-1;;;;;5641:5:0;;::::1;::::0;5620:39:::1;::::0;5656:1;;5620:39:::1;5682:1;5666:18:::0;;-1:-1:-1;;;;;;5666:18:0::1;::::0;;5562:128::o;7025:26::-;;;;:::o;8209:122::-;8266:4;8286:39;8295:15;8312:12;;8286:8;:39::i;:::-;8279:46;;8209:122;;:::o;7126:54::-;;;;;;;;;;;;;:::o;6966:21::-;;;;:::o;5141:20::-;;;-1:-1:-1;;;;;5141:20:0;;:::o;5471:85::-;5511:4;5545:5;-1:-1:-1;;;;;5545:5:0;5531:10;:19;;5471:85::o;8993:343::-;8161:14;;;;;;;;;-1:-1:-1;;;;;8161:14:0;-1:-1:-1;;;;;8161:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9054:10:::1;7894:16;:14;:16::i;:::-;7871:20;:39:::0;7934:26:::1;:24;:26::i;:::-;7917:14;:43:::0;-1:-1:-1;;;;;7971:22:0;::::1;::::0;7967:145:::1;;8024:16;8031:8;8024:6;:16::i;:::-;-1:-1:-1::0;;;;;8004:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:36;;;;8084:20:::1;::::0;8049:22:::1;:32:::0;;;;;;:55;7967:145:::1;7781:9:::2;;7762:15;:28;;7754:50;;;::::0;;-1:-1:-1;;;7754:50:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;7754:50:0;;;;;;;;;;;;;::::2;;9102:1:::3;9092:7;:11;9084:38;;;::::0;;-1:-1:-1;;;9084:38:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;9084:38:0;;;;;;;;;;;;;::::3;;9143:11;::::0;:24:::3;::::0;9159:7;9143:15:::3;:24::i;:::-;9129:11;:38:::0;9208:10:::3;9198:21;::::0;;;:9:::3;:21;::::0;;;;;:34:::3;::::0;9224:7;9198:25:::3;:34::i;:::-;9184:10;9174:21;::::0;;;:9:::3;:21;::::0;;;;;;;:58;;;;9239:3:::3;::::0;:52;;-1:-1:-1;;;9239:52:0;;::::3;::::0;::::3;::::0;;;;9276:4:::3;9239:52:::0;;;;;;;;;;;;-1:-1:-1;;;;;9239:3:0;;::::3;::::0;:16:::3;::::0;:52;;;;;;;;;;;;;:3;:52;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;;9303:27:0::3;::::0;;;;;;;9310:10:::3;::::0;9303:27:::3;::::0;;;;;9239:52:::3;9303:27:::0;;::::3;8196:1:::1;8993:343:::0;:::o;7056:26::-;;;;:::o;8337:333::-;8384:4;8401:11;;8416:1;8401:16;8397:66;;;-1:-1:-1;8435:20:0;;8428:27;;8397:66;8483:181;8518:137;8643:11;;8518:108;8621:4;8518:86;8593:10;;8518:58;8561:14;;8518:26;:24;:26::i;:58::-;:74;;:86::i;:137::-;8483:20;;;:24;:181::i;6806:17::-;;;-1:-1:-1;;;;;6806:17:0;;:::o;7087:32::-;;;;:::o;9681:85::-;9730:10;9720:21;;;;:9;:21;;;;;;9711:31;;:8;:31::i;:::-;9749:11;:9;:11::i;:::-;9681:85::o;6992:28::-;;;;:::o;5696:103::-;5405:9;:7;:9::i;:::-;5397:54;;;;;-1:-1:-1;;;5397:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5765:28:::1;5784:8;5765:18;:28::i;:::-;5696:103:::0;:::o;6828:25::-;;;-1:-1:-1;;;;;6828:25:0;;:::o;1121:136::-;1179:7;1206:43;1210:1;1213;1206:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1199:50;1121:136;-1:-1:-1;;;1121:136:0:o;2011:471::-;2069:7;2314:6;2310:47;;-1:-1:-1;2344:1:0;2337:8;;2310:47;2381:5;;;2385:1;2381;:5;:1;2405:5;;;;;:10;2397:56;;;;-1:-1:-1;;;2397:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2958:132;3016:7;3043:39;3047:1;3050;3043:39;;;;;;;;;;;;;;;;;:3;:39::i;657:181::-;715:7;747:5;;;771:6;;;;763:46;;;;;-1:-1:-1;;;763:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;116:91;168:4;192:1;188;:5;:13;;200:1;188:13;;;-1:-1:-1;196:1:0;;116:91;-1:-1:-1;116:91:0:o;5805:213::-;-1:-1:-1;;;;;5875:22:0;;5867:73;;;;-1:-1:-1;;;5867:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5973:5;;;5952:37;;-1:-1:-1;;;;;5952:37:0;;;;5973:5;;;5952:37;;;5996:5;:16;;-1:-1:-1;;;;;;5996:16:0;-1:-1:-1;;;;;5996:16:0;;;;;;;;;;5805:213::o;1560:192::-;1646:7;1682:12;1674:6;;;;1666:29;;;;-1:-1:-1;;;1666:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1718:5:0;;;1560:192::o;3586:278::-;3672:7;3707:12;3700:5;3692:28;;;;-1:-1:-1;;;3692:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3731:9;3747:1;3743;:5;;;;;;;3586:278;-1:-1:-1;;;;;3586:278:0:o

Swarm Source

ipfs://477548b197d5a4fa9e44548a5a4896f3f2f003c596fa75f764b2109ca7c7aa08

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.