FTM Price: $0.40 (+0.01%)
Gas: 17 Gwei

Contract

0x2bcC8dA3fE1BF5637262c9c05663490f14C981d6
 

Overview

FTM Balance

Fantom LogoFantom LogoFantom Logo0 FTM

FTM Value

$0.00

Sponsored

Transaction Hash
Method
Block
From
To
Value
Update716239462023-11-27 19:50:5787 days 9 hrs ago1701114657IN
0x2bcC8d...14C981d6
0 FTM0.00592129127.16745359
Update681174042023-09-12 17:05:43163 days 11 hrs ago1694538343IN
0x2bcC8d...14C981d6
0 FTM0.0086576185.93318397
Update590163172023-04-03 22:22:26325 days 6 hrs ago1680560546IN
0x2bcC8d...14C981d6
0 FTM0.0037861580.46911777
Update530863222023-01-02 2:51:29417 days 2 hrs ago1672627889IN
0x2bcC8d...14C981d6
0 FTM0.0038564981.96424568
Update530547032022-12-31 13:17:01418 days 15 hrs ago1672492621IN
0x2bcC8d...14C981d6
0 FTM0.004042685.91970166
Update530534872022-12-31 11:51:54418 days 17 hrs ago1672487514IN
0x2bcC8d...14C981d6
0 FTM0.0025823154.88328547
Update530436342022-12-31 0:24:34419 days 4 hrs ago1672446274IN
0x2bcC8d...14C981d6
0 FTM0.0033352470.88565886
Update530041632022-12-29 7:57:59420 days 20 hrs ago1672300679IN
0x2bcC8d...14C981d6
0 FTM0.0045684797.09621635
Update528851942022-12-26 12:02:05423 days 16 hrs ago1672056125IN
0x2bcC8d...14C981d6
0 FTM0.001271928.70016509
Update528850792022-12-26 11:58:18423 days 16 hrs ago1672055898IN
0x2bcC8d...14C981d6
0 FTM0.0012110125.73826465
Update528648372022-12-26 1:23:54424 days 3 hrs ago1672017834IN
0x2bcC8d...14C981d6
0 FTM0.01522343323.5517322
Update528549732022-12-25 20:34:27424 days 8 hrs ago1672000467IN
0x2bcC8d...14C981d6
0 FTM0.0014196630.17283655
Update504648592022-11-04 19:59:58475 days 8 hrs ago1667591998IN
0x2bcC8d...14C981d6
0 FTM0.04677208946.74590213
Update504552472022-11-04 12:29:18475 days 16 hrs ago1667564958IN
0x2bcC8d...14C981d6
0 FTM0.03171612641.98775999
Update490851112022-10-13 14:16:44497 days 14 hrs ago1665670604IN
0x2bcC8d...14C981d6
0 FTM0.0021700948.96761314
Update490598782022-10-13 5:19:37497 days 23 hrs ago1665638377IN
0x2bcC8d...14C981d6
0 FTM0.000110792.5
Update490178012022-10-12 16:02:39498 days 12 hrs ago1665590559IN
0x2bcC8d...14C981d6
0 FTM0.000122282.75935821
Update489397842022-10-11 15:21:00499 days 13 hrs ago1665501660IN
0x2bcC8d...14C981d6
0 FTM0.002078246.89416521
Update488647352022-10-10 13:48:17500 days 15 hrs ago1665409697IN
0x2bcC8d...14C981d6
0 FTM0.0034406377.63680394
Update486931672022-10-08 8:29:27502 days 20 hrs ago1665217767IN
0x2bcC8d...14C981d6
0 FTM0.000110792.5
Update486474362022-10-07 18:13:19503 days 10 hrs ago1665166399IN
0x2bcC8d...14C981d6
0 FTM0.000130292.94
Update486393372022-10-07 15:42:26503 days 13 hrs ago1665157346IN
0x2bcC8d...14C981d6
0 FTM0.000064822.5
Update486393162022-10-07 15:42:05503 days 13 hrs ago1665157325IN
0x2bcC8d...14C981d6
0 FTM0.000117622.5
Update484229712022-10-04 20:50:26506 days 8 hrs ago1664916626IN
0x2bcC8d...14C981d6
0 FTM0.000110792.5
Update483435612022-10-03 20:14:26507 days 8 hrs ago1664828066IN
0x2bcC8d...14C981d6
0 FTM0.000114682.58775552
View all transactions

Latest 1 internal transaction

Parent Txn Hash Block From To Value
479486542022-09-28 15:59:22512 days 12 hrs ago1664380762  Contract Creation0 FTM
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CherryOracle

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at ftmscan.com on 2022-10-03
*/

// CherryOracle.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
  From https://github.com/Uniswap/v2-periphery/blob/master/contracts/examples/ExampleOracleSimple.sol

  Fixed window oracle that computes the Time Weighted Average Price for the entire epoch once every epoch.

  The TWAP is only guaranteed to be over at least 1 epoch, but may be over more
  in case the update() function has not been called for a long time.

  Strongly simplified so that:
    - we don't use the obscure FixedPoint library
        we simply >> 112 and << 112 when necessary
    - we don't rely on UniswapV2OracleLibrary.sol
        it does too much for our need
    - we don't use UniswapV2Library
        it does too much for our need
    - we don't care about the price of FTM in CHRY (aka token1 / token0)
    - we don't care about time overflow: get real boys!
        uint32 time will overflow in 2106!

    With these simplifications, we get a much simpler oracle that is:
      - much easier to understand
      - only cares about one token price
      - self contained, no dependency
      - much more gas efficient
      - compiles with solidity 0.8

  Owner powers:
    - none

  Some Maths:

    reserves are in uint112
    prices   are in uint224  (aka uq112x112)
      the 112 left  bits are the integer part
      the 112 right bits are the decimal part
    cumulative prices are in uint256 = uint224 price * uint32 time interval

    To compute a price:   price = (uint224(reserveToken0) << 112) / uint224(reserveToken1)
    "<< 112" is equivalent to "* 2**112"
*/



// From OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)
// simplified (not is Context)

abstract contract Ownable {

  // ==== Events      ====
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

  // ==== Storage     ====
  // Private so it cannot be changed by inherited contracts
  address private _owner;

  // ==== Constructor ====
  constructor() {
    _transferOwnership(msg.sender);
  }

  // ==== Modifiers   ====
  modifier onlyOwner() {
    require(_owner == msg.sender, "Ownable: caller is not the owner");
    _;
  }

  // ==== Views       ====
  function owner() public view virtual returns (address) {
    return _owner;
  }

  // ==== Mutators    ====
  function renounceOwnership() public virtual onlyOwner {
    _transferOwnership(address(0));
  }

  function transferOwnership(address newOwner_) public virtual onlyOwner {
    require(newOwner_ != address(0), "Ownable: new owner is the zero address");
    _transferOwnership(newOwner_);
  }


  // ==== Internals   ====
  function _transferOwnership(address newOwner_) internal virtual {
    address oldOwner = owner();
    _owner = newOwner_;
    emit OwnershipTransferred(oldOwner, newOwner_);
  }
}

// Minimal interface to Liquidity Pool contract.
// Here I'm only interested in the token1 (CHRY) and don't care about token0 (FTM)
interface IPool {

    // returns contract address of the ERC20 token1
    function token1() external view returns (address);

    // returns the reserves of the liquidity pool
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    // returns the last cumulative price of token 1
    function price1CumulativeLast() external view returns (uint256);
}



contract CherryOracle is Ownable {

  // ==== Events ====
  event Updated(uint32 indexed epoch, uint112 twap);


  // ==== Constants ====
  uint256 public constant PERIOD = 6 hours;

  address public constant pool   = 0xF2aDD870885c1B3E50B7cBA81a87C4d0291cBf6F;
  address public constant token  = 0x4C41bFf37db389BA1edC7ED7e757059a1D08ceb5;


  // ==== Storage ====
  // ---- Slot 1  ----
  uint32  public epoch;
  uint32  public blockTimestampLast;
  uint112 public twap;
  // ---- Slot 2  ----
  uint256 public price1CumulativeLast;


  // ==== Constructor ====
  constructor() {

    // coherence check:
    // we call the pool.token1() to make sure its the right one
    require(IPool(pool).token1() == token, "Hey, you took the wrong Spooky LP");

    // set blockTimestampLast
    uint112 reserveFTM;
    uint112 reserveCHRY;
    (reserveFTM, reserveCHRY, blockTimestampLast) = IPool(pool).getReserves();

    // make sure liquidity pool not empty
    require(reserveFTM  > 0, 'Oracle: FTM  reserve empty');
    require(reserveCHRY > 0, 'Oracle: CHRY reserve empty');

    // set the initial token cumulative price from LP
    price1CumulativeLast =  IPool(pool).price1CumulativeLast();

    // set initial Epoch
    epoch = uint32(getEpoch());

    // The TWAP cannot be initialised.
    // It will be zero until update() has been successfully called.
  }


  // Current epoch
  function getEpoch() public view returns (uint256) {
    return block.timestamp / PERIOD;
  }


  // Update the state of the Oracle once every epoch.
  function update() external returns(bool) {
    // only once per epoch
    uint256 newEpoch = getEpoch();

    // don't do this or you can lock summertime
    // require(newEpoch > epoch, "Oracle: wait until next epoch");

    // do this instead
    if (newEpoch <= epoch) {
      return false;
    }

    // below code will only be run once per epoch

    // update epoch
    epoch = uint32(newEpoch);

    // get last cumulative prices from liquidity pool
    uint256 price1CumulativeNew = IPool(pool).price1CumulativeLast();

    // get last time the liquidity pool was updated
    (uint256 reserve0, uint256 reserve1, uint256 lastPoolUpdate) = IPool(pool).getReserves();

    // if time has elapsed since the last update of the liquidity pool
    if (lastPoolUpdate < block.timestamp) {
      // we mock the accumulated price increase
      unchecked {
        price1CumulativeNew += ((reserve0 << 112) / reserve1) * ( block.timestamp - lastPoolUpdate );
      }
    }

    // compute new twap = acc price delta / time delta
    uint112 newTwap;
    unchecked {
      newTwap = uint112( ((price1CumulativeNew - price1CumulativeLast) / ( block.timestamp - blockTimestampLast)) * 1e18 >> 112);
    }

    // write down new state to storage
    blockTimestampLast   = uint32(block.timestamp);
    price1CumulativeLast = price1CumulativeNew;
    twap                 = newTwap;

    emit Updated(uint32(newEpoch), newTwap);

    return true;
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":"uint32","name":"epoch","type":"uint32"},{"indexed":false,"internalType":"uint112","name":"twap","type":"uint112"}],"name":"Updated","type":"event"},{"inputs":[],"name":"PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"blockTimestampLast","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"epoch","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"twap","outputs":[{"internalType":"uint112","name":"","type":"uint112"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"update","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506200001d3362000320565b734c41bff37db389ba1edc7ed7e757059a1d08ceb56001600160a01b031673f2add870885c1b3e50b7cba81a87c4d0291cbf6f6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b4919062000385565b6001600160a01b0316146200011a5760405162461bcd60e51b815260206004820152602160248201527f4865792c20796f7520746f6f6b207468652077726f6e672053706f6f6b79204c6044820152600560fc1b60648201526084015b60405180910390fd5b60008073f2add870885c1b3e50b7cba81a87c4d0291cbf6f6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa15801562000170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001969190620003d4565b6000805463ffffffff909216600160c01b0263ffffffff60c01b1990921691909117905590925090506001600160701b038216620002175760405162461bcd60e51b815260206004820152601a60248201527f4f7261636c653a2046544d20207265736572766520656d707479000000000000604482015260640162000111565b6000816001600160701b031611620002725760405162461bcd60e51b815260206004820152601a60248201527f4f7261636c653a2043485259207265736572766520656d707479000000000000604482015260640162000111565b73f2add870885c1b3e50b7cba81a87c4d0291cbf6f6001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb91906200042a565b600255620002f862000370565b600060146101000a81548163ffffffff021916908363ffffffff160217905550505062000467565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000620003806154604262000444565b905090565b6000602082840312156200039857600080fd5b81516001600160a01b0381168114620003b057600080fd5b9392505050565b80516001600160701b0381168114620003cf57600080fd5b919050565b600080600060608486031215620003ea57600080fd5b620003f584620003b7565b92506200040560208501620003b7565b9150604084015163ffffffff811681146200041f57600080fd5b809150509250925092565b6000602082840312156200043d57600080fd5b5051919050565b6000826200046257634e487b7160e01b600052601260045260246000fd5b500490565b6107b580620004776000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063900cf0cf11610081578063c5700a021161005b578063c5700a02146101d1578063f2fde38b146101e8578063fc0c546a146101fb57600080fd5b8063900cf0cf14610184578063a2e62045146101b0578063b4d1d795146101c857600080fd5b8063715018a6116100b2578063715018a614610161578063757991a81461016b5780638da5cb5b1461017357600080fd5b80631208aa18146100d957806316f0115b146101175780635a3d54931461014a575b600080fd5b6001546100f3906dffffffffffffffffffffffffffff1681565b6040516dffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013273f2add870885c1b3e50b7cba81a87c4d0291cbf6f81565b6040516001600160a01b03909116815260200161010e565b61015360025481565b60405190815260200161010e565b610169610216565b005b610153610281565b6000546001600160a01b0316610132565b60005461019b90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161010e565b6101b8610294565b604051901515815260200161010e565b61015361546081565b60005461019b90600160c01b900463ffffffff1681565b6101696101f636600461068b565b610541565b610132734c41bff37db389ba1edc7ed7e757059a1d08ceb581565b6000546001600160a01b031633146102755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61027f6000610623565b565b600061028f615460426106d1565b905090565b60008061029f610281565b600054909150600160a01b900463ffffffff1681116102c057600091505090565b600080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff841602178155604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905173f2add870885c1b3e50b7cba81a87c4d0291cbf6f91635a3d54939160048083019260209291908290030181865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038391906106f3565b9050600080600073f2add870885c1b3e50b7cba81a87c4d0291cbf6f6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610400919061072f565b63ffffffff1692506dffffffffffffffffffffffffffff1692506dffffffffffffffffffffffffffff169250428110156104515780420382607085901b8161044a5761044a6106bb565b0402840193505b60008054600254607091600160c01b900463ffffffff1642039087038161047a5761047a6106bb565b600080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b4263ffffffff90811691909102919091179091556002899055600180546dffffffffffffffffffffffffffff191693909204670de0b6b3a76400000290931c6dffffffffffffffffffffffffffff81169283179091556040519182529250908716907f58b6a68b073cb749809225fca2b7a641d2d50619569ddc08777b93ac20ff19099060200160405180910390a26001965050505050505090565b6000546001600160a01b0316331461059b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b0381166106175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026c565b61062081610623565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561069d57600080fd5b81356001600160a01b03811681146106b457600080fd5b9392505050565b634e487b7160e01b600052601260045260246000fd5b6000826106ee57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561070557600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461072a57600080fd5b919050565b60008060006060848603121561074457600080fd5b61074d8461070c565b925061075b6020850161070c565b9150604084015163ffffffff8116811461077457600080fd5b80915050925092509256fea264697066735822122036547f309c73277948bf9a279a2dbf1b99dcb66b97a7979205e4683fa2436d9564736f6c63430008110033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100d45760003560e01c8063900cf0cf11610081578063c5700a021161005b578063c5700a02146101d1578063f2fde38b146101e8578063fc0c546a146101fb57600080fd5b8063900cf0cf14610184578063a2e62045146101b0578063b4d1d795146101c857600080fd5b8063715018a6116100b2578063715018a614610161578063757991a81461016b5780638da5cb5b1461017357600080fd5b80631208aa18146100d957806316f0115b146101175780635a3d54931461014a575b600080fd5b6001546100f3906dffffffffffffffffffffffffffff1681565b6040516dffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61013273f2add870885c1b3e50b7cba81a87c4d0291cbf6f81565b6040516001600160a01b03909116815260200161010e565b61015360025481565b60405190815260200161010e565b610169610216565b005b610153610281565b6000546001600160a01b0316610132565b60005461019b90600160a01b900463ffffffff1681565b60405163ffffffff909116815260200161010e565b6101b8610294565b604051901515815260200161010e565b61015361546081565b60005461019b90600160c01b900463ffffffff1681565b6101696101f636600461068b565b610541565b610132734c41bff37db389ba1edc7ed7e757059a1d08ceb581565b6000546001600160a01b031633146102755760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b61027f6000610623565b565b600061028f615460426106d1565b905090565b60008061029f610281565b600054909150600160a01b900463ffffffff1681116102c057600091505090565b600080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff16600160a01b63ffffffff841602178155604080517f5a3d5493000000000000000000000000000000000000000000000000000000008152905173f2add870885c1b3e50b7cba81a87c4d0291cbf6f91635a3d54939160048083019260209291908290030181865afa15801561035f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038391906106f3565b9050600080600073f2add870885c1b3e50b7cba81a87c4d0291cbf6f6001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156103dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610400919061072f565b63ffffffff1692506dffffffffffffffffffffffffffff1692506dffffffffffffffffffffffffffff169250428110156104515780420382607085901b8161044a5761044a6106bb565b0402840193505b60008054600254607091600160c01b900463ffffffff1642039087038161047a5761047a6106bb565b600080547fffffffff00000000ffffffffffffffffffffffffffffffffffffffffffffffff16600160c01b4263ffffffff90811691909102919091179091556002899055600180546dffffffffffffffffffffffffffff191693909204670de0b6b3a76400000290931c6dffffffffffffffffffffffffffff81169283179091556040519182529250908716907f58b6a68b073cb749809225fca2b7a641d2d50619569ddc08777b93ac20ff19099060200160405180910390a26001965050505050505090565b6000546001600160a01b0316331461059b5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161026c565b6001600160a01b0381166106175760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161026c565b61062081610623565b50565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561069d57600080fd5b81356001600160a01b03811681146106b457600080fd5b9392505050565b634e487b7160e01b600052601260045260246000fd5b6000826106ee57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561070557600080fd5b5051919050565b80516dffffffffffffffffffffffffffff8116811461072a57600080fd5b919050565b60008060006060848603121561074457600080fd5b61074d8461070c565b925061075b6020850161070c565b9150604084015163ffffffff8116811461077457600080fd5b80915050925092509256fea264697066735822122036547f309c73277948bf9a279a2dbf1b99dcb66b97a7979205e4683fa2436d9564736f6c63430008110033

Deployed Bytecode Sourcemap

3470:3085:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3939:19;;;;;;;;;;;;190:30:1;178:43;;;160:62;;148:2;133:18;3939:19:0;;;;;;;;3664:75;;3697:42;3664:75;;;;;-1:-1:-1;;;;;397:55:1;;;379:74;;367:2;352:18;3664:75:0;233:226:1;3987:35:0;;;;;;;;;610:25:1;;;598:2;583:18;3987:35:0;464:177:1;2383:97:0;;;:::i;:::-;;4906:94;;;:::i;2268:81::-;2314:7;2337:6;-1:-1:-1;;;;;2337:6:0;2268:81;;3876:20;;;;;-1:-1:-1;;;3876:20:0;;;;;;;;;820:10:1;808:23;;;790:42;;778:2;763:18;3876:20:0;646:192:1;5063:1489:0;;;:::i;:::-;;;1008:14:1;;1001:22;983:41;;971:2;956:18;5063:1489:0;843:187:1;3617:40:0;;3650:7;3617:40;;3901:33;;;;;-1:-1:-1;;;3901:33:0;;;;;;2486:194;;;;;;:::i;:::-;;:::i;3744:75::-;;3777:42;3744:75;;2383:97;2163:6;;-1:-1:-1;;;;;2163:6:0;2173:10;2163:20;2155:65;;;;-1:-1:-1;;;2155:65:0;;1551:2:1;2155:65:0;;;1533:21:1;;;1570:18;;;1563:30;1629:34;1609:18;;;1602:62;1681:18;;2155:65:0;;;;;;;;;2444:30:::1;2471:1;2444:18;:30::i;:::-;2383:97::o:0;4906:94::-;4947:7;4970:24;3650:7;4970:15;:24;:::i;:::-;4963:31;;4906:94;:::o;5063:1489::-;5098:4;5139:16;5158:10;:8;:10::i;:::-;5336:5;;5139:29;;-1:-1:-1;;;;5336:5:0;;;;5324:17;;5320:52;;5359:5;5352:12;;;5063:1489;:::o;5320:52::-;5454:5;:24;;;;-1:-1:-1;;;5454:24:0;;;;;;;5572:34;;;;;;;;3697:42;;5572:32;;:34;;;;;;;;;;;;;;3697:42;5572:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5542:64;;5669:16;5687;5705:22;3697:42;-1:-1:-1;;;;;5731:23:0;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5668:88;;;;;;;;;;;;5858:15;5841:14;:32;5837:226;;;6030:14;6012:15;:32;5998:8;5991:3;5979:8;:15;;5978:28;;;;;:::i;:::-;;5977:69;5954:92;;;;5837:226;6127:15;6255:18;;6211:20;;6286:3;;-1:-1:-1;;;6255:18:0;;;;6237:15;:36;;6189:42;;6237:36;6188:86;;;;:::i;:::-;6346:18;:46;;;;-1:-1:-1;;;6376:15:0;6346:46;;;;;;;;;;;;;;;6399:20;:42;;;-1:-1:-1;6448:30:0;;-1:-1:-1;;6448:30:0;6188:86;;;;6278:4;6187:95;:102;;;6448:30;;;;;;;;;6492:34;;160:62:1;;;6187:102:0;-1:-1:-1;6492:34:0;;;;;;148:2:1;133:18;6492:34:0;;;;;;;6542:4;6535:11;;;;;;;;5063:1489;:::o;2486:194::-;2163:6;;-1:-1:-1;;;;;2163:6:0;2173:10;2163:20;2155:65;;;;-1:-1:-1;;;2155:65:0;;1551:2:1;2155:65:0;;;1533:21:1;;;1570:18;;;1563:30;1629:34;1609:18;;;1602:62;1681:18;;2155:65:0;1349:356:1;2155:65:0;-1:-1:-1;;;;;2572:23:0;::::1;2564:74;;;::::0;-1:-1:-1;;;2564:74:0;;3217:2:1;2564:74:0::1;::::0;::::1;3199:21:1::0;3256:2;3236:18;;;3229:30;3295:34;3275:18;;;3268:62;3366:8;3346:18;;;3339:36;3392:19;;2564:74:0::1;3015:402:1::0;2564:74:0::1;2645:29;2664:9;2645:18;:29::i;:::-;2486:194:::0;:::o;2716:181::-;2787:16;2337:6;;-1:-1:-1;;;;;2820:18:0;;;;;;;;;;2850:41;;2337:6;;;;;;;2850:41;;2787:16;2850:41;2780:117;2716:181;:::o;1035:309:1:-;1094:6;1147:2;1135:9;1126:7;1122:23;1118:32;1115:52;;;1163:1;1160;1153:12;1115:52;1202:9;1189:23;-1:-1:-1;;;;;1245:5:1;1241:54;1234:5;1231:65;1221:93;;1310:1;1307;1300:12;1221:93;1333:5;1035:309;-1:-1:-1;;;1035:309:1:o;1710:184::-;-1:-1:-1;;;1759:1:1;1752:88;1859:4;1856:1;1849:15;1883:4;1880:1;1873:15;1899:274;1939:1;1965;1955:189;;-1:-1:-1;;;1997:1:1;1990:88;2101:4;2098:1;2091:15;2129:4;2126:1;2119:15;1955:189;-1:-1:-1;2158:9:1;;1899:274::o;2178:184::-;2248:6;2301:2;2289:9;2280:7;2276:23;2272:32;2269:52;;;2317:1;2314;2307:12;2269:52;-1:-1:-1;2340:16:1;;2178:184;-1:-1:-1;2178:184:1:o;2367:188::-;2446:13;;2499:30;2488:42;;2478:53;;2468:81;;2545:1;2542;2535:12;2468:81;2367:188;;;:::o;2560:450::-;2647:6;2655;2663;2716:2;2704:9;2695:7;2691:23;2687:32;2684:52;;;2732:1;2729;2722:12;2684:52;2755:40;2785:9;2755:40;:::i;:::-;2745:50;;2814:49;2859:2;2848:9;2844:18;2814:49;:::i;:::-;2804:59;;2906:2;2895:9;2891:18;2885:25;2950:10;2943:5;2939:22;2932:5;2929:33;2919:61;;2976:1;2973;2966:12;2919:61;2999:5;2989:15;;;2560:450;;;;;:::o

Swarm Source

ipfs://36547f309c73277948bf9a279a2dbf1b99dcb66b97a7979205e4683fa2436d95

Block Transaction Difficulty 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

Txn 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.