ETH Price: $3,108.28 (+1.22%)
Gas: 4 Gwei

Contract

0xf580EFd64E478669892d29b00eFA11E436ce8b89
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Compound181364022023-09-14 18:51:47299 days ago1694717507IN
0xf580EFd6...436ce8b89
0 ETH0.0017403229.22365028
Compound181351832023-09-14 14:44:47299 days ago1694702687IN
0xf580EFd6...436ce8b89
0 ETH0.0016452727.62761881
Withdraw180772402023-09-06 11:55:11307 days ago1694001311IN
0xf580EFd6...436ce8b89
0 ETH0.0015636717.44218076
Claim Reward180193672023-08-29 9:24:59315 days ago1693301099IN
0xf580EFd6...436ce8b89
0 ETH0.0012043216.91087116
Stake180188292023-08-29 7:35:59315 days ago1693294559IN
0xf580EFd6...436ce8b89
0 ETH0.0010673214.65466937
Withdraw180188042023-08-29 7:30:59315 days ago1693294259IN
0xf580EFd6...436ce8b89
0 ETH0.0013707215.28992643
Compound179842392023-08-24 11:22:59320 days ago1692876179IN
0xf580EFd6...436ce8b89
0 ETH0.0010060319.14828882
Compound179619022023-08-21 8:26:11323 days ago1692606371IN
0xf580EFd6...436ce8b89
0 ETH0.0009194315.4392257
Compound179583732023-08-20 20:34:35324 days ago1692563675IN
0xf580EFd6...436ce8b89
0 ETH0.0011052217.26043753
Withdraw179408232023-08-18 9:36:59326 days ago1692351419IN
0xf580EFd6...436ce8b89
0 ETH0.0020080319.90537596
Claim Reward179408142023-08-18 9:35:11326 days ago1692351311IN
0xf580EFd6...436ce8b89
0 ETH0.0014489619.91730643
Withdraw179375532023-08-17 22:36:35327 days ago1692311795IN
0xf580EFd6...436ce8b89
0 ETH0.01014132100.52962647
Compound179200462023-08-15 11:48:59329 days ago1692100139IN
0xf580EFd6...436ce8b89
0 ETH0.0013914321.72217588
Compound179189562023-08-15 8:09:11329 days ago1692086951IN
0xf580EFd6...436ce8b89
0 ETH0.0012200719.04700089
Compound179083152023-08-13 20:26:35331 days ago1691958395IN
0xf580EFd6...436ce8b89
0 ETH0.001090918.75404802
Compound179003762023-08-12 17:49:35332 days ago1691862575IN
0xf580EFd6...436ce8b89
0 ETH0.0009469214.78273825
Compound178901832023-08-11 7:34:23333 days ago1691739263IN
0xf580EFd6...436ce8b89
0 ETH0.0014824423.14301569
Stake178647282023-08-07 18:05:59337 days ago1691431559IN
0xf580EFd6...436ce8b89
0 ETH0.0041229240.67045188
Compound178615762023-08-07 7:29:35337 days ago1691393375IN
0xf580EFd6...436ce8b89
0 ETH0.0010369216.18771391
Compound178526462023-08-06 1:28:35339 days ago1691285315IN
0xf580EFd6...436ce8b89
0 ETH0.0008235512.85673825
Compound178526442023-08-06 1:28:11339 days ago1691285291IN
0xf580EFd6...436ce8b89
0 ETH0.0007510911.72555227
Compound178526412023-08-06 1:27:35339 days ago1691285255IN
0xf580EFd6...436ce8b89
0 ETH0.0008238812.86187799
Compound178444552023-08-04 21:59:59340 days ago1691186399IN
0xf580EFd6...436ce8b89
0 ETH0.0009103314.21147269
Compound178399192023-08-04 6:45:11340 days ago1691131511IN
0xf580EFd6...436ce8b89
0 ETH0.0009515614.85518174
Stake178208642023-08-01 14:51:11343 days ago1690901471IN
0xf580EFd6...436ce8b89
0 ETH0.003722936.79273201
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Staking

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-02-15
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Staking {
    IERC20 public immutable stakingToken;
    IERC20 public immutable rewardsToken;

    address public owner;

    bool public paused;
    
    uint256 public duration; // Duration of rewards to be paid out (in seconds)
    uint256 public finishAt; // Timestamp of when the rewards finish
    uint256 public updatedAt; // Minimum of last updated time and reward finish time
    uint256 public rewardRate; // Reward to be paid out per second
    uint256 public rewardPerTokenStored; // Sum of (reward rate * dt * 1e18 / total supply)
    uint256 public totalSupply; // Total staked

   
    mapping(address => uint256) public userRewardPerTokenPaid;  // User address => rewardPerTokenStored
    mapping(address => uint256) public rewards; // User address => rewards to be claimed
    mapping(address => uint256) public balanceOf; // User address => staked amount
    
    error AmountZero();
    error NothingToClaim();
    error RewardsNotFinished();
    error InsufficientBalance();
    error RewardRateZero();
    error Paused();

    event Stake(address indexed user, uint256 amount);
    event Withdraw(address indexed user, uint256 amount);
    event RewardClaimed(address indexed user, uint256 amount);
    event Compound(address indexed user, uint256 amount);
    
    constructor(address _stakingToken, address _rewardToken) {
        owner = msg.sender;
        stakingToken = IERC20(_stakingToken);
        rewardsToken = IERC20(_rewardToken);
    }

    modifier onlyOwner() {
        require(msg.sender == owner, "not authorized");
        _;
    }

    modifier updateReward(address _account) {
        rewardPerTokenStored = rewardPerToken();
        updatedAt = lastTimeRewardApplicable();

        if (_account != address(0)) {
            rewards[_account] = earned(_account);
            userRewardPerTokenPaid[_account] = rewardPerTokenStored;
        }

        _;
    }

    function lastTimeRewardApplicable() public view returns (uint256) {
        return _min(finishAt, block.timestamp);
    }

    function rewardPerToken() public view returns (uint256) {
        if (totalSupply == 0) {
            return rewardPerTokenStored;
        }

        return
            rewardPerTokenStored +
            (rewardRate * (lastTimeRewardApplicable() - updatedAt) * 1e18) /
            totalSupply;
    }

    function stake(uint256 _amount) external updateReward(msg.sender) {
        if(paused) revert Paused();
        if(_amount == 0) revert AmountZero();
        stakingToken.transferFrom(msg.sender, address(this), _amount);
        balanceOf[msg.sender] += _amount;
        totalSupply += _amount;
        emit Stake(msg.sender, _amount);
    }

    function withdraw(uint256 _amount) external updateReward(msg.sender) {
        if(paused) revert Paused();
        if(_amount == 0) revert AmountZero();
        balanceOf[msg.sender] -= _amount;
        totalSupply -= _amount;
        stakingToken.transfer(msg.sender, _amount);
        emit Withdraw(msg.sender, _amount);
    }

    function compound() external updateReward(msg.sender) {
        if(paused) revert Paused();
        uint256 amount = rewards[msg.sender];
        if (amount == 0) revert NothingToClaim();
        rewards[msg.sender] = 0;
        balanceOf[msg.sender] += amount;
        totalSupply += amount;
        emit Compound(msg.sender, amount);
    }

    function earned(address _account) public view returns (uint256) {
        return
            ((balanceOf[_account] *
                (rewardPerToken() - userRewardPerTokenPaid[_account])) / 1e18) +
            rewards[_account];
    }

    function claimReward() external updateReward(msg.sender) {
        if(paused) revert Paused();
        uint256 reward = rewards[msg.sender];
        if (reward == 0) revert NothingToClaim();
        rewards[msg.sender] = 0;
        rewardsToken.transfer(msg.sender, reward);
        emit RewardClaimed(msg.sender, reward);
    }

    function setRewardsDuration(uint256 _duration) external onlyOwner {
        if(finishAt >= block.timestamp) revert RewardsNotFinished();
        duration = _duration;
    }

    function notifyRewardAmount(
        uint256 _amount
    ) external onlyOwner updateReward(address(0)) {
        if (block.timestamp >= finishAt) {
            rewardRate = _amount / duration;
        } else {
            uint256 remainingRewards = (finishAt - block.timestamp) * rewardRate;
            rewardRate = (_amount + remainingRewards) / duration;
        }

        if(rewardRate == 0) revert RewardRateZero();
        if(rewardRate * duration > rewardsToken.balanceOf(address(this))) revert InsufficientBalance();

        finishAt = block.timestamp + duration;
        updatedAt = block.timestamp;
    }

    function setPaused(bool _paused) external onlyOwner {
        paused = _paused;
    }

    function _min(uint256 x, uint256 y) private pure returns (uint256) {
        return x <= y ? x : y;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AmountZero","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"NothingToClaim","type":"error"},{"inputs":[],"name":"Paused","type":"error"},{"inputs":[],"name":"RewardRateZero","type":"error"},{"inputs":[],"name":"RewardsNotFinished","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Compound","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","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":"finishAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTimeRewardApplicable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"notifyRewardAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"setRewardsDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"updatedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

60c060405234801561001057600080fd5b50604051610f2a380380610f2a83398101604081905261002f91610074565b600080546001600160a01b031916331790556001600160a01b039182166080521660a0526100a7565b80516001600160a01b038116811461006f57600080fd5b919050565b6000806040838503121561008757600080fd5b61009083610058565b915061009e60208401610058565b90509250929050565b60805160a051610e426100e8600039600081816102f8015281816106c10152610a2b015260008181610236015281816104f901526108570152610e426000f3fe608060405234801561001057600080fd5b506004361061014c5760003560e01c80637519ab50116100c3578063b88a802f1161007c578063b88a802f146102d0578063cc1a378f146102d8578063cd3daf9d146102eb578063d1af0c7d146102f3578063df136d651461031a578063f69e20461461032357600080fd5b80637519ab50146102705780637b0a47ee1461027957806380faa57d146102825780638b8763471461028a5780638da5cb5b146102aa578063a694fc3a146102bd57600080fd5b80632e1a7d4d116101155780632e1a7d4d146101be5780633c6b16ab146101d15780635c975abb146101e457806367d3b4881461020857806370a082311461021157806372f702f31461023157600080fd5b80628cc262146101515780630700037d146101775780630fb5a6b41461019757806316c38b3c146101a057806318160ddd146101b5575b600080fd5b61016461015f366004610cc9565b61032b565b6040519081526020015b60405180910390f35b610164610185366004610cc9565b60086020526000908152604090205481565b61016460015481565b6101b36101ae366004610d03565b6103a8565b005b61016460065481565b6101b36101cc366004610d20565b6103f9565b6101b36101df366004610d20565b6105a9565b6000546101f890600160a01b900460ff1681565b604051901515815260200161016e565b61016460025481565b61016461021f366004610cc9565b60096020526000908152604090205481565b6102587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161016e565b61016460035481565b61016460045481565b61016461077b565b610164610298366004610cc9565b60076020526000908152604090205481565b600054610258906001600160a01b031681565b6101b36102cb366004610d20565b61078e565b6101b361093c565b6101b36102e6366004610d20565b610acb565b610164610b1c565b6102587f000000000000000000000000000000000000000000000000000000000000000081565b61016460055481565b6101b3610b7d565b6001600160a01b0381166000908152600860209081526040808320546007909252822054670de0b6b3a764000090610361610b1c565b61036b9190610d4f565b6001600160a01b03851660009081526009602052604090205461038e9190610d62565b6103989190610d79565b6103a29190610d9b565b92915050565b6000546001600160a01b031633146103db5760405162461bcd60e51b81526004016103d290610dae565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b33610402610b1c565b60055561040d61077b565b6003556001600160a01b03811615610454576104288161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff161561047f576040516313d0ff5960e31b815260040160405180910390fd5b816000036104a0576040516365e52d5160e11b815260040160405180910390fd5b33600090815260096020526040812080548492906104bf908490610d4f565b9250508190555081600660008282546104d89190610d4f565b909155505060405163a9059cbb60e01b8152336004820152602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190610dd6565b5060405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b6000546001600160a01b031633146105d35760405162461bcd60e51b81526004016103d290610dae565b60006105dd610b1c565b6005556105e861077b565b6003556001600160a01b0381161561062f576106038161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600254421061064d576001546106459083610d79565b600455610689565b6000600454426002546106609190610d4f565b61066a9190610d62565b60015490915061067a8285610d9b565b6106849190610d79565b600455505b6004546000036106ac57604051630f5d66ef60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107349190610df3565b6001546004546107449190610d62565b111561076357604051631e9acf1760e31b815260040160405180910390fd5b6001546107709042610d9b565b600255505042600355565b600061078960025442610cb0565b905090565b33610797610b1c565b6005556107a261077b565b6003556001600160a01b038116156107e9576107bd8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff1615610814576040516313d0ff5960e31b815260040160405180910390fd5b81600003610835576040516365e52d5160e11b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156108a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cc9190610dd6565b5033600090815260096020526040812080548492906108ec908490610d9b565b9250508190555081600660008282546109059190610d9b565b909155505060405182815233907febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a9060200161059d565b33610945610b1c565b60055561095061077b565b6003556001600160a01b038116156109975761096b8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff16156109c2576040516313d0ff5960e31b815260040160405180910390fd5b33600090815260086020526040812054908190036109f3576040516312d37ee560e31b815260040160405180910390fd5b33600081815260086020526040808220919091555163a9059cbb60e01b81526004810191909152602481018290526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190610dd6565b5060405181815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200161059d565b6000546001600160a01b03163314610af55760405162461bcd60e51b81526004016103d290610dae565b4260025410610b1757604051633407936360e01b815260040160405180910390fd5b600155565b6000600654600003610b2f575060055490565b600654600354610b3d61077b565b610b479190610d4f565b600454610b549190610d62565b610b6690670de0b6b3a7640000610d62565b610b709190610d79565b6005546107899190610d9b565b33610b86610b1c565b600555610b9161077b565b6003556001600160a01b03811615610bd857610bac8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff1615610c03576040516313d0ff5960e31b815260040160405180910390fd5b3360009081526008602052604081205490819003610c34576040516312d37ee560e31b815260040160405180910390fd5b336000908152600860209081526040808320839055600990915281208054839290610c60908490610d9b565b925050819055508060066000828254610c799190610d9b565b909155505060405181815233907f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145569060200161059d565b600081831115610cc05781610cc2565b825b9392505050565b600060208284031215610cdb57600080fd5b81356001600160a01b0381168114610cc257600080fd5b8015158114610d0057600080fd5b50565b600060208284031215610d1557600080fd5b8135610cc281610cf2565b600060208284031215610d3257600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103a2576103a2610d39565b80820281158282048414176103a2576103a2610d39565b600082610d9657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103a2576103a2610d39565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600060208284031215610de857600080fd5b8151610cc281610cf2565b600060208284031215610e0557600080fd5b505191905056fea2646970667358221220ee9601a23cc469927936737257fef6fc1c5a6b05f5927ffcfa295efddaff680364736f6c634300081100330000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014c5760003560e01c80637519ab50116100c3578063b88a802f1161007c578063b88a802f146102d0578063cc1a378f146102d8578063cd3daf9d146102eb578063d1af0c7d146102f3578063df136d651461031a578063f69e20461461032357600080fd5b80637519ab50146102705780637b0a47ee1461027957806380faa57d146102825780638b8763471461028a5780638da5cb5b146102aa578063a694fc3a146102bd57600080fd5b80632e1a7d4d116101155780632e1a7d4d146101be5780633c6b16ab146101d15780635c975abb146101e457806367d3b4881461020857806370a082311461021157806372f702f31461023157600080fd5b80628cc262146101515780630700037d146101775780630fb5a6b41461019757806316c38b3c146101a057806318160ddd146101b5575b600080fd5b61016461015f366004610cc9565b61032b565b6040519081526020015b60405180910390f35b610164610185366004610cc9565b60086020526000908152604090205481565b61016460015481565b6101b36101ae366004610d03565b6103a8565b005b61016460065481565b6101b36101cc366004610d20565b6103f9565b6101b36101df366004610d20565b6105a9565b6000546101f890600160a01b900460ff1681565b604051901515815260200161016e565b61016460025481565b61016461021f366004610cc9565b60096020526000908152604090205481565b6102587f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d81565b6040516001600160a01b03909116815260200161016e565b61016460035481565b61016460045481565b61016461077b565b610164610298366004610cc9565b60076020526000908152604090205481565b600054610258906001600160a01b031681565b6101b36102cb366004610d20565b61078e565b6101b361093c565b6101b36102e6366004610d20565b610acb565b610164610b1c565b6102587f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d81565b61016460055481565b6101b3610b7d565b6001600160a01b0381166000908152600860209081526040808320546007909252822054670de0b6b3a764000090610361610b1c565b61036b9190610d4f565b6001600160a01b03851660009081526009602052604090205461038e9190610d62565b6103989190610d79565b6103a29190610d9b565b92915050565b6000546001600160a01b031633146103db5760405162461bcd60e51b81526004016103d290610dae565b60405180910390fd5b60008054911515600160a01b0260ff60a01b19909216919091179055565b33610402610b1c565b60055561040d61077b565b6003556001600160a01b03811615610454576104288161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff161561047f576040516313d0ff5960e31b815260040160405180910390fd5b816000036104a0576040516365e52d5160e11b815260040160405180910390fd5b33600090815260096020526040812080548492906104bf908490610d4f565b9250508190555081600660008282546104d89190610d4f565b909155505060405163a9059cbb60e01b8152336004820152602481018390527f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d6001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561054a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056e9190610dd6565b5060405182815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a25050565b6000546001600160a01b031633146105d35760405162461bcd60e51b81526004016103d290610dae565b60006105dd610b1c565b6005556105e861077b565b6003556001600160a01b0381161561062f576106038161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600254421061064d576001546106459083610d79565b600455610689565b6000600454426002546106609190610d4f565b61066a9190610d62565b60015490915061067a8285610d9b565b6106849190610d79565b600455505b6004546000036106ac57604051630f5d66ef60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201527f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d6001600160a01b0316906370a0823190602401602060405180830381865afa158015610710573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107349190610df3565b6001546004546107449190610d62565b111561076357604051631e9acf1760e31b815260040160405180910390fd5b6001546107709042610d9b565b600255505042600355565b600061078960025442610cb0565b905090565b33610797610b1c565b6005556107a261077b565b6003556001600160a01b038116156107e9576107bd8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff1615610814576040516313d0ff5960e31b815260040160405180910390fd5b81600003610835576040516365e52d5160e11b815260040160405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018390527f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d6001600160a01b0316906323b872dd906064016020604051808303816000875af11580156108a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cc9190610dd6565b5033600090815260096020526040812080548492906108ec908490610d9b565b9250508190555081600660008282546109059190610d9b565b909155505060405182815233907febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a9060200161059d565b33610945610b1c565b60055561095061077b565b6003556001600160a01b038116156109975761096b8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff16156109c2576040516313d0ff5960e31b815260040160405180910390fd5b33600090815260086020526040812054908190036109f3576040516312d37ee560e31b815260040160405180910390fd5b33600081815260086020526040808220919091555163a9059cbb60e01b81526004810191909152602481018290526001600160a01b037f0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d169063a9059cbb906044016020604051808303816000875af1158015610a74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a989190610dd6565b5060405181815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f72419060200161059d565b6000546001600160a01b03163314610af55760405162461bcd60e51b81526004016103d290610dae565b4260025410610b1757604051633407936360e01b815260040160405180910390fd5b600155565b6000600654600003610b2f575060055490565b600654600354610b3d61077b565b610b479190610d4f565b600454610b549190610d62565b610b6690670de0b6b3a7640000610d62565b610b709190610d79565b6005546107899190610d9b565b33610b86610b1c565b600555610b9161077b565b6003556001600160a01b03811615610bd857610bac8161032b565b6001600160a01b0382166000908152600860209081526040808320939093556005546007909152919020555b600054600160a01b900460ff1615610c03576040516313d0ff5960e31b815260040160405180910390fd5b3360009081526008602052604081205490819003610c34576040516312d37ee560e31b815260040160405180910390fd5b336000908152600860209081526040808320839055600990915281208054839290610c60908490610d9b565b925050819055508060066000828254610c799190610d9b565b909155505060405181815233907f169f1815ebdea059aac3bb00ec9a9594c7a5ffcb64a17e8392b5d84909a145569060200161059d565b600081831115610cc05781610cc2565b825b9392505050565b600060208284031215610cdb57600080fd5b81356001600160a01b0381168114610cc257600080fd5b8015158114610d0057600080fd5b50565b600060208284031215610d1557600080fd5b8135610cc281610cf2565b600060208284031215610d3257600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156103a2576103a2610d39565b80820281158282048414176103a2576103a2610d39565b600082610d9657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156103a2576103a2610d39565b6020808252600e908201526d1b9bdd08185d5d1a1bdc9a5e995960921b604082015260600190565b600060208284031215610de857600080fd5b8151610cc281610cf2565b600060208284031215610e0557600080fd5b505191905056fea2646970667358221220ee9601a23cc469927936737257fef6fc1c5a6b05f5927ffcfa295efddaff680364736f6c63430008110033

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

0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d

-----Decoded View---------------
Arg [0] : _stakingToken (address): 0x0e5ec8A3165644d8533F9e5aC7e0f682f8FB078D
Arg [1] : _rewardToken (address): 0x0e5ec8A3165644d8533F9e5aC7e0f682f8FB078D

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d
Arg [1] : 0000000000000000000000000e5ec8a3165644d8533f9e5ac7e0f682f8fb078d


Deployed Bytecode Sourcemap

783:5091:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4257:239;;;;;;:::i;:::-;;:::i;:::-;;;451:25:1;;;439:2;424:18;4257:239:0;;;;;;;;1514:42;;;;;;:::i;:::-;;;;;;;;;;;;;;955:23;;;;;;5669:87;;;;;;:::i;:::-;;:::i;:::-;;1353:26;;;;;;3557:335;;;;;;:::i;:::-;;:::i;5030:631::-;;;;;;:::i;:::-;;:::i;924:18::-;;;;;-1:-1:-1;;;924:18:0;;;;;;;;;1206:14:1;;1199:22;1181:41;;1169:2;1154:18;924::0;1041:187:1;1036:23:0;;;;;;1604:44;;;;;;:::i;:::-;;;;;;;;;;;;;;807:36;;;;;;;;-1:-1:-1;;;;;1410:32:1;;;1392:51;;1380:2;1365:18;807:36:0;1233:216:1;1106:24:0;;;;;;1192:25;;;;;;2754:123;;;:::i;1409:57::-;;;;;;:::i;:::-;;;;;;;;;;;;;;895:20;;;;;-1:-1:-1;;;;;895:20:0;;;3201:348;;;;;;:::i;:::-;;:::i;4504:335::-;;;:::i;4847:175::-;;;;;;:::i;:::-;;:::i;2885:308::-;;;:::i;850:36::-;;;;;1260:35;;;;;;3900:349;;;:::i;4257:239::-;-1:-1:-1;;;;;4471:17:0;;4312:7;4471:17;;;:7;:17;;;;;;;;;4413:22;:32;;;;;;4450:4;;4394:16;:14;:16::i;:::-;:51;;;;:::i;:::-;-1:-1:-1;;;;;4354:19:0;;;;;;:9;:19;;;;;;:92;;;;:::i;:::-;4353:101;;;;:::i;:::-;4352:136;;;;:::i;:::-;4332:156;4257:239;-1:-1:-1;;4257:239:0:o;5669:87::-;2360:5;;-1:-1:-1;;;;;2360:5:0;2346:10;:19;2338:46;;;;-1:-1:-1;;;2338:46:0;;;;;;;:::i;:::-;;;;;;;;;5732:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;5732:16:0::1;-1:-1:-1::0;;;;5732:16:0;;::::1;::::0;;;::::1;::::0;;5669:87::o;3557:335::-;3614:10;2486:16;:14;:16::i;:::-;2463:20;:39;2525:26;:24;:26::i;:::-;2513:9;:38;-1:-1:-1;;;;;2568:22:0;;;2564:161;;2627:16;2634:8;2627:6;:16::i;:::-;-1:-1:-1;;;;;2607:17:0;;;;;;:7;:17;;;;;;;;:36;;;;2693:20;;2658:22;:32;;;;;;:55;2564:161;3640:6:::1;::::0;-1:-1:-1;;;3640:6:0;::::1;;;3637:26;;;3655:8;;-1:-1:-1::0;;;3655:8:0::1;;;;;;;;;;;3637:26;3677:7;3688:1;3677:12:::0;3674:36:::1;;3698:12;;-1:-1:-1::0;;;3698:12:0::1;;;;;;;;;;;3674:36;3731:10;3721:21;::::0;;;:9:::1;:21;::::0;;;;:32;;3746:7;;3721:21;:32:::1;::::0;3746:7;;3721:32:::1;:::i;:::-;;;;;;;;3779:7;3764:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3797:42:0::1;::::0;-1:-1:-1;;;3797:42:0;;3819:10:::1;3797:42;::::0;::::1;2969:51:1::0;3036:18;;;3029:34;;;3797:12:0::1;-1:-1:-1::0;;;;;3797:21:0::1;::::0;::::1;::::0;2942:18:1;;3797:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;3855:29:0::1;::::0;451:25:1;;;3864:10:0::1;::::0;3855:29:::1;::::0;439:2:1;424:18;3855:29:0::1;;;;;;;;3557:335:::0;;:::o;5030:631::-;2360:5;;-1:-1:-1;;;;;2360:5:0;2346:10;:19;2338:46;;;;-1:-1:-1;;;2338:46:0;;;;;;;:::i;:::-;5131:1:::1;2486:16;:14;:16::i;:::-;2463:20;:39:::0;2525:26:::1;:24;:26::i;:::-;2513:9;:38:::0;-1:-1:-1;;;;;2568:22:0;::::1;::::0;2564:161:::1;;2627:16;2634:8;2627:6;:16::i;:::-;-1:-1:-1::0;;;;;2607:17:0;::::1;;::::0;;;:7:::1;:17;::::0;;;;;;;:36;;;;2693:20:::1;::::0;2658:22:::1;:32:::0;;;;;;:55;2564:161:::1;5169:8:::2;;5150:15;:27;5146:259;;5217:8;::::0;5207:18:::2;::::0;:7;:18:::2;:::i;:::-;5194:10;:31:::0;5146:259:::2;;;5258:24;5316:10;;5297:15;5286:8;;:26;;;;:::i;:::-;5285:41;;;;:::i;:::-;5385:8;::::0;5258:68;;-1:-1:-1;5355:26:0::2;5258:68:::0;5355:7;:26:::2;:::i;:::-;5354:39;;;;:::i;:::-;5341:10;:52:::0;-1:-1:-1;5146:259:0::2;5420:10;;5434:1;5420:15:::0;5417:43:::2;;5444:16;;-1:-1:-1::0;;;5444:16:0::2;;;;;;;;;;;5417:43;5498:37;::::0;-1:-1:-1;;;5498:37:0;;5529:4:::2;5498:37;::::0;::::2;1392:51:1::0;5498:12:0::2;-1:-1:-1::0;;;;;5498:22:0::2;::::0;::::2;::::0;1365:18:1;;5498:37:0::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5487:8;;5474:10;;:21;;;;:::i;:::-;:61;5471:94;;;5544:21;;-1:-1:-1::0;;;5544:21:0::2;;;;;;;;;;;5471:94;5607:8;::::0;5589:26:::2;::::0;:15:::2;:26;:::i;:::-;5578:8;:37:::0;-1:-1:-1;;5638:15:0::2;5626:9;:27:::0;5030:631::o;2754:123::-;2811:7;2838:31;2843:8;;2853:15;2838:4;:31::i;:::-;2831:38;;2754:123;:::o;3201:348::-;3255:10;2486:16;:14;:16::i;:::-;2463:20;:39;2525:26;:24;:26::i;:::-;2513:9;:38;-1:-1:-1;;;;;2568:22:0;;;2564:161;;2627:16;2634:8;2627:6;:16::i;:::-;-1:-1:-1;;;;;2607:17:0;;;;;;:7;:17;;;;;;;;:36;;;;2693:20;;2658:22;:32;;;;;;:55;2564:161;3281:6:::1;::::0;-1:-1:-1;;;3281:6:0;::::1;;;3278:26;;;3296:8;;-1:-1:-1::0;;;3296:8:0::1;;;;;;;;;;;3278:26;3318:7;3329:1;3318:12:::0;3315:36:::1;;3339:12;;-1:-1:-1::0;;;3339:12:0::1;;;;;;;;;;;3315:36;3362:61;::::0;-1:-1:-1;;;3362:61:0;;3388:10:::1;3362:61;::::0;::::1;3753:34:1::0;3408:4:0::1;3803:18:1::0;;;3796:43;3855:18;;;3848:34;;;3362:12:0::1;-1:-1:-1::0;;;;;3362:25:0::1;::::0;::::1;::::0;3688:18:1;;3362:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;3444:10:0::1;3434:21;::::0;;;:9:::1;:21;::::0;;;;:32;;3459:7;;3434:21;:32:::1;::::0;3459:7;;3434:32:::1;:::i;:::-;;;;;;;;3492:7;3477:11;;:22;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;3515:26:0::1;::::0;451:25:1;;;3521:10:0::1;::::0;3515:26:::1;::::0;439:2:1;424:18;3515:26:0::1;305:177:1::0;4504:335:0;4549:10;2486:16;:14;:16::i;:::-;2463:20;:39;2525:26;:24;:26::i;:::-;2513:9;:38;-1:-1:-1;;;;;2568:22:0;;;2564:161;;2627:16;2634:8;2627:6;:16::i;:::-;-1:-1:-1;;;;;2607:17:0;;;;;;:7;:17;;;;;;;;:36;;;;2693:20;;2658:22;:32;;;;;;:55;2564:161;4575:6:::1;::::0;-1:-1:-1;;;4575:6:0;::::1;;;4572:26;;;4590:8;;-1:-1:-1::0;;;4590:8:0::1;;;;;;;;;;;4572:26;4634:10;4609:14;4626:19:::0;;;:7:::1;:19;::::0;;;;;;4660:11;;;4656:40:::1;;4680:16;;-1:-1:-1::0;;;4680:16:0::1;;;;;;;;;;;4656:40;4715:10;4729:1;4707:19:::0;;;:7:::1;:19;::::0;;;;;:23;;;;4741:41;-1:-1:-1;;;4741:41:0;;::::1;::::0;::::1;2969:51:1::0;;;;3036:18;;;3029:34;;;-1:-1:-1;;;;;4741:12:0::1;:21;::::0;::::1;::::0;2942:18:1;;4741:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;4798:33:0::1;::::0;451:25:1;;;4812:10:0::1;::::0;4798:33:::1;::::0;439:2:1;424:18;4798:33:0::1;305:177:1::0;4847:175:0;2360:5;;-1:-1:-1;;;;;2360:5:0;2346:10;:19;2338:46;;;;-1:-1:-1;;;2338:46:0;;;;;;;:::i;:::-;4939:15:::1;4927:8;;:27;4924:59;;4963:20;;-1:-1:-1::0;;;4963:20:0::1;;;;;;;;;;;4924:59;4994:8;:20:::0;4847:175::o;2885:308::-;2932:7;2956:11;;2971:1;2956:16;2952:76;;-1:-1:-1;2996:20:0;;;2885:308::o;2952:76::-;3174:11;;3140:9;;3111:26;:24;:26::i;:::-;:38;;;;:::i;:::-;3097:10;;:53;;;;:::i;:::-;:60;;3153:4;3097:60;:::i;:::-;3096:89;;;;:::i;:::-;3060:20;;:125;;;;:::i;3900:349::-;3942:10;2486:16;:14;:16::i;:::-;2463:20;:39;2525:26;:24;:26::i;:::-;2513:9;:38;-1:-1:-1;;;;;2568:22:0;;;2564:161;;2627:16;2634:8;2627:6;:16::i;:::-;-1:-1:-1;;;;;2607:17:0;;;;;;:7;:17;;;;;;;;:36;;;;2693:20;;2658:22;:32;;;;;;:55;2564:161;3968:6:::1;::::0;-1:-1:-1;;;3968:6:0;::::1;;;3965:26;;;3983:8;;-1:-1:-1::0;;;3983:8:0::1;;;;;;;;;;;3965:26;4027:10;4002:14;4019:19:::0;;;:7:::1;:19;::::0;;;;;;4053:11;;;4049:40:::1;;4073:16;;-1:-1:-1::0;;;4073:16:0::1;;;;;;;;;;;4049:40;4108:10;4122:1;4100:19:::0;;;:7:::1;:19;::::0;;;;;;;:23;;;4134:9:::1;:21:::0;;;;;:31;;4159:6;;4122:1;4134:31:::1;::::0;4159:6;;4134:31:::1;:::i;:::-;;;;;;;;4191:6;4176:11;;:21;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;4213:28:0::1;::::0;451:25:1;;;4222:10:0::1;::::0;4213:28:::1;::::0;439:2:1;424:18;4213:28:0::1;305:177:1::0;5764:107:0;5822:7;5854:1;5849;:6;;:14;;5862:1;5849:14;;;5858:1;5849:14;5842:21;5764:107;-1:-1:-1;;;5764:107:0:o;14:286:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:1;;210:42;;200:70;;266:1;263;256:12;487:118;573:5;566:13;559:21;552:5;549:32;539:60;;595:1;592;585:12;539:60;487:118;:::o;610:241::-;666:6;719:2;707:9;698:7;694:23;690:32;687:52;;;735:1;732;725:12;687:52;774:9;761:23;793:28;815:5;793:28;:::i;856:180::-;915:6;968:2;956:9;947:7;943:23;939:32;936:52;;;984:1;981;974:12;936:52;-1:-1:-1;1007:23:1;;856:180;-1:-1:-1;856:180:1:o;1662:127::-;1723:10;1718:3;1714:20;1711:1;1704:31;1754:4;1751:1;1744:15;1778:4;1775:1;1768:15;1794:128;1861:9;;;1882:11;;;1879:37;;;1896:18;;:::i;1927:168::-;2000:9;;;2031;;2048:15;;;2042:22;;2028:37;2018:71;;2069:18;;:::i;2100:217::-;2140:1;2166;2156:132;;2210:10;2205:3;2201:20;2198:1;2191:31;2245:4;2242:1;2235:15;2273:4;2270:1;2263:15;2156:132;-1:-1:-1;2302:9:1;;2100:217::o;2322:125::-;2387:9;;;2408:10;;;2405:36;;;2421:18;;:::i;2452:338::-;2654:2;2636:21;;;2693:2;2673:18;;;2666:30;-1:-1:-1;;;2727:2:1;2712:18;;2705:44;2781:2;2766:18;;2452:338::o;3074:245::-;3141:6;3194:2;3182:9;3173:7;3169:23;3165:32;3162:52;;;3210:1;3207;3200:12;3162:52;3242:9;3236:16;3261:28;3283:5;3261:28;:::i;3324:184::-;3394:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:52;;;3463:1;3460;3453:12;3415:52;-1:-1:-1;3486:16:1;;3324:184;-1:-1:-1;3324:184:1:o

Swarm Source

ipfs://ee9601a23cc469927936737257fef6fc1c5a6b05f5927ffcfa295efddaff6803

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.