ETH Price: $2,991.44 (-0.76%)

Contract

0x20C47d82F039Ffd000E7A7F0f3Effa9CFE1232A3

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Plant279421612026-01-16 23:34:5412 days ago1768606494IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421572026-01-16 23:34:4612 days ago1768606486IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421522026-01-16 23:34:3612 days ago1768606476IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421482026-01-16 23:34:2612 days ago1768606466IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421462026-01-16 23:34:2012 days ago1768606460IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421422026-01-16 23:34:1212 days ago1768606452IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421382026-01-16 23:34:0412 days ago1768606444IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421312026-01-16 23:33:5012 days ago1768606430IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421252026-01-16 23:33:3812 days ago1768606418IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421212026-01-16 23:33:3012 days ago1768606410IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279421132026-01-16 23:33:0812 days ago1768606388IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420832026-01-16 23:32:0412 days ago1768606324IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420632026-01-16 23:31:2412 days ago1768606284IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420592026-01-16 23:31:1612 days ago1768606276IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420442026-01-16 23:30:4412 days ago1768606244IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420422026-01-16 23:30:4012 days ago1768606240IN
0x20C47d82...CFE1232A3
0 ETH0.000002360.03378767
Plant279420402026-01-16 23:30:3612 days ago1768606236IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420362026-01-16 23:30:2812 days ago1768606228IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420312026-01-16 23:30:1812 days ago1768606218IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420292026-01-16 23:30:1412 days ago1768606214IN
0x20C47d82...CFE1232A3
0 ETH0.000002360.03378767
Plant279420272026-01-16 23:30:1012 days ago1768606210IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420222026-01-16 23:30:0012 days ago1768606200IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420192026-01-16 23:29:5412 days ago1768606194IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420152026-01-16 23:29:4612 days ago1768606186IN
0x20C47d82...CFE1232A3
0 ETH0.000001890.027
Plant279420142026-01-16 23:29:4412 days ago1768606184IN
0x20C47d82...CFE1232A3
0 ETH0.000002360.03378767
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
279421612026-01-16 23:34:5412 days ago1768606494
0x20C47d82...CFE1232A3
0 ETH
279421612026-01-16 23:34:5412 days ago1768606494
0x20C47d82...CFE1232A3
0 ETH
279421612026-01-16 23:34:5412 days ago1768606494
0x20C47d82...CFE1232A3
0 ETH
279421572026-01-16 23:34:4612 days ago1768606486
0x20C47d82...CFE1232A3
0 ETH
279421572026-01-16 23:34:4612 days ago1768606486
0x20C47d82...CFE1232A3
0 ETH
279421572026-01-16 23:34:4612 days ago1768606486
0x20C47d82...CFE1232A3
0 ETH
279421522026-01-16 23:34:3612 days ago1768606476
0x20C47d82...CFE1232A3
0 ETH
279421522026-01-16 23:34:3612 days ago1768606476
0x20C47d82...CFE1232A3
0 ETH
279421522026-01-16 23:34:3612 days ago1768606476
0x20C47d82...CFE1232A3
0 ETH
279421482026-01-16 23:34:2612 days ago1768606466
0x20C47d82...CFE1232A3
0 ETH
279421482026-01-16 23:34:2612 days ago1768606466
0x20C47d82...CFE1232A3
0 ETH
279421482026-01-16 23:34:2612 days ago1768606466
0x20C47d82...CFE1232A3
0 ETH
279421462026-01-16 23:34:2012 days ago1768606460
0x20C47d82...CFE1232A3
0 ETH
279421462026-01-16 23:34:2012 days ago1768606460
0x20C47d82...CFE1232A3
0 ETH
279421462026-01-16 23:34:2012 days ago1768606460
0x20C47d82...CFE1232A3
0 ETH
279421422026-01-16 23:34:1212 days ago1768606452
0x20C47d82...CFE1232A3
0 ETH
279421422026-01-16 23:34:1212 days ago1768606452
0x20C47d82...CFE1232A3
0 ETH
279421422026-01-16 23:34:1212 days ago1768606452
0x20C47d82...CFE1232A3
0 ETH
279421382026-01-16 23:34:0412 days ago1768606444
0x20C47d82...CFE1232A3
0 ETH
279421382026-01-16 23:34:0412 days ago1768606444
0x20C47d82...CFE1232A3
0 ETH
279421382026-01-16 23:34:0412 days ago1768606444
0x20C47d82...CFE1232A3
0 ETH
279421312026-01-16 23:33:5012 days ago1768606430
0x20C47d82...CFE1232A3
0 ETH
279421312026-01-16 23:33:5012 days ago1768606430
0x20C47d82...CFE1232A3
0 ETH
279421312026-01-16 23:33:5012 days ago1768606430
0x20C47d82...CFE1232A3
0 ETH
279421252026-01-16 23:33:3812 days ago1768606418
0x20C47d82...CFE1232A3
0 ETH
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DevHarvesterV2

Compiler Version
v0.8.31+commit.fd3a2265

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/* ------------------------ Interfaces ------------------------ */

interface IPohVerifier {
    function verify(bytes calldata signature, address human) external view returns (bool);
}

/* ----------------------------- Ownable ----------------------------- */
abstract contract Ownable {
    address public owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0), "ZERO_OWNER");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

/* ----------------------------- Pausable ---------------------------- */
abstract contract Pausable is Ownable {
    bool public paused;
    event Paused(bool isPaused);

    modifier whenNotPaused() {
        require(!paused, "PAUSED");
        _;
    }

    function setPaused(bool isPaused) external onlyOwner {
        paused = isPaused;
        emit Paused(isPaused);
    }
}

/* ------------------------ Safe Token Transfer ----------------------- */
library SafeTransfer {
    function safeTransfer(address token, address to, uint256 amount) internal {
        require(token != address(0), "BAD_TOKEN");
        (bool ok, bytes memory data) =
            token.call(abi.encodeWithSelector(bytes4(keccak256("transfer(address,uint256)")), to, amount));
        require(ok, "TRANSFER_CALL_FAIL");
        if (data.length > 0) require(abi.decode(data, (bool)), "TRANSFER_FALSE");
    }

    function balanceOf(address token, address a) internal view returns (uint256) {
        (bool ok, bytes memory data) =
            token.staticcall(abi.encodeWithSelector(bytes4(keccak256("balanceOf(address)")), a));
        require(ok && data.length >= 32, "BAL_FAIL");
        return abi.decode(data, (uint256));
    }
}

/* ------------------------- DevHarvester V2 -------------------------- */
contract DevHarvesterV2 is Pausable {
    using SafeTransfer for address;

    address public rewardToken;
    uint256 public rewardPerTx;
    uint32  public dailyCap;

    bool public requirePoH;
    IPohVerifier public pohVerifier;

    mapping(address => bool) public blacklisted;
    event BlacklistUpdated(address indexed user, bool isBlacklisted);

    struct DayCounter {
        uint32 day;
        uint32 count;
    }
    mapping(address => DayCounter) private _counter;

    event Planted(address indexed user, uint32 indexed day, uint32 newCount, uint256 rewardPaid);
    event ConfigUpdated(address rewardToken, uint256 rewardPerTx, uint32 dailyCap, bool requirePoH, address pohVerifier);

    event OwnerWithdrawERC20(address indexed token, address indexed to, uint256 amount);
    event OwnerWithdrawETH(address indexed to, uint256 amount);

    uint32 public delaySeconds;
    event DelayUpdated(uint32 delaySeconds);

    struct PendingConfig {
        address rewardToken;
        uint256 rewardPerTx;
        uint32 dailyCap;
        bool requirePoH;
        address pohVerifier;
        uint64 executeAfter;
        bool exists;
    }
    PendingConfig public pending;

    event ConfigQueued(uint64 executeAfter);
    event ConfigApplied();

    constructor(
        address rewardToken_,
        uint256 rewardPerTx_,
        uint32 dailyCap_,
        bool requirePoH_,
        address pohVerifier_,
        uint32 delaySeconds_
    ) {
        require(rewardToken_ != address(0), "BAD_TOKEN");
        require(dailyCap_ > 0, "BAD_CAP");

        rewardToken = rewardToken_;
        rewardPerTx = rewardPerTx_;
        dailyCap = dailyCap_;
        requirePoH = requirePoH_;
        pohVerifier = IPohVerifier(pohVerifier_);
        delaySeconds = delaySeconds_;

        emit ConfigUpdated(rewardToken_, rewardPerTx_, dailyCap_, requirePoH_, pohVerifier_);
        emit DelayUpdated(delaySeconds_);
    }

    function currentDay() public view returns (uint32) {
        return uint32(block.timestamp / 1 days);
    }

    function txToday(address user) public view returns (uint32 day, uint32 count) {
        DayCounter memory dc = _counter[user];
        uint32 d = currentDay();
        if (dc.day != d) return (d, 0);
        return (dc.day, dc.count);
    }

    function remainingToday(address user) external view returns (uint32) {
        (, uint32 c) = txToday(user);
        if (c >= dailyCap) return 0;
        return dailyCap - c;
    }

    function setDelaySeconds(uint32 delaySeconds_) external onlyOwner {
        delaySeconds = delaySeconds_;
        emit DelayUpdated(delaySeconds_);
    }

    function queueConfig(
        address rewardToken_,
        uint256 rewardPerTx_,
        uint32 dailyCap_,
        bool requirePoH_,
        address pohVerifier_
    ) external onlyOwner {
        require(rewardToken_ != address(0), "BAD_TOKEN");
        require(dailyCap_ > 0 && dailyCap_ <= 255, "BAD_CAP");

        if (delaySeconds == 0) {
            _applyConfig(rewardToken_, rewardPerTx_, dailyCap_, requirePoH_, pohVerifier_);
            return;
        }

        uint64 eta = uint64(block.timestamp + delaySeconds);
        pending = PendingConfig({
            rewardToken: rewardToken_,
            rewardPerTx: rewardPerTx_,
            dailyCap: dailyCap_,
            requirePoH: requirePoH_,
            pohVerifier: pohVerifier_,
            executeAfter: eta,
            exists: true
        });

        emit ConfigQueued(eta);
    }

    function applyQueuedConfig() external onlyOwner {
        require(pending.exists, "NO_PENDING");
        require(block.timestamp >= pending.executeAfter, "TOO_EARLY");
        _applyConfig(pending.rewardToken, pending.rewardPerTx, pending.dailyCap, pending.requirePoH, pending.pohVerifier);
        delete pending;
        emit ConfigApplied();
    }

    function cancelQueuedConfig() external onlyOwner {
        require(pending.exists, "NO_PENDING");
        delete pending;
    }

    function _applyConfig(
        address rewardToken_,
        uint256 rewardPerTx_,
        uint32 dailyCap_,
        bool requirePoH_,
        address pohVerifier_
    ) internal {
        rewardToken = rewardToken_;
        rewardPerTx = rewardPerTx_;
        dailyCap = dailyCap_;
        requirePoH = requirePoH_;
        pohVerifier = IPohVerifier(pohVerifier_);
        emit ConfigUpdated(rewardToken_, rewardPerTx_, dailyCap_, requirePoH_, pohVerifier_);
    }

    function setBlacklisted(address user, bool isBlacklisted) public onlyOwner {
        blacklisted[user] = isBlacklisted;
        emit BlacklistUpdated(user, isBlacklisted);
    }

    function setBlacklistedBatch(address[] calldata users, bool isBlacklisted) external onlyOwner {
        for (uint256 i = 0; i < users.length; i++) {
            blacklisted[users[i]] = isBlacklisted;
            emit BlacklistUpdated(users[i], isBlacklisted);
        }
    }

    function ownerWithdrawRewardToken(address to, uint256 amount) external onlyOwner {
        require(to != address(0), "BAD_TO");
        rewardToken.safeTransfer(to, amount);
        emit OwnerWithdrawERC20(rewardToken, to, amount);
    }

    function ownerWithdrawERC20(address token, address to, uint256 amount) external onlyOwner {
        require(token != address(0), "BAD_TOKEN");
        require(to != address(0), "BAD_TO");
        token.safeTransfer(to, amount);
        emit OwnerWithdrawERC20(token, to, amount);
    }

    function ownerWithdrawETH(address payable to, uint256 amount) external onlyOwner {
        require(to != address(0), "BAD_TO");
        (bool ok, ) = to.call{value: amount}("");
        require(ok, "ETH_FAIL");
        emit OwnerWithdrawETH(to, amount);
    }

    receive() external payable {}

    /// @notice Plant with PoH signature (required if requirePoH=true)
    function plant(bytes calldata pohSig) external whenNotPaused {
        require(!blacklisted[msg.sender], "BLACKLISTED");

        if (requirePoH) {
            require(address(pohVerifier) != address(0), "NO_POH_VERIFIER");
            bool ok = pohVerifier.verify(pohSig, msg.sender);
            require(ok, "NOT_HUMAN");
        }

        uint32 d = currentDay();
        DayCounter storage dc = _counter[msg.sender];
        if (dc.day != d) { dc.day = d; dc.count = 0; }

        require(dc.count < dailyCap, "DAILY_CAP");
        dc.count += 1;

        uint256 reward = rewardPerTx;
        if (reward > 0) {
            require(SafeTransfer.balanceOf(rewardToken, address(this)) >= reward, "INSUFFICIENT_FUNDS");
            rewardToken.safeTransfer(msg.sender, reward);
        }

        emit Planted(msg.sender, d, dc.count, reward);
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"rewardToken_","type":"address"},{"internalType":"uint256","name":"rewardPerTx_","type":"uint256"},{"internalType":"uint32","name":"dailyCap_","type":"uint32"},{"internalType":"bool","name":"requirePoH_","type":"bool"},{"internalType":"address","name":"pohVerifier_","type":"address"},{"internalType":"uint32","name":"delaySeconds_","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"BlacklistUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"ConfigApplied","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"executeAfter","type":"uint64"}],"name":"ConfigQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"rewardToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"rewardPerTx","type":"uint256"},{"indexed":false,"internalType":"uint32","name":"dailyCap","type":"uint32"},{"indexed":false,"internalType":"bool","name":"requirePoH","type":"bool"},{"indexed":false,"internalType":"address","name":"pohVerifier","type":"address"}],"name":"ConfigUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint32","name":"delaySeconds","type":"uint32"}],"name":"DelayUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OwnerWithdrawERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"OwnerWithdrawETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"isPaused","type":"bool"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint32","name":"day","type":"uint32"},{"indexed":false,"internalType":"uint32","name":"newCount","type":"uint32"},{"indexed":false,"internalType":"uint256","name":"rewardPaid","type":"uint256"}],"name":"Planted","type":"event"},{"inputs":[],"name":"applyQueuedConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelQueuedConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentDay","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dailyCap","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delaySeconds","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ownerWithdrawRewardToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pending","outputs":[{"internalType":"address","name":"rewardToken","type":"address"},{"internalType":"uint256","name":"rewardPerTx","type":"uint256"},{"internalType":"uint32","name":"dailyCap","type":"uint32"},{"internalType":"bool","name":"requirePoH","type":"bool"},{"internalType":"address","name":"pohVerifier","type":"address"},{"internalType":"uint64","name":"executeAfter","type":"uint64"},{"internalType":"bool","name":"exists","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"pohSig","type":"bytes"}],"name":"plant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pohVerifier","outputs":[{"internalType":"contract IPohVerifier","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"rewardToken_","type":"address"},{"internalType":"uint256","name":"rewardPerTx_","type":"uint256"},{"internalType":"uint32","name":"dailyCap_","type":"uint32"},{"internalType":"bool","name":"requirePoH_","type":"bool"},{"internalType":"address","name":"pohVerifier_","type":"address"}],"name":"queueConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"remainingToday","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"requirePoH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardPerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"setBlacklisted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"setBlacklistedBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"delaySeconds_","type":"uint32"}],"name":"setDelaySeconds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isPaused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"txToday","outputs":[{"internalType":"uint32","name":"day","type":"uint32"},{"internalType":"uint32","name":"count","type":"uint32"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b50604051611d7c380380611d7c83398101604081905261002e9161022d565b5f80546001600160a01b0319163390811782556040519091907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160a01b0386166100b35760405162461bcd60e51b81526020600482015260096024820152682120a22faa27a5a2a760b91b60448201526064015b60405180910390fd5b5f8463ffffffff16116100f25760405162461bcd60e51b815260206004820152600760248201526604241445f4341560cc1b60448201526064016100aa565b600180546001600160a01b0319166001600160a01b0388811691821790925560028790556003805463ffffffff88811664ffffffffff19909216821764010000000089151590810291909117600160281b600160c81b03191665010000000000968916968702179093556006805463ffffffff191691871691909117905560408051938452602084018a9052830152606082015260808101919091527f30315cfc61b7ce4782f18cdb8e00652cdbf424f154fcd799a333ebd359f9dd9a9060a00160405180910390a160405163ffffffff821681527f988c6f3e716aecf591f192563dfc5d6d0bc66d57928d8def96fa1fc98a7760719060200160405180910390a150505050505061029c565b80516001600160a01b0381168114610215575f5ffd5b919050565b805163ffffffff81168114610215575f5ffd5b5f5f5f5f5f5f60c08789031215610242575f5ffd5b61024b876101ff565b9550602087015194506102606040880161021a565b935060608701518015158114610274575f5ffd5b9250610282608088016101ff565b915061029060a0880161021a565b90509295509295509295565b611ad3806102a95f395ff3fe608060405260043610610164575f3560e01c80638da5cb5b116100cd578063d01dd6d211610087578063eb33939111610062578063eb339391146104ec578063ec52e06014610508578063f2fde38b14610527578063f7c618c114610546575f5ffd5b8063d01dd6d2146103e5578063dbac26e914610404578063e20ccec314610432575f5ffd5b80638da5cb5b1461033657806393563a9514610354578063a4b13e4414610373578063ac99d2ff14610392578063b258649f146103a6578063b752a7d1146103c9575f5ffd5b80635c975abb1161011e5780635c975abb146102765780635e4db5a1146102a55780635e9aa99d146102c457806363fdd419146102e357806378c5a65f146102f75780638976f21814610316575f5ffd5b8063070bdbef1461016f57806316c38b3c146101b257806324e23b64146101d357806327e938f9146101f257806330141fc21461022e5780635c9302c91461024d575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b5060035461019590600160281b90046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101bd575f5ffd5b506101d16101cc3660046116b0565b610565565b005b3480156101de575f5ffd5b506101d16101ed3660046116e3565b6105ee565b3480156101fd575f5ffd5b5061021161020c366004611710565b61065f565b6040805163ffffffff9384168152929091166020830152016101a9565b348015610239575f5ffd5b506101d161024836600461172b565b6106dc565b348015610258575f5ffd5b506102616107da565b60405163ffffffff90911681526020016101a9565b348015610281575f5ffd5b505f5461029590600160a01b900460ff1681565b60405190151581526020016101a9565b3480156102b0575f5ffd5b506101d16102bf3660046117ad565b6107ed565b3480156102cf575f5ffd5b506101d16102de3660046117d7565b61090e565b3480156102ee575f5ffd5b506101d1610aed565b348015610302575f5ffd5b506101d16103113660046117ad565b610c3f565b348015610321575f5ffd5b5060035461029590600160201b900460ff1681565b348015610341575f5ffd5b505f54610195906001600160a01b031681565b34801561035f575f5ffd5b506101d161036e366004611839565b610ced565b34801561037e575f5ffd5b506101d161038d366004611877565b610dc8565b34801561039d575f5ffd5b506101d161111c565b3480156103b1575f5ffd5b506103bb60025481565b6040519081526020016101a9565b3480156103d4575f5ffd5b506006546102619063ffffffff1681565b3480156103f0575f5ffd5b506101d16103ff3660046118e5565b6111c3565b34801561040f575f5ffd5b5061029561041e366004611710565b60046020525f908152604090205460ff1681565b34801561043d575f5ffd5b50600754600854600954600a54610492936001600160a01b03908116939263ffffffff81169260ff600160201b8304811693600160281b9093049092169167ffffffffffffffff821691600160401b90041687565b604080516001600160a01b039889168152602081019790975263ffffffff90951694860194909452911515606085015293909316608083015267ffffffffffffffff90921660a082015290151560c082015260e0016101a9565b3480156104f7575f5ffd5b506003546102619063ffffffff1681565b348015610513575f5ffd5b50610261610522366004611710565b61124a565b348015610532575f5ffd5b506101d1610541366004611710565b611290565b348015610551575f5ffd5b50600154610195906001600160a01b031681565b5f546001600160a01b031633146105975760405162461bcd60e51b815260040161058e9061191c565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2906105e390831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106175760405162461bcd60e51b815260040161058e9061191c565b6006805463ffffffff191663ffffffff83169081179091556040519081527f988c6f3e716aecf591f192563dfc5d6d0bc66d57928d8def96fa1fc98a776071906020016105e3565b6001600160a01b0381165f90815260056020908152604080832081518083019092525463ffffffff8082168352600160201b90910416918101919091528190816106a76107da565b90508063ffffffff16825f015163ffffffff16146106c957945f945092505050565b5080516020909101519094909350915050565b5f546001600160a01b031633146107055760405162461bcd60e51b815260040161058e9061191c565b5f5b828110156107d4578160045f86868581811061072557610725611940565b905060200201602081019061073a9190611710565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905583838281811061077357610773611940565b90506020020160208101906107889190611710565b6001600160a01b03167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac836040516107c4911515815260200190565b60405180910390a2600101610707565b50505050565b5f6107e86201518042611968565b905090565b5f546001600160a01b031633146108165760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b03821661083c5760405162461bcd60e51b815260040161058e90611987565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610885576040519150601f19603f3d011682016040523d82523d5f602084013e61088a565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152600860248201526711551217d190525360c21b604482015260640161058e565b826001600160a01b03167fa545303f80a3184f3f1f7769fe503039703c5ae631a1263c4c29ef14606a47248360405161090191815260200190565b60405180910390a2505050565b5f546001600160a01b031633146109375760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b03851661095d5760405162461bcd60e51b815260040161058e906119a7565b5f8363ffffffff16118015610979575060ff8363ffffffff1611155b6109af5760405162461bcd60e51b815260206004820152600760248201526604241445f4341560cc1b604482015260640161058e565b60065463ffffffff165f036109d0576109cb8585858585611355565b610ae6565b6006545f906109e59063ffffffff16426119ca565b6040805160e0810182526001600160a01b0389811680835260208084018b905263ffffffff8a16848601819052891515606086018190529389166080860181905267ffffffffffffffff881660a08701819052600160c090970196909652600780546001600160a01b03191690941790935560088c90556009805464ffffffffff1916909117600160201b9094029390931765010000000000600160c81b031916600160281b90920291909117909155600a8054600160401b68ffffffffffffffffff19909116841717905591519081529192507f9333041aa7d0844994421e5a4b783d0130d6bfe86a9adb0a496111f109f375f1910160405180910390a1505b5050505050565b5f546001600160a01b03163314610b165760405162461bcd60e51b815260040161058e9061191c565b600a54600160401b900460ff16610b5c5760405162461bcd60e51b815260206004820152600a6024820152694e4f5f50454e44494e4760b01b604482015260640161058e565b600a5467ffffffffffffffff16421015610ba45760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b604482015260640161058e565b600754600854600954610bde926001600160a01b03908116929163ffffffff81169160ff600160201b83041691600160281b900416611355565b600780546001600160a01b03191690555f6008819055600980546001600160c81b0319169055600a805468ffffffffffffffffff191690556040517f069fa58122b7926cfdf46e611a50611f9c80ca683431053255d5125dfd8653cd9190a1565b5f546001600160a01b03163314610c685760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b038216610c8e5760405162461bcd60e51b815260040161058e90611987565b600154610ca5906001600160a01b0316838361140f565b6001546040518281526001600160a01b038481169216907f1d4828a43ae63cab91306bef4dbc17799b4b158c864cf563cc057c39ed21c1ef9060200160405180910390a35050565b5f546001600160a01b03163314610d165760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b038316610d3c5760405162461bcd60e51b815260040161058e906119a7565b6001600160a01b038216610d625760405162461bcd60e51b815260040161058e90611987565b610d766001600160a01b038416838361140f565b816001600160a01b0316836001600160a01b03167f1d4828a43ae63cab91306bef4dbc17799b4b158c864cf563cc057c39ed21c1ef83604051610dbb91815260200190565b60405180910390a3505050565b5f54600160a01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152600660248201526514105554d15160d21b604482015260640161058e565b335f9081526004602052604090205460ff1615610e575760405162461bcd60e51b815260206004820152600b60248201526a10931050d2d31254d5115160aa1b604482015260640161058e565b600354600160201b900460ff1615610f7157600354600160281b90046001600160a01b0316610eba5760405162461bcd60e51b815260206004820152600f60248201526e2727afa827a42fab22a924a324a2a960891b604482015260640161058e565b600354604051633d3ac1b560e01b81525f91600160281b90046001600160a01b031690633d3ac1b590610ef5908690869033906004016119dd565b602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190611a1d565b905080610f6f5760405162461bcd60e51b81526020600482015260096024820152682727aa2fa42aa6a0a760b91b604482015260640161058e565b505b5f610f7a6107da565b335f90815260056020526040902080549192509063ffffffff808416911614610fb557805467ffffffffffffffff191663ffffffff83161781555b600354815463ffffffff918216600160201b909104909116106110065760405162461bcd60e51b815260206004820152600960248201526804441494c595f4341560bc1b604482015260640161058e565b80546001908290600490611028908490600160201b900463ffffffff16611a38565b92506101000a81548163ffffffff021916908363ffffffff1602179055505f60025490505f8111156110c657600154819061106c906001600160a01b03163061156d565b10156110af5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b604482015260640161058e565b6001546110c6906001600160a01b0316338361140f565b815460408051600160201b90920463ffffffff90811683526020830184905285169133917ff02eed9df42c885685cf441158059f675567750eb8049efa74a0cdd6804933d4910160405180910390a35050505050565b5f546001600160a01b031633146111455760405162461bcd60e51b815260040161058e9061191c565b600a54600160401b900460ff1661118b5760405162461bcd60e51b815260206004820152600a6024820152694e4f5f50454e44494e4760b01b604482015260640161058e565b600780546001600160a01b03191690555f600855600980546001600160c81b0319169055600a805468ffffffffffffffffff19169055565b5f546001600160a01b031633146111ec5760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac910160405180910390a25050565b5f5f6112558361065f565b60035490925063ffffffff90811690831610905061127557505f92915050565b60035461128990829063ffffffff16611a54565b9392505050565b5f546001600160a01b031633146112b95760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b0381166112fc5760405162461bcd60e51b815260206004820152600a6024820152692d22a927afa7aba722a960b11b604482015260640161058e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b0319166001600160a01b0387811691821790925560028690556003805463ffffffff871664ffffffffff199091168117600160201b8715159081029190911765010000000000600160c81b031916600160281b958716958602179092556040805193845260208401899052830152606082015260808101919091527f30315cfc61b7ce4782f18cdb8e00652cdbf424f154fcd799a333ebd359f9dd9a9060a00160405180910390a15050505050565b6001600160a01b0383166114355760405162461bcd60e51b815260040161058e906119a7565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916114909190611a70565b5f604051808303815f865af19150503d805f81146114c9576040519150601f19603f3d011682016040523d82523d5f602084013e6114ce565b606091505b5091509150816115155760405162461bcd60e51b81526020600482015260126024820152711514905394d1915497d0d0531317d190525360721b604482015260640161058e565b805115610ae657808060200190518101906115309190611a1d565b610ae65760405162461bcd60e51b815260206004820152600e60248201526d5452414e534645525f46414c534560901b604482015260640161058e565b5f5f5f846001600160a01b03167f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be856040516024016115bb91906001600160a01b0391909116815260200190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516115f99190611a70565b5f60405180830381855afa9150503d805f8114611631576040519150601f19603f3d011682016040523d82523d5f602084013e611636565b606091505b509150915081801561164a57506020815110155b6116815760405162461bcd60e51b815260206004820152600860248201526710905317d190525360c21b604482015260640161058e565b808060200190518101906116959190611a86565b925050505b92915050565b80151581146116ad575f5ffd5b50565b5f602082840312156116c0575f5ffd5b8135611289816116a0565b803563ffffffff811681146116de575f5ffd5b919050565b5f602082840312156116f3575f5ffd5b611289826116cb565b6001600160a01b03811681146116ad575f5ffd5b5f60208284031215611720575f5ffd5b8135611289816116fc565b5f5f5f6040848603121561173d575f5ffd5b833567ffffffffffffffff811115611753575f5ffd5b8401601f81018613611763575f5ffd5b803567ffffffffffffffff811115611779575f5ffd5b8660208260051b840101111561178d575f5ffd5b6020918201945092508401356117a2816116a0565b809150509250925092565b5f5f604083850312156117be575f5ffd5b82356117c9816116fc565b946020939093013593505050565b5f5f5f5f5f60a086880312156117eb575f5ffd5b85356117f6816116fc565b94506020860135935061180b604087016116cb565b9250606086013561181b816116a0565b9150608086013561182b816116fc565b809150509295509295909350565b5f5f5f6060848603121561184b575f5ffd5b8335611856816116fc565b92506020840135611866816116fc565b929592945050506040919091013590565b5f5f60208385031215611888575f5ffd5b823567ffffffffffffffff81111561189e575f5ffd5b8301601f810185136118ae575f5ffd5b803567ffffffffffffffff8111156118c4575f5ffd5b8560208284010111156118d5575f5ffd5b6020919091019590945092505050565b5f5f604083850312156118f6575f5ffd5b8235611901816116fc565b91506020830135611911816116a0565b809150509250929050565b6020808252600a908201526927a7262cafa7aba722a960b11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261198257634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252600690820152654241445f544f60d01b604082015260600190565b6020808252600990820152682120a22faa27a5a2a760b91b604082015260600190565b8082018082111561169a5761169a611954565b60408152826040820152828460608301375f60608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b5f60208284031215611a2d575f5ffd5b8151611289816116a0565b63ffffffff818116838216019081111561169a5761169a611954565b63ffffffff828116828216039081111561169a5761169a611954565b5f82518060208501845e5f920191825250919050565b5f60208284031215611a96575f5ffd5b505191905056fea2646970667358221220b340047af93309385b389211741fe0952eed7a65889d771c389781297f5825b664736f6c634300081f003300000000000000000000000012bbdc004a0e9085ff94df1717336ecbc9f9e5fe00000000000000000000000000000000000000000000000410d586a20a4c0000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bf14cfafd7b83f6de881ae6dc10796ddd72208310000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610164575f3560e01c80638da5cb5b116100cd578063d01dd6d211610087578063eb33939111610062578063eb339391146104ec578063ec52e06014610508578063f2fde38b14610527578063f7c618c114610546575f5ffd5b8063d01dd6d2146103e5578063dbac26e914610404578063e20ccec314610432575f5ffd5b80638da5cb5b1461033657806393563a9514610354578063a4b13e4414610373578063ac99d2ff14610392578063b258649f146103a6578063b752a7d1146103c9575f5ffd5b80635c975abb1161011e5780635c975abb146102765780635e4db5a1146102a55780635e9aa99d146102c457806363fdd419146102e357806378c5a65f146102f75780638976f21814610316575f5ffd5b8063070bdbef1461016f57806316c38b3c146101b257806324e23b64146101d357806327e938f9146101f257806330141fc21461022e5780635c9302c91461024d575f5ffd5b3661016b57005b5f5ffd5b34801561017a575f5ffd5b5060035461019590600160281b90046001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101bd575f5ffd5b506101d16101cc3660046116b0565b610565565b005b3480156101de575f5ffd5b506101d16101ed3660046116e3565b6105ee565b3480156101fd575f5ffd5b5061021161020c366004611710565b61065f565b6040805163ffffffff9384168152929091166020830152016101a9565b348015610239575f5ffd5b506101d161024836600461172b565b6106dc565b348015610258575f5ffd5b506102616107da565b60405163ffffffff90911681526020016101a9565b348015610281575f5ffd5b505f5461029590600160a01b900460ff1681565b60405190151581526020016101a9565b3480156102b0575f5ffd5b506101d16102bf3660046117ad565b6107ed565b3480156102cf575f5ffd5b506101d16102de3660046117d7565b61090e565b3480156102ee575f5ffd5b506101d1610aed565b348015610302575f5ffd5b506101d16103113660046117ad565b610c3f565b348015610321575f5ffd5b5060035461029590600160201b900460ff1681565b348015610341575f5ffd5b505f54610195906001600160a01b031681565b34801561035f575f5ffd5b506101d161036e366004611839565b610ced565b34801561037e575f5ffd5b506101d161038d366004611877565b610dc8565b34801561039d575f5ffd5b506101d161111c565b3480156103b1575f5ffd5b506103bb60025481565b6040519081526020016101a9565b3480156103d4575f5ffd5b506006546102619063ffffffff1681565b3480156103f0575f5ffd5b506101d16103ff3660046118e5565b6111c3565b34801561040f575f5ffd5b5061029561041e366004611710565b60046020525f908152604090205460ff1681565b34801561043d575f5ffd5b50600754600854600954600a54610492936001600160a01b03908116939263ffffffff81169260ff600160201b8304811693600160281b9093049092169167ffffffffffffffff821691600160401b90041687565b604080516001600160a01b039889168152602081019790975263ffffffff90951694860194909452911515606085015293909316608083015267ffffffffffffffff90921660a082015290151560c082015260e0016101a9565b3480156104f7575f5ffd5b506003546102619063ffffffff1681565b348015610513575f5ffd5b50610261610522366004611710565b61124a565b348015610532575f5ffd5b506101d1610541366004611710565b611290565b348015610551575f5ffd5b50600154610195906001600160a01b031681565b5f546001600160a01b031633146105975760405162461bcd60e51b815260040161058e9061191c565b60405180910390fd5b5f8054821515600160a01b0260ff60a01b199091161790556040517f0e2fb031ee032dc02d8011dc50b816eb450cf856abd8261680dac74f72165bd2906105e390831515815260200190565b60405180910390a150565b5f546001600160a01b031633146106175760405162461bcd60e51b815260040161058e9061191c565b6006805463ffffffff191663ffffffff83169081179091556040519081527f988c6f3e716aecf591f192563dfc5d6d0bc66d57928d8def96fa1fc98a776071906020016105e3565b6001600160a01b0381165f90815260056020908152604080832081518083019092525463ffffffff8082168352600160201b90910416918101919091528190816106a76107da565b90508063ffffffff16825f015163ffffffff16146106c957945f945092505050565b5080516020909101519094909350915050565b5f546001600160a01b031633146107055760405162461bcd60e51b815260040161058e9061191c565b5f5b828110156107d4578160045f86868581811061072557610725611940565b905060200201602081019061073a9190611710565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905583838281811061077357610773611940565b90506020020160208101906107889190611710565b6001600160a01b03167f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac836040516107c4911515815260200190565b60405180910390a2600101610707565b50505050565b5f6107e86201518042611968565b905090565b5f546001600160a01b031633146108165760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b03821661083c5760405162461bcd60e51b815260040161058e90611987565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114610885576040519150601f19603f3d011682016040523d82523d5f602084013e61088a565b606091505b50509050806108c65760405162461bcd60e51b815260206004820152600860248201526711551217d190525360c21b604482015260640161058e565b826001600160a01b03167fa545303f80a3184f3f1f7769fe503039703c5ae631a1263c4c29ef14606a47248360405161090191815260200190565b60405180910390a2505050565b5f546001600160a01b031633146109375760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b03851661095d5760405162461bcd60e51b815260040161058e906119a7565b5f8363ffffffff16118015610979575060ff8363ffffffff1611155b6109af5760405162461bcd60e51b815260206004820152600760248201526604241445f4341560cc1b604482015260640161058e565b60065463ffffffff165f036109d0576109cb8585858585611355565b610ae6565b6006545f906109e59063ffffffff16426119ca565b6040805160e0810182526001600160a01b0389811680835260208084018b905263ffffffff8a16848601819052891515606086018190529389166080860181905267ffffffffffffffff881660a08701819052600160c090970196909652600780546001600160a01b03191690941790935560088c90556009805464ffffffffff1916909117600160201b9094029390931765010000000000600160c81b031916600160281b90920291909117909155600a8054600160401b68ffffffffffffffffff19909116841717905591519081529192507f9333041aa7d0844994421e5a4b783d0130d6bfe86a9adb0a496111f109f375f1910160405180910390a1505b5050505050565b5f546001600160a01b03163314610b165760405162461bcd60e51b815260040161058e9061191c565b600a54600160401b900460ff16610b5c5760405162461bcd60e51b815260206004820152600a6024820152694e4f5f50454e44494e4760b01b604482015260640161058e565b600a5467ffffffffffffffff16421015610ba45760405162461bcd60e51b8152602060048201526009602482015268544f4f5f4541524c5960b81b604482015260640161058e565b600754600854600954610bde926001600160a01b03908116929163ffffffff81169160ff600160201b83041691600160281b900416611355565b600780546001600160a01b03191690555f6008819055600980546001600160c81b0319169055600a805468ffffffffffffffffff191690556040517f069fa58122b7926cfdf46e611a50611f9c80ca683431053255d5125dfd8653cd9190a1565b5f546001600160a01b03163314610c685760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b038216610c8e5760405162461bcd60e51b815260040161058e90611987565b600154610ca5906001600160a01b0316838361140f565b6001546040518281526001600160a01b038481169216907f1d4828a43ae63cab91306bef4dbc17799b4b158c864cf563cc057c39ed21c1ef9060200160405180910390a35050565b5f546001600160a01b03163314610d165760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b038316610d3c5760405162461bcd60e51b815260040161058e906119a7565b6001600160a01b038216610d625760405162461bcd60e51b815260040161058e90611987565b610d766001600160a01b038416838361140f565b816001600160a01b0316836001600160a01b03167f1d4828a43ae63cab91306bef4dbc17799b4b158c864cf563cc057c39ed21c1ef83604051610dbb91815260200190565b60405180910390a3505050565b5f54600160a01b900460ff1615610e0a5760405162461bcd60e51b815260206004820152600660248201526514105554d15160d21b604482015260640161058e565b335f9081526004602052604090205460ff1615610e575760405162461bcd60e51b815260206004820152600b60248201526a10931050d2d31254d5115160aa1b604482015260640161058e565b600354600160201b900460ff1615610f7157600354600160281b90046001600160a01b0316610eba5760405162461bcd60e51b815260206004820152600f60248201526e2727afa827a42fab22a924a324a2a960891b604482015260640161058e565b600354604051633d3ac1b560e01b81525f91600160281b90046001600160a01b031690633d3ac1b590610ef5908690869033906004016119dd565b602060405180830381865afa158015610f10573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f349190611a1d565b905080610f6f5760405162461bcd60e51b81526020600482015260096024820152682727aa2fa42aa6a0a760b91b604482015260640161058e565b505b5f610f7a6107da565b335f90815260056020526040902080549192509063ffffffff808416911614610fb557805467ffffffffffffffff191663ffffffff83161781555b600354815463ffffffff918216600160201b909104909116106110065760405162461bcd60e51b815260206004820152600960248201526804441494c595f4341560bc1b604482015260640161058e565b80546001908290600490611028908490600160201b900463ffffffff16611a38565b92506101000a81548163ffffffff021916908363ffffffff1602179055505f60025490505f8111156110c657600154819061106c906001600160a01b03163061156d565b10156110af5760405162461bcd60e51b8152602060048201526012602482015271494e53554646494349454e545f46554e445360701b604482015260640161058e565b6001546110c6906001600160a01b0316338361140f565b815460408051600160201b90920463ffffffff90811683526020830184905285169133917ff02eed9df42c885685cf441158059f675567750eb8049efa74a0cdd6804933d4910160405180910390a35050505050565b5f546001600160a01b031633146111455760405162461bcd60e51b815260040161058e9061191c565b600a54600160401b900460ff1661118b5760405162461bcd60e51b815260206004820152600a6024820152694e4f5f50454e44494e4760b01b604482015260640161058e565b600780546001600160a01b03191690555f600855600980546001600160c81b0319169055600a805468ffffffffffffffffff19169055565b5f546001600160a01b031633146111ec5760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b0382165f81815260046020908152604091829020805460ff191685151590811790915591519182527f6a12b3df6cba4203bd7fd06b816789f87de8c594299aed5717ae070fac781bac910160405180910390a25050565b5f5f6112558361065f565b60035490925063ffffffff90811690831610905061127557505f92915050565b60035461128990829063ffffffff16611a54565b9392505050565b5f546001600160a01b031633146112b95760405162461bcd60e51b815260040161058e9061191c565b6001600160a01b0381166112fc5760405162461bcd60e51b815260206004820152600a6024820152692d22a927afa7aba722a960b11b604482015260640161058e565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b600180546001600160a01b0319166001600160a01b0387811691821790925560028690556003805463ffffffff871664ffffffffff199091168117600160201b8715159081029190911765010000000000600160c81b031916600160281b958716958602179092556040805193845260208401899052830152606082015260808101919091527f30315cfc61b7ce4782f18cdb8e00652cdbf424f154fcd799a333ebd359f9dd9a9060a00160405180910390a15050505050565b6001600160a01b0383166114355760405162461bcd60e51b815260040161058e906119a7565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17905291515f928392908716916114909190611a70565b5f604051808303815f865af19150503d805f81146114c9576040519150601f19603f3d011682016040523d82523d5f602084013e6114ce565b606091505b5091509150816115155760405162461bcd60e51b81526020600482015260126024820152711514905394d1915497d0d0531317d190525360721b604482015260640161058e565b805115610ae657808060200190518101906115309190611a1d565b610ae65760405162461bcd60e51b815260206004820152600e60248201526d5452414e534645525f46414c534560901b604482015260640161058e565b5f5f5f846001600160a01b03167f70a08231b98ef4ca268c9cc3f6b4590e4bfec28280db06bb5d45e689f2a360be856040516024016115bb91906001600160a01b0391909116815260200190565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516115f99190611a70565b5f60405180830381855afa9150503d805f8114611631576040519150601f19603f3d011682016040523d82523d5f602084013e611636565b606091505b509150915081801561164a57506020815110155b6116815760405162461bcd60e51b815260206004820152600860248201526710905317d190525360c21b604482015260640161058e565b808060200190518101906116959190611a86565b925050505b92915050565b80151581146116ad575f5ffd5b50565b5f602082840312156116c0575f5ffd5b8135611289816116a0565b803563ffffffff811681146116de575f5ffd5b919050565b5f602082840312156116f3575f5ffd5b611289826116cb565b6001600160a01b03811681146116ad575f5ffd5b5f60208284031215611720575f5ffd5b8135611289816116fc565b5f5f5f6040848603121561173d575f5ffd5b833567ffffffffffffffff811115611753575f5ffd5b8401601f81018613611763575f5ffd5b803567ffffffffffffffff811115611779575f5ffd5b8660208260051b840101111561178d575f5ffd5b6020918201945092508401356117a2816116a0565b809150509250925092565b5f5f604083850312156117be575f5ffd5b82356117c9816116fc565b946020939093013593505050565b5f5f5f5f5f60a086880312156117eb575f5ffd5b85356117f6816116fc565b94506020860135935061180b604087016116cb565b9250606086013561181b816116a0565b9150608086013561182b816116fc565b809150509295509295909350565b5f5f5f6060848603121561184b575f5ffd5b8335611856816116fc565b92506020840135611866816116fc565b929592945050506040919091013590565b5f5f60208385031215611888575f5ffd5b823567ffffffffffffffff81111561189e575f5ffd5b8301601f810185136118ae575f5ffd5b803567ffffffffffffffff8111156118c4575f5ffd5b8560208284010111156118d5575f5ffd5b6020919091019590945092505050565b5f5f604083850312156118f6575f5ffd5b8235611901816116fc565b91506020830135611911816116a0565b809150509250929050565b6020808252600a908201526927a7262cafa7aba722a960b11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f8261198257634e487b7160e01b5f52601260045260245ffd5b500490565b6020808252600690820152654241445f544f60d01b604082015260600190565b6020808252600990820152682120a22faa27a5a2a760b91b604082015260600190565b8082018082111561169a5761169a611954565b60408152826040820152828460608301375f60608483018101919091526001600160a01b03929092166020820152601f909201601f191690910101919050565b5f60208284031215611a2d575f5ffd5b8151611289816116a0565b63ffffffff818116838216019081111561169a5761169a611954565b63ffffffff828116828216039081111561169a5761169a611954565b5f82518060208501845e5f920191825250919050565b5f60208284031215611a96575f5ffd5b505191905056fea2646970667358221220b340047af93309385b389211741fe0952eed7a65889d771c389781297f5825b664736f6c634300081f0033

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

00000000000000000000000012bbdc004a0e9085ff94df1717336ecbc9f9e5fe00000000000000000000000000000000000000000000000410d586a20a4c0000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000bf14cfafd7b83f6de881ae6dc10796ddd72208310000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : rewardToken_ (address): 0x12bBdc004a0E9085Ff94dF1717336EcBc9F9E5fe
Arg [1] : rewardPerTx_ (uint256): 75000000000000000000
Arg [2] : dailyCap_ (uint32): 10
Arg [3] : requirePoH_ (bool): True
Arg [4] : pohVerifier_ (address): 0xBf14cFAFD7B83f6de881ae6dc10796ddD7220831
Arg [5] : delaySeconds_ (uint32): 0

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000012bbdc004a0e9085ff94df1717336ecbc9f9e5fe
Arg [1] : 00000000000000000000000000000000000000000000000410d586a20a4c0000
Arg [2] : 000000000000000000000000000000000000000000000000000000000000000a
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [4] : 000000000000000000000000bf14cfafd7b83f6de881ae6dc10796ddd7220831
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
view all blocks sequenced

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

Validator Index Block Amount
View All Withdrawals

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

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