Contract

0xBB611D585aDb288b2B0dEd538Eb3776CE5112459

Overview

S Balance

Sonic LogoSonic LogoSonic Logo5 wei

S Value

-

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Latest 25 internal transactions (View All)

Parent Transaction Hash Block From To
6713902024-12-19 8:00:052 hrs ago1734595205
0xBB611D58...CE5112459
24.50249999 S
6713902024-12-19 8:00:052 hrs ago1734595205
0xBB611D58...CE5112459
0.24749999 S
6713902024-12-19 8:00:052 hrs ago1734595205
0xBB611D58...CE5112459
24.74999999 S
6006172024-12-18 18:15:3916 hrs ago1734545739
0xBB611D58...CE5112459
72.08033175 S
6006172024-12-18 18:15:3916 hrs ago1734545739
0xBB611D58...CE5112459
0.72808415 S
6006172024-12-18 18:15:3916 hrs ago1734545739
0xBB611D58...CE5112459
72.80841591 S
5958452024-12-18 17:41:5216 hrs ago1734543712
0xBB611D58...CE5112459
5.24666869 S
5958452024-12-18 17:41:5216 hrs ago1734543712
0xBB611D58...CE5112459
0.05299665 S
5958452024-12-18 17:41:5216 hrs ago1734543712
0xBB611D58...CE5112459
5.29966534 S
5908902024-12-18 17:08:5917 hrs ago1734541739
0xBB611D58...CE5112459
77.64281792 S
5908902024-12-18 17:08:5917 hrs ago1734541739
0xBB611D58...CE5112459
0.78427088 S
5908902024-12-18 17:08:5917 hrs ago1734541739
0xBB611D58...CE5112459
78.42708881 S
5908532024-12-18 17:08:4717 hrs ago1734541727
0xBB611D58...CE5112459
173.36368162 S
5908532024-12-18 17:08:4717 hrs ago1734541727
0xBB611D58...CE5112459
1.75114829 S
5908532024-12-18 17:08:4717 hrs ago1734541727
0xBB611D58...CE5112459
175.11482991 S
5905032024-12-18 17:06:3317 hrs ago1734541593
0xBB611D58...CE5112459
3.3 S
5905032024-12-18 17:06:3317 hrs ago1734541593
0xBB611D58...CE5112459
326.7 S
5905032024-12-18 17:06:3317 hrs ago1734541593
0xBB611D58...CE5112459
330 S
5904752024-12-18 17:06:2017 hrs ago1734541580
0xBB611D58...CE5112459
0.05 S
5904752024-12-18 17:06:2017 hrs ago1734541580
0xBB611D58...CE5112459
4.95 S
5904752024-12-18 17:06:2017 hrs ago1734541580
0xBB611D58...CE5112459
5 S
5902832024-12-18 17:05:0417 hrs ago1734541504
0xBB611D58...CE5112459
0.25 S
5902832024-12-18 17:05:0417 hrs ago1734541504
0xBB611D58...CE5112459
24.75 S
5902832024-12-18 17:05:0417 hrs ago1734541504
0xBB611D58...CE5112459
25 S
5902832024-12-18 17:05:0417 hrs ago1734541504  Contract Creation0 S
View All Internal Transactions
Loading...
Loading

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

Contract Name:
UniswapV2Pair

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 9999 runs

Other Settings:
cancun EvmVersion, MIT license
File 1 of 5 : UniswapV2Pair.sol
/*

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

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

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

import "./libraries/UQ112x112.sol";
import "./interfaces/IERC20.sol";
import "./interfaces/IWETH.sol";
import "./interfaces/IIncubator.sol";

contract UniswapV2Pair {
  using UQ112x112 for uint224;

  address private immutable INCUBATOR;
  address private _CREATOR;
  address private _REFERRAL;
  address private _WETH;
  address private _TOKEN;
  address public immutable token0;
  address public immutable token1;

  bool private _initialized;
  bool private _AUTOESCAPE;
  uint8 private locked;
  uint24 private _FEE;
  uint24 private _TAX;
  uint24 private _REF;
  uint32 private _LAUNCH;
  uint32 private blockTimestampLast;
  uint112 private _ETH_RESERVE_VIRTUAL_INITIAL;
  uint112 private _ETH_RESERVE_ESCAPE_TARGET;
  uint112 private _TOKEN_INITIAL_RESERVE;
  uint112 private reserve0;
  uint112 private reserve1;
  uint256 public price0CumulativeLast;
  uint256 public price1CumulativeLast;

  event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
  event Sync(uint112 reserve0, uint112 reserve1);

  error ErrorLocked();
  error ErrorAutoEscape();
  error ErrorNotLaunched();
  error ErrorUnauthorized(address sender);
  error ErrorAlreadyInitialized();
  error ErrorInsufficientReserves();
  error ErrorSwapInsufficientInput();
  error ErrorSwapInsufficientOutput();
  error ErrorSwapInsufficientLiquidity();
  error ErrorSwapInvalidRecipient();
  error ErrorTransfer(address to, uint256 amount);

  modifier lock() {
    if (locked >= 1) { revert ErrorLocked(); }

    locked = 1;

    _;

    if (locked == 1) { locked = 0; }
  }

  modifier isLaunched() {
    if (_LAUNCH > _timestamp()) { revert ErrorNotLaunched(); }

    _;
  }

  constructor(address incubator, address _token0, address _token1) payable {
    INCUBATOR = incubator;
    token0 = _token0;
    token1 = _token1;
  }

  function initializePair(address creator, uint24 fee, uint24 tax, uint24 ref, uint32 launch, uint112 tokenInitialReserve, uint112 ethInitialVirtualReserve, uint112 ethReserveEscapeTarget, address WETH, address referral, bool autoEscape) external {
    if (msg.sender != INCUBATOR) { revert ErrorUnauthorized(msg.sender); }
    if (_initialized) { revert ErrorAlreadyInitialized(); }

    _CREATOR = creator;
    _FEE = fee;
    _TAX = tax;
    _LAUNCH = launch;
    _ETH_RESERVE_VIRTUAL_INITIAL = ethInitialVirtualReserve;
    _ETH_RESERVE_ESCAPE_TARGET = ethReserveEscapeTarget;
    _TOKEN_INITIAL_RESERVE = tokenInitialReserve;
    _WETH = WETH;
    _TOKEN = token0 == _WETH ? token1 : token0;
    _AUTOESCAPE = autoEscape;

    if (referral != address(0) && referral != creator) {
      _REF = ref;
      _REFERRAL = referral;
    }

    _initialized = true;
    _update(token0 == _WETH ? uint256(ethInitialVirtualReserve) : uint256(_TOKEN_INITIAL_RESERVE), token0 == _WETH ? uint256(_TOKEN_INITIAL_RESERVE) : uint256(ethInitialVirtualReserve), 0, 0);
  }

  function FEE() external view returns (uint24) {
    return _FEE;
  }

  function TAX() external view returns (uint24) {
    return _TAX;
  }

  function ETH_INITIAL_VIRTUAL_RESERVE() external view returns (uint112) {
    return _ETH_RESERVE_VIRTUAL_INITIAL;
  }

  function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
    return (reserve0, reserve1, blockTimestampLast);
  }

  function sync() external lock {
    uint256 balance0;
    uint256 balance1;

    unchecked {
      balance0 = IERC20(token0).balanceOf(address(this)) + (token0 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0);
      balance1 = IERC20(token1).balanceOf(address(this)) + (token1 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0);
    }

    _update(balance0, balance1, reserve0, reserve1);
  }

  function swap(address to, address tokenIn) external payable isLaunched lock {
    if (to == token0 || to == token1) { revert ErrorSwapInvalidRecipient(); }

    bool buy = tokenIn == _WETH;
    uint256 amountInEffective;
    uint256 amountOutEffective;
    uint256 amountIn;
    uint256 amountOut;
    uint256 ethAmount;
    uint256 feeAmount;
    uint256 taxAmount;
    uint256 refAmount;

    if (buy) {
      amountIn = msg.value;
      amountInEffective = _percentage(amountIn, 100_000 - uint256(_FEE + _TAX));
      ethAmount = amountIn;

      if (_FEE > 0 || _TAX > 0) {
        if (_FEE > 0) {
          unchecked {
            feeAmount = _percentage(amountIn, uint256(_FEE));

            if (_REF > 0) {
              refAmount = _percentage(feeAmount, uint256(_REF));
              feeAmount -= refAmount;
            }
          }
        }

        if (_TAX > 0) { taxAmount = _percentage(amountIn, uint256(_TAX)); }
      }

      IWETH(_WETH).deposit{ value: amountInEffective }();
      IWETH(_WETH).transfer(address(this), amountInEffective);
    } else {
      unchecked {
        amountIn = amountInEffective = IERC20(tokenIn).balanceOf(address(this)) - uint256(token0 == tokenIn ? reserve0 : reserve1);
      }
    }

    if (amountIn == 0) { revert ErrorSwapInsufficientInput(); }

    (uint112 reserveIn, uint112 reserveOut) = token0 == tokenIn ? (reserve0, reserve1) : (reserve1, reserve0);

    unchecked {
      amountOut = amountOutEffective = (amountInEffective * uint256(reserveOut)) / (uint256(reserveIn) + amountInEffective);
    }

    if (amountOut == 0) { revert ErrorSwapInsufficientOutput(); }
    if (amountOut > uint256(reserveOut)) { revert ErrorSwapInsufficientLiquidity(); }

    if (tokenIn == _TOKEN) {
      unchecked {
        amountOutEffective = _percentage(amountOut, 100_000 - uint256(_FEE + _TAX));
      }

      IWETH(_WETH).withdraw(amountOut);

      ethAmount = amountOut;

      if (_FEE > 0 || _TAX > 0) {
        if (_FEE > 0) {
          unchecked {
            feeAmount = _percentage(amountOut, uint256(_FEE));

            if (_REF > 0) {
              refAmount = _percentage(feeAmount, uint256(_REF));
              feeAmount -= refAmount;
            }
          }
        }

        if (_TAX > 0) { taxAmount = _percentage(amountOut, uint256(_TAX)); }
      }
    }

    if (_FEE > 0 || _TAX > 0) {
      if (feeAmount > 0) {
        _withdrawETH(INCUBATOR, feeAmount);

        if (refAmount > 0) { _withdrawETH(_REFERRAL, refAmount); }
      }

      if (taxAmount > 0) { _withdrawETH(_CREATOR, taxAmount); }
    }

    uint256 tokenAmount = buy ? amountOut : amountIn;

    { // scope to avoid "stack too deep" error
      address _to = to;

      bool _buy = buy;
      uint256 _amountOutEffective = amountOutEffective;
      uint256 _ethAmount = ethAmount;
      uint256 _tokenAmount = tokenAmount;
      uint256 _feeAmount = feeAmount;
      uint256 _taxAmount = taxAmount;
      uint256 _refAmount = refAmount;

      if (_buy) {
        IERC20(_TOKEN).transfer(_to, _amountOutEffective);
      } else{
        _withdrawETH(_to, _amountOutEffective);
      }

      (uint112 ethReserve, uint112 tokenReserve) = _getReserves();

      IIncubator(INCUBATOR).pairSwap(_to, _buy, ethReserve, tokenReserve, _ethAmount, _tokenAmount, _feeAmount, _taxAmount, _refAmount);
    }

    uint256 balance0;
    uint256 balance1;

    unchecked {
      balance0 = IERC20(token0).balanceOf(address(this)) + (token0 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0);
      balance1 = IERC20(token1).balanceOf(address(this)) + (token1 == _WETH ? uint256(_ETH_RESERVE_VIRTUAL_INITIAL) : 0);
    }

    _update(balance0, balance1, reserve0, reserve1);

    if (tokenIn == token0) {
      emit Swap(msg.sender, amountIn, 0, 0, amountOut, to);
    } else {
      emit Swap(msg.sender, 0, amountIn, amountOut, 0, to);
    }

    if (buy && _AUTOESCAPE) {
      unchecked {
        if ((token0 == _WETH ? balance0 : balance1) - uint256(_ETH_RESERVE_VIRTUAL_INITIAL) >= uint256(_ETH_RESERVE_ESCAPE_TARGET)) { _escape(); }
      }
    }
  }

  function escape() external isLaunched lock {
    if (msg.sender != _CREATOR) { revert ErrorUnauthorized(msg.sender); }
    if (_AUTOESCAPE) { revert ErrorAutoEscape(); }

    unchecked {
      if ((token0 == _WETH ? reserve0 : reserve1) - uint256(_ETH_RESERVE_VIRTUAL_INITIAL) < uint256(_ETH_RESERVE_ESCAPE_TARGET)) { revert ErrorInsufficientReserves(); }
    }

    _escape();
  }

  function _getReserves() private view returns (uint112 ethReserve, uint112 tokenReserve) {
    ethReserve = token0 == _WETH ? reserve0 : reserve1;
    tokenReserve = token0 == _WETH ? reserve1 : reserve0;
  }

  function _update(uint256 balance0, uint256 balance1, uint112 _reserve0, uint112 _reserve1) private {
    uint32 blockTimestamp = _timestamp();

    unchecked {
      uint32 timeElapsed = blockTimestamp - blockTimestampLast;

      if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
        price0CumulativeLast += uint256(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
        price1CumulativeLast += uint256(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
      }
    }

    reserve0 = uint112(balance0);
    reserve1 = uint112(balance1);
    blockTimestampLast = blockTimestamp;
    blockTimestampLast = _timestamp();

    emit Sync(reserve0, reserve1);
  }

  function _withdrawETH(address to, uint256 value) private {
    (bool success,) = payable(to).call{ value: value }("");

    if (!success) { revert ErrorTransfer(to, value); }
  }

  function _escape() private {
    locked = 2;

    delete _FEE;
    delete _TAX;
    delete _REF;

    uint256 balance0 = IERC20(token0).balanceOf(address(this));
    uint256 balance1 = IERC20(token1).balanceOf(address(this));

    (uint256 tokenAmount, uint256 ethAmount) = token0 == _WETH ? (balance1, balance0) : (balance0, balance1);

    IERC20(_TOKEN).transfer(INCUBATOR, tokenAmount);
    IWETH(_WETH).withdraw(ethAmount);
    IIncubator(INCUBATOR).tokenEscape{ value: ethAmount }(tokenAmount);

    _update(0, 0, reserve0, reserve1);
  }

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

  receive() external payable {
    require(msg.sender == _WETH);
  }
}

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

pragma solidity ^0.8.24;

interface IIncubator {
  function pairSwap(address user, bool buy, uint112 ethReserve, uint112 tokenReserve, uint256 ethAmount, uint256 tokenAmount, uint256 feeAmount, uint256 taxAmount, uint256 refAmount) external;
  function tokenEscape(uint256 tokenAmount) external payable;
}

File 3 of 5 : IWETH.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

interface IWETH {
  function deposit() external payable;
  function transfer(address to, uint256 value) external returns (bool);
  function withdraw(uint256) external;
}

File 4 of 5 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

interface IERC20 {
  function balanceOf(address owner) external view returns (uint256);
  function transfer(address to, uint256 value) external returns (bool);
  function transferFrom(address from, address to, uint256 value) external returns (bool);
}

File 5 of 5 : UQ112x112.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.24;

library UQ112x112 {
  uint224 constant Q112 = 2**112;

  function encode(uint112 y) internal pure returns (uint224 z) {
    unchecked {
      z = uint224(y) * Q112;
    }
  }

  function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
    unchecked {
      z = x / uint224(y);
    }
  }
}

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":"incubator","type":"address"},{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"}],"stateMutability":"payable","type":"constructor"},{"inputs":[],"name":"ErrorAlreadyInitialized","type":"error"},{"inputs":[],"name":"ErrorAutoEscape","type":"error"},{"inputs":[],"name":"ErrorInsufficientReserves","type":"error"},{"inputs":[],"name":"ErrorLocked","type":"error"},{"inputs":[],"name":"ErrorNotLaunched","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientInput","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientLiquidity","type":"error"},{"inputs":[],"name":"ErrorSwapInsufficientOutput","type":"error"},{"inputs":[],"name":"ErrorSwapInvalidRecipient","type":"error"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ErrorTransfer","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ErrorUnauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"inputs":[],"name":"ETH_INITIAL_VIRTUAL_RESERVE","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FEE","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TAX","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"escape","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"creator","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"uint24","name":"tax","type":"uint24"},{"internalType":"uint24","name":"ref","type":"uint24"},{"internalType":"uint32","name":"launch","type":"uint32"},{"internalType":"uint112","name":"tokenInitialReserve","type":"uint112"},{"internalType":"uint112","name":"ethInitialVirtualReserve","type":"uint112"},{"internalType":"uint112","name":"ethReserveEscapeTarget","type":"uint112"},{"internalType":"address","name":"WETH","type":"address"},{"internalType":"address","name":"referral","type":"address"},{"internalType":"bool","name":"autoEscape","type":"bool"}],"name":"initializePair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address","name":"tokenIn","type":"address"}],"name":"swap","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

Deployed Bytecode

0x6080604052600436106100c6575f3560e01c80636b76484e11610071578063d21220a71161004c578063d21220a714610290578063d33945fd146102c3578063fff6cae91461030d575f5ffd5b80636b76484e14610235578063c57981b514610248578063d180667d1461027c575f5ffd5b80635a3d5493116100a15780635a3d5493146101ba5780635d5a1e43146101cf57806368f58b03146101ee575f5ffd5b80630902f1ac146100e75780630dfe16811461014c5780635909c0d514610197575f5ffd5b366100e3576002546001600160a01b031633146100e1575f5ffd5b005b5f5ffd5b3480156100f2575f5ffd5b50600654600454604080516dffffffffffffffffffffffffffff80851682526e010000000000000000000000000000909404909316602084015264010000000090910463ffffffff16908201526060015b60405180910390f35b348015610157575f5ffd5b5061017f7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3881565b6040516001600160a01b039091168152602001610143565b3480156101a2575f5ffd5b506101ac60075481565b604051908152602001610143565b3480156101c5575f5ffd5b506101ac60085481565b3480156101da575f5ffd5b506100e16101e9366004612684565b610321565b3480156101f9575f5ffd5b506003547a010000000000000000000000000000000000000000000000000000900462ffffff165b60405162ffffff9091168152602001610143565b6100e1610243366004612757565b6107ef565b348015610253575f5ffd5b5060035477010000000000000000000000000000000000000000000000900462ffffff16610221565b348015610287575f5ffd5b506100e1611835565b34801561029b575f5ffd5b5061017f7f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e081565b3480156102ce575f5ffd5b506004546801000000000000000090046dffffffffffffffffffffffffffff166040516dffffffffffffffffffffffffffff9091168152602001610143565b348015610318575f5ffd5b506100e1611af3565b336001600160a01b037f00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd0988161461038a576040517fa11a9a410000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b60035474010000000000000000000000000000000000000000900460ff16156103df576040517f66a02dea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a5f5f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555089600360176101000a81548162ffffff021916908362ffffff160217905550886003601a6101000a81548162ffffff021916908362ffffff1602179055508660045f6101000a81548163ffffffff021916908363ffffffff16021790555084600460086101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508360055f6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550856005600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff1602179055508260025f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060025f9054906101000a90046001600160a01b03166001600160a01b03167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b031614610599577f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386105bb565b7f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e05b600380548315157501000000000000000000000000000000000000000000027fffffffffffffffffffff00ff00000000000000000000000000000000000000009091166001600160a01b039384161717905582161580159061062f57508a6001600160a01b0316826001600160a01b031614155b156106b457600380547cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000062ffffff8b1602179055600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600380547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556002546107e2907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03908116911614610757576005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610769565b856dffffffffffffffffffffffffffff165b6002547f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b039081169116146107b557866dffffffffffffffffffffffffffff166107db565b6005546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b5f5f611e19565b5050505050505050505050565b60045463ffffffff42811691161115610834576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff161061088e576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556001600160a01b038281167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3891909116148061093c57507f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e06001600160a01b0316826001600160a01b0316145b15610973576040517fe4ad481200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546001600160a01b038281169116145f808080808080808815610c76576003543496506109ff9087906109e89062ffffff7a0100000000000000000000000000000000000000000000000000008204811691770100000000000000000000000000000000000000000000009004166127b5565b6109fa9062ffffff16620186a06127d0565b61208d565b60035490985086945077010000000000000000000000000000000000000000000000900462ffffff16151580610a5957506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b15610b805760035477010000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610ab490879077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549093507d010000000000000000000000000000000000000000000000000000000000900462ffffff1615610b2157600354610b199084907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b905080830392505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615610b8057600354610b7d9087907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b91505b60025f9054906101000a90046001600160a01b03166001600160a01b031663d0e30db0896040518263ffffffff1660e01b81526004015f604051808303818588803b158015610bcd575f5ffd5b505af1158015610bdf573d5f5f3e3d5ffd5b50506002546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152306004820152602481018d90526001600160a01b03909116935063a9059cbb925060440190506020604051808303815f875af1158015610c4c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c7091906127e3565b50610d87565b896001600160a01b03167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b031614610cd9576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16610ced565b6006546dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526dffffffffffffffffffffffffffff91909116906001600160a01b038c16906370a0823190602401602060405180830381865afa158015610d5c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d809190612805565b0397508795505b855f03610dc0576040517f0b0597fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f8b6001600160a01b03167f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b031614610e28576006546dffffffffffffffffffffffffffff6e010000000000000000000000000000820481169116610e52565b6006546dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004165b9150915089826dffffffffffffffffffffffffffff1601816dffffffffffffffffffffffffffff168b0281610e8957610e8961281c565b049850889650865f03610ec8576040517fa5cf903d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806dffffffffffffffffffffffffffff16871115610f12576040517fdd5487b900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003546001600160a01b03908116908d160361117657600354610f8390889077010000000000000000000000000000000000000000000000810462ffffff9081167a01000000000000000000000000000000000000000000000000000090920481169190910116620186a00361208d565b6002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018a9052919a506001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015610fe0575f5ffd5b505af1158015610ff2573d5f5f3e3d5ffd5b505060035489985077010000000000000000000000000000000000000000000000900462ffffff161515915081905061104f57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b156111765760035477010000000000000000000000000000000000000000000000900462ffffff1615611117576003546110aa90889077010000000000000000000000000000000000000000000000900462ffffff1661208d565b6003549095507d010000000000000000000000000000000000000000000000000000000000900462ffffff16156111175760035461110f9086907d010000000000000000000000000000000000000000000000000000000000900462ffffff1661208d565b925082850394505b6003547a010000000000000000000000000000000000000000000000000000900462ffffff1615611176576003546111739088907a010000000000000000000000000000000000000000000000000000900462ffffff1661208d565b93505b60035477010000000000000000000000000000000000000000000000900462ffffff161515806111ca57506003547a010000000000000000000000000000000000000000000000000000900462ffffff1615155b1561123657841561121b576111ff7f00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd0988866120a0565b821561121b5760015461121b906001600160a01b0316846120a0565b8315611236575f54611236906001600160a01b0316856120a0565b5f8b6112425788611244565b875b90508d8c8b89848a8a8a86156112e7576003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b038a81166004830152602482018990529091169063a9059cbb906044016020604051808303815f875af11580156112bd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e191906127e3565b506112f1565b6112f188876120a0565b5f5f6112fb612140565b6040517fa73cc35c0000000000000000000000000000000000000000000000000000000081526001600160a01b038d811660048301528c151560248301526dffffffffffffffffffffffffffff808516604484015283166064830152608482018b905260a482018a905260c4820189905260e4820188905261010482018790529294509092507f00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd09889091169063a73cc35c90610124015f604051808303815f87803b1580156113c7575f5ffd5b505af11580156113d9573d5f5f3e3d5ffd5b50506002545f9c508c9b507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03908116911614995061142998505050505050505050575f611449565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e89190612805565b600254910192507f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e06001600160a01b03908116911614611528575f611548565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e06001600160a01b0316906370a0823190602401602060405180830381865afa1580156115c3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e79190612805565b6006549101915061162190839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b7f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03168f6001600160a01b0316036116c6578f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8228d5f5f8f6040516116b9949392919093845260208401929092526040830152606082015260800190565b60405180910390a361172e565b8f6001600160a01b0316336001600160a01b03167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8225f8e8e5f604051611725949392919093845260208401929092526040830152606082015260800190565b60405180910390a35b8d801561175657506003547501000000000000000000000000000000000000000000900460ff165b156117d1576005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b039081169116146117c157826117c3565b835b03106117d1576117d1612235565b5050600354760100000000000000000000000000000000000000000000900460ff166001039b506118319a505050505050505050505057600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b5050565b60045463ffffffff4281169116111561187a576040517fd51c1d2e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600354600176010000000000000000000000000000000000000000000090910460ff16106118d4576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790555f54336001600160a01b039091161461195c576040517fa11a9a41000000000000000000000000000000000000000000000000000000008152336004820152602401610381565b6003547501000000000000000000000000000000000000000000900460ff16156119b2576040517f037573b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005546004546002546dffffffffffffffffffffffffffff9283169268010000000000000000909204909116907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03908116911614611a3c576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff16611a50565b6006546dffffffffffffffffffffffffffff165b6dffffffffffffffffffffffffffff16031015611a99576040517f448cb04d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611aa1612235565b600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff1690555b565b600354600176010000000000000000000000000000000000000000000090910460ff1610611b4d576040517f2b10235600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff167601000000000000000000000000000000000000000000001790556002545f9081907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03908116911614611bce575f611bee565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b0316906370a0823190602401602060405180830381865afa158015611c69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c8d9190612805565b600254910192507f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e06001600160a01b03908116911614611ccd575f611ced565b6004546801000000000000000090046dffffffffffffffffffffffffffff165b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201527f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e06001600160a01b0316906370a0823190602401602060405180830381865afa158015611d68573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d8c9190612805565b60065491019150611dc690839083906dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b5050600354760100000000000000000000000000000000000000000000900460ff16600103611af157600380547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff169055565b60045463ffffffff4281169164010000000090048116820390811615801590611e5157506dffffffffffffffffffffffffffff841615155b8015611e6c57506dffffffffffffffffffffffffffff831615155b15611f4e5763ffffffff8116611ec3856e0100000000000000000000000000006dffffffffffffffffffffffffffff8716025b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16906125ec565b600780547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116611f21846e0100000000000000000000000000006dffffffffffffffffffffffffffff881602611e9f565b600880547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b50600680546dffffffffffffffffffffffffffff8681166e010000000000000000000000000000027fffffffff00000000000000000000000000000000000000000000000000000000909216908816171790556004805463ffffffff8316640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909116179055611fe763ffffffff421690565b6004805463ffffffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909216919091179055600654604080516dffffffffffffffffffffffffffff80841682526e01000000000000000000000000000090930490921660208301527f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1910160405180910390a15050505050565b5f620186a08383025b0490505b92915050565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f81146120e9576040519150601f19603f3d011682016040523d82523d5f602084013e6120ee565b606091505b505090508061213b576040517f1c196f330000000000000000000000000000000000000000000000000000000081526001600160a01b038416600482015260248101839052604401610381565b505050565b6002545f9081907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b039081169116146121a4576006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff166121b8565b6006546dffffffffffffffffffffffffffff165b6002549092507f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b03908116911614612209576006546dffffffffffffffffffffffffffff1661222f565b6006546e01000000000000000000000000000090046dffffffffffffffffffffffffffff165b90509091565b6003805475ffffffffffffffffffffffffffffffffffffffffffff167602000000000000000000000000000000000000000000001790556040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201525f906001600160a01b037f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad3816906370a0823190602401602060405180830381865afa1580156122e9573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061230d9190612805565b6040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529091505f906001600160a01b037f000000000000000000000000e22c79ccf8dab4b68544569a4c4b3eac7a80d7e016906370a0823190602401602060405180830381865afa15801561238d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b19190612805565b6002549091505f9081907f000000000000000000000000039e2fb66102314ce7b64ce5ce3e5183bc94ad386001600160a01b039081169116146123f55783836123f8565b82845b6003546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b037f00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd09888116600483015260248201859052939550919350919091169063a9059cbb906044016020604051808303815f875af1158015612488573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ac91906127e3565b506002546040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690632e1a7d4d906024015f604051808303815f87803b158015612509575f5ffd5b505af115801561251b573d5f5f3e3d5ffd5b50506040517f37b3375f000000000000000000000000000000000000000000000000000000008152600481018590527f00000000000000000000000043eafbb9c8c4d91fd8d501e45b19c38da2fd09886001600160a01b031692506337b3375f915083906024015f604051808303818588803b158015612599575f5ffd5b505af11580156125ab573d5f5f3e3d5ffd5b50506006546125e693505f92508291506dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416611e19565b50505050565b5f6dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416816120965761209661281c565b80356001600160a01b0381168114612640575f5ffd5b919050565b803562ffffff81168114612640575f5ffd5b80356dffffffffffffffffffffffffffff81168114612640575f5ffd5b8015158114612681575f5ffd5b50565b5f5f5f5f5f5f5f5f5f5f5f6101608c8e03121561269f575f5ffd5b6126a88c61262a565b9a506126b660208d01612645565b99506126c460408d01612645565b98506126d260608d01612645565b975060808c013563ffffffff811681146126ea575f5ffd5b96506126f860a08d01612657565b955061270660c08d01612657565b945061271460e08d01612657565b93506127236101008d0161262a565b92506127326101208d0161262a565b91506101408c013561274381612674565b809150509295989b509295989b9093969950565b5f5f60408385031215612768575f5ffd5b6127718361262a565b915061277f6020840161262a565b90509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b62ffffff818116838216019081111561209a5761209a612788565b8181038181111561209a5761209a612788565b5f602082840312156127f3575f5ffd5b81516127fe81612674565b9392505050565b5f60208284031215612815575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffdfea26469706673582212203e6d64bf01b3961f85ab1454e0831b50d35284c0df91085124e5c38266e30bd264736f6c634300081c0033

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  ]

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.