ETH Price: $2,451.65 (+1.31%)
Gas: 7.53 Gwei

Contract

0x9Dc5E0786A159eeAD37f972277Eb01E9EfdE8c63
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Emergency Withdr...193683592024-03-05 10:26:47215 days ago1709634407IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0017883558.87966088
Unstake193661952024-03-05 3:11:23216 days ago1709608283IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0062051982.80443084
Unstake193578862024-03-03 23:21:23217 days ago1709508083IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0038830455.10912564
Unstake193575002024-03-03 22:03:59217 days ago1709503439IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0078244580.61380088
Unstake193557402024-03-03 16:08:35217 days ago1709482115IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0061369263.22746069
Unstake193536932024-03-03 9:17:23218 days ago1709457443IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0036879937.9966895
Unstake193490332024-03-02 17:39:59218 days ago1709401199IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0037185852.77506287
Withdraw193488872024-03-02 17:10:47218 days ago1709399447IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0028964448.24026512
Unstake193389952024-03-01 8:00:47220 days ago1709280047IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0044383445.72737508
Unstake193378152024-03-01 4:03:11220 days ago1709265791IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0038428139.59170111
Withdraw193363792024-02-29 23:14:23220 days ago1709248463IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0029700865.80739996
Withdraw193311042024-02-29 5:31:11221 days ago1709184671IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0020794346.07346294
Withdraw193310502024-02-29 5:20:11221 days ago1709184011IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0025551756.61429574
Deposit193302852024-02-29 2:45:35221 days ago1709174735IN
0x9Dc5E078...9EfdE8c63
0.62 ETH0.0016214949.14358809
Unstake193266562024-02-28 14:35:35221 days ago1709130935IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0080766783.21238327
Unstake193218692024-02-27 22:28:47222 days ago1709072927IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0035384750.21889047
Withdraw193218662024-02-27 22:28:11222 days ago1709072891IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0030087450.11060741
Unstake193194222024-02-27 14:15:35222 days ago1709043335IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0053026154.63173441
Unstake193186442024-02-27 11:39:23222 days ago1709033963IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0030483631.40667907
Withdraw193166262024-02-27 4:53:23223 days ago1709009603IN
0x9Dc5E078...9EfdE8c63
0 ETH0.002861147.65178052
Unstake193161352024-02-27 3:14:23223 days ago1709003663IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0037740953.56294821
Withdraw193161292024-02-27 3:13:11223 days ago1709003591IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0029466649.07670427
Unstake193155932024-02-27 1:25:11223 days ago1708997111IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0024211934.36226982
Withdraw193155902024-02-27 1:24:35223 days ago1708997075IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0020999734.97518294
Unstake193151882024-02-27 0:03:47223 days ago1708992227IN
0x9Dc5E078...9EfdE8c63
0 ETH0.0040953551.21684726
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
193683592024-03-05 10:26:47215 days ago1709634407
0x9Dc5E078...9EfdE8c63
1.18238462 ETH
193575002024-03-03 22:03:59217 days ago1709503439
0x9Dc5E078...9EfdE8c63
0.00043321 ETH
193557402024-03-03 16:08:35217 days ago1709482115
0x9Dc5E078...9EfdE8c63
0.00023761 ETH
193536932024-03-03 9:17:23218 days ago1709457443
0x9Dc5E078...9EfdE8c63
0.00031268 ETH
193488872024-03-02 17:10:47218 days ago1709399447
0x9Dc5E078...9EfdE8c63
0.00036557 ETH
193389952024-03-01 8:00:47220 days ago1709280047
0x9Dc5E078...9EfdE8c63
0.00017405 ETH
193378152024-03-01 4:03:11220 days ago1709265791
0x9Dc5E078...9EfdE8c63
0.00234833 ETH
193363792024-02-29 23:14:23220 days ago1709248463
0x9Dc5E078...9EfdE8c63
0.01488273 ETH
193311042024-02-29 5:31:11221 days ago1709184671
0x9Dc5E078...9EfdE8c63
0.09589405 ETH
193310502024-02-29 5:20:11221 days ago1709184011
0x9Dc5E078...9EfdE8c63
0.02397351 ETH
193266562024-02-28 14:35:35221 days ago1709130935
0x9Dc5E078...9EfdE8c63
0.00125096 ETH
193218662024-02-27 22:28:11222 days ago1709072891
0x9Dc5E078...9EfdE8c63
0.02172248 ETH
193194222024-02-27 14:15:35222 days ago1709043335
0x9Dc5E078...9EfdE8c63
0.00567353 ETH
193186442024-02-27 11:39:23222 days ago1709033963
0x9Dc5E078...9EfdE8c63
0.00646279 ETH
193166262024-02-27 4:53:23223 days ago1709009603
0x9Dc5E078...9EfdE8c63
0.00622744 ETH
193161292024-02-27 3:13:11223 days ago1709003591
0x9Dc5E078...9EfdE8c63
0.02621691 ETH
193155902024-02-27 1:24:35223 days ago1708997075
0x9Dc5E078...9EfdE8c63
0.02270302 ETH
193151882024-02-27 0:03:47223 days ago1708992227
0x9Dc5E078...9EfdE8c63
0.00379896 ETH
193150952024-02-26 23:45:11223 days ago1708991111
0x9Dc5E078...9EfdE8c63
0.06040528 ETH
193107842024-02-26 9:15:35224 days ago1708938935
0x9Dc5E078...9EfdE8c63
0.04068088 ETH
193055992024-02-25 15:49:47224 days ago1708876187
0x9Dc5E078...9EfdE8c63
0.02984356 ETH
193037282024-02-25 9:33:47225 days ago1708853627
0x9Dc5E078...9EfdE8c63
0.00703621 ETH
192975502024-02-24 12:49:47225 days ago1708778987
0x9Dc5E078...9EfdE8c63
0.00244462 ETH
192919522024-02-23 18:03:23226 days ago1708711403
0x9Dc5E078...9EfdE8c63
0.01608295 ETH
192883962024-02-23 6:06:35227 days ago1708668395
0x9Dc5E078...9EfdE8c63
0.02590686 ETH
View All Internal Transactions
Loading...
Loading

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

Contract Name:
OZKStakeV2

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-01-15
*/

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

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 Ownable {
    error NotOwner();

    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

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

contract OZKStakeV2 is Ownable {
    error StakingWindowClosed();
    error StakingInProgress();
    error StakingNotInProgress();
    error InsufficientBalance();
    error NothingStaked();
    error NotAllowed();

    event Stake(address sender, uint256 cycle, uint256 amount);
    event Unstake(address sender, uint256 cycle, uint256 amount);

    uint256 public constant STAKING_OPEN_WINDOW = 3 days;
    address public immutable TOKEN;
    uint256 public immutable STAKING_DURATION;

    mapping(uint256 => uint256) public depositedAmount;
    mapping(uint256 => mapping(address => uint256)) public userStakedAmountMap;
    mapping(uint256 => mapping(address => uint256)) public userWithdrawnAmountMap;
    mapping(uint256 => uint256) public totalStakedToken;

    bool public allowEmergencyTokenWithdraw = false;
    uint256 public cycle;
    uint256 public openTime;

    constructor(address token_, uint256 stakingDuration_, uint256 startingCycle) {
        TOKEN = token_;
        STAKING_DURATION = stakingDuration_;
        cycle = startingCycle;
    }

    receive() external payable {}

    // owners
    function open() external payable onlyOwner {
        uint256 __openTime = openTime;
        if (block.timestamp >= __openTime && block.timestamp <= __openTime + STAKING_DURATION) {
            revert StakingInProgress();
        }
        cycle += 1;
        openTime = block.timestamp;
        _deposit();
    }

    function deposit() public payable onlyOwner {
        if (!isInProgress()) revert StakingNotInProgress();
        _deposit();
    }

    function emergencyWithdraw() external onlyOwner {
        (bool success,) = msg.sender.call{value: address(this).balance}("");
        require(success);
    }

    function syncDepositedAmount(uint256 amount, uint256 cycle_) external onlyOwner {
        if (address(this).balance < amount) revert InsufficientBalance();
        depositedAmount[cycle_] = amount;
    }

    function setAllowTokenWithdrawal(bool allow_) external onlyOwner {
        allowEmergencyTokenWithdraw = allow_;
    }

    // external
    function stake(uint256 amount_) external {
        if (!isOpen()) revert StakingWindowClosed();

        uint256 __cycle = cycle;

        userStakedAmountMap[__cycle][msg.sender] += amount_;
        totalStakedToken[__cycle] += amount_;

        emit Stake(msg.sender, __cycle, amount_);

        IERC20(TOKEN).transferFrom(msg.sender, address(this), amount_);
    }

    function unstake(uint256 cycle_) external {
        if (cycle_ == cycle && block.timestamp <= openTime + STAKING_DURATION) revert StakingInProgress();

        // check amount staked
        uint256 __amountStaked = userStakedAmountMap[cycle_][msg.sender];
        if (__amountStaked == 0) revert NothingStaked();

        // calculate amount
        uint256 __totalStaked = totalStakedToken[cycle_];
        uint256 totalClaimableReward = 0;
        if (__totalStaked != 0) {
            totalClaimableReward = depositedAmount[cycle_] * __amountStaked / __totalStaked;
        }

        uint256 claimedReward = userWithdrawnAmountMap[cycle_][msg.sender];
        uint256 claimableReward = totalClaimableReward - claimedReward;

        // update state
        userWithdrawnAmountMap[cycle_][msg.sender] += claimableReward;
        userStakedAmountMap[cycle_][msg.sender] -= __amountStaked;

        emit Unstake(msg.sender, cycle_, __amountStaked);

        // withdraw
        IERC20(TOKEN).transfer(msg.sender, __amountStaked);
        (bool success,) = msg.sender.call{value: claimableReward}("");
        require(success);
    }

    function withdraw(uint256 cycle_) external {
        if (cycle_ == cycle && block.timestamp <= openTime + STAKING_OPEN_WINDOW) revert StakingInProgress();

        // check amount staked
        uint256 __amountStaked = userStakedAmountMap[cycle_][msg.sender];
        if (__amountStaked == 0) revert NothingStaked();

        // calculate amount
        uint256 __totalStaked = totalStakedToken[cycle_];
        uint256 totalClaimableReward = 0;
        if (__totalStaked != 0) {
            totalClaimableReward = depositedAmount[cycle_] * __amountStaked / __totalStaked;
        }

        uint256 claimedReward = userWithdrawnAmountMap[cycle_][msg.sender];
        uint256 claimableReward = totalClaimableReward - claimedReward;

        // update state
        userWithdrawnAmountMap[cycle_][msg.sender] += claimableReward;

        // withdraw
        (bool success,) = msg.sender.call{value: claimableReward}("");
        require(success);
    }

    function emergencyTokenWithdraw(uint256 cycle_) external {
        if (!allowEmergencyTokenWithdraw) revert NotAllowed();

        // check amount staked
        uint256 __amountStaked = userStakedAmountMap[cycle_][msg.sender];
        if (__amountStaked == 0) revert NothingStaked();

        // update state
        userStakedAmountMap[cycle_][msg.sender] -= __amountStaked;

        emit Unstake(msg.sender, cycle_, __amountStaked);

        // withdraw
        IERC20(TOKEN).transfer(msg.sender, __amountStaked);
    }

    // views
    function isOpen() public view returns (bool) {
        uint256 __openTime = openTime;
        if (block.timestamp >= __openTime && block.timestamp <= __openTime + STAKING_OPEN_WINDOW) {
            return true;
        }

        return false;
    }

    function isInProgress() public view returns (bool) {
        uint256 __openTime = openTime;
        if (block.timestamp >= __openTime && block.timestamp <= __openTime + STAKING_DURATION) {
            return true;
        }

        return false;
    }

    function claimable(uint256 cycle_, address addr) external view returns (uint256) {
        uint256 __amountStaked = userStakedAmountMap[cycle_][addr];
        uint256 __totalStaked = totalStakedToken[cycle_];

        if (__totalStaked == 0) return 0;
        uint256 totalClaimable = depositedAmount[cycle_] * __amountStaked / __totalStaked;
        uint256 claimedReward = userWithdrawnAmountMap[cycle_][addr];

        if (totalClaimable < claimedReward) return 0;
        return totalClaimable - claimedReward;
    }

    // private
    function _deposit() private {
        depositedAmount[cycle] += msg.value;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"token_","type":"address"},{"internalType":"uint256","name":"stakingDuration_","type":"uint256"},{"internalType":"uint256","name":"startingCycle","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"NotAllowed","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NothingStaked","type":"error"},{"inputs":[],"name":"StakingInProgress","type":"error"},{"inputs":[],"name":"StakingNotInProgress","type":"error"},{"inputs":[],"name":"StakingWindowClosed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"cycle","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Stake","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"cycle","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unstake","type":"event"},{"inputs":[],"name":"STAKING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_OPEN_WINDOW","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allowEmergencyTokenWithdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cycle_","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"name":"claimable","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cycle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"depositedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cycle_","type":"uint256"}],"name":"emergencyTokenWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isInProgress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"open","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"openTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"allow_","type":"bool"}],"name":"setAllowTokenWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"cycle_","type":"uint256"}],"name":"syncDepositedAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"totalStakedToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cycle_","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userStakedAmountMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userWithdrawnAmountMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"cycle_","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x60806040526004361061014a575f3560e01c8063715018a6116100b3578063b42568881161006d578063b4256888146103e0578063bb960803146103f5578063cda926441461040e578063d0e30db014610444578063db2e21bc1461044c578063fcfff16f14610460575f80fd5b8063715018a6146102fc57806382bfefc8146103105780638da5cb5b1461035b5780638dceb6cc14610377578063a0c7f71c146103a2578063a694fc3a146103c1575f80fd5b8063472b44a211610104578063472b44a21461024657806347535d7b146102715780635072b96e146102955780635893813e146102b45780636190c9d5146102d35780636dfc2fa8146102e8575f80fd5b80632e175004146101555780632e17de781461019b5780632e1a7d4d146101bc578063348e842e146101db5780633efcdc02146101fa5780633f9eb03514610230575f80fd5b3661015157005b5f80fd5b348015610160575f80fd5b506101887f000000000000000000000000000000000000000000000000000000000024ea0081565b6040519081526020015b60405180910390f35b3480156101a6575f80fd5b506101ba6101b5366004610e4a565b610468565b005b3480156101c7575f80fd5b506101ba6101d6366004610e4a565b6106f3565b3480156101e6575f80fd5b506101ba6101f5366004610e6e565b61080d565b348015610205575f80fd5b50610188610214366004610e90565b600360209081525f928352604080842090915290825290205481565b34801561023b575f80fd5b506101886203f48081565b348015610251575f80fd5b50610188610260366004610e4a565b60016020525f908152604090205481565b34801561027c575f80fd5b5061028561084a565b6040519015158152602001610192565b3480156102a0575f80fd5b506101ba6102af366004610ec9565b61087f565b3480156102bf575f80fd5b506101ba6102ce366004610e4a565b6108da565b3480156102de575f80fd5b5061018860065481565b3480156102f3575f80fd5b50610285610a39565b348015610307575f80fd5b506101ba610a73565b34801561031b575f80fd5b506103437f000000000000000000000000b4fc1fc74effa5dc15a031eb8159302cfa4f128881565b6040516001600160a01b039091168152602001610192565b348015610366575f80fd5b505f546001600160a01b0316610343565b348015610382575f80fd5b50610188610391366004610e4a565b60046020525f908152604090205481565b3480156103ad575f80fd5b506101886103bc366004610e90565b610ae5565b3480156103cc575f80fd5b506101ba6103db366004610e4a565b610b98565b3480156103eb575f80fd5b5061018860075481565b348015610400575f80fd5b506005546102859060ff1681565b348015610419575f80fd5b50610188610428366004610e90565b600260209081525f928352604080842090915290825290205481565b6101ba610ca9565b348015610457575f80fd5b506101ba610d02565b6101ba610d80565b600654811480156104a657507f000000000000000000000000000000000000000000000000000000000024ea006007546104a29190610efd565b4211155b156104c4576040516308c45bdb60e41b815260040160405180910390fd5b5f818152600260209081526040808320338452909152812054908190036104fe57604051639fe7bfd960e01b815260040160405180910390fd5b5f8281526004602052604081205490811561053b575f84815260016020526040902054829061052e908590610f10565b6105389190610f27565b90505b5f8481526003602090815260408083203384529091528120549061055f8284610f46565b5f87815260036020908152604080832033845290915281208054929350839290919061058c908490610efd565b90915550505f868152600260209081526040808320338452909152812080548792906105b9908490610f46565b909155505060408051338152602081018890529081018690527ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb2809060600160405180910390a160405163a9059cbb60e01b8152336004820152602481018690527f000000000000000000000000b4fc1fc74effa5dc15a031eb8159302cfa4f12886001600160a01b03169063a9059cbb906044016020604051808303815f875af1158015610669573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d9190610f59565b505f336001600160a01b0316826040515b5f6040518083038185875af1925050503d805f81146106d8576040519150601f19603f3d011682016040523d82523d5f602084013e6106dd565b606091505b50509050806106ea575f80fd5b50505050505050565b6006548114801561071457506203f4806007546107109190610efd565b4211155b15610732576040516308c45bdb60e41b815260040160405180910390fd5b5f8181526002602090815260408083203384529091528120549081900361076c57604051639fe7bfd960e01b815260040160405180910390fd5b5f828152600460205260408120549081156107a9575f84815260016020526040902054829061079c908590610f10565b6107a69190610f27565b90505b5f848152600360209081526040808320338452909152812054906107cd8284610f46565b5f8781526003602090815260408083203384529091528120805492935083929091906107fa908490610efd565b90915550506040515f903390839061069e565b5f546001600160a01b03163314610837576040516330cd747160e01b815260040160405180910390fd5b6005805460ff1916911515919091179055565b6007545f9042811180159061086b57506108676203f48082610efd565b4211155b1561087857600191505090565b5f91505090565b5f546001600160a01b031633146108a9576040516330cd747160e01b815260040160405180910390fd5b814710156108ca57604051631e9acf1760e31b815260040160405180910390fd5b5f90815260016020526040902055565b60055460ff166108fd57604051631eb49d6d60e11b815260040160405180910390fd5b5f8181526002602090815260408083203384529091528120549081900361093757604051639fe7bfd960e01b815260040160405180910390fd5b5f8281526002602090815260408083203384529091528120805483929061095f908490610f46565b909155505060408051338152602081018490529081018290527ff960dbf9e5d0682f7a298ed974e33a28b4464914b7a2bfac12ae419a9afeb2809060600160405180910390a160405163a9059cbb60e01b8152336004820152602481018290527f000000000000000000000000b4fc1fc74effa5dc15a031eb8159302cfa4f12886001600160a01b03169063a9059cbb906044015b6020604051808303815f875af1158015610a10573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a349190610f59565b505050565b6007545f9042811180159061086b57506108677f000000000000000000000000000000000000000000000000000000000024ea0082610efd565b5f546001600160a01b03163314610a9d576040516330cd747160e01b815260040160405180910390fd5b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f8281526002602090815260408083206001600160a01b03851684528252808320548584526004909252822054808303610b23575f92505050610b92565b5f858152600160205260408120548290610b3e908590610f10565b610b489190610f27565b5f8781526003602090815260408083206001600160a01b038a16845290915290205490915080821015610b81575f945050505050610b92565b610b8b8183610f46565b9450505050505b92915050565b610ba061084a565b610bbd576040516342083d4160e11b815260040160405180910390fd5b6006545f81815260026020908152604080832033845290915281208054849290610be8908490610efd565b90915550505f8181526004602052604081208054849290610c0a908490610efd565b909155505060408051338152602081018390529081018390527f5af417134f72a9d41143ace85b0a26dce6f550f894f2cbc1eeee8810603d91b69060600160405180910390a16040516323b872dd60e01b8152336004820152306024820152604481018390527f000000000000000000000000b4fc1fc74effa5dc15a031eb8159302cfa4f12886001600160a01b0316906323b872dd906064016109f4565b5f546001600160a01b03163314610cd3576040516330cd747160e01b815260040160405180910390fd5b610cdb610a39565b610cf85760405163c212a90560e01b815260040160405180910390fd5b610d00610e23565b565b5f546001600160a01b03163314610d2c576040516330cd747160e01b815260040160405180910390fd5b6040515f90339047908381818185875af1925050503d805f8114610d6b576040519150601f19603f3d011682016040523d82523d5f602084013e610d70565b606091505b5050905080610d7d575f80fd5b50565b5f546001600160a01b03163314610daa576040516330cd747160e01b815260040160405180910390fd5b600754428111801590610de65750610de27f000000000000000000000000000000000000000000000000000000000024ea0082610efd565b4211155b15610e04576040516308c45bdb60e41b815260040160405180910390fd5b600160065f828254610e169190610efd565b909155505042600755610d7d5b6006545f9081526001602052604081208054349290610e43908490610efd565b9091555050565b5f60208284031215610e5a575f80fd5b5035919050565b8015158114610d7d575f80fd5b5f60208284031215610e7e575f80fd5b8135610e8981610e61565b9392505050565b5f8060408385031215610ea1575f80fd5b8235915060208301356001600160a01b0381168114610ebe575f80fd5b809150509250929050565b5f8060408385031215610eda575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610b9257610b92610ee9565b8082028115828204841417610b9257610b92610ee9565b5f82610f4157634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610b9257610b92610ee9565b5f60208284031215610f69575f80fd5b8151610e8981610e6156fea264697066735822122034d6714778b835b841f5cf884d5117b25d838fe5cff088c04233b2b5a954665464736f6c63430008140033

Deployed Bytecode Sourcemap

1415:6415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1873:41;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;1873:41:0;;;;;;;;3950:1161;;;;;;;;;;-1:-1:-1;3950:1161:0;;;;;:::i;:::-;;:::i;:::-;;5119:975;;;;;;;;;;-1:-1:-1;5119:975:0;;;;;:::i;:::-;;:::i;3419:120::-;;;;;;;;;;-1:-1:-1;3419:120:0;;;;;:::i;:::-;;:::i;2061:77::-;;;;;;;;;;-1:-1:-1;2061:77:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1777:52;;;;;;;;;;;;1823:6;1777:52;;1923:50;;;;;;;;;;-1:-1:-1;1923:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;6660:256;;;;;;;;;;;;;:::i;:::-;;;1274:14:1;;1267:22;1249:41;;1237:2;1222:18;6660:256:0;1109:187:1;3205:206:0;;;;;;;;;;-1:-1:-1;3205:206:0;;;;;:::i;:::-;;:::i;6102:536::-;;;;;;;;;;-1:-1:-1;6102:536:0;;;;;:::i;:::-;;:::i;2259:20::-;;;;;;;;;;;;;;;;6924:259;;;;;;;;;;;;;:::i;1260:148::-;;;;;;;;;;;;;:::i;1836:30::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1718:32:1;;;1700:51;;1688:2;1673:18;1836:30:0;1554:203:1;1070:79:0;;;;;;;;;;-1:-1:-1;1108:7:0;1135:6;-1:-1:-1;;;;;1135:6:0;1070:79;;2145:51;;;;;;;;;;-1:-1:-1;2145:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;7191:530;;;;;;;;;;-1:-1:-1;7191:530:0;;;;;:::i;:::-;;:::i;3564:378::-;;;;;;;;;;-1:-1:-1;3564:378:0;;;;;:::i;:::-;;:::i;2286:23::-;;;;;;;;;;;;;;;;2205:47;;;;;;;;;;-1:-1:-1;2205:47:0;;;;;;;;1980:74;;;;;;;;;;-1:-1:-1;1980:74:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2894:134;;;:::i;3036:161::-;;;;;;;;;;;;;:::i;2566:320::-;;;:::i;3950:1161::-;4017:5;;4007:6;:15;:65;;;;;4056:16;4045:8;;:27;;;;:::i;:::-;4026:15;:46;;4007:65;4003:97;;;4081:19;;-1:-1:-1;;;4081:19:0;;;;;;;;;;;4003:97;4145:22;4170:27;;;:19;:27;;;;;;;;4198:10;4170:39;;;;;;;;;4224:19;;;4220:47;;4252:15;;-1:-1:-1;;;4252:15:0;;;;;;;;;;;4220:47;4309:21;4333:24;;;:16;:24;;;;;;;4415:18;;4411:130;;4473:23;;;;:15;:23;;;;;;4516:13;;4473:40;;4499:14;;4473:40;:::i;:::-;:56;;;;:::i;:::-;4450:79;;4411:130;4553:21;4577:30;;;:22;:30;;;;;;;;4608:10;4577:42;;;;;;;;;4656:36;4577:42;4656:20;:36;:::i;:::-;4730:30;;;;:22;:30;;;;;;;;4761:10;4730:42;;;;;;;:61;;4630:62;;-1:-1:-1;4630:62:0;;4730:42;;:30;:61;;4630:62;;4730:61;:::i;:::-;;;;-1:-1:-1;;4802:27:0;;;;:19;:27;;;;;;;;4830:10;4802:39;;;;;;;:57;;4845:14;;4802:27;:57;;4845:14;;4802:57;:::i;:::-;;;;-1:-1:-1;;4877:43:0;;;4885:10;2754:51:1;;2836:2;2821:18;;2814:34;;;2864:18;;;2857:34;;;4877:43:0;;2742:2:1;2727:18;4877:43:0;;;;;;;4954:50;;-1:-1:-1;;;4954:50:0;;4977:10;4954:50;;;3076:51:1;3143:18;;;3136:34;;;4961:5:0;-1:-1:-1;;;;;4954:22:0;;;;3049:18:1;;4954:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5016:12;5033:10;-1:-1:-1;;;;;5033:15:0;5056;5033:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:61;;;5095:7;5087:16;;;;;;3992:1119;;;;;;3950:1161;:::o;5119:975::-;5187:5;;5177:6;:15;:68;;;;;1823:6;5215:8;;:30;;;;:::i;:::-;5196:15;:49;;5177:68;5173:100;;;5254:19;;-1:-1:-1;;;5254:19:0;;;;;;;;;;;5173:100;5318:22;5343:27;;;:19;:27;;;;;;;;5371:10;5343:39;;;;;;;;;5397:19;;;5393:47;;5425:15;;-1:-1:-1;;;5425:15:0;;;;;;;;;;;5393:47;5482:21;5506:24;;;:16;:24;;;;;;;5588:18;;5584:130;;5646:23;;;;:15;:23;;;;;;5689:13;;5646:40;;5672:14;;5646:40;:::i;:::-;:56;;;;:::i;:::-;5623:79;;5584:130;5726:21;5750:30;;;:22;:30;;;;;;;;5781:10;5750:42;;;;;;;;;5829:36;5750:42;5829:20;:36;:::i;:::-;5903:30;;;;:22;:30;;;;;;;;5934:10;5903:42;;;;;;;:61;;5803:62;;-1:-1:-1;5803:62:0;;5903:42;;:30;:61;;5803:62;;5903:61;:::i;:::-;;;;-1:-1:-1;;6016:43:0;;5999:12;;6016:10;;6039:15;;6016:43;3431:205:1;3419:120:0;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;3495:27:::1;:36:::0;;-1:-1:-1;;3495:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;3419:120::o;6660:256::-;6737:8;;6699:4;;6760:15;:29;-1:-1:-1;6760:29:0;;;:84;;-1:-1:-1;6812:32:0;1823:6;6812:10;:32;:::i;:::-;6793:15;:51;;6760:84;6756:128;;;6868:4;6861:11;;;6660:256;:::o;6756:128::-;6903:5;6896:12;;;6660:256;:::o;3205:206::-;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;3324:6:::1;3300:21;:30;3296:64;;;3339:21;;-1:-1:-1::0;;;3339:21:0::1;;;;;;;;;;;3296:64;3371:23;::::0;;;:15:::1;:23;::::0;;;;:32;3205:206::o;6102:536::-;6175:27;;;;6170:53;;6211:12;;-1:-1:-1;;;6211:12:0;;;;;;;;;;;6170:53;6268:22;6293:27;;;:19;:27;;;;;;;;6321:10;6293:39;;;;;;;;;6347:19;;;6343:47;;6375:15;;-1:-1:-1;;;6375:15:0;;;;;;;;;;;6343:47;6428:27;;;;:19;:27;;;;;;;;6456:10;6428:39;;;;;;;:57;;6471:14;;6428:27;:57;;6471:14;;6428:57;:::i;:::-;;;;-1:-1:-1;;6503:43:0;;;6511:10;2754:51:1;;2836:2;2821:18;;2814:34;;;2864:18;;;2857:34;;;6503:43:0;;2742:2:1;2727:18;6503:43:0;;;;;;;6580:50;;-1:-1:-1;;;6580:50:0;;6603:10;6580:50;;;3076:51:1;3143:18;;;3136:34;;;6587:5:0;-1:-1:-1;;;;;6580:22:0;;;;3049:18:1;;6580:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6159:479;6102:536;:::o;6924:259::-;7007:8;;6969:4;;7030:15;:29;-1:-1:-1;7030:29:0;;;:81;;-1:-1:-1;7082:29:0;7095:16;7082:10;:29;:::i;1260:148::-;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;1367:1:::1;1351:6:::0;;1330:40:::1;::::0;-1:-1:-1;;;;;1351:6:0;;::::1;::::0;1330:40:::1;::::0;1367:1;;1330:40:::1;1398:1;1381:19:::0;;-1:-1:-1;;;;;;1381:19:0::1;::::0;;1260:148::o;7191:530::-;7263:7;7308:27;;;:19;:27;;;;;;;;-1:-1:-1;;;;;7308:33:0;;;;;;;;;;7376:24;;;:16;:24;;;;;;7417:18;;;7413:32;;7444:1;7437:8;;;;;;7413:32;7456:22;7481:23;;;:15;:23;;;;;;7524:13;;7481:40;;7507:14;;7481:40;:::i;:::-;:56;;;;:::i;:::-;7548:21;7572:30;;;:22;:30;;;;;;;;-1:-1:-1;;;;;7572:36:0;;;;;;;;;;7456:81;;-1:-1:-1;7625:30:0;;;7621:44;;;7664:1;7657:8;;;;;;;;7621:44;7683:30;7700:13;7683:14;:30;:::i;:::-;7676:37;;;;;;7191:530;;;;;:::o;3564:378::-;3621:8;:6;:8::i;:::-;3616:43;;3638:21;;-1:-1:-1;;;3638:21:0;;;;;;;;;;;3616:43;3690:5;;3672:15;3708:28;;;:19;:28;;;;;;;;3737:10;3708:40;;;;;;;:51;;3752:7;;3672:15;3708:51;;3752:7;;3708:51;:::i;:::-;;;;-1:-1:-1;;3770:25:0;;;;:16;:25;;;;;:36;;3799:7;;3770:25;:36;;3799:7;;3770:36;:::i;:::-;;;;-1:-1:-1;;3824:35:0;;;3830:10;2754:51:1;;2836:2;2821:18;;2814:34;;;2864:18;;;2857:34;;;3824:35:0;;2742:2:1;2727:18;3824:35:0;;;;;;;3872:62;;-1:-1:-1;;;3872:62:0;;3899:10;3872:62;;;3881:34:1;3919:4:0;3931:18:1;;;3924:43;3983:18;;;3976:34;;;3879:5:0;-1:-1:-1;;;;;3872:26:0;;;;3816:18:1;;3872:62:0;3641:375:1;2894:134:0;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;2954:14:::1;:12;:14::i;:::-;2949:50;;2977:22;;-1:-1:-1::0;;;2977:22:0::1;;;;;;;;;;;2949:50;3010:10;:8;:10::i;:::-;2894:134::o:0;3036:161::-;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;3113:49:::1;::::0;3096:12:::1;::::0;3113:10:::1;::::0;3136:21:::1;::::0;3096:12;3113:49;3096:12;3113:49;3136:21;3113:10;:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3095:67;;;3181:7;3173:16;;;::::0;::::1;;3084:113;3036:161::o:0;2566:320::-;1193:6;;-1:-1:-1;;;;;1193:6:0;1203:10;1193:20;1189:43;;1222:10;;-1:-1:-1;;;1222:10:0;;;;;;;;;;;1189:43;2641:8:::1;::::0;2664:15:::1;:29:::0;-1:-1:-1;2664:29:0;::::1;::::0;:81:::1;;-1:-1:-1::0;2716:29:0::1;2729:16;2716:10:::0;:29:::1;:::i;:::-;2697:15;:48;;2664:81;2660:140;;;2769:19;;-1:-1:-1::0;;;2769:19:0::1;;;;;;;;;;;2660:140;2819:1;2810:5;;:10;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;2842:15:0::1;2831:8;:26:::0;2868:10:::1;7745:82:::0;7800:5;;7784:22;;;;:15;:22;;;;;:35;;7810:9;;7784:22;:35;;7810:9;;7784:35;:::i;:::-;;;;-1:-1:-1;;7745:82:0:o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;381:118::-;467:5;460:13;453:21;446:5;443:32;433:60;;489:1;486;479:12;504:241;560:6;613:2;601:9;592:7;588:23;584:32;581:52;;;629:1;626;619:12;581:52;668:9;655:23;687:28;709:5;687:28;:::i;:::-;734:5;504:241;-1:-1:-1;;;504:241:1:o;750:354::-;818:6;826;879:2;867:9;858:7;854:23;850:32;847:52;;;895:1;892;885:12;847:52;918:23;;;-1:-1:-1;991:2:1;976:18;;963:32;-1:-1:-1;;;;;1024:31:1;;1014:42;;1004:70;;1070:1;1067;1060:12;1004:70;1093:5;1083:15;;;750:354;;;;;:::o;1301:248::-;1369:6;1377;1430:2;1418:9;1409:7;1405:23;1401:32;1398:52;;;1446:1;1443;1436:12;1398:52;-1:-1:-1;;1469:23:1;;;1539:2;1524:18;;;1511:32;;-1:-1:-1;1301:248:1:o;1762:127::-;1823:10;1818:3;1814:20;1811:1;1804:31;1854:4;1851:1;1844:15;1878:4;1875:1;1868:15;1894:125;1959:9;;;1980:10;;;1977:36;;;1993:18;;:::i;2024:168::-;2097:9;;;2128;;2145:15;;;2139:22;;2125:37;2115:71;;2166:18;;:::i;2197:217::-;2237:1;2263;2253:132;;2307:10;2302:3;2298:20;2295:1;2288:31;2342:4;2339:1;2332:15;2370:4;2367:1;2360:15;2253:132;-1:-1:-1;2399:9:1;;2197:217::o;2419:128::-;2486:9;;;2507:11;;;2504:37;;;2521:18;;:::i;3181:245::-;3248:6;3301:2;3289:9;3280:7;3276:23;3272:32;3269:52;;;3317:1;3314;3307:12;3269:52;3349:9;3343:16;3368:28;3390:5;3368:28;:::i

Swarm Source

ipfs://34d6714778b835b841f5cf884d5117b25d838fe5cff088c04233b2b5a9546654

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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