Contract 0x081ef0c5c94a87e33ea85f4ae9db9646b2e69e56

Contract Overview

Balance:
0 MATIC
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xbb2551abc8cf6513570bd4520b89787a63f48972a2dd2b20adda2ea6b94e9d11Transfer251583892022-02-21 13:50:25130 days 6 hrs ago0x016e9287efcca2770c899e7eb550b3b13789a856 IN  0x081ef0c5c94a87e33ea85f4ae9db9646b2e69e560 MATIC0.000088988885 1.717467977
0x354a6c156ce5535d6dbbba50bf002ca805798ed8f557a83ddbd08fb873e77b2dTransfer230007042021-12-22 23:03:58190 days 21 hrs ago0x9442210c710780db40f414c39aef2e2e8ec3c10d IN  0x081ef0c5c94a87e33ea85f4ae9db9646b2e69e560 MATIC0.00117565 25
0xd599c07765224bbc1126c470a124becfb2f7221bdd8622a61ed66be9056d4f5a0x60806040229388442021-12-21 11:17:09192 days 8 hrs ago0x9442210c710780db40f414c39aef2e2e8ec3c10d IN  Create: HydroToken0 MATIC0.002828377507 2.500000007
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
HydroToken

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-12-21
*/

// SPDX-License-Identifier: GPL-3.0

pragma solidity ^0.6.0;


contract Ownable {
    address public owner;


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


    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
   constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

}

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

  /**
  * @dev Integer division of two numbers, truncating the quotient.
  */
  function div(uint256 a, uint256 b) internal pure returns (uint256) {
    // assert(b > 0); // Solidity automatically throws when dividing by 0
    uint256 c = a / b;
    // assert(a == b * c + a % b); // There is no case in which this doesn't hold
    return c;
  }

  /**
  * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

interface Raindrop {
    function authenticate(address _sender, uint _value, uint _challenge, uint _partnerId) external;
}

interface tokenRecipient {
    function receiveApproval(address _from, uint256 _value, address _token, bytes calldata _extraData) external;
}

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

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

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

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

  /**
   * @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 `recipient`.
   *
   * Returns a boolean value indicating whether the operation succeeded.
   *
   * Emits a {Transfer} event.
   */
  function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, 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);
}

contract HydroToken is Ownable,IBEP20 {
    using SafeMath for uint256;

    string public _name;
    string public _symbol;
    uint8 public _decimals;            // Number of decimals of the smallest unit
    uint public _totalSupply;
    address public raindropAddress;
    uint256 ratio;
    uint256 public MAX_BURN= 100000000000000000; //0.1 hydro tokens

    mapping (address => uint256) public balances;
    // `allowed` tracks any extra transfer rights as in all ERC20 tokens
    mapping (address => mapping (address => uint256)) public allowed;
    mapping(address=>bool) public whitelistedDapps; //dapps that can burn tokens
    
    //makes sure only dappstore apps can burn tokens
    modifier onlyFromDapps(address _dapp){
        require(whitelistedDapps[msg.sender]==true,'Hydro: Burn error');
        _;
    }
    
    event dappBurned(address indexed _dapp, uint256 _amount );

////////////////
// Constructor
////////////////

    /// @notice Constructor to create a HydroToken
    constructor(uint256 _ratio) public {
        _name='HYDRO TOKEN';
        _symbol='HYDRO';
        _decimals=18;
        raindropAddress=address(0);
       _totalSupply = (11111111111 * 10**18)/_ratio;
        // Give the creator all initial tokens
        balances[msg.sender] = _totalSupply;
        ratio = _ratio;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    


///////////////////
// ERC20 Methods
///////////////////

    //transfers an amount of tokens from one account to another
    //accepts two variables
    function transfer(address _to, uint256 _amount) public override  returns (bool success) {
        doTransfer(msg.sender, _to, _amount);
        return true;
}

  /**
   * @dev Returns the token symbol.
   */
  function symbol() public override view returns (string memory) {
    return _symbol;
  }
  
  /**
  * @dev Returns the token name.
  */
  function name() public override view returns (string memory) {
    return _name;
  }
  
    //transfers an amount of tokens from one account to another
    //accepts three variables
    function transferFrom(address _from, address _to, uint256 _amount
    ) public override returns (bool success) {
        // The standard ERC 20 transferFrom functionality
        require(allowed[_from][msg.sender] >= _amount);
        allowed[_from][msg.sender] -= _amount;
        doTransfer(_from, _to, _amount);
        return true;
    }
    
    //allows the owner to change the MAX_BURN amount
    function changeMaxBurn(uint256 _newBurn) public onlyOwner returns(uint256 ) {
        MAX_BURN=_newBurn;
        return (_newBurn);
    }

    //internal function to implement the transfer function and perform some safety checks
    function doTransfer(address _from, address _to, uint _amount
    ) internal {
        // Do not allow transfer to 0x0 or the token contract itself
        require((_to != address(0)) && (_to != address(this)));
        require(_amount <= balances[_from]);
        balances[_from] = balances[_from].sub(_amount);
        balances[_to] = balances[_to].add(_amount);
        emit Transfer(_from, _to, _amount);
    }

   //returns balance of an address
    function balanceOf(address _owner) public override view returns (uint256 balance) {
        return balances[_owner];
    }

    //allows an address to approve another address to spend its tokens
    function approve(address _spender, uint256 _amount) public override returns (bool success) {
        // To change the approve amount you first have to reduce the addresses`
        //  allowance to zero by calling `approve(_spender,0)` if it is not
        //  already 0 to mitigate the race condition described here:
        //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
        require((_amount == 0) || (allowed[msg.sender][_spender] == 0));
        allowed[msg.sender][_spender] = _amount;
        emit Approval(msg.sender, _spender, _amount);
        return true;
    }
    
    //sends the approve function but with a data argument
    function approveAndCall(address _spender, uint256 _value, bytes memory _extraData) public  returns (bool success) {
        tokenRecipient spender = tokenRecipient(_spender);
        if (approve(_spender, _value)) {
            spender.receiveApproval(msg.sender, _value, address(this), _extraData);
            return true;
        }
    }
    
     /**
   * @dev Returns the token decimals.
   */
  function decimals() external view override returns (uint8) {
    return _decimals;
  }



    //returns the allowance an address has granted a spender
    function allowance(address _owner, address _spender
    ) public view override returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }
    
    //allows an owner to whitelist a dapp so it can burn tokens
    function _whiteListDapp(address _dappAddress) public onlyOwner returns(bool){
        whitelistedDapps[_dappAddress]=true;
        return true;
    }
    
    //allows an owner to blacklist a dapp so it can stop burn tokens
    function _blackListDapp(address _dappAddress) public onlyOwner returns(bool){
         whitelistedDapps[_dappAddress]=false;
         return false;
    }

    //returns current hydro totalSupply
    function totalSupply() public view override returns (uint) {
        return _totalSupply;
    }

    //allows the owner to set the Raindrop
    function setRaindropAddress(address _raindrop) public onlyOwner {
        raindropAddress = _raindrop;
    }
    
    //the main public burn function which uses the internal burn function
    function burn(address _from,uint256 _value) external returns(uint burnAmount) {
    _burn(_from,_value);
    emit dappBurned(msg.sender,_value);
    return(burnAmount);
    }

    function authenticate(uint _value, uint _challenge, uint _partnerId) public  {
        Raindrop raindrop = Raindrop(raindropAddress);
        raindrop.authenticate(msg.sender, _value, _challenge, _partnerId);
        doTransfer(msg.sender, owner, _value);
    }

    //internal burn function which makes sure that only whitelisted addresses can burn
    function _burn(address account, uint256 amount) internal onlyFromDapps(msg.sender) {
    require(account != address(0), "ERC20: burn from the zero address");
    require(amount >= MAX_BURN,'ERC20: Exceeds maximum burn amount');
    balances[account] = balances[account].sub(amount); 
    _totalSupply = _totalSupply.sub(amount);
    emit Transfer(account, address(0), amount);
  }

  
}

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_ratio","type":"uint256"}],"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_dapp","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"dappBurned","type":"event"},{"inputs":[],"name":"MAX_BURN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_dappAddress","type":"address"}],"name":"_blackListDapp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_dappAddress","type":"address"}],"name":"_whiteListDapp","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowed","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_challenge","type":"uint256"},{"internalType":"uint256","name":"_partnerId","type":"uint256"}],"name":"authenticate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"uint256","name":"burnAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBurn","type":"uint256"}],"name":"changeMaxBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"raindropAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_raindrop","type":"address"}],"name":"setRaindropAddress","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":"success","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedDapps","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405267016345785d8a00006007553480156200001d57600080fd5b506040516200120b3803806200120b833981810160405260208110156200004357600080fd5b5051600080546001600160a01b0319163317905560408051808201909152600b8082526a242ca22927902a27a5a2a760a91b6020929092019182526200008c916001916200014a565b5060408051808201909152600580825264485944524f60d81b6020909201918252620000bb916002916200014a565b506003805460ff19166012179055600580546001600160a01b0319169055806b23e6e54c4381ee57e2bc000081620000ef57fe5b0460048190553360008181526008602090815260408083208590556006869055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350620001e6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200018d57805160ff1916838001178555620001bd565b82800160010185558215620001bd579182015b82811115620001bd578251825591602001919060010190620001a0565b50620001cb929150620001cf565b5090565b5b80821115620001cb5760008155600101620001d0565b61101580620001f66000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806371ee5ca9116100f9578063b1bbd59e11610097578063d28d885211610071578063d28d885214610574578063dd62ed3e1461057c578063e749d6a6146105aa578063f2fde38b146105d0576101a9565b8063b1bbd59e1461046d578063b302ea1e14610493578063cae9ca51146104b9576101a9565b806395d89b41116100d357806395d89b41146104055780639dc29fac1461040d578063a9059cbb14610439578063b09f126614610465576101a9565b806371ee5ca9146103d8578063831946c7146103f55780638da5cb5b146103fd576101a9565b806327e235e3116101665780633eaaf86b116101405780633eaaf86b14610356578063540dbf341461035e5780635c6581651461038457806370a08231146103b2576101a9565b806327e235e31461030a578063313ce5671461033057806332424aa31461034e576101a9565b806303960631146101ae578063053011b7146101d257806306fdde03146101fd578063095ea7b31461027a57806318160ddd146102ba57806323b872dd146102d4575b600080fd5b6101b66105f6565b604080516001600160a01b039092168252519081900360200190f35b6101fb600480360360608110156101e857600080fd5b5080359060208101359060400135610605565b005b61020561069d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023f578181015183820152602001610227565b50505050905090810190601f16801561026c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a66004803603604081101561029057600080fd5b506001600160a01b038135169060200135610732565b604080519115158252519081900360200190f35b6102c26107d2565b60408051918252519081900360200190f35b6102a6600480360360608110156102ea57600080fd5b506001600160a01b038135811691602081013590911690604001356107d8565b6102c26004803603602081101561032057600080fd5b50356001600160a01b0316610848565b61033861085a565b6040805160ff9092168252519081900360200190f35b610338610863565b6102c261086c565b6102a66004803603602081101561037457600080fd5b50356001600160a01b0316610872565b6102c26004803603604081101561039a57600080fd5b506001600160a01b03813581169160200135166108ad565b6102c2600480360360208110156103c857600080fd5b50356001600160a01b03166108ca565b6102c2600480360360208110156103ee57600080fd5b50356108e5565b6102c2610906565b6101b661090c565b61020561091b565b6102c26004803603604081101561042357600080fd5b506001600160a01b038135169060200135610979565b6102a66004803603604081101561044f57600080fd5b506001600160a01b0381351690602001356109c1565b6102056109d7565b6102a66004803603602081101561048357600080fd5b50356001600160a01b0316610a62565b6101fb600480360360208110156104a957600080fd5b50356001600160a01b0316610aa3565b6102a6600480360360608110156104cf57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104ff57600080fd5b82018360208201111561051157600080fd5b8035906020019184600183028401116401000000008311171561053357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610adc945050505050565b610205610bea565b6102c26004803603604081101561059257600080fd5b506001600160a01b0381358116916020013516610c44565b6102a6600480360360208110156105c057600080fd5b50356001600160a01b0316610c6f565b6101fb600480360360208110156105e657600080fd5b50356001600160a01b0316610c84565b6005546001600160a01b031681565b6005546040805163c68ae61760e01b815233600482015260248101869052604481018590526064810184905290516001600160a01b0390921691829163c68ae61791608480830192600092919082900301818387803b15801561066757600080fd5b505af115801561067b573d6000803e3d6000fd5b505060005461069792503391506001600160a01b031686610d09565b50505050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107285780601f106106fd57610100808354040283529160200191610728565b820191906000526020600020905b81548152906001019060200180831161070b57829003601f168201915b5050505050905090565b600081158061076257503360009081526009602090815260408083206001600160a01b0387168452909152902054155b61076b57600080fd5b3360008181526009602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60045490565b6001600160a01b038316600090815260096020908152604080832033845290915281205482111561080857600080fd5b6001600160a01b038416600090815260096020908152604080832033845290915290208054839003905561083d848484610d09565b5060015b9392505050565b60086020526000908152604090205481565b60035460ff1690565b60035460ff1681565b60045481565b600080546001600160a01b0316331461088a57600080fd5b506001600160a01b03166000908152600a60205260408120805460ff1916905590565b600960209081526000928352604080842090915290825290205481565b6001600160a01b031660009081526008602052604090205490565b600080546001600160a01b031633146108fd57600080fd5b50600781905590565b60075481565b6000546001600160a01b031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107285780601f106106fd57610100808354040283529160200191610728565b60006109858383610e06565b60408051838152905133917fe3833cad7d2b62a57b31546765698888596a7671d178a6177e7235131b84fed0919081900360200190a292915050565b60006109ce338484610d09565b50600192915050565b6002805460408051602060018416156101000260001901909316849004601f81018490048402820184019092528181529291830182828015610a5a5780601f10610a2f57610100808354040283529160200191610a5a565b820191906000526020600020905b815481529060010190602001808311610a3d57829003601f168201915b505050505081565b600080546001600160a01b03163314610a7a57600080fd5b506001600160a01b03166000908152600a60205260409020805460ff1916600190811790915590565b6000546001600160a01b03163314610aba57600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b600083610ae98185610732565b15610be257806001600160a01b0316638f4ffcb1338630876040518563ffffffff1660e01b815260040180856001600160a01b03168152602001848152602001836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610b71578181015183820152602001610b59565b50505050905090810190601f168015610b9e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015610bc057600080fd5b505af1158015610bd4573d6000803e3d6000fd5b505050506001915050610841565b509392505050565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a5a5780601f10610a2f57610100808354040283529160200191610a5a565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205490565b600a6020526000908152604090205460ff1681565b6000546001600160a01b03163314610c9b57600080fd5b6001600160a01b038116610cae57600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821615801590610d2a57506001600160a01b0382163014155b610d3357600080fd5b6001600160a01b038316600090815260086020526040902054811115610d5857600080fd5b6001600160a01b038316600090815260086020526040902054610d7b9082610f7b565b6001600160a01b038085166000908152600860205260408082209390935590841681522054610daa9082610f8d565b6001600160a01b0380841660008181526008602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b336000818152600a602052604090205460ff161515600114610e63576040805162461bcd60e51b8152602060048201526011602482015270243cb239379d10213ab9371032b93937b960791b604482015290519081900360640190fd5b6001600160a01b038316610ea85760405162461bcd60e51b8152600401808060200182810382526021815260200180610f9d6021913960400191505060405180910390fd5b600754821015610ee95760405162461bcd60e51b8152600401808060200182810382526022815260200180610fbe6022913960400191505060405180910390fd5b6001600160a01b038316600090815260086020526040902054610f0c9083610f7b565b6001600160a01b038416600090815260086020526040902055600454610f329083610f7b565b6004556040805183815290516000916001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3505050565b600082821115610f8757fe5b50900390565b60008282018381101561084157fefe45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a2045786365656473206d6178696d756d206275726e20616d6f756e74a2646970667358221220158f438709cd1012c7d189a7749e95a27bfeecfb909a4315b8d79e6d6debf34864736f6c634300060c00330000000000000000000000000000000000000000000000000000000000000064

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

0000000000000000000000000000000000000000000000000000000000000064

-----Decoded View---------------
Arg [0] : _ratio (uint256): 100

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000064


Deployed ByteCode Sourcemap

5234:6687:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5482:30;;;:::i;:::-;;;;-1:-1:-1;;;;;5482:30:0;;;;;;;;;;;;;;11165:265;;;;;;;;;;;;;;;;-1:-1:-1;11165:265:0;;;;;;;;;;;;:::i;:::-;;7192:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8706:607;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8706:607:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10633:97;;;:::i;:::-;;;;;;;;;;;;;;;;7384:348;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7384:348:0;;;;;;;;;;;;;;;;;:::i;5610:44::-;;;;;;;;;;;;;;;;-1:-1:-1;5610:44:0;-1:-1:-1;;;;;5610:44:0;;:::i;9796:88::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5368:22;;;:::i;5451:24::-;;;:::i;10428:156::-;;;;;;;;;;;;;;;;-1:-1:-1;10428:156:0;-1:-1:-1;;;;;10428:156:0;;:::i;5735:64::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5735:64:0;;;;;;;;;;:::i;8502:124::-;;;;;;;;;;;;;;;;-1:-1:-1;8502:124:0;-1:-1:-1;;;;;8502:124:0;;:::i;7798:140::-;;;;;;;;;;;;;;;;-1:-1:-1;7798:140:0;;:::i;5539:43::-;;;:::i;92:20::-;;;:::i;7047:90::-;;;:::i;10979:178::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10979:178:0;;;;;;;;:::i;6829:161::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6829:161:0;;;;;;;;:::i;5340:21::-;;;:::i;10194:152::-;;;;;;;;;;;;;;;;-1:-1:-1;10194:152:0;-1:-1:-1;;;;;10194:152:0;;:::i;10782:110::-;;;;;;;;;;;;;;;;-1:-1:-1;10782:110:0;-1:-1:-1;;;;;10782:110:0;;:::i;9384:346::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9384:346:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9384:346:0;;-1:-1:-1;9384:346:0;;-1:-1:-1;;;;;9384:346:0:i;5314:19::-;;;:::i;9958:159::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9958:159:0;;;;;;;;;;:::i;5806:46::-;;;;;;;;;;;;;;;;-1:-1:-1;5806:46:0;-1:-1:-1;;;;;5806:46:0;;:::i;752:192::-;;;;;;;;;;;;;;;;-1:-1:-1;752:192:0;-1:-1:-1;;;;;752:192:0;;:::i;5482:30::-;;;-1:-1:-1;;;;;5482:30:0;;:::o;11165:265::-;11282:15;;11309:65;;;-1:-1:-1;;;11309:65:0;;11331:10;11309:65;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11282:15:0;;;;;;11309:21;;:65;;;;;11253:17;;11309:65;;;;;;;11253:17;11282:15;11309:65;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;11408:5:0;;11385:37;;-1:-1:-1;11396:10:0;;-1:-1:-1;;;;;;11408:5:0;11415:6;11385:10;:37::i;:::-;11165:265;;;;:::o;7192:86::-;7267:5;7260:12;;;;;;;;-1:-1:-1;;7260:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7238:13;;7260:12;;7267:5;;7260:12;;7267:5;7260:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7192:86;:::o;8706:607::-;8783:12;9124;;;9123:54;;-1:-1:-1;9150:10:0;9142:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9142:29:0;;;;;;;;;;:34;9123:54;9115:63;;;;;;9197:10;9189:19;;;;:7;:19;;;;;;;;-1:-1:-1;;;;;9189:29:0;;;;;;;;;;;;:39;;;9244;;;;;;;9189:29;;9197:10;9244:39;;;;;;;;;;;-1:-1:-1;9301:4:0;8706:607;;;;:::o;10633:97::-;10710:12;;10633:97;:::o;7384:348::-;-1:-1:-1;;;;;7574:14:0;;7482:12;7574:14;;;:7;:14;;;;;;;;7589:10;7574:26;;;;;;;;:37;-1:-1:-1;7574:37:0;7566:46;;;;;;-1:-1:-1;;;;;7623:14:0;;;;;;:7;:14;;;;;;;;7638:10;7623:26;;;;;;;:37;;;;;;;7671:31;7631:5;7689:3;7653:7;7671:10;:31::i;:::-;-1:-1:-1;7720:4:0;7384:348;;;;;;:::o;5610:44::-;;;;;;;;;;;;;:::o;9796:88::-;9869:9;;;;9796:88;:::o;5368:22::-;;;;;;:::o;5451:24::-;;;;:::o;10428:156::-;10499:4;549:5;;-1:-1:-1;;;;;549:5:0;535:10;:19;527:28;;;;;;-1:-1:-1;;;;;;10516:30:0::1;10547:5;10516:30:::0;;;:16:::1;:30;::::0;;;;:36;;-1:-1:-1;;10516:36:0::1;::::0;;10547:5;10428:156::o;5735:64::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;8502:124::-;-1:-1:-1;;;;;8602:16:0;8567:15;8602:16;;;:8;:16;;;;;;;8502:124::o;7798:140::-;7864:7;549:5;;-1:-1:-1;;;;;549:5:0;535:10;:19;527:28;;;;;;-1:-1:-1;7885:8:0::1;:17:::0;;;;7798:140::o;5539:43::-;;;;:::o;92:20::-;;;-1:-1:-1;;;;;92:20:0;;:::o;7047:90::-;7124:7;7117:14;;;;;;;-1:-1:-1;;7117:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7095:13;;7117:14;;7124:7;;7117:14;;7124:7;7117:14;;;;;;;;;;;;;;;;;;;;;;;;10979:178;11040:15;11064:19;11070:5;11076:6;11064:5;:19::i;:::-;11095:29;;;;;;;;11106:10;;11095:29;;;;;;;;;;10979:178;;;;:::o;6829:161::-;6903:12;6928:36;6939:10;6951:3;6956:7;6928:10;:36::i;:::-;-1:-1:-1;6982:4:0;6829:161;;;;:::o;5340:21::-;;;;;;;;;;;;;;-1:-1:-1;;5340:21:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10194:152::-;10265:4;549:5;;-1:-1:-1;;;;;549:5:0;535:10;:19;527:28;;;;;;-1:-1:-1;;;;;;10281:30:0::1;;::::0;;;:16:::1;:30;::::0;;;;:35;;-1:-1:-1;;10281:35:0::1;10312:4;10281:35:::0;;::::1;::::0;;;10312:4;10194:152::o;10782:110::-;549:5;;-1:-1:-1;;;;;549:5:0;535:10;:19;527:28;;;;;;10857:15:::1;:27:::0;;-1:-1:-1;;;;;;10857:27:0::1;-1:-1:-1::0;;;;;10857:27:0;;;::::1;::::0;;;::::1;::::0;;10782:110::o;9384:346::-;9484:12;9549:8;9573:25;9549:8;9591:6;9573:7;:25::i;:::-;9569:154;;;9615:7;-1:-1:-1;;;;;9615:23:0;;9639:10;9651:6;9667:4;9674:10;9615:70;;;;;;;;;;;;;-1:-1:-1;;;;;9615:70:0;;;;;;;;;;;-1:-1:-1;;;;;9615:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9707:4;9700:11;;;;;9569:154;9384:346;;;;;;:::o;5314:19::-;;;;;;;;;;;;;;;-1:-1:-1;;5314:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9958:159;-1:-1:-1;;;;;10084:15:0;;;10047:17;10084:15;;;:7;:15;;;;;;;;:25;;;;;;;;;;;;;9958:159::o;5806:46::-;;;;;;;;;;;;;;;:::o;752:192::-;549:5;;-1:-1:-1;;;;;549:5:0;535:10;:19;527:28;;;;;;-1:-1:-1;;;;;833:22:0;::::1;825:31;;;::::0;::::1;;893:5;::::0;;872:37:::1;::::0;-1:-1:-1;;;;;872:37:0;;::::1;::::0;893:5;::::1;::::0;872:37:::1;::::0;::::1;920:5;:16:::0;;-1:-1:-1;;;;;;920:16:0::1;-1:-1:-1::0;;;;;920:16:0;;;::::1;::::0;;;::::1;::::0;;752:192::o;8037:421::-;-1:-1:-1;;;;;8204:17:0;;;;;;8203:45;;-1:-1:-1;;;;;;8227:20:0;;8242:4;8227:20;;8203:45;8195:54;;;;;;-1:-1:-1;;;;;8279:15:0;;;;;;:8;:15;;;;;;8268:26;;;8260:35;;;;;;-1:-1:-1;;;;;8324:15:0;;;;;;:8;:15;;;;;;:28;;8344:7;8324:19;:28::i;:::-;-1:-1:-1;;;;;8306:15:0;;;;;;;:8;:15;;;;;;:46;;;;8379:13;;;;;;;:26;;8397:7;8379:17;:26::i;:::-;-1:-1:-1;;;;;8363:13:0;;;;;;;:8;:13;;;;;;;;;:42;;;;8421:29;;;;;;;8363:13;;8421:29;;;;;;;;;;;;;8037:421;;;:::o;11526:386::-;11597:10;6004:28;;;;:16;:28;;;;;;;;:34;;:28;:34;5996:63;;;;;-1:-1:-1;;;5996:63:0;;;;;;;;;;;;-1:-1:-1;;;5996:63:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11624:21:0;::::1;11616:67;;;;-1:-1:-1::0;;;11616:67:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11708:8;;11698:6;:18;;11690:64;;;;-1:-1:-1::0;;;11690:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11781:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;;:29:::1;::::0;11803:6;11781:21:::1;:29::i;:::-;-1:-1:-1::0;;;;;11761:17:0;::::1;;::::0;;;:8:::1;:17;::::0;;;;:49;11833:12:::1;::::0;:24:::1;::::0;11850:6;11833:16:::1;:24::i;:::-;11818:12;:39:::0;11869:37:::1;::::0;;;;;;;11895:1:::1;::::0;-1:-1:-1;;;;;11869:37:0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;::::1;11526:386:::0;;;:::o;1792:113::-;1850:7;1878:1;1873;:6;;1866:14;;;;-1:-1:-1;1894:5:0;;;1792:113::o;1972:133::-;2030:7;2058:5;;;2077:6;;;;2070:14;;

Swarm Source

ipfs://158f438709cd1012c7d189a7749e95a27bfeecfb909a4315b8d79e6d6debf348
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading