Contract

0xB466012782ec33c983Ad73D6f34832B04D801519

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

-

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve6398042024-12-19 0:46:012 hrs ago1734569161IN
0xB4660127...04D801519
0 S0.000059381.1
Approve6256542024-12-18 22:25:374 hrs ago1734560737IN
0xB4660127...04D801519
0 S0.000056951.11
Approve6241932024-12-18 22:08:125 hrs ago1734559692IN
0xB4660127...04D801519
0 S0.000048871
Approve6212332024-12-18 21:31:475 hrs ago1734557507IN
0xB4660127...04D801519
0 S0.000059381.1
Approve6201752024-12-18 21:21:216 hrs ago1734556881IN
0xB4660127...04D801519
0 S0.000059381.1
Approve6201462024-12-18 21:21:076 hrs ago1734556867IN
0xB4660127...04D801519
0 S0.000059381.1
Approve6155152024-12-18 20:34:596 hrs ago1734554099IN
0xB4660127...04D801519
0 S0.000053481.1
Approve6151042024-12-18 20:31:016 hrs ago1734553861IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6148482024-12-18 20:28:436 hrs ago1734553723IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6144882024-12-18 20:25:057 hrs ago1734553505IN
0xB4660127...04D801519
0 S0.000056951.11
Approve6131942024-12-18 20:12:287 hrs ago1734552748IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6129072024-12-18 20:09:277 hrs ago1734552567IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6128342024-12-18 20:08:367 hrs ago1734552516IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6122452024-12-18 20:02:287 hrs ago1734552148IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6120102024-12-18 20:00:187 hrs ago1734552018IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6118662024-12-18 19:58:457 hrs ago1734551925IN
0xB4660127...04D801519
0 S0.0004887210
Approve6117432024-12-18 19:57:207 hrs ago1734551840IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6113592024-12-18 19:53:087 hrs ago1734551588IN
0xB4660127...04D801519
0 S0.0004887210
Approve6107532024-12-18 19:48:067 hrs ago1734551286IN
0xB4660127...04D801519
0 S0.000062091.21
Approve6090332024-12-18 19:30:567 hrs ago1734550256IN
0xB4660127...04D801519
0 S0.000099082
Approve6084452024-12-18 19:24:288 hrs ago1734549868IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6074922024-12-18 19:14:308 hrs ago1734549270IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6065612024-12-18 19:06:098 hrs ago1734548769IN
0xB4660127...04D801519
0 S0.000054291.1
Approve6062572024-12-18 19:02:568 hrs ago1734548576IN
0xB4660127...04D801519
0 S0.000070381.1
Approve6055282024-12-18 18:55:318 hrs ago1734548131IN
0xB4660127...04D801519
0 S0.000054291.1
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
5958082024-12-18 17:41:389 hrs ago1734543698  Contract Creation0 S
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x658C7e8D...9Dd04f15B
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Token

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 9999 runs

Other Settings:
cancun EvmVersion, MIT license
File 1 of 2 : Token.sol
/*

 █▀ █▀█ █▄░█ █ █▀▀ █▀▀ ▄▀█ █▀▀ ▀█▀ █▀█ █▀█ █▄█
 ▄█ █▄█ █░▀█ █ █▄▄ █▀░ █▀█ █▄▄ ░█░ █▄█ █▀▄ ░█░

  Trade on SonicFactory and have fun!
  Web:      https://sonicfactory.fun/

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

import "./ERC20.sol";

contract Token is ERC20 {
  address private immutable _creator;
  address private _owner;
  address private _router;
  address private _pair;

  bool private _escaped;
  bool private _initialized;
  uint24 private _maxBalance;
  uint24 private _tax;
  uint32 private _launch;

  mapping(address => bool) private _unauthorized;

  struct HolderView {
    address holder;
    uint256 balance;
  }

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

  error ErrorUnauthorized(address sender);
  error ErrorAlreadyInitialized();
  error ErrorUnapprovable();
  error ErrorMaxBalanceExceeded();
  error ErrorInvalidRecipient(address to);
  error ErrorInvalidRange();

  modifier onlyOwner() {
    if (msg.sender != _owner) { revert ErrorUnauthorized(msg.sender); }

    _;
  }

  constructor(address _owner_, address _creator_, string memory _name_, string memory _symbol_, uint8 _decimals_, uint256 _totalSupply_) ERC20(_name_, _symbol_, _decimals_) payable {
    _creator = _creator_;
    _owner = _owner_;
    _mint(_owner_, _totalSupply_);
  }

  function initialize(address _router_, address _pair_, uint24 _maxBalance_, uint24 _tax_, uint32 _launch_, address[] calldata _unauthorized_) external onlyOwner {
    if (_initialized) { revert ErrorAlreadyInitialized(); }

    unchecked {
      uint256 cnt = _unauthorized_.length;

      for (uint256 i; i < cnt; i++) { _unauthorized[_unauthorized_[i]] = true; }
    }

    _router = _router_;
    _pair = _pair_;
    _maxBalance = _maxBalance_;
    _tax = _tax_;
    _launch = _launch_;
    _initialized = true;
  }

  function owner() external view returns (address) {
    return _owner;
  }

  /// @notice Returns the creator address
  function creator() external view returns (address) {
    return _creator;
  }

  function approve(address spender, uint256 value) public override returns (bool) {
    if (!_escaped && spender != _router) { revert ErrorUnapprovable(); }

    return super.approve(spender, value);
  }

  function permit(address owner_, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public override {
    if (!_escaped && spender != _router) { revert ErrorUnapprovable(); }

    super.permit(owner_, spender, value, deadline, v, r, s);
  }

  function _transferCheck(address from, address to, uint256 value) private view {
    if (_escaped || ((from == _owner && to == _pair) || ((!_escaped && to == _owner) || value == 0 || to == address(0xdEaD) || to == _router || to == _pair))) { return; }

    if (!_escaped) {
      if (_unauthorized[to]) { revert ErrorInvalidRecipient(to); }

      unchecked {
        if (_maxBalance == 100_000 || _balance[to] + value <= _percentage(_totalSupply, uint256(_maxBalance))) { return; }
      }
    }

    revert ErrorMaxBalanceExceeded();
  }

  function transfer(address to, uint256 value) external virtual override returns (bool) {
    _transfer(msg.sender, to, value);

    return true;
  }

  function _transfer(address from, address to, uint256 value) internal virtual override {
    _transferCheck(from, to, value);

    super._transfer(from, to, value);
  }

  function transferFrom(address from, address to, uint256 value) public override returns (bool) {
    if (!_escaped && msg.sender == _router && to == _pair && _allowance[from][_router] != type(uint256).max) { super._approve(from, _router, type(uint256).max, false); }

    _transferCheck(from, to, value);

    return super.transferFrom(from, to, value);
  }

  function totalHolders() external view returns (uint24 total) {
    return _totalHolders;
  }

  function holders(uint256 offset, uint256 limit) public view returns (HolderView[] memory) {
    if (offset >= _totalHolders) { revert ErrorInvalidRange(); }

    unchecked {
      if (offset + limit > _totalHolders) { limit = _totalHolders - offset; }
    }

    HolderView[] memory list = new HolderView[](limit);

    unchecked {
      uint256 j;

      for (uint256 i = offset; j < limit; i++) {
        address holder = _holders[i];

        if (holder == address(0xdEaD) || _balance[holder] == 0) { continue; }

        list[j].holder = holder;
        list[j].balance = _balance[holder];

        ++j;
      }
    }

    return list;
  }

  function maxBalance() external view returns (uint24) {
    return _maxBalance;
  }

  function tax() external view returns (uint24) {
    return _tax;
  }

  function launch() external view returns (uint32) {
    return _launch;
  }

  /// @notice Returns True if token has reached the target MC and is now tradeable on a public DEX
  function escaped() external view returns (bool) {
    return _escaped;
  }

  function escape() external onlyOwner {
    if (_escaped) { revert ErrorUnauthorized(msg.sender); }
    if (_maxBalance < 100_000) { _maxBalance = 100_000; } // 100%

    address _previousOwner = _owner;

    delete _tax;
    delete _owner;
    delete _router;
    delete _pair;

    _escaped = true;

    emit OwnershipTransferred(_previousOwner, _owner);
  }

  function _percentage(uint256 value, uint256 bps) private pure returns (uint256) {
    unchecked {
      return (value * bps) / 100_000;
    }
  }

  function _timestamp() private view returns (uint32) {
    unchecked {
      return uint32(block.timestamp % 2**32);
    }
  }
}

File 2 of 2 : ERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

abstract contract ERC20 {
  uint8 private immutable _decimals;
  uint24 internal _totalHolders;
  uint256 internal _totalSupply;

  string private _name;
  string private _symbol;
  bytes32 public immutable DOMAIN_SEPARATOR;
  bytes32 private constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

  address[] internal _holders;

  mapping(address => uint256) private _nonces;
  mapping(address => uint256) internal _balance;
  mapping(address => mapping(address => uint256)) internal _allowance;
  mapping(address => bool) internal _holderData;

  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Transfer(address indexed from, address indexed to, uint256 value);

  error ERC20InvalidApprover(address owner);
  error ERC20InvalidSpender(address spender);
  error ERC20InvalidSender(address sender);
  error ERC20InvalidReceiver(address to);
  error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 value);
  error ERC20InsufficientBalance(address owner, uint256 balance, uint256 value);
  error ERC2612ExpiredSignature(uint256 deadline);
  error ERC2612InvalidSigner(address signer, address owner);

  constructor(string memory _name_, string memory _symbol_, uint8 _decimals_) {
    _name = _name_;
    _symbol = _symbol_;
    _decimals = _decimals_;

    DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(bytes(_name)), keccak256(bytes("1")), block.chainid, address(this)));
  }

  function name() external view returns (string memory) {
    return _name;
  }

  function symbol() external view returns (string memory) {
    return _symbol;
  }

  function decimals() external view returns (uint8) {
    return _decimals;
  }

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

  function balanceOf(address account) external view returns (uint256) {
    return _balance[account];
  }

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

  function approve(address spender, uint256 value) public virtual returns (bool) {
    _approve(msg.sender, spender, value, true);

    return true;
  }

  function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public virtual {
    if (block.timestamp > deadline) { revert ERC2612ExpiredSignature(deadline); }

    unchecked {
      address signer = ecrecover(keccak256(abi.encodePacked(hex"1901", DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, _nonces[owner]++, deadline)))), v, r, s);

      if (signer != owner) { revert ERC2612InvalidSigner(signer, owner); }
    }

    _approve(owner, spender, value, true);
  }

  function nonces(address owner) external view returns (uint256) {
    return _nonces[owner];
  }

  function transfer(address to, uint256 value) external virtual returns (bool) {
    _transfer(msg.sender, to, value);

    return true;
  }

  function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
    if (value > 0) {
      address spender = msg.sender;
      uint256 allowed = allowance(from, spender);

      if (allowed < value) { revert ERC20InsufficientAllowance(to, allowed, value); }

      if (allowed != type(uint256).max) {
        unchecked {
          _approve(from, spender, allowed - value, false);
        }
      }
    }

    _transfer(from, to, value);

    return true;
  }

  function burn(uint256 value) external returns (bool) {
    _transfer(msg.sender, address(0xdEaD), value);

    return true;
  }

  function _approve(address owner, address spender, uint256 value, bool emitEvent) internal {
    if (owner == address(0)) { revert ERC20InvalidApprover(owner); }
    if (spender == address(0)) { revert ERC20InvalidSpender(spender); }

    _allowance[owner][spender] = value;

    if (emitEvent) { emit Approval(owner, spender, value); }
  }

  function _transfer(address from, address to, uint256 value) internal virtual {
    if (from == address(0)) { revert ERC20InvalidSender(from); }
    if (to == address(0) || to == address(this)) { revert ERC20InvalidReceiver(to); }
    if (_balance[from] < value) { revert ERC20InsufficientBalance(from, _balance[from], value); }

    if (value > 0) {
      unchecked {
        _balance[from] -= value;

        if (_balance[from] == 0) { --_totalHolders; }

        if (to == address(0xdEaD)) {
          _totalSupply -= value;
        } else {
          if (_balance[to] == 0) { ++_totalHolders; }

          _balance[to] += value;

          if (!_holderData[to]) {
            _holderData[to] = true;
            _holders.push(to);
          }
        }
      }
    }

    emit Transfer(from, to, value);
  }

  function _mint(address to, uint256 value) internal {
    if (to == address(0) || to == address(0xdEaD)) { revert ERC20InvalidReceiver(to); }

    unchecked {
      if (_balance[to] == 0) { ++_totalHolders; }

      _totalSupply += value;
      _balance[to] += value;

      if (!_holderData[to]) {
        _holderData[to] = true;
        _holders.push(to);
      }
    }

    emit Transfer(address(0), to, value);
  }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_owner_","type":"address"},{"internalType":"address","name":"_creator_","type":"address"},{"internalType":"string","name":"_name_","type":"string"},{"internalType":"string","name":"_symbol_","type":"string"},{"internalType":"uint8","name":"_decimals_","type":"uint8"},{"internalType":"uint256","name":"_totalSupply_","type":"uint256"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[],"name":"ErrorAlreadyInitialized","type":"error"},{"inputs":[],"name":"ErrorInvalidRange","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"ErrorInvalidRecipient","type":"error"},{"inputs":[],"name":"ErrorMaxBalanceExceeded","type":"error"},{"inputs":[],"name":"ErrorUnapprovable","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ErrorUnauthorized","type":"error"},{"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"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","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":"value","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escape","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"escaped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"limit","type":"uint256"}],"name":"holders","outputs":[{"components":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"}],"internalType":"struct Token.HolderView[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router_","type":"address"},{"internalType":"address","name":"_pair_","type":"address"},{"internalType":"uint24","name":"_maxBalance_","type":"uint24"},{"internalType":"uint24","name":"_tax_","type":"uint24"},{"internalType":"uint32","name":"_launch_","type":"uint32"},{"internalType":"address[]","name":"_unauthorized_","type":"address[]"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBalance","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tax","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHolders","outputs":[{"internalType":"uint24","name":"total","type":"uint24"}],"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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610184575f3560e01c806370a08231116100dd578063a9059cbb11610088578063d180667d11610063578063d180667d1461040e578063d505accf14610416578063dd62ed3e14610429575f5ffd5b8063a9059cbb146103c6578063ae0ffca8146103d9578063aed6176e146103ee575f5ffd5b80638da5cb5b116100b85780638da5cb5b1461038357806395d89b411461039457806399c8d5561461039c575f5ffd5b806370a082311461030c57806373ad468a146103345780637ecebe001461035b575f5ffd5b806323b872dd1161013d57806342966c681161011857806342966c68146102ba5780634c346e72146102cd57806353d74fdf146102f0575f5ffd5b806323b872dd1461024f578063313ce567146102625780633644e51514610293575f5ffd5b806306fdde031161016d57806306fdde0314610205578063095ea7b31461021a57806318160ddd1461023d575f5ffd5b806301339c211461018857806302d05d3f146101cb575b5f5ffd5b600b547c0100000000000000000000000000000000000000000000000000000000900463ffffffff1660405163ffffffff90911681526020015b60405180910390f35b7f000000000000000000000000b34511a31eab097b3462cfe3b197867b8ce0774a5b6040516001600160a01b0390911681526020016101c2565b61020d610461565b6040516101c2919061161a565b61022d610228366004611688565b6104f1565b60405190151581526020016101c2565b6001545b6040519081526020016101c2565b61022d61025d3660046116b0565b610574565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000121681526020016101c2565b6102417f9c253d2037c67d609bd8e77a9195868588a3f50cae8c5f044cd444739be8b64181565b61022d6102c83660046116ea565b610635565b600b5474010000000000000000000000000000000000000000900460ff1661022d565b5f5462ffffff165b60405162ffffff90911681526020016101c2565b61024161031a366004611701565b6001600160a01b03165f9081526006602052604090205490565b600b54760100000000000000000000000000000000000000000000900462ffffff166102f8565b610241610369366004611701565b6001600160a01b03165f9081526005602052604090205490565b6009546001600160a01b03166101ed565b61020d61064b565b600b54790100000000000000000000000000000000000000000000000000900462ffffff166102f8565b61022d6103d4366004611688565b61065a565b6103ec6103e736600461172c565b61066f565b005b6104016103fc3660046117f9565b6108e7565b6040516101c29190611819565b6103ec610a87565b6103ec610424366004611870565b610c47565b6102416104373660046118dd565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b6060600280546104709061190e565b80601f016020809104026020016040519081016040528092919081815260200182805461049c9061190e565b80156104e75780601f106104be576101008083540402835291602001916104e7565b820191905f5260205f20905b8154815290600101906020018083116104ca57829003601f168201915b5050505050905090565b600b545f9074010000000000000000000000000000000000000000900460ff1615801561052c5750600a546001600160a01b03848116911614155b15610563576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61056d8383610ccf565b9392505050565b600b545f9074010000000000000000000000000000000000000000900460ff161580156105ab5750600a546001600160a01b031633145b80156105c45750600b546001600160a01b038481169116145b80156105f857506001600160a01b038085165f908152600760209081526040808320600a54909416835292905220545f1914155b1561061757600a546106179085906001600160a01b03165f195f610cd9565b610622848484610df0565b61062d84848461100d565b949350505050565b5f6106433361dead846110b9565b506001919050565b6060600380546104709061190e565b5f6106663384846110b9565b50600192915050565b6009546001600160a01b031633146106ba576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b600b547501000000000000000000000000000000000000000000900460ff1615610710576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f5b81811015610794576001600c5f8686858181106107325761073261195f565b90506020020160208101906107479190611701565b6001600160a01b0316815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610713565b5050600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b039889161790555050600b80547501000000000000000000000000000000000000000000959096167fffffffffffffff000000ffff00000000000000000000000000000000000000009096169590951776010000000000000000000000000000000000000000000062ffffff948516021778ffffffffffffffffffffffffffffffffffffffffffffffffff1679010000000000000000000000000000000000000000000000000092909316919091027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000063ffffffff9290921691909102177fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff16179055565b5f5460609062ffffff168310610929576040517f52acd57900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5462ffffff168383011115610946575f5462ffffff1683900391505b5f8267ffffffffffffffff8111156109605761096061198c565b6040519080825280602002602001820160405280156109a457816020015b604080518082019091525f808252602082015281526020019060019003908161097e5790505b5090505f845b84821015610a7d575f600482815481106109c6576109c661195f565b5f918252602090912001546001600160a01b0316905061dead811480610a0157506001600160a01b0381165f90815260066020526040902054155b15610a0c5750610a75565b80848481518110610a1f57610a1f61195f565b6020908102919091018101516001600160a01b0392831690529082165f908152600690915260409020548451859085908110610a5d57610a5d61195f565b60200260200101516020018181525050826001019250505b6001016109aa565b5090949350505050565b6009546001600160a01b03163314610acd576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b5474010000000000000000000000000000000000000000900460ff1615610b24576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024016106b1565b600b54620186a076010000000000000000000000000000000000000000000090910462ffffff161015610b9557600b80547fffffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffff16780186a0000000000000000000000000000000000000000000001790555b60098054600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000808416909455600a80549094169093557fffffffff000000ffffffff00000000000000000000000000000000000000000090921674010000000000000000000000000000000000000000179091556040516001600160a01b03909116905f9082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a350565b600b5474010000000000000000000000000000000000000000900460ff16158015610c805750600a546001600160a01b03878116911614155b15610cb7576040517f86b1a17f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cc6878787878787876110d4565b50505050505050565b5f61066633848460015b6001600160a01b038416610d24576040517fe602df050000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024016106b1565b6001600160a01b038316610d6f576040517f94280d620000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038085165f9081526007602090815260408083209387168352929052208290558015610dea57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610de191815260200190565b60405180910390a35b50505050565b600b5474010000000000000000000000000000000000000000900460ff1680610eca57506009546001600160a01b038481169116148015610e3e5750600b546001600160a01b038381169116145b80610eca5750600b5474010000000000000000000000000000000000000000900460ff16158015610e7c57506009546001600160a01b038381169116145b80610e85575080155b80610e9a57506001600160a01b03821661dead145b80610eb25750600a546001600160a01b038381169116145b80610eca5750600b546001600160a01b038381169116145b15610ed457505050565b600b5474010000000000000000000000000000000000000000900460ff16610fdb576001600160a01b0382165f908152600c602052604090205460ff1615610f53576040517f342be1ce0000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b600b54760100000000000000000000000000000000000000000000900462ffffff16620186a01480610fd15750600154600b54610fb49190760100000000000000000000000000000000000000000000900462ffffff16620186a091020490565b6001600160a01b0383165f90815260066020526040902054820111155b15610fdb57505050565b6040517f9bd6a5a000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81156110a4576001600160a01b0384165f908152600760209081526040808320338085529252909120548381101561108b576040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526001600160a01b038616600482015260248101829052604481018590526064016106b1565b5f1981146110a1576110a186838684035f610cd9565b50505b6110af8484846110b9565b5060019392505050565b6110c4838383610df0565b6110cf8383836112e4565b505050565b83421115611111576040517f62791302000000000000000000000000000000000000000000000000000000008152600481018590526024016106b1565b6001600160a01b038781165f8181526005602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a085019590955260c08085018a90528151808603909101815260e0850190915280519101207f19010000000000000000000000000000000000000000000000000000000000006101008401527f9c253d2037c67d609bd8e77a9195868588a3f50cae8c5f044cd444739be8b641610102840152610122830152919061014201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561126c573d5f5f3e3d5ffd5b505050602060405103519050876001600160a01b0316816001600160a01b0316146112d6576040517f4b800e460000000000000000000000000000000000000000000000000000000081526001600160a01b038083166004830152891660248201526044016106b1565b50610cc68787876001610cd9565b6001600160a01b03831661132f576040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024016106b1565b6001600160a01b038216158061134d57506001600160a01b03821630145b1561138f576040517fec442f050000000000000000000000000000000000000000000000000000000081526001600160a01b03831660048201526024016106b1565b6001600160a01b0383165f90815260066020526040902054811115611409576001600160a01b0383165f81815260066020526040908190205490517fe450d38c00000000000000000000000000000000000000000000000000000000815260048101929092526024820152604481018290526064016106b1565b80156115c8576001600160a01b0383165f908152600660205260408120805483900390819055900361146c575f80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000811662ffffff9182165f19019091161790555b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff21536001600160a01b038316016114aa576001805482900390556115c8565b6001600160a01b0382165f9081526006602052604081205490036114fe575f805462ffffff808216600101167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009091161790555b6001600160a01b0382165f908152600660209081526040808320805485019055600890915290205460ff166115c8576001600160a01b0382165f81815260086020526040812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805491820181559091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161160d91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b80356001600160a01b0381168114611683575f5ffd5b919050565b5f5f60408385031215611699575f5ffd5b6116a28361166d565b946020939093013593505050565b5f5f5f606084860312156116c2575f5ffd5b6116cb8461166d565b92506116d96020850161166d565b929592945050506040919091013590565b5f602082840312156116fa575f5ffd5b5035919050565b5f60208284031215611711575f5ffd5b61056d8261166d565b803562ffffff81168114611683575f5ffd5b5f5f5f5f5f5f5f60c0888a031215611742575f5ffd5b61174b8861166d565b96506117596020890161166d565b95506117676040890161171a565b94506117756060890161171a565b9350608088013563ffffffff8116811461178d575f5ffd5b925060a088013567ffffffffffffffff8111156117a8575f5ffd5b8801601f81018a136117b8575f5ffd5b803567ffffffffffffffff8111156117ce575f5ffd5b8a60208260051b84010111156117e2575f5ffd5b602082019350809250505092959891949750929550565b5f5f6040838503121561180a575f5ffd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b8181101561186557835180516001600160a01b031684526020908101518185015290930192604090920191600101611832565b509095945050505050565b5f5f5f5f5f5f5f60e0888a031215611886575f5ffd5b61188f8861166d565b965061189d6020890161166d565b95506040880135945060608801359350608088013560ff811681146118c0575f5ffd5b9699959850939692959460a0840135945060c09093013592915050565b5f5f604083850312156118ee575f5ffd5b6118f78361166d565b91506119056020840161166d565b90509250929050565b600181811c9082168061192257607f821691505b602082108103611959577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffdfea2646970667358221220688214a33c697126760eeed157514a03e7bf0b8444ccad98749000ac1be5d87764736f6c634300081c0033

Block Transaction Gas Used Reward
view all blocks produced

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

Validator Index Block Amount
View All Withdrawals

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

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