Contract 0x31cbc5c5a02447505067C3Df9D2A843Df9e0d6bF

 
Ad
Ad
Txn Hash Method
Block
From
To
Value
0xa9a1265198e32ed2f66bcdf04c47c2a0ae6172fd116fce4bf04a3b89b02c3982Transfer116641202021-01-16 4:29:35112 days 8 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.00189602452
0x1ffa94db9ff29300a616f0961a907173677fcb24572f08cd9faf696f1e68671aMint103383662020-06-26 1:09:41316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0x9ab673509125ac1c92397050eb5dfdbe482ac9a9d9f9a2e8902d5889152031e4Mint103381712020-06-26 0:24:38316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0x33924ea1116f5b3bdbac7c016f3adec4ff729ccf11ab3da37cd2bdede43ff323Mint103381682020-06-26 0:24:11316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x45f2fce1558cfe24b1a17e8fcfcfd9e8fa8e18f6aab2f059b7e9cef1b6fc73a1Mint103381662020-06-26 0:23:59316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0x52e59f9aa8c61addbbd121168433972a2ca3ca226b1c08b9d7876f4f3ef51f55Mint103381632020-06-26 0:23:33316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x457f263c7ec51683fe9aab0bee71ef94332cb72a36a8332c691bee407e547735Mint103381622020-06-26 0:23:03316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0x3cb8de3262f78b1df7565d1909528d8513cb580d4a4093fa68a72ac0c041ec06Mint103381612020-06-26 0:22:37316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x39ce97672ceaa466e460b00b9521cf11ce72356a1a1d4dd63f0f6c19ad8d820bMint103381612020-06-26 0:22:37316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0009250440
0xa34f33eb42e70089b8a853763adac2479ee2862f2e49e3c815c11726dcff948cMint103381602020-06-26 0:22:30316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x82671194a4f44424ec4c55d24311e4c60aa23f6ca84ec42b9172c0ae6f9f78cdMint103381572020-06-26 0:21:44316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0xd5f0b5240973b56aaabcf9a06e9c77e9d5aeeec10cce0fa8f169ae985d36d1dbMint103381562020-06-26 0:21:42316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x4c71680bf03f700e4aae271c8b268ee9abe7d0bff20f8bdea2be3e4b2762ef71Mint103381542020-06-26 0:21:11316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x8d1d439b0e3cd03ee602c8d5e053f614d9e21a681392f7a968ce5c589eccc724Mint103381532020-06-26 0:20:57316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0xf765878143d2733f00cba118677466e2413525e5a55940a35b37c1f8ccf286f5Mint103381512020-06-26 0:20:12316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0009245640
0x2a669b959942f74d7fb7d9d3951757982ed08997e48307b0fd5a30388c3f7fd6Mint103381512020-06-26 0:20:12316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035790840
0x6a1b22c3b76e5f45980ea0cc945a691e0d71885aab94af49f0abaa637286f39cMint103381502020-06-26 0:20:05316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
0xdf3126482fa5bf1190f7e67867d6c0786dbe8f143e247aa582958b3514e4c39dMint103381452020-06-26 0:19:29316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0xc95a5c2bd916138c9d47622ed635381fea36fd11763077d7a0c88ec96d86ac6eMint103381442020-06-26 0:19:12316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0xe6aac7350647c3896b900227fced41677bb32758f55aae78df07c35c91180e84Mint103381432020-06-26 0:18:59316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0009240840
0x6bf3c429b7631beb7b44f62b27bf84b0c1f591fd90e9483123c185b13fe15e32Mint103381422020-06-26 0:18:26316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x973e8f046e33c3481a1d2711a8453bfed31e10ffc8b65f4f1f69be4b6b37c66cMint103381412020-06-26 0:18:16316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0x69a5f759ab2026a2acaab492cd62cb193c9ab6d9db31902546fa6ba4eb32cbb8Mint103381402020-06-26 0:18:06316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035805240
0xd558c571110af8fa6b91d6753b69e50f378d026504bc3c5bcdc92fa585a05982Mint103381392020-06-26 0:17:38316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0009245640
0xec0674a8b351669f23ca3b6d74155c64b6b4c6e9424d76c0303116f4a177ef63Mint103381382020-06-26 0:17:17316 days 12 hrs agoBitszer: Deployer IN  Bitszer: UNTS Token0 Ether0.0035800440
[ Download CSV Export 

OVERVIEW

Used to monetize (1) the game time of gamers and (2) the games of developers. This is done through the Bitszer Auction House which enables gamers to sell game items to other gamers in exchange for Units.

Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Units

Compiler Version
v0.6.0+commit.26b70077

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-06-26
*/

// SPDX-License-Identifier: MIT

// Some math and mining capability borrowed from _0xBitcoinToken
// Which can be found at https://etherscan.io/address/0xb6ed7644c69416d67b522e20bc294a9a9b405b31#code

pragma solidity ^0.6.0;

// -----------------------------------------

// Standard Context Getter
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/GSN/Context.sol

// -----------------------------------------

contract Context {
    constructor () internal { }
    
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }
    
    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

// -----------------------------------------

// Essential functions for ERC20 implementation
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol

// -----------------------------------------

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

// -----------------------------------------

// Optional functions from the ERC20 standard 
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20Detailed.sol

// -----------------------------------------

abstract contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    
    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }
    
    function name() public view returns (string memory) {
        return _name;
    }
    
    function symbol() public view returns (string memory) {
        return _symbol;
    }
    
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}

// -----------------------------------------

// Safe Math
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol

// -----------------------------------------

library SafeMath {
    
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        
        return c;
    }
    
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        
        return c;
    }
    
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        
        return c;
    }
    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a== b * c + a % b); // This will always hold
        
        return c;
    }
    
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
    
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// -----------------------------------------

// Implementation of ERC20 interface
// https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol

// -----------------------------------------

contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowances;

    uint256 private _totalSupply;

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _burnFrom(address account, uint256 amount) internal virtual {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

// -----------------------------------------

// Math and mining capability borrowed from _0xBitcoinToken
// https://etherscan.io/address/0xb6ed7644c69416d67b522e20bc294a9a9b405b31#code

// -----------------------------------------

library ExtendedMath {
    // Return the smaller of the two inputs (a or b)
    function limitLessThan(uint a, uint b) internal pure returns (uint c) {
        if(a > b) return b;
        return a;
    }
}

contract Units is ERC20, ERC20Detailed {
    using SafeMath for uint;
    using ExtendedMath for uint;
    
    address public lastRewardTo;
    uint public lastRewardAmount;
    uint public lastRewardEthBlockNumber;
    
    uint public miningTarget;
    bytes32 public challengeNumber;
    
    uint public latestDifficultyPeriodStarted;
    uint public epochCount;
    uint public rewardEra;
    uint public currentMonthlyRate;
    
    uint[4] public bonusEraMonthlyRate;
    uint[4] public bonusEraLengthInMonths;
    uint[4] public maxSupplyForBonusEra;
    uint public lastBonusEra;
    uint public standardEraMonthlyRate;
    
    uint public _BLOCKS_PER_READJUSTMENT = 1024;
    uint public _MINIMUM_TARGET = 2**16; // Hardest
    uint public _MAXIMUM_TARGET = 2**255; // Easiest
    
    
    bool locked = false;
    mapping(bytes32 => bytes32) solutionForChallenge; // Digested solutions
    
    
    // -----------------------------------------
    
    // Constructor
    
    // -----------------------------------------
    constructor() ERC20Detailed("Units", "UNTS", 18) public {
        if(locked) revert();
        locked = true;
        
        // Era rules
        bonusEraMonthlyRate = [7111*10**4 * 10**uint(decimals()),
                               3556*10**4 * 10**uint(decimals()),
                               1778*10**4 * 10**uint(decimals()),
                               8889*10**3 * 10**uint(decimals())];
                               
        maxSupplyForBonusEra = [6133*10**5 * 10**uint(decimals()),
                                7200*10**5 * 10**uint(decimals()),
                                7733*10**5 * 10**uint(decimals()),
                                8000*10**5 * 10**uint(decimals())];
        
        standardEraMonthlyRate = 8889*10**2 * 10**uint(decimals());
        
        // Err Check
        assert(bonusEraMonthlyRate.length == maxSupplyForBonusEra.length);
        
        // Init vars
        rewardEra = 0;
        epochCount = 0;
        currentMonthlyRate = bonusEraMonthlyRate[rewardEra];
        miningTarget = _MAXIMUM_TARGET;
        latestDifficultyPeriodStarted = block.number;
        
        // Begin first epoch
        _startNewMiningEpoch();
    }
    
    function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) {
        bytes32 digest = keccak256(abi.encodePacked(challengeNumber, msg.sender, nonce));
        
        // Prove digest
        if (digest != challenge_digest) revert();
        // Check if digest is invalid
        if(uint256(digest) > miningTarget) revert();
        
        // Check uniqueness of answer
        bytes32 solution = solutionForChallenge[challengeNumber];
        if(solution != 0x0) revert();
        // Store answer
        solutionForChallenge[challengeNumber] = digest;
        
        // Reward
        uint reward_amount = getMiningReward();
        _mint(msg.sender, reward_amount);
        
        // Store reward details
        lastRewardTo = msg.sender;
        lastRewardAmount = reward_amount;
        lastRewardEthBlockNumber = block.number;
        
        // Intialize next epoch
        _startNewMiningEpoch();
        
        return true;
    }
    
    function _startNewMiningEpoch() internal {
        // Update Era
        if (rewardEra < bonusEraMonthlyRate.length) {
            // Determine current era
            if (totalSupply() >= maxSupplyForBonusEra[rewardEra]) {
                rewardEra = rewardEra + 1;
            }
            
            // Assign corresponding era rate
            if (rewardEra < bonusEraMonthlyRate.length) {
                currentMonthlyRate = bonusEraMonthlyRate[rewardEra];
            } else {
                currentMonthlyRate = standardEraMonthlyRate;
            }
        }
        
        // New epoch
        epochCount = epochCount.add(1);
        
        // Check Difficulty
        if (epochCount % _BLOCKS_PER_READJUSTMENT == 0) {
            _reAdjustDifficulty();
        }
        
        // Prevents pre-mine
        challengeNumber = blockhash(block.number - 1);
    }
        
    function _reAdjustDifficulty() internal {
        // calculate target time (measured in ethereum blocks)
        uint blocks_per_readjustment = _BLOCKS_PER_READJUSTMENT;
        uint targetEthBlocksPerDiffPeriod = blocks_per_readjustment.mul(2); // * 2 => 1/2 speed as ethereum
        
        // calculate how long it took
        uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;
        // check mint rate
        if (ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod) { // fewer blocks than expected ==> too easy
            uint excess_block_pct = ((targetEthBlocksPerDiffPeriod.mul(100)).div(ethBlocksSinceLastDifficultyPeriod)).sub(100);
            uint excess_block_pct_extra = excess_block_pct.limitLessThan(1000); // "xx% over" evaluates to "xx"
            
            miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra)); // max reduction is half the size (1 ==> 0.5)
        } else { // more blocks than expected ==> too hard
            uint shortage_block_pct = ethBlocksSinceLastDifficultyPeriod.mul(100).div(targetEthBlocksPerDiffPeriod);
            uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000);
            
            miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra)); // max increase is half the size (1 ==> 1.5)
        }
        
        latestDifficultyPeriodStarted = block.number;
        
        if(miningTarget < _MINIMUM_TARGET) {
            miningTarget = _MINIMUM_TARGET;
        }
        
        if(miningTarget < _MAXIMUM_TARGET) {
            miningTarget = _MAXIMUM_TARGET;
        }
    }
    
    function getChallengeNumber() public view returns (bytes32) {
        return challengeNumber;
    }
    
    function getMiningDifficulty() public view returns (uint) {
        return _MAXIMUM_TARGET.div(miningTarget);
    }
    
    function getMiningTarget() public view returns (uint) {
        return miningTarget;
    }
    
    function getMiningReward() public view returns (uint) {
        if(totalSupply() == 0) {
            return 4*10**8 * 10**uint(decimals());
        } else {
            uint award_per_block = currentMonthlyRate.div(2628*10**3).mul(20); // rate per 20 seconds. Assumes ethereum takes 10 seconds per block and that the difficuly is properly set.
            return award_per_block;
        }
    }
    
    function getRewardEra() public view returns (uint){
        return rewardEra;
    }
    
    function getCurrentMonthlyRate() public view returns (uint) {
        return currentMonthlyRate;
    }
    
    function getEpochCount() public view returns (uint) {
        return epochCount;
    }
    
    function getLatestDifficultyPeriodStarted() public view returns (uint) {
        return latestDifficultyPeriodStarted;
    }
    
    // Helps with debugging mining software
    function getMintDigest(uint256 challenge_number, bytes32 nonce) public view returns (bytes32 digesttest) {
        bytes32 digest = keccak256(abi.encodePacked(challenge_number, msg.sender, nonce));
        return digest;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bonusEraLengthInMonths","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bonusEraMonthlyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"challengeNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMonthlyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getChallengeNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCurrentMonthlyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEpochCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestDifficultyPeriodStarted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningDifficulty","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMiningTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"challenge_number","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"name":"getMintDigest","outputs":[{"internalType":"bytes32","name":"digesttest","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastBonusEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastRewardTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxSupplyForBonusEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"miningTarget","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes32","name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardEra","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"standardEraMonthlyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6080604052610400601c5562010000601d557f8000000000000000000000000000000000000000000000000000000000000000601e556000601f60006101000a81548160ff0219169083151502179055503480156200005d57600080fd5b506040518060400160405280600581526020017f556e6974730000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f554e54530000000000000000000000000000000000000000000000000000000081525060128260039080519060200190620000e492919062000971565b508160049080519060200190620000fd92919062000971565b5080600560006101000a81548160ff021916908360ff160217905550505050601f60009054906101000a900460ff16156200013757600080fd5b6001601f60006101000a81548160ff02191690831515021790555060405180608001604052806200016d6200030b60201b60201c565b60ff16600a0a63043d0d700281526020016200018e6200030b60201b60201c565b60ff16600a0a63021e9a40028152602001620001af6200030b60201b60201c565b60ff16600a0a63010f4d20028152602001620001d06200030b60201b60201c565b60ff16600a0a6287a2a802815250600e906004620001f0929190620009f8565b5060405180608001604052806200020c6200030b60201b60201c565b60ff16600a0a63248e37200281526020016200022d6200030b60201b60201c565b60ff16600a0a632aea54000281526020016200024e6200030b60201b60201c565b60ff16600a0a632e179f200281526020016200026f6200030b60201b60201c565b60ff16600a0a632faf080002815250601690600462000290929190620009f8565b50620002a16200030b60201b60201c565b60ff16600a0a620d904402601b8190555060048014620002bd57fe5b6000600c819055506000600b81905550600e600c5460048110620002dd57fe5b0154600d81905550601e5460088190555043600a81905550620003056200032260201b60201c565b62000a65565b6000600560009054906101000a900460ff16905090565b6004600c54101562000398576016600c54600481106200033e57fe5b015462000350620003f160201b60201c565b1062000363576001600c5401600c819055505b6004600c5410156200038d57600e600c54600481106200037f57fe5b0154600d8190555062000397565b601b54600d819055505b5b620003b56001600b54620003fb60201b62001ace1790919060201c565b600b819055506000601c54600b5481620003cb57fe5b061415620003e457620003e36200048460201b60201c565b5b6001430340600981905550565b6000600254905090565b6000808284019050838110156200047a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000601c5490506000620004a86002836200069560201b62001b561790919060201c565b90506000600a5443039050818110156200058e5760006200050c6064620004f884620004e46064886200069560201b62001b561790919060201c565b6200072060201b6200148c1790919060201c565b6200077260201b62001e4b1790919060201c565b905060006200052c6103e883620007c460201b62001e951790919060201c565b9050620005806200056982620005556107d06008546200072060201b6200148c1790919060201c565b6200069560201b62001b561790919060201c565b6008546200077260201b62001e4b1790919060201c565b60088190555050506200065b565b6000620005c483620005b06064856200069560201b62001b561790919060201c565b6200072060201b6200148c1790919060201c565b90506000620005fe6103e8620005ea6064856200077260201b62001e4b1790919060201c565b620007c460201b62001e951790919060201c565b9050620006526200063b82620006276107d06008546200072060201b6200148c1790919060201c565b6200069560201b62001b561790919060201c565b600854620003fb60201b62001ace1790919060201c565b60088190555050505b43600a81905550601d5460085410156200067957601d546008819055505b601e5460085410156200069057601e546008819055505b505050565b600080831415620006aa57600090506200071a565b6000828402905082848281620006bc57fe5b041462000715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062002a7e6021913960400191505060405180910390fd5b809150505b92915050565b60006200076a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620007e260201b60201c565b905092915050565b6000620007bc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620008ad60201b60201c565b905092915050565b600081831115620007d857819050620007dc565b8290505b92915050565b6000808311829062000892576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200085657808201518184015260208101905062000839565b50505050905090810190601f168015620008845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200089f57fe5b049050809150509392505050565b60008383111582906200095e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156200092257808201518184015260208101905062000905565b50505050905090810190601f168015620009505780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620009b457805160ff1916838001178555620009e5565b82800160010185558215620009e5579182015b82811115620009e4578251825591602001919060010190620009c7565b5b509050620009f4919062000a3d565b5090565b826004810192821562000a2a579160200282015b8281111562000a2957825182559160200191906001019062000a0c565b5b50905062000a39919062000a3d565b5090565b62000a6291905b8082111562000a5e57600081600090555060010162000a44565b5090565b90565b6120098062000a756000396000f3fe608060405234801561001057600080fd5b50600436106102315760003560e01c80636fd396d6116101305780639e37273b116100b8578063bafedcaa1161007c578063bafedcaa1461097a578063cb9ae70714610998578063dc6e9cf9146109b6578063dd62ed3e146109d4578063e791232514610a4c57610231565b80639e37273b14610802578063a457c2d71461084e578063a7c0b80d146108b4578063a9059cbb146108f6578063b5ade81b1461095c57610231565b806387a2a9d6116100ff57806387a2a9d6146107075780638a769d35146107255780638ae0368b146107435780638d84cc6c1461076157806395d89b411461077f57610231565b80636fd396d61461060557806370a082311461064f5780637afbf061146106a7578063829965cc146106e957610231565b806324df5ee9116101be57806343764ac31161018257806343764ac31461056f57806344b81fcc1461058d578063490203a7146105ab5780634ef37628146105c95780636e5de357146105e757610231565b806324df5ee91461048b5780632d38bf7a146104a9578063313ce567146104c757806332e99708146104eb578063395093511461050957610231565b806317da485f1161020557806317da485f1461035b5780631801fbe51461037957806318160ddd146103c95780632387d32c146103e757806323b872dd1461040557610231565b806213d2fd1461023657806306fdde0314610254578063095ea7b3146102d7578063163aa00d1461033d575b600080fd5b61023e610a8e565b6040518082815260200191505060405180910390f35b61025c610a98565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561029c578082015181840152602081019050610281565b50505050905090810190601f1680156102c95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610323600480360360408110156102ed57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b3a565b604051808215151515815260200191505060405180910390f35b610345610b58565b6040518082815260200191505060405180910390f35b610363610b5e565b6040518082815260200191505060405180910390f35b6103af6004803603604081101561038f57600080fd5b810190808035906020019092919080359060200190929190505050610b7c565b604051808215151515815260200191505060405180910390f35b6103d1610cc4565b6040518082815260200191505060405180910390f35b6103ef610cce565b6040518082815260200191505060405180910390f35b6104716004803603606081101561041b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610cd8565b604051808215151515815260200191505060405180910390f35b610493610db1565b6040518082815260200191505060405180910390f35b6104b1610dbb565b6040518082815260200191505060405180910390f35b6104cf610dc1565b604051808260ff1660ff16815260200191505060405180910390f35b6104f3610dd8565b6040518082815260200191505060405180910390f35b6105556004803603604081101561051f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610de2565b604051808215151515815260200191505060405180910390f35b610577610e95565b6040518082815260200191505060405180910390f35b610595610e9b565b6040518082815260200191505060405180910390f35b6105b3610ea1565b6040518082815260200191505060405180910390f35b6105d1610f04565b6040518082815260200191505060405180910390f35b6105ef610f0e565b6040518082815260200191505060405180910390f35b61060d610f18565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106916004803603602081101561066557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f3e565b6040518082815260200191505060405180910390f35b6106d3600480360360208110156106bd57600080fd5b8101908080359060200190929190505050610f86565b6040518082815260200191505060405180910390f35b6106f1610f9e565b6040518082815260200191505060405180910390f35b61070f610fa4565b6040518082815260200191505060405180910390f35b61072d610faa565b6040518082815260200191505060405180910390f35b61074b610fb0565b6040518082815260200191505060405180910390f35b610769610fb6565b6040518082815260200191505060405180910390f35b610787610fbc565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107c75780820151818401526020810190506107ac565b50505050905090810190601f1680156107f45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6108386004803603604081101561081857600080fd5b81019080803590602001909291908035906020019092919050505061105e565b6040518082815260200191505060405180910390f35b61089a6004803603604081101561086457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110d3565b604051808215151515815260200191505060405180910390f35b6108e0600480360360208110156108ca57600080fd5b81019080803590602001909291905050506111a0565b6040518082815260200191505060405180910390f35b6109426004803603604081101561090c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506111b8565b604051808215151515815260200191505060405180910390f35b6109646111d6565b6040518082815260200191505060405180910390f35b6109826111dc565b6040518082815260200191505060405180910390f35b6109a06111e2565b6040518082815260200191505060405180910390f35b6109be6111e8565b6040518082815260200191505060405180910390f35b610a36600480360360408110156109ea57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111ee565b6040518082815260200191505060405180910390f35b610a7860048036036020811015610a6257600080fd5b8101908080359060200190929190505050611275565b6040518082815260200191505060405180910390f35b6000600c54905090565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610b305780601f10610b0557610100808354040283529160200191610b30565b820191906000526020600020905b815481529060010190602001808311610b1357829003601f168201915b5050505050905090565b6000610b4e610b4761128d565b8484611295565b6001905092915050565b60075481565b6000610b77600854601e5461148c90919063ffffffff16565b905090565b6000806009543385604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018281526020019350505050604051602081830303815290604052805190602001209050828114610bf557600080fd5b6008548160001c1115610c0757600080fd5b60006020600060095481526020019081526020016000205490506000801b8114610c3057600080fd5b81602060006009548152602001908152602001600020819055506000610c54610ea1565b9050610c6033826114d6565b33600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060068190555043600781905550610cb761169d565b6001935050505092915050565b6000600254905090565b6000600b54905090565b6000610ce584848461174d565b610da684610cf161128d565b610da185604051806060016040528060288152602001611f3e60289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610d5761128d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a0e9092919063ffffffff16565b611295565b600190509392505050565b6000600a54905090565b600c5481565b6000600560009054906101000a900460ff16905090565b6000600854905090565b6000610e8b610def61128d565b84610e868560016000610e0061128d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ace90919063ffffffff16565b611295565b6001905092915050565b600d5481565b601a5481565b600080610eac610cc4565b1415610ecd57610eba610dc1565b60ff16600a0a6317d78400029050610f01565b6000610efa6014610eec622819a0600d5461148c90919063ffffffff16565b611b5690919063ffffffff16565b9050809150505b90565b6000600954905090565b6000600d54905090565b600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600e8160048110610f9357fe5b016000915090505481565b600b5481565b601e5481565b60085481565b60095481565b601b5481565b606060048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156110545780601f1061102957610100808354040283529160200191611054565b820191906000526020600020905b81548152906001019060200180831161103757829003601f168201915b5050505050905090565b600080833384604051602001808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140182815260200193505050506040516020818303038152906040528051906020012090508091505092915050565b60006111966110e061128d565b8461119185604051806060016040528060258152602001611faf602591396001600061110a61128d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a0e9092919063ffffffff16565b611295565b6001905092915050565b601281600481106111ad57fe5b016000915090505481565b60006111cc6111c561128d565b848461174d565b6001905092915050565b601c5481565b60065481565b600a5481565b601d5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6016816004811061128257fe5b016000915090505481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561131b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611f8b6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611ed56022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60006114ce83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611bdc565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b61158560008383611ca2565b61159a81600254611ace90919063ffffffff16565b6002819055506115f1816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ace90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6004600c541015611705576016600c54600481106116b757fe5b01546116c1610cc4565b106116d3576001600c5401600c819055505b6004600c5410156116fa57600e600c54600481106116ed57fe5b0154600d81905550611704565b601b54600d819055505b5b61171b6001600b54611ace90919063ffffffff16565b600b819055506000601c54600b548161173057fe5b0614156117405761173f611ca7565b5b6001430340600981905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180611f666025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611859576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611eb26023913960400191505060405180910390fd5b611864838383611ca2565b6118cf81604051806060016040528060268152602001611ef7602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a0e9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611962816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ace90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290611abb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611a80578082015181840152602081019050611a65565b50505050905090810190601f168015611aad5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080828401905083811015611b4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080831415611b695760009050611bd6565b6000828402905082848281611b7a57fe5b0414611bd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611f1d6021913960400191505060405180910390fd5b809150505b92915050565b60008083118290611c88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c4d578082015181840152602081019050611c32565b50505050905090810190601f168015611c7a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611c9457fe5b049050809150509392505050565b505050565b6000601c5490506000611cc4600283611b5690919063ffffffff16565b90506000600a544303905081811015611d77576000611d126064611d0484611cf6606488611b5690919063ffffffff16565b61148c90919063ffffffff16565b611e4b90919063ffffffff16565b90506000611d2b6103e883611e9590919063ffffffff16565b9050611d6a611d5982611d4b6107d060085461148c90919063ffffffff16565b611b5690919063ffffffff16565b600854611e4b90919063ffffffff16565b6008819055505050611e13565b6000611d9f83611d91606485611b5690919063ffffffff16565b61148c90919063ffffffff16565b90506000611dcb6103e8611dbd606485611e4b90919063ffffffff16565b611e9590919063ffffffff16565b9050611e0a611df982611deb6107d060085461148c90919063ffffffff16565b611b5690919063ffffffff16565b600854611ace90919063ffffffff16565b60088190555050505b43600a81905550601d546008541015611e3057601d546008819055505b601e546008541015611e4657601e546008819055505b505050565b6000611e8d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a0e565b905092915050565b600081831115611ea757819050611eab565b8290505b9291505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220e47323df24f5f00b050eab60bbefcac3b15c3f0cd24b4bf0dd45beeffc0dce1564736f6c63430006000033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77

Deployed ByteCode Sourcemap

8989:7465:0:-:0;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8989:7465:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15726:85;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2305:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2305:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5465:169;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5465:169:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9174:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15079:117;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11302:1001;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11302:1001:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4888:100;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15939:88;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5642:321;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5642:321:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;16039:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9374:21;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2499:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15208:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5971:218;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5971:218:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9402:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9572:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15312:402;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14966:101;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15823:104;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9105:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4996:119;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4996:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9445:34;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9445:34:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9345:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9753:36;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9223:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9254:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9603:34;;;:::i;:::-;;;;;;;;;;;;;;;;;;;2400:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;2400:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16222:229;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16222:229:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6197:269;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6197:269:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9486:37;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9486:37:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5123:175;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5123:175:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9650:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9139:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9297:41;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9700:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5306:151;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5306:151:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9530:35;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9530:35:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15726:85;15771:4;15794:9;;15787:16;;15726:85;:::o;2305:83::-;2342:13;2375:5;2368:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2305:83;:::o;5465:169::-;5548:4;5565:39;5574:12;:10;:12::i;:::-;5588:7;5597:6;5565:8;:39::i;:::-;5622:4;5615:11;;5465:169;;;;:::o;9174:36::-;;;;:::o;15079:117::-;15131:4;15155:33;15175:12;;15155:15;;:19;;:33;;;;:::i;:::-;15148:40;;15079:117;:::o;11302:1001::-;11373:12;11398:14;11442:15;;11459:10;11471:5;11425:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11425:52:0;;;11415:63;;;;;;11398:80;;11538:16;11528:6;:26;11524:40;;11556:8;;;11524:40;11635:12;;11625:6;11617:15;;:30;11614:43;;;11649:8;;;11614:43;11717:16;11736:20;:37;11757:15;;11736:37;;;;;;;;;;;;11717:56;;11799:3;11787:15;;:8;:15;11784:28;;11804:8;;;11784:28;11888:6;11848:20;:37;11869:15;;11848:37;;;;;;;;;;;:46;;;;11934:18;11955:17;:15;:17::i;:::-;11934:38;;11983:32;11989:10;12001:13;11983:5;:32::i;:::-;12084:10;12069:12;;:25;;;;;;;;;;;;;;;;;;12124:13;12105:16;:32;;;;12175:12;12148:24;:39;;;;12241:22;:20;:22::i;:::-;12291:4;12284:11;;;;;11302:1001;;;;:::o;4888:100::-;4941:7;4968:12;;4961:19;;4888:100;:::o;15939:88::-;15985:4;16009:10;;16002:17;;15939:88;:::o;5642:321::-;5748:4;5765:36;5775:6;5783:9;5794:6;5765:9;:36::i;:::-;5812:121;5821:6;5829:12;:10;:12::i;:::-;5843:89;5881:6;5843:89;;;;;;;;;;;;;;;;;:11;:19;5855:6;5843:19;;;;;;;;;;;;;;;:33;5863:12;:10;:12::i;:::-;5843:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;5812:8;:121::i;:::-;5951:4;5944:11;;5642:321;;;;;:::o;16039:126::-;16104:4;16128:29;;16121:36;;16039:126;:::o;9374:21::-;;;;:::o;2499:83::-;2540:5;2565:9;;;;;;;;;;;2558:16;;2499:83;:::o;15208:92::-;15256:4;15280:12;;15273:19;;15208:92;:::o;5971:218::-;6059:4;6076:83;6085:12;:10;:12::i;:::-;6099:7;6108:50;6147:10;6108:11;:25;6120:12;:10;:12::i;:::-;6108:25;;;;;;;;;;;;;;;:34;6134:7;6108:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;6076:8;:83::i;:::-;6177:4;6170:11;;5971:218;;;;:::o;9402:30::-;;;;:::o;9572:24::-;;;;:::o;15312:402::-;15360:4;15397:1;15380:13;:11;:13::i;:::-;:18;15377:330;;;15441:10;:8;:10::i;:::-;15436:16;;15432:2;:20;15422:7;:30;15415:37;;;;15377:330;15485:20;15508:42;15547:2;15508:34;15531:10;15508:18;;:22;;:34;;;;:::i;:::-;:38;;:42;;;;:::i;:::-;15485:65;;15680:15;15673:22;;;15312:402;;:::o;14966:101::-;15017:7;15044:15;;15037:22;;14966:101;:::o;15823:104::-;15877:4;15901:18;;15894:25;;15823:104;:::o;9105:27::-;;;;;;;;;;;;;:::o;4996:119::-;5062:7;5089:9;:18;5099:7;5089:18;;;;;;;;;;;;;;;;5082:25;;4996:119;;;:::o;9445:34::-;;;;;;;;;;;;;;;;;;:::o;9345:22::-;;;;:::o;9753:36::-;;;;:::o;9223:24::-;;;;:::o;9254:30::-;;;;:::o;9603:34::-;;;;:::o;2400:87::-;2439:13;2472:7;2465:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:87;:::o;16222:229::-;16307:18;16338:14;16382:16;16400:10;16412:5;16365:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;16365:53:0;;;16355:64;;;;;;16338:81;;16437:6;16430:13;;;16222:229;;;;:::o;6197:269::-;6290:4;6307:129;6316:12;:10;:12::i;:::-;6330:7;6339:96;6378:15;6339:96;;;;;;;;;;;;;;;;;:11;:25;6351:12;:10;:12::i;:::-;6339:25;;;;;;;;;;;;;;;:34;6365:7;6339:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;6307:8;:129::i;:::-;6454:4;6447:11;;6197:269;;;;:::o;9486:37::-;;;;;;;;;;;;;;;;;;:::o;5123:175::-;5209:4;5226:42;5236:12;:10;:12::i;:::-;5250:9;5261:6;5226:9;:42::i;:::-;5286:4;5279:11;;5123:175;;;;:::o;9650:43::-;;;;:::o;9139:28::-;;;;:::o;9297:41::-;;;;:::o;9700:35::-;;;;:::o;5306:151::-;5395:7;5422:11;:18;5434:5;5422:18;;;;;;;;;;;;;;;:27;5441:7;5422:27;;;;;;;;;;;;;;;;5415:34;;5306:151;;;;:::o;9530:35::-;;;;;;;;;;;;;;;;;;:::o;519:106::-;572:15;607:10;600:17;;519:106;:::o;7833:346::-;7952:1;7935:19;;:5;:19;;;;7927:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8033:1;8014:21;;:7;:21;;;;8006:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8117:6;8087:11;:18;8099:5;8087:18;;;;;;;;;;;;;;;:27;8106:7;8087:27;;;;;;;;;;;;;;;:36;;;;8155:7;8139:32;;8148:5;8139:32;;;8164:6;8139:32;;;;;;;;;;;;;;;;;;7833:346;;;:::o;3669:132::-;3727:7;3754:39;3758:1;3761;3754:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3747:46;;3669:132;;;;:::o;7021:378::-;7124:1;7105:21;;:7;:21;;;;7097:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7175:49;7204:1;7208:7;7217:6;7175:20;:49::i;:::-;7252:24;7269:6;7252:12;;:16;;:24;;;;:::i;:::-;7237:12;:39;;;;7308:30;7331:6;7308:9;:18;7318:7;7308:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;7287:9;:18;7297:7;7287:18;;;;;;;;;;;;;;;:51;;;;7375:7;7354:37;;7371:1;7354:37;;;7384:6;7354:37;;;;;;;;;;;;;;;;;;7021:378;;:::o;12315:906::-;12406:26;12394:9;;:38;12390:510;;;12508:20;12529:9;;12508:31;;;;;;;;;12491:13;:11;:13::i;:::-;:48;12487:114;;12584:1;12572:9;;:13;12560:9;:25;;;;12487:114;12691:26;12679:9;;:38;12675:214;;;12759:19;12779:9;;12759:30;;;;;;;;;12738:18;:51;;;;12675:214;;;12851:22;;12830:18;:43;;;;12675:214;12390:510;12955:17;12970:1;12955:10;;:14;;:17;;;;:::i;:::-;12942:10;:30;;;;13067:1;13039:24;;13026:10;;:37;;;;;;:42;13022:96;;;13085:21;:19;:21::i;:::-;13022:96;13211:1;13196:12;:16;13186:27;13168:15;:45;;;;12315:906::o;6474:539::-;6598:1;6580:20;;:6;:20;;;;6572:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6682:1;6661:23;;:9;:23;;;;6653:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6737:47;6758:6;6766:9;6777:6;6737:20;:47::i;:::-;6817:71;6839:6;6817:71;;;;;;;;;;;;;;;;;:9;:17;6827:6;6817:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;6797:9;:17;6807:6;6797:17;;;;;;;;;;;;;;;:91;;;;6922:32;6947:6;6922:9;:20;6932:9;6922:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;6899:9;:20;6909:9;6899:20;;;;;;;;;;;;;;;:55;;;;6987:9;6970:35;;6979:6;6970:35;;;6998:6;6970:35;;;;;;;;;;;;;;;;;;6474:539;;;:::o;3179:200::-;3265:7;3298:1;3293;:6;;3301:12;3285:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3285:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3325:9;3341:1;3337;:5;3325:17;;3370:1;3363:8;;;3179:200;;;;;:::o;2830:189::-;2888:7;2908:9;2924:1;2920;:5;2908:17;;2949:1;2944;:6;;2936:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:1;3003:8;;;2830:189;;;;:::o;3391:266::-;3449:7;3478:1;3473;:6;3469:47;;;3503:1;3496:8;;;;3469:47;3536:9;3552:1;3548;:5;3536:17;;3581:1;3576;3572;:5;;;;;;:10;3564:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3648:1;3641:8;;;3391:266;;;;;:::o;3813:263::-;3899:7;3931:1;3927;:5;3934:12;3919:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3919:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3958:9;3974:1;3970;:5;;;;;;3958:17;;4067:1;4060:8;;;3813:263;;;;;:::o;8435:92::-;;;;:::o;13237:1717::-;13352:28;13383:24;;13352:55;;13418:33;13454:30;13482:1;13454:23;:27;;:30;;;;:::i;:::-;13418:66;;13576:39;13633:29;;13618:12;:44;13576:86;;13742:28;13705:34;:65;13701:957;;;13830:21;13854:90;13940:3;13855:79;13899:34;13856:37;13889:3;13856:28;:32;;:37;;;;:::i;:::-;13855:43;;:79;;;;:::i;:::-;13854:85;;:90;;;;:::i;:::-;13830:114;;13959:27;13989:36;14020:4;13989:16;:30;;:36;;;;:::i;:::-;13959:66;;14101:68;14118:50;14145:22;14118;14135:4;14118:12;;:16;;:22;;;;:::i;:::-;:26;;:50;;;;:::i;:::-;14101:12;;:16;;:68;;;;:::i;:::-;14086:12;:83;;;;13701:957;;;;;14290:23;14316:77;14364:28;14316:43;14355:3;14316:34;:38;;:43;;;;:::i;:::-;:47;;:77;;;;:::i;:::-;14290:103;;14408:29;14440:47;14482:4;14440:27;14463:3;14440:18;:22;;:27;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;14408:79;;14531:70;14548:52;14575:24;14548:22;14565:4;14548:12;;:16;;:22;;;;:::i;:::-;:26;;:52;;;;:::i;:::-;14531:12;;:16;;:70;;;;:::i;:::-;14516:12;:85;;;;13701:957;;;14710:12;14678:29;:44;;;;14761:15;;14746:12;;:30;14743:92;;;14808:15;;14793:12;:30;;;;14743:92;14873:15;;14858:12;;:30;14855:92;;;14920:15;;14905:12;:30;;;;14855:92;13237:1717;;;:::o;3031:136::-;3089:7;3116:43;3120:1;3123;3116:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;3109:50;;3031:136;;;;:::o;8856:126::-;8918:6;8944:1;8940;:5;8937:18;;;8954:1;8947:8;;;;8937:18;8973:1;8966:8;;8856:126;;;;;:::o

Swarm Source

ipfs://e47323df24f5f00b050eab60bbefcac3b15c3f0cd24b4bf0dd45beeffc0dce15
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.