ETH Price: $2,656.71 (+1.99%)

Contract

0x0b3E174A2170083e770D5d4Cf56774D221b7063e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...120088582021-03-10 5:26:201432 days ago1615353980IN
0x0b3E174A...221b7063e
0 ETH0.0028476792
Register And Dep...119738792021-03-04 20:12:321437 days ago1614888752IN
0x0b3E174A...221b7063e
0 ETH0.15985574110
Register And Dep...118268832021-02-10 5:32:421460 days ago1612935162IN
0x0b3E174A...221b7063e
0 ETH0.33424382230
Register And Dep...113730402020-12-02 12:22:341530 days ago1606911754IN
0x0b3E174A...221b7063e
0 ETH0.0421437829
Register And Dep...108670082020-09-15 13:49:191608 days ago1600177759IN
0x0b3E174A...221b7063e
0 ETH0.24704978170
Register And Dep...108378152020-09-11 2:20:511612 days ago1599790851IN
0x0b3E174A...221b7063e
0 ETH0.2198034150

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Layer2Registry

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-11
*/

// File: openzeppelin-solidity/contracts/GSN/Context.sol

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/Layer2I.sol

pragma solidity ^0.5.12;

interface Layer2I {
  function operator() external view returns (address);
  function isLayer2() external view returns (bool);
  function currentFork() external view returns (uint);
  function lastEpoch(uint forkNumber) external view returns (uint);
  function changeOperator(address _operator) external;
}

// File: contracts/stake/interfaces/SeigManagerI.sol

pragma solidity ^0.5.12;


interface SeigManagerI {
  function registry() external view returns (address);
  function depositManager() external view returns (address);
  function ton() external view returns (address);
  function wton() external view returns (address);
  function powerton() external view returns (address);
  function tot() external view returns (address);
  function coinages(address layer2) external view returns (address);
  function commissionRates(address layer2) external view returns (uint256);

  function lastCommitBlock(address layer2) external view returns (uint256);
  function seigPerBlock() external view returns (uint256);
  function lastSeigBlock() external view returns (uint256);
  function pausedBlock() external view returns (uint256);
  function unpausedBlock() external view returns (uint256);
  function DEFAULT_FACTOR() external view returns (uint256);

  function deployCoinage(address layer2) external returns (bool);
  function setCommissionRate(address layer2, uint256 commission, bool isCommissionRateNegative) external returns (bool);

  function uncomittedStakeOf(address layer2, address account) external view returns (uint256);
  function stakeOf(address layer2, address account) external view returns (uint256);
  function additionalTotBurnAmount(address layer2, address account, uint256 amount) external view returns (uint256 totAmount);

  function onTransfer(address sender, address recipient, uint256 amount) external returns (bool);
  function updateSeigniorage() external returns (bool);
  function onDeposit(address layer2, address account, uint256 amount) external returns (bool);
  function onWithdraw(address layer2, address account, uint256 amount) external returns (bool);

}

// File: contracts/stake/interfaces/Layer2RegistryI.sol

pragma solidity ^0.5.12;


interface Layer2RegistryI {
  function layer2s(address layer2) external view returns (bool);

  function register(address layer2) external returns (bool);
  function numLayer2s() external view returns (uint256);
  function layer2ByIndex(uint256 index) external view returns (address);

  function deployCoinage(address layer2, address seigManager) external returns (bool);
  function registerAndDeployCoinage(address layer2, address seigManager) external returns (bool);
  function unregister(address layer2) external returns (bool);
}

// File: contracts/stake/Layer2Registry.sol

pragma solidity ^0.5.12;






// TODO: transfer coinages ownership to seig manager
contract Layer2Registry is Layer2RegistryI, Ownable {
  // check whether the address is layer2 contract or not
  mapping (address => bool) internal _layer2s;

  // array-like storages
  // NOTE: unregistered layer2s could exists in that array. so, should check by layer2s(address)
  uint256 internal _numLayer2s;
  mapping (uint256 => address) internal _layer2ByIndex;

  modifier onlyOwnerOrOperator(address layer2) {
    require(isOwner() || Layer2I(layer2).operator() == msg.sender, "sender is neither operator nor operator");
    _;
  }

  function layer2s(address layer2) external view returns (bool) {
    return _layer2s[layer2];
  }

  function numLayer2s() external view returns (uint256) {
    return _numLayer2s;
  }

  function layer2ByIndex(uint256 index) external view returns (address) {
    return _layer2ByIndex[index];
  }

  function register(address layer2)
    external
    onlyOwnerOrOperator(layer2)
    returns (bool)
  {
    return _register(layer2);
  }

  function _register(address layer2) internal returns (bool) {
    require(!_layer2s[layer2]);
    require(Layer2I(layer2).isLayer2());

    _layer2s[layer2] = true;
    _layer2ByIndex[_numLayer2s] = layer2;
    _numLayer2s += 1;

    return true;
  }

  function deployCoinage(
    address layer2,
    address seigManager
  )
    external
    onlyOwnerOrOperator(layer2)
    returns (bool)
  {
    return _deployCoinage(layer2, seigManager);
  }

  function _deployCoinage(
    address layer2,
    address seigManager
  )
   internal
   returns (bool)
  {
    return SeigManagerI(seigManager).deployCoinage(layer2);
  }

  function registerAndDeployCoinage(
    address layer2,
    address seigManager
  )
    external
    onlyOwnerOrOperator(layer2)
    returns (bool)
  {
    require(_register(layer2));
    require(_deployCoinage(layer2, seigManager));
    return true;
  }

  function registerAndDeployCoinageAndSetCommissionRate(
    address layer2,
    address seigManager,
    uint256 commissionRate,
    bool isCommissionRateNegative
  )
    external
    onlyOwnerOrOperator(layer2)
    returns (bool)
  {
    require(_register(layer2));
    require(_deployCoinage(layer2, seigManager));
    require(_setCommissionRate(layer2, seigManager, commissionRate, isCommissionRateNegative));
    return true;
  }

  function _setCommissionRate(
    address layer2,
    address seigManager,
    uint256 commissionRate,
    bool isCommissionRateNegative
  )
    internal
    returns (bool)
  {
    return SeigManagerI(seigManager).setCommissionRate(layer2, commissionRate, isCommissionRateNegative);
  }

  function unregister(address layer2) external onlyOwner returns (bool) {
    require(_layer2s[layer2]);

    _layer2s[layer2] = false;
  }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"layer2","type":"address"},{"internalType":"address","name":"seigManager","type":"address"}],"name":"deployCoinage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"layer2ByIndex","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"layer2","type":"address"}],"name":"layer2s","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"numLayer2s","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"layer2","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"layer2","type":"address"},{"internalType":"address","name":"seigManager","type":"address"}],"name":"registerAndDeployCoinage","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"layer2","type":"address"},{"internalType":"address","name":"seigManager","type":"address"},{"internalType":"uint256","name":"commissionRate","type":"uint256"},{"internalType":"bool","name":"isCommissionRateNegative","type":"bool"}],"name":"registerAndDeployCoinageAndSetCommissionRate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"layer2","type":"address"}],"name":"unregister","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"}]

608060405260006100176001600160e01b0361006616565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006a565b3390565b610b5e806100796000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063851086041161007157806385108604146101a15780638da5cb5b146101cf5780638f32d59b146101f3578063b7ffb179146101fb578063bcb1a71e14610218578063f2fde38b14610246576100b4565b80630d42d497146100b95780632ec2c246146100d35780633eb2a66c1461010d5780634420e4861461014b57806361cdc5b814610171578063715018a614610197575b600080fd5b6100c161026c565b60408051918252519081900360200190f35b6100f9600480360360208110156100e957600080fd5b50356001600160a01b0316610272565b604080519115158252519081900360200190f35b6100f96004803603608081101561012357600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610316565b6100f96004803603602081101561016157600080fd5b50356001600160a01b0316610422565b6100f96004803603602081101561018757600080fd5b50356001600160a01b03166104f8565b61019f610516565b005b6100f9600480360360408110156101b757600080fd5b506001600160a01b03813581169160200135166105b9565b6101d7610691565b604080516001600160a01b039092168252519081900360200190f35b6100f96106a0565b6101d76004803603602081101561021157600080fd5b50356106c4565b6100f96004803603604081101561022e57600080fd5b506001600160a01b03813581169160200135166106df565b61019f6004803603602081101561025c57600080fd5b50356001600160a01b03166107d4565b60025490565b600061027c6106a0565b6102cd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090205460ff166102f257600080fd5b6001600160a01b039091166000908152600160205260409020805460ff1916905590565b6000846103216106a0565b806103a15750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561036a57600080fd5b505afa15801561037e573d6000803e3d6000fd5b505050506040513d602081101561039457600080fd5b50516001600160a01b0316145b6103dc5760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6103e586610839565b6103ee57600080fd5b6103f8868661091b565b61040157600080fd5b61040d868686866109a8565b61041657600080fd5b50600195945050505050565b60008161042d6106a0565b806104ad5750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60208110156104a057600080fd5b50516001600160a01b0316145b6104e85760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6104f183610839565b9392505050565b6001600160a01b031660009081526001602052604090205460ff1690565b61051e6106a0565b61056f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000826105c46106a0565b806106445750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561060d57600080fd5b505afa158015610621573d6000803e3d6000fd5b505050506040513d602081101561063757600080fd5b50516001600160a01b0316145b61067f5760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b610689848461091b565b949350505050565b6000546001600160a01b031690565b600080546001600160a01b03166106b5610a38565b6001600160a01b031614905090565b6000908152600360205260409020546001600160a01b031690565b6000826106ea6106a0565b8061076a5750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561073357600080fd5b505afa158015610747573d6000803e3d6000fd5b505050506040513d602081101561075d57600080fd5b50516001600160a01b0316145b6107a55760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6107ae84610839565b6107b757600080fd5b6107c1848461091b565b6107ca57600080fd5b5060019392505050565b6107dc6106a0565b61082d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61083681610a3c565b50565b6001600160a01b03811660009081526001602052604081205460ff161561085f57600080fd5b816001600160a01b031663882eed2c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089857600080fd5b505afa1580156108ac573d6000803e3d6000fd5b505050506040513d60208110156108c257600080fd5b50516108cd57600080fd5b506001600160a01b03166000818152600160208181526040808420805460ff191684179055600280548552600390925290922080546001600160a01b03191690931790925580548201905590565b6000816001600160a01b031663833a774f846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d602081101561099f57600080fd5b50519392505050565b6040805163211276b360e11b81526001600160a01b0386811660048301526024820185905283151560448301529151600092861691634224ed6691606480830192602092919082900301818787803b158015610a0357600080fd5b505af1158015610a17573d6000803e3d6000fd5b505050506040513d6020811015610a2d57600080fd5b505195945050505050565b3390565b6001600160a01b038116610a815760405162461bcd60e51b8152600401808060200182810382526026815260200180610add6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737373656e646572206973206e656974686572206f70657261746f72206e6f72206f70657261746f72a265627a7a723158208f181ceffbe2eff8826943f81c10780f2ef816485d44e9ce49233a978e2a66ee64736f6c634300050c0032

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063851086041161007157806385108604146101a15780638da5cb5b146101cf5780638f32d59b146101f3578063b7ffb179146101fb578063bcb1a71e14610218578063f2fde38b14610246576100b4565b80630d42d497146100b95780632ec2c246146100d35780633eb2a66c1461010d5780634420e4861461014b57806361cdc5b814610171578063715018a614610197575b600080fd5b6100c161026c565b60408051918252519081900360200190f35b6100f9600480360360208110156100e957600080fd5b50356001600160a01b0316610272565b604080519115158252519081900360200190f35b6100f96004803603608081101561012357600080fd5b506001600160a01b038135811691602081013590911690604081013590606001351515610316565b6100f96004803603602081101561016157600080fd5b50356001600160a01b0316610422565b6100f96004803603602081101561018757600080fd5b50356001600160a01b03166104f8565b61019f610516565b005b6100f9600480360360408110156101b757600080fd5b506001600160a01b03813581169160200135166105b9565b6101d7610691565b604080516001600160a01b039092168252519081900360200190f35b6100f96106a0565b6101d76004803603602081101561021157600080fd5b50356106c4565b6100f96004803603604081101561022e57600080fd5b506001600160a01b03813581169160200135166106df565b61019f6004803603602081101561025c57600080fd5b50356001600160a01b03166107d4565b60025490565b600061027c6106a0565b6102cd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090205460ff166102f257600080fd5b6001600160a01b039091166000908152600160205260409020805460ff1916905590565b6000846103216106a0565b806103a15750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561036a57600080fd5b505afa15801561037e573d6000803e3d6000fd5b505050506040513d602081101561039457600080fd5b50516001600160a01b0316145b6103dc5760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6103e586610839565b6103ee57600080fd5b6103f8868661091b565b61040157600080fd5b61040d868686866109a8565b61041657600080fd5b50600195945050505050565b60008161042d6106a0565b806104ad5750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561047657600080fd5b505afa15801561048a573d6000803e3d6000fd5b505050506040513d60208110156104a057600080fd5b50516001600160a01b0316145b6104e85760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6104f183610839565b9392505050565b6001600160a01b031660009081526001602052604090205460ff1690565b61051e6106a0565b61056f576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000826105c46106a0565b806106445750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561060d57600080fd5b505afa158015610621573d6000803e3d6000fd5b505050506040513d602081101561063757600080fd5b50516001600160a01b0316145b61067f5760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b610689848461091b565b949350505050565b6000546001600160a01b031690565b600080546001600160a01b03166106b5610a38565b6001600160a01b031614905090565b6000908152600360205260409020546001600160a01b031690565b6000826106ea6106a0565b8061076a5750336001600160a01b0316816001600160a01b031663570ca7356040518163ffffffff1660e01b815260040160206040518083038186803b15801561073357600080fd5b505afa158015610747573d6000803e3d6000fd5b505050506040513d602081101561075d57600080fd5b50516001600160a01b0316145b6107a55760405162461bcd60e51b8152600401808060200182810382526027815260200180610b036027913960400191505060405180910390fd5b6107ae84610839565b6107b757600080fd5b6107c1848461091b565b6107ca57600080fd5b5060019392505050565b6107dc6106a0565b61082d576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61083681610a3c565b50565b6001600160a01b03811660009081526001602052604081205460ff161561085f57600080fd5b816001600160a01b031663882eed2c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561089857600080fd5b505afa1580156108ac573d6000803e3d6000fd5b505050506040513d60208110156108c257600080fd5b50516108cd57600080fd5b506001600160a01b03166000818152600160208181526040808420805460ff191684179055600280548552600390925290922080546001600160a01b03191690931790925580548201905590565b6000816001600160a01b031663833a774f846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b15801561097557600080fd5b505af1158015610989573d6000803e3d6000fd5b505050506040513d602081101561099f57600080fd5b50519392505050565b6040805163211276b360e11b81526001600160a01b0386811660048301526024820185905283151560448301529151600092861691634224ed6691606480830192602092919082900301818787803b158015610a0357600080fd5b505af1158015610a17573d6000803e3d6000fd5b505050506040513d6020811015610a2d57600080fd5b505195945050505050565b3390565b6001600160a01b038116610a815760405162461bcd60e51b8152600401808060200182810382526026815260200180610add6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737373656e646572206973206e656974686572206f70657261746f72206e6f72206f70657261746f72a265627a7a723158208f181ceffbe2eff8826943f81c10780f2ef816485d44e9ce49233a978e2a66ee64736f6c634300050c0032

Deployed Bytecode Sourcemap

6710:2838:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6710:2838:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7372:85;;;:::i;:::-;;;;;;;;;;;;;;;;9404:141;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9404:141:0;-1:-1:-1;;;;;9404:141:0;;:::i;:::-;;;;;;;;;;;;;;;;;;8651:446;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;8651:446:0;;;;;;;;;;;;;;;;;;;;;;;;:::i;7580:141::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7580:141:0;-1:-1:-1;;;;;7580:141:0;;:::i;7268:98::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7268:98:0;-1:-1:-1;;;;;7268:98:0;;:::i;2979:140::-;;;:::i;:::-;;7991:200;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7991:200:0;;;;;;;;;;:::i;2168:79::-;;;:::i;:::-;;;;-1:-1:-1;;;;;2168:79:0;;;;;;;;;;;;;;2534:94;;;:::i;7463:111::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7463:111:0;;:::i;8381:264::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8381:264:0;;;;;;;;;;:::i;3274:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3274:109:0;-1:-1:-1;;;;;3274:109:0;;:::i;7372:85::-;7440:11;;7372:85;:::o;9404:141::-;9468:4;2380:9;:7;:9::i;:::-;2372:54;;;;;-1:-1:-1;;;2372:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9489:16:0;;;;;;:8;:16;;;;;;;;9481:25;;;;;;-1:-1:-1;;;;;9515:16:0;;;9534:5;9515:16;;;:8;:16;;;;;:24;;-1:-1:-1;;9515:24:0;;;9404:141;:::o;8651:446::-;8883:4;8861:6;7151:9;:7;:9::i;:::-;:53;;;;7194:10;-1:-1:-1;;;;;7164:40:0;7172:6;-1:-1:-1;;;;;7164:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7164:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7164:26:0;-1:-1:-1;;;;;7164:40:0;;7151:53;7143:105;;;;-1:-1:-1;;;7143:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8907:17;8917:6;8907:9;:17::i;:::-;8899:26;;;;;;8940:35;8955:6;8963:11;8940:14;:35::i;:::-;8932:44;;;;;;8991:81;9010:6;9018:11;9031:14;9047:24;8991:18;:81::i;:::-;8983:90;;;;;;-1:-1:-1;9087:4:0;;8651:446;-1:-1:-1;;;;;8651:446:0:o;7580:141::-;7675:4;7653:6;7151:9;:7;:9::i;:::-;:53;;;;7194:10;-1:-1:-1;;;;;7164:40:0;7172:6;-1:-1:-1;;;;;7164:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7164:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7164:26:0;-1:-1:-1;;;;;7164:40:0;;7151:53;7143:105;;;;-1:-1:-1;;;7143:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7698:17;7708:6;7698:9;:17::i;:::-;7691:24;7580:141;-1:-1:-1;;;7580:141:0:o;7268:98::-;-1:-1:-1;;;;;7344:16:0;7324:4;7344:16;;;:8;:16;;;;;;;;;7268:98::o;2979:140::-;2380:9;:7;:9::i;:::-;2372:54;;;;;-1:-1:-1;;;2372:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3078:1;3062:6;;3041:40;;-1:-1:-1;;;;;3062:6:0;;;;3041:40;;3078:1;;3041:40;3109:1;3092:19;;-1:-1:-1;;;;;;3092:19:0;;;2979:140::o;7991:200::-;8127:4;8105:6;7151:9;:7;:9::i;:::-;:53;;;;7194:10;-1:-1:-1;;;;;7164:40:0;7172:6;-1:-1:-1;;;;;7164:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7164:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7164:26:0;-1:-1:-1;;;;;7164:40:0;;7151:53;7143:105;;;;-1:-1:-1;;;7143:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8150:35;8165:6;8173:11;8150:14;:35::i;:::-;8143:42;7991:200;-1:-1:-1;;;;7991:200:0:o;2168:79::-;2206:7;2233:6;-1:-1:-1;;;;;2233:6:0;2168:79;:::o;2534:94::-;2574:4;2614:6;;-1:-1:-1;;;;;2614:6:0;2598:12;:10;:12::i;:::-;-1:-1:-1;;;;;2598:22:0;;2591:29;;2534:94;:::o;7463:111::-;7524:7;7547:21;;;:14;:21;;;;;;-1:-1:-1;;;;;7547:21:0;;7463:111::o;8381:264::-;8528:4;8506:6;7151:9;:7;:9::i;:::-;:53;;;;7194:10;-1:-1:-1;;;;;7164:40:0;7172:6;-1:-1:-1;;;;;7164:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7164:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7164:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7164:26:0;-1:-1:-1;;;;;7164:40:0;;7151:53;7143:105;;;;-1:-1:-1;;;7143:105:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8552:17;8562:6;8552:9;:17::i;:::-;8544:26;;;;;;8585:35;8600:6;8608:11;8585:14;:35::i;:::-;8577:44;;;;;;-1:-1:-1;8635:4:0;;8381:264;-1:-1:-1;;;8381:264:0:o;3274:109::-;2380:9;:7;:9::i;:::-;2372:54;;;;;-1:-1:-1;;;2372:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3347:28;3366:8;3347:18;:28::i;:::-;3274:109;:::o;7727:258::-;-1:-1:-1;;;;;7802:16:0;;7780:4;7802:16;;;:8;:16;;;;;;;;7801:17;7793:26;;;;;;7842:6;-1:-1:-1;;;;;7834:24:0;;:26;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7834:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7834:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7834:26:0;7826:35;;;;;;-1:-1:-1;;;;;;7870:16:0;;;;;7889:4;7870:16;;;;;;;;:23;;-1:-1:-1;;7870:23:0;;;;;7915:11;;;7900:27;;:14;:27;;;;;;:36;;-1:-1:-1;;;;;;7900:36:0;;;;;;;7943:16;;;;;;7889:4;7727:258::o;8197:178::-;8299:4;8335:11;-1:-1:-1;;;;;8322:39:0;;8362:6;8322:47;;;;;;;;;;;;;-1:-1:-1;;;;;8322:47:0;-1:-1:-1;;;;;8322:47:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8322:47:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;8322:47:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8322:47:0;;8197:178;-1:-1:-1;;;8197:178:0:o;9103:295::-;9299:93;;;-1:-1:-1;;;9299:93:0;;-1:-1:-1;;;;;9299:93:0;;;;;;;;;;;;;;;;;;;;;;9276:4;;9299:43;;;;;:93;;;;;;;;;;;;;;9276:4;9299:43;:93;;;5:2:-1;;;;30:1;27;20:12;5:2;9299:93:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9299:93:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9299:93:0;;9103:295;-1:-1:-1;;;;;9103:295:0:o;866:98::-;946:10;866:98;:::o;3489:229::-;-1:-1:-1;;;;;3563:22:0;;3555:73;;;;-1:-1:-1;;;3555:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3665:6;;;3644:38;;-1:-1:-1;;;;;3644:38:0;;;;3665:6;;;3644:38;;;3693:6;:17;;-1:-1:-1;;;;;;3693:17:0;-1:-1:-1;;;;;3693:17:0;;;;;;;;;;3489:229::o

Swarm Source

bzzr://8f181ceffbe2eff8826943f81c10780f2ef816485d44e9ce49233a978e2a66ee

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

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

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