Contract 0x8e632f60569e7fc8822920b8cf627be14f356ff7

 
 
Txn Hash
Method
Block
From
To
Value [Txn Fee]
0x4d183e297d42844318542b8fee3c494682c1031b104c3bec0a446b0749ea1e70Transfer325265492022-08-31 18:47:32206 days 1 hr ago0xba07cca1e78c3781534d77fd091a5eff3c176038 IN  0x8e632f60569e7fc8822920b8cf627be14f356ff70 MATIC0.00164295 30.000000014
0xc669becee6dc42d5b63225eae5bd2c09ac6b0f67663cce883af0fe0fe07e533fAdmin Rebase325263782022-08-31 18:40:56206 days 1 hr ago0xba07cca1e78c3781534d77fd091a5eff3c176038 IN  0x8e632f60569e7fc8822920b8cf627be14f356ff70 MATIC0.00322642656 47.040000002
0xe4e6a85b866dea00f1cf09c3071ce8da2d9621228f11e87ab29fd3beb3be93710x60806040325262992022-08-31 18:36:48206 days 1 hr ago0xba07cca1e78c3781534d77fd091a5eff3c176038 IN  Create: Rebaser0 MATIC0.037102415362 31.850000011
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Rebaser

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-08-31
*/

// SPDX-License-Identifier: MIT
// File: contracts/IBEP20.sol


pragma solidity >=0.4.22 <0.9.0;

interface IBEP20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
// File: contracts/Context.sol


pragma solidity >=0.4.22 <0.9.0;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
// File: contracts/SafeMath.sol


pragma solidity >=0.4.22 <0.9.0;

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) {
        require(b <= a, "SafeMath: subtraction overflow");
        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) {
        require(b > 0, "SafeMath: division by zero");
        uint256 c = a / b;

        return c;
    }
}
// File: contracts/Token.sol


pragma solidity >=0.4.22 <0.9.0;

//imports




abstract contract Token is Context, IBEP20 {
	using SafeMath for uint256;

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

    uint256 private _totalSupply;
    uint256 private _indexSupply;
    uint256 private _divisor;

    uint256 private constant PERCENTS_DIVIDER = 1000;

    string private constant _name   = "Optimus V2";
    string private constant _symbol = "OPT2";
    
    constructor() {
        
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply.div(divisor());
    }

    function indexSupply() public view returns (uint256) {
        return _indexSupply;
    }

    function divisor() public view returns (uint256) {
        return _divisor;
    }

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

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount.mul(divisor()));
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount.mul(divisor()));
        _transfer(from, to, amount.mul(divisor()));
        return true;
    }

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender).mul(divisor()) + addedValue.mul(divisor()));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender); //no conversion required
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance.mul(divisor()) - subtractedValue.mul(divisor()));
        }

        return true;
    }

    function _setIndexSupply(uint256 toSupply) internal virtual {
        _indexSupply = toSupply;
    }

    function _setDivisor(uint256 toDivisor) internal virtual {
        _divisor = toDivisor;
    }

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

        _beforeTokenTransfer(from, to, amount.div(divisor()));

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount.div(divisor()));

        _afterTokenTransfer(from, to, amount.div(divisor()));
    }

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

        _beforeTokenTransfer(address(0), account, amount.div(divisor()));

        _totalSupply         += amount;
        _balances[account]   += amount;
        emit Transfer(address(0), account, amount.div(divisor()));

        _afterTokenTransfer(address(0), account, amount.div(divisor()));
    }

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

        _beforeTokenTransfer(account, address(0), amount.div(divisor()));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount.div(divisor()));

        _afterTokenTransfer(account, address(0), amount.div(divisor()));
    }

    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.div(divisor()));
    }

    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender).mul(divisor());
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount); // no conversion required
            }
        }
    }

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

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
// File: contracts/Rebaser.sol


pragma solidity >=0.4.22 <0.9.0;


interface IUniswapV2Pair {
    function skim(address to) external;
    function sync() external;
}

contract Rebaser is Token {
	using SafeMath for uint256;
    
    //config
    uint256 public constant BIG_INT    = ~uint128(0);
    uint256 public constant MAX_SUPPLY = BIG_INT * 10 ** 18;
    uint256 public constant PRE_SUPPLY = 21000000 ether;
    address public constant burnAddress= 0x000000000000000000000000000000000000dEaD;

    //rebases
    uint256 public rewardYield           = 10; //<-------------------- 1 percent
    uint256 public rewardYieldDenominator= 1000;
    uint256 public rebaseFrequency       = 1 days; //<---------------- rebase will be due every 1 days
    uint256 public nextRebase;
    uint256 public currentEpoch;

    //state
    bool public autosync;
    bool public locked;

    //addresses
    address public admin;
    address public pairAddress;

    modifier onlyAdmin() {
        require(isAdmin(msg.sender), "Not authorized.");
        _;
    }

    constructor() {
        admin      = msg.sender; //<---------------------------------- set admin
        nextRebase = block.timestamp + rebaseFrequency; //<----------- set first rebase
        autosync   = true; //<---------------------------------------- will autosync pool

        _setIndexSupply(1 ether); //<--------------------------------- initialize index supply
        _setDivisor(BIG_INT); //<------------------------------------- initialize divisor
        _mint(msg.sender, PRE_SUPPLY.mul(divisor())); //<------------- mint initial supply
    }

    function rebase() private {
        //stop reentry
        locked = true;

        //calc supply delta
        uint256 supply      = indexSupply();
        uint256 supplyDelta = supply.mul(rewardYield).div(rewardYieldDenominator);

        //exec rebase
        coreRebase(supplyDelta);

        //unlock
        locked = false;
    }

    function coreRebase(uint256 supplyDelta) private {
        uint256 old_supply = indexSupply();
        uint256 new_supply;

        if(old_supply < MAX_SUPPLY) {
            new_supply = old_supply.add(supplyDelta);
        } else {
            new_supply = MAX_SUPPLY;
        }

        _setIndexSupply(new_supply);
        _setDivisor(MAX_SUPPLY.div(new_supply));

        nextRebase = block.timestamp + rebaseFrequency;
        currentEpoch++;
    }

    function manualRebase() external {
        if(rebaseDue() && !isLocked()) {
            rebase();
        }

        if(autosync) {
            sync();
        }
    }

    function sync() private {
        IUniswapV2Pair(pairAddress).skim(burnAddress);
        IUniswapV2Pair(pairAddress).sync();
    }

    function rebaseDue() public view returns (bool) {
        return nextRebase <= block.timestamp;
    }

    function isLocked() public view returns (bool) {
        return locked;
    }

    function isAdmin(address atAddress) private view returns (bool) {
        return atAddress == admin;
    }

    function setPairAddress(address toAddress) external onlyAdmin {
        pairAddress = toAddress;
    }

    function setAutosync(bool toState) external onlyAdmin {
        autosync = toState;
    }

    function adminRebase() external onlyAdmin {
        rebase();
    }
}

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":"BIG_INT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRE_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"adminRebase","outputs":[],"stateMutability":"nonpayable","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":[],"name":"autosync","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentEpoch","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":"divisor","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":"indexSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isLocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualRebase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextRebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseDue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebaseFrequency","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardYield","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardYieldDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"toState","type":"bool"}],"name":"setAutosync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toAddress","type":"address"}],"name":"setPairAddress","outputs":[],"stateMutability":"nonpayable","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

6080604052600a6005556103e8600655620151806007553480156200002357600080fd5b50600a805462010000600160b01b0319163362010000021790556007546200004c9042620002ef565b600855600a805460ff191660011790556200006e670de0b6b3a7640000600355565b6200007f6001600160801b03600455565b620000b833620000b26200009260045490565b6a115eec47f6cf7e35000000620000be60201b620007421790919060201c565b62000152565b62000365565b600082620000cf575060006200014c565b6000620000dd83856200032d565b905082620000ec85836200030a565b14620001495760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6001600160a01b038216620001aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000140565b620001d9600083620001d4620001bf60045490565b856200028660201b620007c11790919060201c565b505050565b8060026000828254620001ed9190620002ef565b90915550506001600160a01b038216600090815260208190526040812080548392906200021c908490620002ef565b90915550506001600160a01b03821660007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6200025c620001bf60045490565b60405190815260200160405180910390a362000282600083620001d4620001bf60045490565b5050565b6000808211620002d95760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015260640162000140565b6000620002e783856200030a565b949350505050565b600082198211156200030557620003056200034f565b500190565b6000826200032857634e487b7160e01b600052601260045260246000fd5b500490565b60008160001904831182151516156200034a576200034a6200034f565b500290565b634e487b7160e01b600052601160045260246000fd5b61103780620003756000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806389375abf1161010f578063c7b171ae116100a2578063dd62ed3e11610071578063dd62ed3e146103ec578063f3181362146103ff578063f64f524114610407578063f851a4401461041257600080fd5b8063c7b171ae146103bb578063cf309012146103c3578063cff17f4c146103d5578063d7832b11146103e357600080fd5b8063a4e2d634116100de578063a4e2d6341461037c578063a8b089821461038c578063a9059cbb1461039f578063bc7e68a3146103b257600080fd5b806389375abf1461032d57806395d89b4114610336578063a22d483214610356578063a457c2d71461036957600080fd5b8063395093511161018757806370d5ae051161015657806370d5ae05146102de57806376671808146102ff57806376867799146103085780637b7918221461031b57600080fd5b806339509351146102a15780635094c803146102b457806361a9d1b1146102c157806370a08231146102cb57600080fd5b80631f2dc5ef116101c35780631f2dc5ef1461026f57806323b872dd14610277578063313ce5671461028a57806332cb6b0c1461029957600080fd5b806306fdde03146101f5578063095ea7b31461022d5780630af083141461025057806318160ddd14610267575b600080fd5b60408051808201909152600a81526927b83a34b6bab9902b1960b11b60208201525b6040516102249190610ef9565b60405180910390f35b61024061023b366004610ead565b61042b565b6040519015158152602001610224565b61025960055481565b604051908152602001610224565b61025961045a565b600454610259565b610240610285366004610e71565b610476565b60405160128152602001610224565b6102596104b3565b6102406102af366004610ead565b6104cf565b600a546102409060ff1681565b6102c961050c565b005b6102596102d9366004610e23565b610548565b6102e761dead81565b6040516001600160a01b039091168152602001610224565b61025960095481565b6102c9610316366004610ed7565b610575565b6102596a115eec47f6cf7e3500000081565b61025960075481565b60408051808201909152600481526327a82a1960e11b6020820152610217565b6102c9610364366004610e23565b6105c1565b610240610377366004610ead565b610613565b600a54610100900460ff16610240565b600b546102e7906001600160a01b031681565b6102406103ad366004610ead565b6106b2565b61025960085481565b6102c96106c9565b600a5461024090610100900460ff1681565b6102596001600160801b0381565b61025960065481565b6102596103fa366004610e3e565b610701565b600354610259565b600854421015610240565b600a546102e7906201000090046001600160a01b031681565b60008033905061044e818561044961044260045490565b8790610742565b610826565b60019150505b92915050565b600061047161046860045490565b600254906107c1565b905090565b600080339050610492858261048d61044260045490565b61095e565b6104a885856104a361044260045490565b6109e4565b506001949350505050565b6104cc6001600160801b03670de0b6b3a7640000610fb1565b81565b60008033905061044e81856104e661044260045490565b6105026104f260045490565b6104fc878b610701565b90610742565b6104499190610f77565b60085442101580156105265750600a54610100900460ff16155b1561053357610533610bd8565b600a5460ff161561054657610546610c31565b565b600061045461055660045490565b6001600160a01b038416600090815260208190526040902054906107c1565b600a546201000090046001600160a01b031633146105ae5760405162461bcd60e51b81526004016105a590610f4e565b60405180910390fd5b600a805460ff1916911515919091179055565b600a546201000090046001600160a01b031633146105f15760405162461bcd60e51b81526004016105a590610f4e565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600033816106218286610701565b9050838110156106815760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105a5565b6104a8828661069961069260045490565b8890610742565b6106ac6106a560045490565b8690610742565b03610826565b60008033905061044e81856104a361044260045490565b600a546201000090046001600160a01b031633146106f95760405162461bcd60e51b81526004016105a590610f4e565b610546610bd8565b600061073b61070f60045490565b6001600160a01b03808616600090815260016020908152604080832093881683529290522054906107c1565b9392505050565b60008261075157506000610454565b600061075d8385610fb1565b90508261076a8583610f8f565b1461073b5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016105a5565b60008082116108125760405162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f00000000000060448201526064016105a5565b600061081e8385610f8f565b949350505050565b6001600160a01b0383166108885760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105a5565b6001600160a01b0382166108e95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105a5565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290208390557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92561094861094160045490565b85906107c1565b60405190815260200160405180910390a3505050565b600061097661096c60045490565b6104fc8686610701565b905060001981146109de57818110156109d15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6109de8484848403610826565b50505050565b6001600160a01b038316610a485760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105a5565b6001600160a01b038216610aaa5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105a5565b610ac08383610abb61094160045490565b505050565b6001600160a01b03831660009081526020819052604090205481811015610b385760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105a5565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610b6f908490610f77565b90915550506001600160a01b038084169085167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610bb6610baf60045490565b86906107c1565b60405190815260200160405180910390a36109de8484610abb610baf60045490565b600a805461ff0019166101001790556000610bf260035490565b90506000610c17600654610c116005548561074290919063ffffffff16565b906107c1565b9050610c2281610cf4565b5050600a805461ff0019169055565b600b5460405163bc25cf7760e01b815261dead60048201526001600160a01b039091169063bc25cf7790602401600060405180830381600087803b158015610c7857600080fd5b505af1158015610c8c573d6000803e3d6000fd5b50505050600b60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ce057600080fd5b505af11580156109de573d6000803e3d6000fd5b6000610cff60035490565b90506000610d1c6001600160801b03670de0b6b3a7640000610fb1565b821015610d3457610d2d8284610da8565b9050610d50565b610d4d6001600160801b03670de0b6b3a7640000610fb1565b90505b610d5981600355565b610d7e610d7982610c116001600160801b03670de0b6b3a7640000610fb1565b600455565b600754610d8b9042610f77565b60085560098054906000610d9e83610fd0565b9190505550505050565b600080610db58385610f77565b90508381101561073b5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016105a5565b80356001600160a01b0381168114610e1e57600080fd5b919050565b600060208284031215610e3557600080fd5b61073b82610e07565b60008060408385031215610e5157600080fd5b610e5a83610e07565b9150610e6860208401610e07565b90509250929050565b600080600060608486031215610e8657600080fd5b610e8f84610e07565b9250610e9d60208501610e07565b9150604084013590509250925092565b60008060408385031215610ec057600080fd5b610ec983610e07565b946020939093013593505050565b600060208284031215610ee957600080fd5b8135801515811461073b57600080fd5b600060208083528351808285015260005b81811015610f2657858101830151858201604001528201610f0a565b81811115610f38576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600f908201526e2737ba1030baba3437b934bd32b21760891b604082015260600190565b60008219821115610f8a57610f8a610feb565b500190565b600082610fac57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610fcb57610fcb610feb565b500290565b6000600019821415610fe457610fe4610feb565b5060010190565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220b2522d9489e55488c9e2363235e989e4943fd0fdaf88530be2b886dc22b34e3964736f6c63430008070033

Deployed ByteCode Sourcemap

10729:3243:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4859:100;4946:5;;;;;;;;;;;;-1:-1:-1;;;4946:5:0;;;;4859:100;;;;;;;:::i;:::-;;;;;;;;6340:216;;;;;;:::i;:::-;;:::i;:::-;;;1891:14:1;;1884:22;1866:41;;1854:2;1839:18;6340:216:0;1726:187:1;11090:41:0;;;;;;;;;6912:25:1;;;6900:2;6885:18;11090:41:0;6766:177:1;5180:123:0;;;:::i;5410:83::-;5477:8;;5410:83;;6041:291;;;;;;:::i;:::-;;:::i;5079:93::-;;;5162:2;7090:36:1;;7078:2;7063:18;5079:93:0;6948:184:1;10867:55:0;;;:::i;6564:268::-;;;;;;:::i;:::-;;:::i;11407:20::-;;;;;;;;;13051:175;;;:::i;:::-;;5501:142;;;;;;:::i;:::-;;:::i;10987:79::-;;11024:42;10987:79;;;;;-1:-1:-1;;;;;1682:32:1;;;1664:51;;1652:2;1637:18;10987:79:0;1518:203:1;11358:27:0;;;;;;13801:91;;;;;;:::i;:::-;;:::i;10929:51::-;;10966:14;10929:51;;11222:45;;;;;;4967:104;5056:7;;;;;;;;;;;;-1:-1:-1;;;5056:7:0;;;;4967:104;;13689;;;;;;:::i;:::-;;:::i;6840:491::-;;;;;;:::i;:::-;;:::i;13486:79::-;13551:6;;;;;;;13486:79;;11505:26;;;;;-1:-1:-1;;;;;11505:26:0;;;5825:208;;;;;;:::i;:::-;;:::i;11326:25::-;;;;;;13900:69;;;:::i;11434:18::-;;;;;;;;;;;;10812:48;;-1:-1:-1;;;;;10812:48:0;;11172:43;;;;;;5651:166;;;;;;:::i;:::-;;:::i;5311:91::-;5382:12;;5311:91;;13375:103;13441:10;;13455:15;-1:-1:-1;13441:29:0;13375:103;;11478:20;;;;;;;;-1:-1:-1;;;;;11478:20:0;;;6340:216;6423:4;;3311:10;6440:28;;6479:47;6488:5;6495:7;6504:21;6515:9;5477:8;;;5410:83;6515:9;6504:6;;:10;:21::i;:::-;6479:8;:47::i;:::-;6544:4;6537:11;;;6340:216;;;;;:::o;5180:123::-;5241:7;5268:27;5285:9;5477:8;;;5410:83;5285:9;5268:12;;;:16;:27::i;:::-;5261:34;;5180:123;:::o;6041:291::-;6138:4;;3311:10;6155:30;;6196:53;6212:4;6218:7;6227:21;6238:9;5477:8;;;5410:83;6227:21;6196:15;:53::i;:::-;6260:42;6270:4;6276:2;6280:21;6291:9;5477:8;;;5410:83;6280:21;6260:9;:42::i;:::-;-1:-1:-1;6320:4:0;;6041:291;-1:-1:-1;;;;6041:291:0:o;10867:55::-;10904:18;-1:-1:-1;;;;;10914:8:0;10904:18;:::i;:::-;10867:55;:::o;6564:268::-;6652:4;;3311:10;6669:28;;6708:94;6717:5;6724:7;6776:25;6791:9;5477:8;;;5410:83;6776:25;6733:40;6763:9;5477:8;;;5410:83;6763:9;6733:25;6743:5;6750:7;6733:9;:25::i;:::-;:29;;:40::i;:::-;:68;;;;:::i;13051:175::-;13441:10;;13455:15;-1:-1:-1;13441:29:0;13098:26;;;;-1:-1:-1;13551:6:0;;;;;;;13113:11;13098:26;13095:66;;;13141:8;:6;:8::i;:::-;13176;;;;13173:46;;;13201:6;:4;:6::i;:::-;13051:175::o;5501:142::-;5575:7;5602:33;5625:9;5477:8;;;5410:83;5625:9;-1:-1:-1;;;;;5602:18:0;;:9;:18;;;;;;;;;;;;:22;:33::i;13801:91::-;13668:5;;;;;-1:-1:-1;;;;;13668:5:0;11588:10;13655:18;11572:47;;;;-1:-1:-1;;;11572:47:0;;;;;;;:::i;:::-;;;;;;;;;13866:8:::1;:18:::0;;-1:-1:-1;;13866:18:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13801:91::o;13689:104::-;13668:5;;;;;-1:-1:-1;;;;;13668:5:0;11588:10;13655:18;11572:47;;;;-1:-1:-1;;;11572:47:0;;;;;;;:::i;:::-;13762:11:::1;:23:::0;;-1:-1:-1;;;;;;13762:23:0::1;-1:-1:-1::0;;;;;13762:23:0;;;::::1;::::0;;;::::1;::::0;;13689:104::o;6840:491::-;6933:4;3311:10;6933:4;7016:25;3311:10;7033:7;7016:9;:25::i;:::-;6989:52;;7105:15;7085:16;:35;;7077:85;;;;-1:-1:-1;;;7077:85:0;;6562:2:1;7077:85:0;;;6544:21:1;6601:2;6581:18;;;6574:30;6640:34;6620:18;;;6613:62;-1:-1:-1;;;6691:18:1;;;6684:35;6736:19;;7077:85:0;6360:401:1;7077:85:0;7198:90;7207:5;7214:7;7257:30;7277:9;5477:8;;;5410:83;7277:9;7257:15;;:19;:30::i;:::-;7223:31;7244:9;5477:8;;;5410:83;7244:9;7223:16;;:20;:31::i;:::-;:64;7198:8;:90::i;5825:208::-;5904:4;;3311:10;5921:28;;5960:43;5970:5;5977:2;5981:21;5992:9;5477:8;;;5410:83;13900:69;13668:5;;;;;-1:-1:-1;;;;;13668:5:0;11588:10;13655:18;11572:47;;;;-1:-1:-1;;;11572:47:0;;;;;;;:::i;:::-;13953:8:::1;:6;:8::i;5651:166::-:0;5740:7;5767:42;5799:9;5477:8;;;5410:83;5799:9;-1:-1:-1;;;;;5767:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;:31;:42::i;:::-;5760:49;5651:166;-1:-1:-1;;;5651:166:0:o;3812:250::-;3870:7;3894:6;3890:47;;-1:-1:-1;3924:1:0;3917:8;;3890:47;3949:9;3961:5;3965:1;3961;:5;:::i;:::-;3949:17;-1:-1:-1;3994:1:0;3985:5;3989:1;3949:17;3985:5;:::i;:::-;:10;3977:56;;;;-1:-1:-1;;;3977:56:0;;5349:2:1;3977:56:0;;;5331:21:1;5388:2;5368:18;;;5361:30;5427:34;5407:18;;;5400:62;-1:-1:-1;;;5478:18:1;;;5471:31;5519:19;;3977:56:0;5147:397:1;4070:179:0;4128:7;4160:1;4156;:5;4148:44;;;;-1:-1:-1;;;4148:44:0;;4650:2:1;4148:44:0;;;4632:21:1;4689:2;4669:18;;;4662:30;4728:28;4708:18;;;4701:56;4774:18;;4148:44:0;4448:350:1;4148:44:0;4203:9;4215:5;4219:1;4215;:5;:::i;:::-;4203:17;4070:179;-1:-1:-1;;;;4070:179:0:o;9383:395::-;-1:-1:-1;;;;;9519:19:0;;9511:68;;;;-1:-1:-1;;;9511:68:0;;6157:2:1;9511:68:0;;;6139:21:1;6196:2;6176:18;;;6169:30;6235:34;6215:18;;;6208:62;-1:-1:-1;;;6286:18:1;;;6279:34;6330:19;;9511:68:0;5955:400:1;9511:68:0;-1:-1:-1;;;;;9598:21:0;;9590:68;;;;-1:-1:-1;;;9590:68:0;;3126:2:1;9590:68:0;;;3108:21:1;3165:2;3145:18;;;3138:30;3204:34;3184:18;;;3177:62;-1:-1:-1;;;3255:18:1;;;3248:32;3297:19;;9590:68:0;2924:398:1;9590:68:0;-1:-1:-1;;;;;9671:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;:36;;;9723:47;9748:21;9759:9;5477:8;;;5410:83;9759:9;9748:6;;:10;:21::i;:::-;9723:47;;6912:25:1;;;6900:2;6885:18;9723:47:0;;;;;;;9383:395;;;:::o;9786:494::-;9921:24;9948:40;9978:9;5477:8;;;5410:83;9978:9;9948:25;9958:5;9965:7;9948:9;:25::i;:40::-;9921:67;;-1:-1:-1;;10003:16:0;:37;9999:274;;10085:6;10065:16;:26;;10057:68;;;;-1:-1:-1;;;10057:68:0;;3885:2:1;10057:68:0;;;3867:21:1;3924:2;3904:18;;;3897:30;3963:31;3943:18;;;3936:59;4012:18;;10057:68:0;3683:353:1;10057:68:0;10169:51;10178:5;10185:7;10213:6;10194:16;:25;10169:8;:51::i;:::-;9910:370;9786:494;;;:::o;7553:716::-;-1:-1:-1;;;;;7684:18:0;;7676:68;;;;-1:-1:-1;;;7676:68:0;;5751:2:1;7676:68:0;;;5733:21:1;5790:2;5770:18;;;5763:30;5829:34;5809:18;;;5802:62;-1:-1:-1;;;5880:18:1;;;5873:35;5925:19;;7676:68:0;5549:401:1;7676:68:0;-1:-1:-1;;;;;7763:16:0;;7755:64;;;;-1:-1:-1;;;7755:64:0;;2722:2:1;7755:64:0;;;2704:21:1;2761:2;2741:18;;;2734:30;2800:34;2780:18;;;2773:62;-1:-1:-1;;;2851:18:1;;;2844:33;2894:19;;7755:64:0;2520:399:1;7755:64:0;7832:53;7853:4;7859:2;7863:21;7874:9;5477:8;;;5410:83;7863:21;10288:125;;;;7832:53;-1:-1:-1;;;;;7920:15:0;;7898:19;7920:15;;;;;;;;;;;7954:21;;;;7946:72;;;;-1:-1:-1;;;7946:72:0;;4243:2:1;7946:72:0;;;4225:21:1;4282:2;4262:18;;;4255:30;4321:34;4301:18;;;4294:62;-1:-1:-1;;;4372:18:1;;;4365:36;4418:19;;7946:72:0;4041:402:1;7946:72:0;-1:-1:-1;;;;;8054:15:0;;;:9;:15;;;;;;;;;;;8072:20;;;8054:38;;8114:13;;;;;;;;:23;;8086:6;;8054:9;8114:23;;8086:6;;8114:23;:::i;:::-;;;;-1:-1:-1;;;;;;;8155:41:0;;;;;;;8174:21;8185:9;5477:8;;;5410:83;8185:9;8174:6;;:10;:21::i;:::-;8155:41;;6912:25:1;;;6900:2;6885:18;8155:41:0;;;;;;;8209:52;8229:4;8235:2;8239:21;8250:9;5477:8;;;5410:83;12220:347;12281:6;:13;;-1:-1:-1;;12281:13:0;;;;;;12358;5382:12;;;5311:91;12358:13;12336:35;;12382:19;12404:51;12432:22;;12404:23;12415:11;;12404:6;:10;;:23;;;;:::i;:::-;:27;;:51::i;:::-;12382:73;;12491:23;12502:11;12491:10;:23::i;:::-;-1:-1:-1;;12545:6:0;:14;;-1:-1:-1;;12545:14:0;;;12220:347::o;13234:133::-;13284:11;;13269:45;;-1:-1:-1;;;13269:45:0;;11024:42;13269:45;;;1664:51:1;-1:-1:-1;;;;;13284:11:0;;;;13269:32;;1637:18:1;;13269:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13340:11;;;;;;;;;-1:-1:-1;;;;;13340:11:0;-1:-1:-1;;;;;13325:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12575:468;12635:18;12656:13;5382:12;;;5311:91;12656:13;12635:34;-1:-1:-1;12680:18:0;10904;-1:-1:-1;;;;;10914:8:0;10904:18;:::i;:::-;12714:10;:23;12711:151;;;12767:27;:10;12782:11;12767:14;:27::i;:::-;12754:40;;12711:151;;;10904:18;-1:-1:-1;;;;;10914:8:0;10904:18;:::i;:::-;12827:23;;12711:151;12874:27;12890:10;7410:12;:23;7339:102;12874:27;12912:39;12924:26;12939:10;10904:18;-1:-1:-1;;;;;10914:8:0;10904:18;:::i;12924:26::-;7517:8;:20;7449:96;12912:39;12995:15;;12977:33;;:15;:33;:::i;:::-;12964:10;:46;13021:12;:14;;;:12;:14;;;:::i;:::-;;;;;;12624:419;;12575:468;:::o;3431:181::-;3489:7;;3521:5;3525:1;3521;:5;:::i;:::-;3509:17;;3550:1;3545;:6;;3537:46;;;;-1:-1:-1;;;3537:46:0;;3529:2:1;3537:46:0;;;3511:21:1;3568:2;3548:18;;;3541:30;3607:29;3587:18;;;3580:57;3654:18;;3537:46:0;3327:351:1;14:173;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:186::-;251:6;304:2;292:9;283:7;279:23;275:32;272:52;;;320:1;317;310:12;272:52;343:29;362:9;343:29;:::i;383:260::-;451:6;459;512:2;500:9;491:7;487:23;483:32;480:52;;;528:1;525;518:12;480:52;551:29;570:9;551:29;:::i;:::-;541:39;;599:38;633:2;622:9;618:18;599:38;:::i;:::-;589:48;;383:260;;;;;:::o;648:328::-;725:6;733;741;794:2;782:9;773:7;769:23;765:32;762:52;;;810:1;807;800:12;762:52;833:29;852:9;833:29;:::i;:::-;823:39;;881:38;915:2;904:9;900:18;881:38;:::i;:::-;871:48;;966:2;955:9;951:18;938:32;928:42;;648:328;;;;;:::o;981:254::-;1049:6;1057;1110:2;1098:9;1089:7;1085:23;1081:32;1078:52;;;1126:1;1123;1116:12;1078:52;1149:29;1168:9;1149:29;:::i;:::-;1139:39;1225:2;1210:18;;;;1197:32;;-1:-1:-1;;;981:254:1:o;1240:273::-;1296:6;1349:2;1337:9;1328:7;1324:23;1320:32;1317:52;;;1365:1;1362;1355:12;1317:52;1404:9;1391:23;1457:5;1450:13;1443:21;1436:5;1433:32;1423:60;;1479:1;1476;1469:12;1918:597;2030:4;2059:2;2088;2077:9;2070:21;2120:6;2114:13;2163:6;2158:2;2147:9;2143:18;2136:34;2188:1;2198:140;2212:6;2209:1;2206:13;2198:140;;;2307:14;;;2303:23;;2297:30;2273:17;;;2292:2;2269:26;2262:66;2227:10;;2198:140;;;2356:6;2353:1;2350:13;2347:91;;;2426:1;2421:2;2412:6;2401:9;2397:22;2393:31;2386:42;2347:91;-1:-1:-1;2499:2:1;2478:15;-1:-1:-1;;2474:29:1;2459:45;;;;2506:2;2455:54;;1918:597;-1:-1:-1;;;1918:597:1:o;4803:339::-;5005:2;4987:21;;;5044:2;5024:18;;;5017:30;-1:-1:-1;;;5078:2:1;5063:18;;5056:45;5133:2;5118:18;;4803:339::o;7137:128::-;7177:3;7208:1;7204:6;7201:1;7198:13;7195:39;;;7214:18;;:::i;:::-;-1:-1:-1;7250:9:1;;7137:128::o;7270:217::-;7310:1;7336;7326:132;;7380:10;7375:3;7371:20;7368:1;7361:31;7415:4;7412:1;7405:15;7443:4;7440:1;7433:15;7326:132;-1:-1:-1;7472:9:1;;7270:217::o;7492:168::-;7532:7;7598:1;7594;7590:6;7586:14;7583:1;7580:21;7575:1;7568:9;7561:17;7557:45;7554:71;;;7605:18;;:::i;:::-;-1:-1:-1;7645:9:1;;7492:168::o;7665:135::-;7704:3;-1:-1:-1;;7725:17:1;;7722:43;;;7745:18;;:::i;:::-;-1:-1:-1;7792:1:1;7781:13;;7665:135::o;7805:127::-;7866:10;7861:3;7857:20;7854:1;7847:31;7897:4;7894:1;7887:15;7921:4;7918:1;7911:15

Swarm Source

ipfs://b2522d9489e55488c9e2363235e989e4943fd0fdaf88530be2b886dc22b34e39
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.