ETH Price: $3,619.43 (+4.88%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve205556222024-08-18 12:50:23138 days ago1723985423IN
CosmoFund: COSMO Token
0 ETH0.000051492.12827298
Approve205556212024-08-18 12:50:11138 days ago1723985411IN
CosmoFund: COSMO Token
0 ETH0.000052242.15893661
Approve205555982024-08-18 12:45:35138 days ago1723985135IN
CosmoFund: COSMO Token
0 ETH0.000044291.83055977
Approve205555812024-08-18 12:42:11138 days ago1723984931IN
CosmoFund: COSMO Token
0 ETH0.000028321.1706957
Approve205555782024-08-18 12:41:35138 days ago1723984895IN
CosmoFund: COSMO Token
0 ETH0.000027741.14645132
Approve201289682024-06-19 23:08:23197 days ago1718838503IN
CosmoFund: COSMO Token
0 ETH0.000271695.85268398
Approve200123082024-06-03 15:51:59214 days ago1717429919IN
CosmoFund: COSMO Token
0 ETH0.0005337222.05643876
Approve200122352024-06-03 15:37:23214 days ago1717429043IN
CosmoFund: COSMO Token
0 ETH0.00043117.81144981
Approve200122332024-06-03 15:36:59214 days ago1717429019IN
CosmoFund: COSMO Token
0 ETH0.0003971616.41304283
Approve200122212024-06-03 15:34:35214 days ago1717428875IN
CosmoFund: COSMO Token
0 ETH0.0004122617.03713288
Approve200118732024-06-03 14:24:59214 days ago1717424699IN
CosmoFund: COSMO Token
0 ETH0.0003736915.44329661
Approve189677662024-01-09 6:56:59360 days ago1704783419IN
CosmoFund: COSMO Token
0 ETH0.0003476514.36720512
Approve189677642024-01-09 6:56:23360 days ago1704783383IN
CosmoFund: COSMO Token
0 ETH0.000306812.67914651
Approve189677632024-01-09 6:56:11360 days ago1704783371IN
CosmoFund: COSMO Token
0 ETH0.0003119312.89103576
Transfer189326052024-01-04 7:53:59365 days ago1704354839IN
CosmoFund: COSMO Token
0 ETH0.0004815116.17228676
Approve184234732023-10-24 23:44:47436 days ago1698191087IN
CosmoFund: COSMO Token
0 ETH0.0004452718.40141732
Approve184234502023-10-24 23:40:11436 days ago1698190811IN
CosmoFund: COSMO Token
0 ETH0.0004798519.83031184
Approve184234412023-10-24 23:38:23436 days ago1698190703IN
CosmoFund: COSMO Token
0 ETH0.0004804519.85525685
Approve183144592023-10-09 17:39:35452 days ago1696873175IN
CosmoFund: COSMO Token
0 ETH0.0003593714.85126298
Approve178839402023-08-10 10:38:35512 days ago1691663915IN
CosmoFund: COSMO Token
0 ETH0.0003648215.07651417
Approve165606422023-02-05 5:57:47698 days ago1675576667IN
CosmoFund: COSMO Token
0 ETH0.0008228417.70237627
Approve165060382023-01-28 14:53:47706 days ago1674917627IN
CosmoFund: COSMO Token
0 ETH0.0007007315.07530226
Transfer163688142023-01-09 11:01:59725 days ago1673262119IN
CosmoFund: COSMO Token
0 ETH0.0009724418.84079209
Approve151655042022-07-18 8:13:30900 days ago1658132010IN
CosmoFund: COSMO Token
0 ETH0.0003045812.58733201
Approve151654962022-07-18 8:12:29900 days ago1658131949IN
CosmoFund: COSMO Token
0 ETH0.0003742915.46788243
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CosmoToken

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 999999 runs

Other Settings:
default evmVersion
File 1 of 6 : CosmoToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

import "./utils/AccessControl.sol";
import "./CosmoTokenERC20.sol";

/**
 * CosmoToken Contract
 * https://CosmoFund.space/
 * @dev {ERC20} token, including:
 *  - ability for holders to burn (destroy) their tokens
 *  - a minter role that allows for token minting (creation)
 *  - a minting to
 *  - a minting to fund
 *  - project URL
 */
contract CosmoToken is CosmoTokenERC20, AccessControl {
    using SafeMath for uint256;

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    address private _fund;


    constructor() public CosmoTokenERC20("Cosmo Token", "COSMO") {
        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setURL("https://CosmoFund.space/");
    }

    function fund() public view returns (address) {
        return _fund;
    }

    function mint(address to, uint256 amount) public onlyMinter returns (bool) {
        _mint(to, amount);
        return true;
    }

    function mintToFund(uint256 amount) public onlyMinter returns (bool) {
        _mint(_fund, amount);
        return true;
    }

    function setFund(address account) public onlyAdmin {
        require(account != address(0), "CosmoToken: new fund is the zero address");
        _fund = account;
    }

    function addMinter(address account) public onlyAdmin {
        _setupRole(MINTER_ROLE, account);
    }

    function delMinter(address account) public {
        revokeRole(MINTER_ROLE,  account);
    }

    function setURL(string memory newUrl) public onlyAdmin {
        _setURL(newUrl);
    }

    modifier onlyAdmin() {
        require(hasRole(DEFAULT_ADMIN_ROLE, _msgSender()), "AccessControl: must have admin role");
        _;
    }

    modifier onlyMinter() {
        require(hasRole(MINTER_ROLE, _msgSender()), "AccessControl: must have minter role");
        _;
    }
}

File 2 of 6 : CosmoTokenERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

import "./libraries/SafeMath.sol";
import "./utils/Context.sol";

interface IERC20Burnable {
    function burn(uint256 amount) external returns (bool);
    function burnFrom(address account, uint256 amount) external returns (bool);
    // ERC20
    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);
}


/**
 * @dev Implementation of the {IERC20} interface.
 */
abstract contract CosmoTokenERC20 is Context, IERC20Burnable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    string private _url;


    constructor(string memory name_, string memory symbol_) internal {
        _name = name_;
        _symbol = symbol_;
        _decimals = 18;
    }

    function url() public view returns (string memory) {
        return _url;
    }

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

    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 override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

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

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

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

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

    function burn(uint256 amount) public override returns (bool) {
        _burn(_msgSender(), amount);
        return true;
    }

    function burnFrom(address account, uint256 amount) public override returns (bool) {
        uint256 decreasedAllowance = allowance(account, _msgSender()).sub(amount, "CosmoToken: burn amount exceeds allowance");
        _approve(account, _msgSender(), decreasedAllowance);
        _burn(account, amount);
        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "CosmoToken: transfer from the zero address");
        require(recipient != address(0), "CosmoToken: transfer to the zero address");
        _balances[sender] = _balances[sender].sub(amount, "CosmoToken: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "CosmoToken: mint to the zero address");
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "CosmoToken: burn from the zero address");
        _balances[account] = _balances[account].sub(amount, "CosmoToken: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "CosmoToken: approve from the zero address");
        require(spender != address(0),"CosmoToken: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _setURL(string memory newUrl) internal {
        _url = newUrl;
    }
}

File 3 of 6 : EnumerableSet.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Library for managing
 * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
 * types.
 */
library EnumerableSet {
    struct Set {
        bytes32[] _values;
        mapping(bytes32 => uint256) _indexes;
    }

    function _add(Set storage set, bytes32 value) private returns (bool) {
        if (!_contains(set, value)) {
            set._values.push(value);
            set._indexes[value] = set._values.length;
            return true;
        } else {
            return false;
        }
    }

    function _remove(Set storage set, bytes32 value) private returns (bool) {
        uint256 valueIndex = set._indexes[value];
        if (valueIndex != 0) {
            uint256 toDeleteIndex = valueIndex - 1;
            uint256 lastIndex = set._values.length - 1;
            bytes32 lastvalue = set._values[lastIndex];
            set._values[toDeleteIndex] = lastvalue;
            set._indexes[lastvalue] = toDeleteIndex + 1;
            set._values.pop();
            delete set._indexes[value];
            return true;
        } else {
            return false;
        }
    }

    function _contains(Set storage set, bytes32 value) private view returns (bool) {
        return set._indexes[value] != 0;
    }

    function _length(Set storage set) private view returns (uint256) {
        return set._values.length;
    }

    function _at(Set storage set, uint256 index) private view returns (bytes32) {
        require(set._values.length > index, "EnumerableSet: index out of bounds");
        return set._values[index];
    }

    // AddressSet
    struct AddressSet {
        Set _inner;
    }

    function add(AddressSet storage set, address value) internal returns (bool) {
        return _add(set._inner, bytes32(uint256(uint160(value))));
    }

    function remove(AddressSet storage set, address value) internal returns (bool) {
        return _remove(set._inner, bytes32(uint256(uint160(value))));
    }

    function contains(AddressSet storage set, address value) internal view returns (bool) {
        return _contains(set._inner, bytes32(uint256(uint160(value))));
    }

    function length(AddressSet storage set) internal view returns (uint256) {
        return _length(set._inner);
    }

    function at(AddressSet storage set, uint256 index) internal view returns (address) {
        return address(uint160(uint256(_at(set._inner, index))));
    }
}

File 4 of 6 : SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 */
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");
        return a - b;
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }
}

File 5 of 6 : AccessControl.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

import "../libraries/EnumerableSet.sol";
import "./Context.sol";

/**
 * @dev Contract module that allows children to implement role-based access
 * control mechanisms.
 */
abstract contract AccessControl is Context {
    using EnumerableSet for EnumerableSet.AddressSet;

    struct RoleData {
        EnumerableSet.AddressSet members;
        bytes32 adminRole;
    }

    mapping(bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function hasRole(bytes32 role, address account) public view returns (bool) {
        return _roles[role].members.contains(account);
    }

    function getRoleMemberCount(bytes32 role) public view returns (uint256) {
        return _roles[role].members.length();
    }

    function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
        return _roles[role].members.at(index);
    }

    function getRoleAdmin(bytes32 role) public view returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");
        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual {
        require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");
        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");
        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (_roles[role].members.add(account)) {
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (_roles[role].members.remove(account)) {
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

File 6 of 6 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction.
 */
abstract contract Context {
    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

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":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","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":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","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":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"account","type":"address"}],"name":"delMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fund","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mintToFund","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newUrl","type":"string"}],"name":"setURL","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":"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"},{"inputs":[],"name":"url","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b50604080518082018252600b81526a21b7b9b6b7902a37b5b2b760a91b602080830191825283518085019094526005845264434f534d4f60d81b90840152815191929162000062916003916200020e565b508051620000789060049060208401906200020e565b50506005805460ff19166012179055506200009e600062000098620000e3565b620000e7565b60408051808201909152601881527f68747470733a2f2f436f736d6f46756e642e73706163652f00000000000000006020820152620000dd90620000f7565b620002ba565b3390565b620000f382826200010c565b5050565b8051620000f39060069060208401906200020e565b6000828152600760209081526040909120620001339183906200119362000187821b17901c565b15620000f35762000143620000e3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006200019e836001600160a01b038416620001a7565b90505b92915050565b6000620001b58383620001f6565b620001ed57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001a1565b506000620001a1565b60009081526001919091016020526040902054151590565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000246576000855562000291565b82601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b5b808211156200029f5760008155600101620002a4565b611f9e80620002ca6000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063a217fddf116100a2578063ca15c87311610071578063ca15c87314610723578063d539139314610740578063d547741f14610748578063dd62ed3e14610781576101da565b8063a217fddf146106a1578063a457c2d7146106a9578063a9059cbb146106e2578063b60d42881461071b576101da565b80639010d07c116100de5780639010d07c146105e157806391d148541461062d57806395d89b4114610666578063983b2d561461066e576101da565b806370a08231146104cf578063773434081461050257806379cc6790146105a8576101da565b8063248a9ca31161017c578063395093511161014b578063395093511461043857806340c10f191461047157806342966c68146104aa5780635600f04f146104c7576101da565b8063248a9ca31461038b5780632f2ff15d146103a8578063313ce567146103e157806336568abe146103ff576101da565b806312fc61dd116101b857806312fc61dd146102de57806318160ddd146102fb57806323338b881461031557806323b872dd14610348576101da565b806306fdde03146101df578063095ea7b31461025c5780630e21750f146102a9575b600080fd5b6101e76107bc565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102956004803603604081101561027257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610870565b604080519115158252519081900360200190f35b6102dc600480360360208110156102bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661088e565b005b610295600480360360208110156102f457600080fd5b50356109a8565b610303610a56565b60408051918252519081900360200190f35b6102dc6004803603602081101561032b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a5c565b6102956004803603606081101561035e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a89565b610303600480360360208110156103a157600080fd5b5035610b2a565b6102dc600480360360408110156103be57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610b3f565b6103e9610bc0565b6040805160ff9092168252519081900360200190f35b6102dc6004803603604081101561041557600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610bc9565b6102956004803603604081101561044e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c5e565b6102956004803603604081101561048757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cb9565b610295600480360360208110156104c057600080fd5b5035610d46565b6101e7610d59565b610303600480360360208110156104e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd8565b6102dc6004803603602081101561051857600080fd5b81019060208101813564010000000081111561053357600080fd5b82018360208201111561054557600080fd5b8035906020019184600183028401116401000000008311171561056757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e00945050505050565b610295600480360360408110156105be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e6b565b610604600480360360408110156105f757600080fd5b5080359060200135610ec1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102956004803603604081101561064357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610ee0565b6101e7610ef8565b6102dc6004803603602081101561068457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f77565b610303611003565b610295600480360360408110156106bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611008565b610295600480360360408110156106f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561107d565b610604611091565b6103036004803603602081101561073957600080fd5b50356110ad565b6103036110c4565b6102dc6004803603604081101561075e57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166110e8565b6103036004803603604081101561079757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661115b565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b820191906000526020600020905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b600061088461087d6111b5565b84846111b9565b5060015b92915050565b6108a0600061089b6111b5565b610ee0565b6108f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611e966028913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006109d67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661089b6111b5565b610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d2b6024913960400191505060405180910390fd5b600854610a4e9073ffffffffffffffffffffffffffffffffffffffff1683611300565b506001919050565b60025490565b610a867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826110e8565b50565b6000610a9684848461140f565b610b2084610aa26111b5565b610b1b856040518060600160405280602d8152602001611e69602d913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610aed6111b5565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906115d4565b6111b9565b5060019392505050565b60009081526007602052604090206002015490565b600082815260076020526040902060020154610b5d9061089b6111b5565b610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611cae602f913960400191505060405180910390fd5b610bbc8282611685565b5050565b60055460ff1690565b610bd16111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611ee7602f913960400191505060405180910390fd5b610bbc8282611708565b6000610884610c6b6111b5565b84610b1b8560016000610c7c6111b5565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549061178b565b6000610ce77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661089b6111b5565b610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d2b6024913960400191505060405180910390fd5b6108848383611300565b6000610a4e610d536111b5565b836117ff565b60068054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610e0d600061089b6111b5565b610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b610a868161193d565b600080610ea383604051806060016040528060298152602001611df360299139610e9c87610e976111b5565b61115b565b91906115d4565b9050610eb784610eb16111b5565b836111b9565b610b2084846117ff565b6000828152600760205260408120610ed99083611950565b9392505050565b6000828152600760205260408120610ed9908361195c565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b610f84600061089b6111b5565b610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b610a867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610bb2565b600081565b60006108846110156111b5565b84610b1b856040518060600160405280602a8152602001611e1c602a91396001600061103f6111b5565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906115d4565b600061088461108a6111b5565b848461140f565b60085473ffffffffffffffffffffffffffffffffffffffff1690565b60008181526007602052604081206108889061197e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6000828152600760205260409020600201546111069061089b6111b5565b610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611d4f6030913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611989565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611225576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611ebe6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611da56027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff821661136c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d076024913960400191505060405180910390fd5b600254611379908261178b565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546113ac908261178b565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff831661147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611cdd602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166114e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611f416028913960400191505060405180910390fd5b611531816040518060600160405280602b8152602001611f16602b913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906115d4565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461156d908261178b565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164257818101518382015260200161162a565b50505050905090810190601f16801561166f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082815260076020526040902061169d9082611193565b15610bbc576116aa6111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260076020526040902061172090826119d3565b15610bbc5761172d6111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600082820183811015610ed957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821661186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d7f6026913960400191505060405180910390fd5b6118b581604051806060016040528060278152602001611dcc6027913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906115d4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556002546118e890826119f5565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8051610bbc906006906020840190611bea565b6000610ed98383611a6c565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611aea565b600061088882611b02565b60006119958383611aea565b6119cb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610888565b506000610888565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611b06565b600082821115611a6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81546000908210611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611c8c6022913960400191505060405180910390fd5b826000018281548110611ad757fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611be05783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019190810190600090879083908110611b5757fe5b9060005260206000200154905080876000018481548110611b7457fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611ba457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610888565b6000915050610888565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c205760008555611c66565b82601f10611c3957805160ff1916838001178555611c66565b82800160010185558215611c66579182015b82811115611c66578251825591602001919060010190611c4b565b50611c72929150611c76565b5090565b5b80821115611c725760008155600101611c7756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74436f736d6f546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373436f736d6f546f6b656e3a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a206d7573742068617665206d696e74657220726f6c65416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65436f736d6f546f6b656e3a206275726e2066726f6d20746865207a65726f2061646472657373436f736d6f546f6b656e3a20617070726f766520746f20746865207a65726f2061646472657373436f736d6f546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e6365436f736d6f546f6b656e3a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a206d75737420686176652061646d696e20726f6c65436f736d6f546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f546f6b656e3a206e65772066756e6420697320746865207a65726f2061646472657373436f736d6f546f6b656e3a20617070726f76652066726f6d20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66436f736d6f546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f736d6f546f6b656e3a207472616e7366657220746f20746865207a65726f2061646472657373a2646970667358221220aa3f9a0e8e1d327d25cbd564727b1e2a6f1846b6595debd2d230dd2283983c1564736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c806370a0823111610104578063a217fddf116100a2578063ca15c87311610071578063ca15c87314610723578063d539139314610740578063d547741f14610748578063dd62ed3e14610781576101da565b8063a217fddf146106a1578063a457c2d7146106a9578063a9059cbb146106e2578063b60d42881461071b576101da565b80639010d07c116100de5780639010d07c146105e157806391d148541461062d57806395d89b4114610666578063983b2d561461066e576101da565b806370a08231146104cf578063773434081461050257806379cc6790146105a8576101da565b8063248a9ca31161017c578063395093511161014b578063395093511461043857806340c10f191461047157806342966c68146104aa5780635600f04f146104c7576101da565b8063248a9ca31461038b5780632f2ff15d146103a8578063313ce567146103e157806336568abe146103ff576101da565b806312fc61dd116101b857806312fc61dd146102de57806318160ddd146102fb57806323338b881461031557806323b872dd14610348576101da565b806306fdde03146101df578063095ea7b31461025c5780630e21750f146102a9575b600080fd5b6101e76107bc565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610221578181015183820152602001610209565b50505050905090810190601f16801561024e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102956004803603604081101561027257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610870565b604080519115158252519081900360200190f35b6102dc600480360360208110156102bf57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661088e565b005b610295600480360360208110156102f457600080fd5b50356109a8565b610303610a56565b60408051918252519081900360200190f35b6102dc6004803603602081101561032b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610a5c565b6102956004803603606081101561035e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610a89565b610303600480360360208110156103a157600080fd5b5035610b2a565b6102dc600480360360408110156103be57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610b3f565b6103e9610bc0565b6040805160ff9092168252519081900360200190f35b6102dc6004803603604081101561041557600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610bc9565b6102956004803603604081101561044e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c5e565b6102956004803603604081101561048757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610cb9565b610295600480360360208110156104c057600080fd5b5035610d46565b6101e7610d59565b610303600480360360208110156104e557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610dd8565b6102dc6004803603602081101561051857600080fd5b81019060208101813564010000000081111561053357600080fd5b82018360208201111561054557600080fd5b8035906020019184600183028401116401000000008311171561056757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610e00945050505050565b610295600480360360408110156105be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610e6b565b610604600480360360408110156105f757600080fd5b5080359060200135610ec1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102956004803603604081101561064357600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610ee0565b6101e7610ef8565b6102dc6004803603602081101561068457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f77565b610303611003565b610295600480360360408110156106bf57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611008565b610295600480360360408110156106f857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561107d565b610604611091565b6103036004803603602081101561073957600080fd5b50356110ad565b6103036110c4565b6102dc6004803603604081101561075e57600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff166110e8565b6103036004803603604081101561079757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661115b565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b820191906000526020600020905b81548152906001019060200180831161084957829003601f168201915b5050505050905090565b600061088461087d6111b5565b84846111b9565b5060015b92915050565b6108a0600061089b6111b5565b610ee0565b6108f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116610961576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611e966028913960400191505060405180910390fd5b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60006109d67f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661089b6111b5565b610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d2b6024913960400191505060405180910390fd5b600854610a4e9073ffffffffffffffffffffffffffffffffffffffff1683611300565b506001919050565b60025490565b610a867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6826110e8565b50565b6000610a9684848461140f565b610b2084610aa26111b5565b610b1b856040518060600160405280602d8152602001611e69602d913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260016020526040812090610aed6111b5565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906115d4565b6111b9565b5060019392505050565b60009081526007602052604090206002015490565b600082815260076020526040902060020154610b5d9061089b6111b5565b610bb2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611cae602f913960400191505060405180910390fd5b610bbc8282611685565b5050565b60055460ff1690565b610bd16111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180611ee7602f913960400191505060405180910390fd5b610bbc8282611708565b6000610884610c6b6111b5565b84610b1b8560016000610c7c6111b5565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c16815292529020549061178b565b6000610ce77f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a661089b6111b5565b610d3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d2b6024913960400191505060405180910390fd5b6108848383611300565b6000610a4e610d536111b5565b836117ff565b60068054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b610e0d600061089b6111b5565b610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b610a868161193d565b600080610ea383604051806060016040528060298152602001611df360299139610e9c87610e976111b5565b61115b565b91906115d4565b9050610eb784610eb16111b5565b836111b9565b610b2084846117ff565b6000828152600760205260408120610ed99083611950565b9392505050565b6000828152600760205260408120610ed9908361195c565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108665780601f1061083b57610100808354040283529160200191610866565b610f84600061089b6111b5565b610fd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611e466023913960400191505060405180910390fd5b610a867f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a682610bb2565b600081565b60006108846110156111b5565b84610b1b856040518060600160405280602a8152602001611e1c602a91396001600061103f6111b5565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906115d4565b600061088461108a6111b5565b848461140f565b60085473ffffffffffffffffffffffffffffffffffffffff1690565b60008181526007602052604081206108889061197e565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6000828152600760205260409020600201546111069061089b6111b5565b610c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611d4f6030913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611989565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316611225576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180611ebe6029913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611291576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180611da56027913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff821661136c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611d076024913960400191505060405180910390fd5b600254611379908261178b565b60025573ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020546113ac908261178b565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff831661147b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611cdd602a913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166114e7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180611f416028913960400191505060405180910390fd5b611531816040518060600160405280602b8152602001611f16602b913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906115d4565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461156d908261178b565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561167d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561164257818101518382015260200161162a565b50505050905090810190601f16801561166f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082815260076020526040902061169d9082611193565b15610bbc576116aa6111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600082815260076020526040902061172090826119d3565b15610bbc5761172d6111b5565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b600082820183811015610ed957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff821661186b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611d7f6026913960400191505060405180910390fd5b6118b581604051806060016040528060278152602001611dcc6027913973ffffffffffffffffffffffffffffffffffffffff851660009081526020819052604090205491906115d4565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260409020556002546118e890826119f5565b60025560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b8051610bbc906006906020840190611bea565b6000610ed98383611a6c565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611aea565b600061088882611b02565b60006119958383611aea565b6119cb57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610888565b506000610888565b6000610ed98373ffffffffffffffffffffffffffffffffffffffff8416611b06565b600082821115611a6657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81546000908210611ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611c8c6022913960400191505060405180910390fd5b826000018281548110611ad757fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b5490565b60008181526001830160205260408120548015611be05783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083019190810190600090879083908110611b5757fe5b9060005260206000200154905080876000018481548110611b7457fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611ba457fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610888565b6000915050610888565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c205760008555611c66565b82601f10611c3957805160ff1916838001178555611c66565b82800160010185558215611c66579182015b82811115611c66578251825591602001919060010190611c4b565b50611c72929150611c76565b5090565b5b80821115611c725760008155600101611c7756fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f206772616e74436f736d6f546f6b656e3a207472616e736665722066726f6d20746865207a65726f2061646472657373436f736d6f546f6b656e3a206d696e7420746f20746865207a65726f2061646472657373416363657373436f6e74726f6c3a206d7573742068617665206d696e74657220726f6c65416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e2061646d696e20746f207265766f6b65436f736d6f546f6b656e3a206275726e2066726f6d20746865207a65726f2061646472657373436f736d6f546f6b656e3a20617070726f766520746f20746865207a65726f2061646472657373436f736d6f546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e6365436f736d6f546f6b656e3a206275726e20616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f546f6b656e3a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f416363657373436f6e74726f6c3a206d75737420686176652061646d696e20726f6c65436f736d6f546f6b656e3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f736d6f546f6b656e3a206e65772066756e6420697320746865207a65726f2061646472657373436f736d6f546f6b656e3a20617070726f76652066726f6d20746865207a65726f2061646472657373416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c66436f736d6f546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e6365436f736d6f546f6b656e3a207472616e7366657220746f20746865207a65726f2061646472657373a2646970667358221220aa3f9a0e8e1d327d25cbd564727b1e2a6f1846b6595debd2d230dd2283983c1564736f6c63430007060033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

Making life multigalactic.

Validator Index Block Amount
View All Withdrawals

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

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