POL Price: $0.36918 (-1.90%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Token Holdings

Sponsored

Transaction Hash
Method
Block
From
To
Transfer Ownersh...254377512022-02-28 23:37:10947 days ago1646091430IN
0xdEcD3c72...5bB4604D3
0 POL0.0008740630.41919999
Set Reserve Rate...168988502021-07-15 20:41:331175 days ago1626381693IN
0xdEcD3c72...5bB4604D3
0 POL0.000041191.2321
Set Reserve Rate...158811902021-06-19 1:03:061202 days ago1624064586IN
0xdEcD3c72...5bB4604D3
0 POL0.000036871.1
Set Reserve Rate...158728512021-06-18 19:37:181202 days ago1624045038IN
0xdEcD3c72...5bB4604D3
0 POL0.000036881.1
Set Reserve Rate...156042622021-06-11 23:09:471209 days ago1623452987IN
0xdEcD3c72...5bB4604D3
0 POL0.000101222
Set Reserve Rate...156042502021-06-11 23:08:591209 days ago1623452939IN
0xdEcD3c72...5bB4604D3
0 POL0.000101222
0x60806040156038552021-06-11 22:54:311209 days ago1623452071IN
 Create: ConfigurableReserve
0 POL0.000662631

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConfigurableReserve

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
istanbul EvmVersion, GNU GPLv3 license
File 1 of 5 : ConfigurableReserve.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;

import "@openzeppelin/contracts/access/Ownable.sol";

import "./IConfigurableReserve.sol";
import "./IPrizePool.sol";

/// @title Implementation of IConfigurable reserve
/// @notice Provides an Ownable configurable reserve for prize pools. This includes an opt-out default rate for prize pools. 
/// For flexibility this includes a specified withdraw Strategist address which can be set by the owner.
/// The prize pool Reserve can withdrawn by the owner or the reserve strategist. 
contract ConfigurableReserve is IConfigurableReserve, Ownable {
    
    /// @notice Storage of Reserve Rate Mantissa associated with a Prize Pool
    mapping(address => ReserveRate) public prizePoolMantissas;

    /// @notice Storage of the address of a withdrawal strategist 
    address public withdrawStrategist;

    /// @notice Storage of the default rate mantissa
    uint224 public defaultReserveRateMantissa;

    constructor() Ownable(){

    }

    /// @notice Returns the reserve rate for a particular source
    /// @param source The source for which the reserve rate should be return.  These are normally prize pools.
    /// @return The reserve rate as a fixed point 18 number, like Ether.  A rate of 0.05 = 50000000000000000
    function reserveRateMantissa(address source) external override view returns (uint256){
        if(!prizePoolMantissas[source].useCustom){
            return uint256(defaultReserveRateMantissa);
        }
        // else return the custom rate
        return prizePoolMantissas[source].rateMantissa;
    }

    /// @notice Allows the owner of the contract to set the reserve rates for a given set of sources.
    /// @dev Length must match sources param.
    /// @param sources The sources for which to set the reserve rates.
    /// @param _reserveRates The respective ReserveRates for the sources.  
    function setReserveRateMantissa(address[] calldata sources,  uint224[] calldata _reserveRates, bool[] calldata useCustom) external override onlyOwner{
        for(uint256 i = 0; i <  sources.length; i++){
            prizePoolMantissas[sources[i]].rateMantissa = _reserveRates[i];
            prizePoolMantissas[sources[i]].useCustom = useCustom[i];
            emit ReserveRateMantissaSet(sources[i], _reserveRates[i], useCustom[i]);
        }
    }

    /// @notice Allows the owner of the contract to set the withdrawal strategy address
    /// @param _strategist The new withdrawal strategist address
    function setWithdrawStrategist(address _strategist) external override onlyOwner{
        withdrawStrategist = _strategist;
        emit ReserveWithdrawStrategistChanged(_strategist);
    }

    /// @notice Calls withdrawReserve on the Prize Pool
    /// @param prizePool The Prize Pool to withdraw reserve
    /// @param to The reserve transfer destination address
    /// @return The amount of reserve withdrawn from the prize pool
    function withdrawReserve(address prizePool, address to) external override onlyOwnerOrWithdrawStrategist returns (uint256){
        return PrizePoolInterface(prizePool).withdrawReserve(to);
    }

    /// @notice Sets the default ReserveRate mantissa
    /// @param _reserveRateMantissa The new default reserve rate mantissa
    function setDefaultReserveRateMantissa(uint224 _reserveRateMantissa) external override onlyOwner{
        defaultReserveRateMantissa = _reserveRateMantissa;
        emit DefaultReserveRateMantissaSet(_reserveRateMantissa);
    }

    /// @notice Only allows the owner or current strategist to call a function
    modifier onlyOwnerOrWithdrawStrategist(){
        require(msg.sender == owner() || msg.sender == withdrawStrategist, "!onlyOwnerOrWithdrawStrategist");
        _;
    }
}

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

pragma solidity >=0.6.0 <0.8.0;

import "../utils/Context.sol";
/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * 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.
 */
abstract 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 virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the 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 virtual 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 virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

File 3 of 5 : IConfigurableReserve.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;


interface IConfigurableReserve {
  
  ///@notice struct to store the reserve rate mantissa for an address and a flag to indicate to use the default reserve rate
  struct ReserveRate{
      uint224 rateMantissa;
      bool useCustom;
  }

  /// @notice Returns the reserve rate for a particular source
  /// @param source The source for which the reserve rate should be return.  These are normally prize pools.
  /// @return The reserve rate as a fixed point 18 number, like Ether.  A rate of 0.05 = 50000000000000000
  function reserveRateMantissa(address source) external view returns (uint256);

  /// @notice Allows the owner of the contract to set the reserve rates for a given set of sources.
  /// @dev Length must match sources param.
  /// @param sources The sources for which to set the reserve rates.
  /// @param _reserveRates The respective ReserveRates for the sources.  
  function setReserveRateMantissa(address[] calldata sources,  uint224[] calldata _reserveRates, bool[] calldata useCustom) external;

  /// @notice Allows the owner of the contract to set the withdrawal strategy address
  /// @param strategist The new withdrawal strategist address
  function setWithdrawStrategist(address strategist) external;

  /// @notice Calls withdrawReserve on the Prize Pool
  /// @param prizePool The Prize Pool to withdraw reserve
  /// @param to The reserve transfer destination address
  function withdrawReserve(address prizePool, address to) external returns (uint256);

  /// @notice Sets the default ReserveRate mantissa
  /// @param _reserveRateMantissa The new default reserve rate mantissa
  function setDefaultReserveRateMantissa(uint224 _reserveRateMantissa) external;
  
  /// @notice Emitted when the reserve rate mantissa was updated for a prize pool
  /// @param prizePool The prize pool address for which the rate was set
  /// @param reserveRateMantissa The respective reserve rate for the prizepool.
  /// @param useCustom Whether to use the custom reserve rate (true) or the default (false)
  event ReserveRateMantissaSet(address indexed prizePool, uint256 reserveRateMantissa, bool useCustom);

  /// @notice Emitted when the withdraw strategist is changed
  /// @param strategist The updated strategist address
  event ReserveWithdrawStrategistChanged(address indexed strategist);

  /// @notice Emitted when the default reserve rate mantissa was updated
  /// @param rate The new updated default mantissa rate
  event DefaultReserveRateMantissaSet(uint256 rate);

}

File 4 of 5 : IPrizePool.sol
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.7.6;

/// @title Escrows assets and deposits them into a yield source.  Exposes interest to Prize Strategy.  Users deposit and withdraw from this contract to participate in Prize Pool.
/// @notice Accounting is managed using Controlled Tokens, whose mint and burn functions can only be called by this contract.
/// @dev Must be inherited to provide specific yield-bearing asset control, such as Compound cTokens
interface PrizePoolInterface {
    function withdrawReserve(address to) external returns (uint256);
}

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

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"DefaultReserveRateMantissaSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"prizePool","type":"address"},{"indexed":false,"internalType":"uint256","name":"reserveRateMantissa","type":"uint256"},{"indexed":false,"internalType":"bool","name":"useCustom","type":"bool"}],"name":"ReserveRateMantissaSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"strategist","type":"address"}],"name":"ReserveWithdrawStrategistChanged","type":"event"},{"inputs":[],"name":"defaultReserveRateMantissa","outputs":[{"internalType":"uint224","name":"","type":"uint224"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"prizePoolMantissas","outputs":[{"internalType":"uint224","name":"rateMantissa","type":"uint224"},{"internalType":"bool","name":"useCustom","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"source","type":"address"}],"name":"reserveRateMantissa","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint224","name":"_reserveRateMantissa","type":"uint224"}],"name":"setDefaultReserveRateMantissa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"sources","type":"address[]"},{"internalType":"uint224[]","name":"_reserveRates","type":"uint224[]"},{"internalType":"bool[]","name":"useCustom","type":"bool[]"}],"name":"setReserveRateMantissa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategist","type":"address"}],"name":"setWithdrawStrategist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"prizePool","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStrategist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610a928061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806385b925ec1161007157806385b925ec1461018d5780638da5cb5b146101b1578063a0dc039b146101b9578063baede25e146102cd578063c5e7b3be146102f3578063f2fde38b14610317576100a9565b8063010dfa58146100ae5780635f365f10146100e657806361853b421461010e578063715018a61461013c5780637ad4ee0d14610144575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661033d565b60408051918252519081900360200190f35b61010c600480360360208110156100fc57600080fd5b50356001600160e01b031661039f565b005b6100d46004803603604081101561012457600080fd5b506001600160a01b0381358116916020013516610455565b61010c61055b565b61016a6004803603602081101561015a57600080fd5b50356001600160a01b0316610607565b604080516001600160e01b03909316835290151560208301528051918290030190f35b61019561062e565b604080516001600160a01b039092168252519081900360200190f35b61019561063d565b61010c600480360360608110156101cf57600080fd5b8101906020810181356401000000008111156101ea57600080fd5b8201836020820111156101fc57600080fd5b8035906020019184602083028401116401000000008311171561021e57600080fd5b91939092909160208101903564010000000081111561023c57600080fd5b82018360208201111561024e57600080fd5b8035906020019184602083028401116401000000008311171561027057600080fd5b91939092909160208101903564010000000081111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460208302840111640100000000831117156102c257600080fd5b50909250905061064c565b61010c600480360360208110156102e357600080fd5b50356001600160a01b0316610855565b6102fb610901565b604080516001600160e01b039092168252519081900360200190f35b61010c6004803603602081101561032d57600080fd5b50356001600160a01b0316610910565b6001600160a01b038116600090815260016020526040812054600160e01b900460ff1661037657506003546001600160e01b031661039a565b506001600160a01b0381166000908152600160205260409020546001600160e01b03165b919050565b6103a7610a12565b6001600160a01b03166103b861063d565b6001600160a01b031614610401576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600380546001600160e01b0383166001600160e01b0319909116811790915560408051918252517fc86c3cce30b0573c71caeabb76b3c908826697d53b53a8ffb8a46743fc39ea6e9181900360200190a150565b600061045f61063d565b6001600160a01b0316336001600160a01b0316148061048857506002546001600160a01b031633145b6104d9576040805162461bcd60e51b815260206004820152601e60248201527f216f6e6c794f776e65724f725769746864726177537472617465676973740000604482015290519081900360640190fd5b826001600160a01b03166352a387ab836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561052857600080fd5b505af115801561053c573d6000803e3d6000fd5b505050506040513d602081101561055257600080fd5b50519392505050565b610563610a12565b6001600160a01b031661057461063d565b6001600160a01b0316146105bd576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160e01b03811690600160e01b900460ff1682565b6002546001600160a01b031681565b6000546001600160a01b031690565b610654610a12565b6001600160a01b031661066561063d565b6001600160a01b0316146106ae576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b60005b8581101561084c578484828181106106c557fe5b905060200201356001600160e01b0316600160008989858181106106e557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060000160006101000a8154816001600160e01b0302191690836001600160e01b0316021790555082828281811061074857fe5b9050602002013515156001600089898581811061076157fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600001601c6101000a81548160ff0219169083151502179055508686828181106107b757fe5b905060200201356001600160a01b03166001600160a01b03167f1069081ee8013d1696dd56236d8de825f20e1a9349aa08d09cedb868dac61c858686848181106107fd57fe5b905060200201356001600160e01b031685858581811061081957fe5b604080516001600160e01b03909516855260209182029390930135151590840152508051918290030190a26001016106b1565b50505050505050565b61085d610a12565b6001600160a01b031661086e61063d565b6001600160a01b0316146108b7576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f5e6ccfaa4c27cf9175e92dd72903fce6e829f5870d59756148197ecc124646b590600090a250565b6003546001600160e01b031681565b610918610a12565b6001600160a01b031661092961063d565b6001600160a01b031614610972576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b6001600160a01b0381166109b75760405162461bcd60e51b8152600401808060200182810382526026815260200180610a176026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122086b69bb3f78475fa76a5f758fbdf2384bcc7025d6add964d1a0164260abf542064736f6c63430007060033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806385b925ec1161007157806385b925ec1461018d5780638da5cb5b146101b1578063a0dc039b146101b9578063baede25e146102cd578063c5e7b3be146102f3578063f2fde38b14610317576100a9565b8063010dfa58146100ae5780635f365f10146100e657806361853b421461010e578063715018a61461013c5780637ad4ee0d14610144575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661033d565b60408051918252519081900360200190f35b61010c600480360360208110156100fc57600080fd5b50356001600160e01b031661039f565b005b6100d46004803603604081101561012457600080fd5b506001600160a01b0381358116916020013516610455565b61010c61055b565b61016a6004803603602081101561015a57600080fd5b50356001600160a01b0316610607565b604080516001600160e01b03909316835290151560208301528051918290030190f35b61019561062e565b604080516001600160a01b039092168252519081900360200190f35b61019561063d565b61010c600480360360608110156101cf57600080fd5b8101906020810181356401000000008111156101ea57600080fd5b8201836020820111156101fc57600080fd5b8035906020019184602083028401116401000000008311171561021e57600080fd5b91939092909160208101903564010000000081111561023c57600080fd5b82018360208201111561024e57600080fd5b8035906020019184602083028401116401000000008311171561027057600080fd5b91939092909160208101903564010000000081111561028e57600080fd5b8201836020820111156102a057600080fd5b803590602001918460208302840111640100000000831117156102c257600080fd5b50909250905061064c565b61010c600480360360208110156102e357600080fd5b50356001600160a01b0316610855565b6102fb610901565b604080516001600160e01b039092168252519081900360200190f35b61010c6004803603602081101561032d57600080fd5b50356001600160a01b0316610910565b6001600160a01b038116600090815260016020526040812054600160e01b900460ff1661037657506003546001600160e01b031661039a565b506001600160a01b0381166000908152600160205260409020546001600160e01b03165b919050565b6103a7610a12565b6001600160a01b03166103b861063d565b6001600160a01b031614610401576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600380546001600160e01b0383166001600160e01b0319909116811790915560408051918252517fc86c3cce30b0573c71caeabb76b3c908826697d53b53a8ffb8a46743fc39ea6e9181900360200190a150565b600061045f61063d565b6001600160a01b0316336001600160a01b0316148061048857506002546001600160a01b031633145b6104d9576040805162461bcd60e51b815260206004820152601e60248201527f216f6e6c794f776e65724f725769746864726177537472617465676973740000604482015290519081900360640190fd5b826001600160a01b03166352a387ab836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561052857600080fd5b505af115801561053c573d6000803e3d6000fd5b505050506040513d602081101561055257600080fd5b50519392505050565b610563610a12565b6001600160a01b031661057461063d565b6001600160a01b0316146105bd576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6001602052600090815260409020546001600160e01b03811690600160e01b900460ff1682565b6002546001600160a01b031681565b6000546001600160a01b031690565b610654610a12565b6001600160a01b031661066561063d565b6001600160a01b0316146106ae576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b60005b8581101561084c578484828181106106c557fe5b905060200201356001600160e01b0316600160008989858181106106e557fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060000160006101000a8154816001600160e01b0302191690836001600160e01b0316021790555082828281811061074857fe5b9050602002013515156001600089898581811061076157fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020600001601c6101000a81548160ff0219169083151502179055508686828181106107b757fe5b905060200201356001600160a01b03166001600160a01b03167f1069081ee8013d1696dd56236d8de825f20e1a9349aa08d09cedb868dac61c858686848181106107fd57fe5b905060200201356001600160e01b031685858581811061081957fe5b604080516001600160e01b03909516855260209182029390930135151590840152508051918290030190a26001016106b1565b50505050505050565b61085d610a12565b6001600160a01b031661086e61063d565b6001600160a01b0316146108b7576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517f5e6ccfaa4c27cf9175e92dd72903fce6e829f5870d59756148197ecc124646b590600090a250565b6003546001600160e01b031681565b610918610a12565b6001600160a01b031661092961063d565b6001600160a01b031614610972576040805162461bcd60e51b81526020600482018190526024820152600080516020610a3d833981519152604482015290519081900360640190fd5b6001600160a01b0381166109b75760405162461bcd60e51b8152600401808060200182810382526026815260200180610a176026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b339056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a264697066735822122086b69bb3f78475fa76a5f758fbdf2384bcc7025d6add964d1a0164260abf542064736f6c63430007060033

Deployed Bytecode Sourcemap

540:3207:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1285:304;;;;;;;;;;;;;;;;-1:-1:-1;1285:304:2;-1:-1:-1;;;;;1285:304:2;;:::i;:::-;;;;;;;;;;;;;;;;3264:228;;;;;;;;;;;;;;;;-1:-1:-1;3264:228:2;-1:-1:-1;;;;;3264:228:2;;:::i;:::-;;2936:194;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2936:194:2;;;;;;;;;;:::i;1717:145:0:-;;;:::i;691:57:2:-;;;;;;;;;;;;;;;;-1:-1:-1;691:57:2;-1:-1:-1;;;;;691:57:2;;:::i;:::-;;;;-1:-1:-1;;;;;691:57:2;;;;;;;;;;;;;;;;;;;;;822:33;;;:::i;:::-;;;;-1:-1:-1;;;;;822:33:2;;;;;;;;;;;;;;1085:85:0;;;:::i;1890:450:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1890:450:2;;-1:-1:-1;1890:450:2;-1:-1:-1;1890:450:2;:::i;2499:188::-;;;;;;;;;;;;;;;;-1:-1:-1;2499:188:2;-1:-1:-1;;;;;2499:188:2;;:::i;915:41::-;;;:::i;:::-;;;;-1:-1:-1;;;;;915:41:2;;;;;;;;;;;;;;2011:240:0;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;-1:-1:-1;;;;;2011:240:0;;:::i;1285:304:2:-;-1:-1:-1;;;;;1384:26:2;;1362:7;1384:26;;;:18;:26;;;;;:36;-1:-1:-1;;;1384:36:2;;;;1380:108;;-1:-1:-1;1450:26:2;;-1:-1:-1;;;;;1450:26:2;1435:42;;1380:108;-1:-1:-1;;;;;;1543:26:2;;;;;;:18;:26;;;;;:39;-1:-1:-1;;;;;1543:39:2;1285:304;;;;:::o;3264:228::-;1308:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:0;;;;;;;;;;;;;;;3370:26:2::1;:49:::0;;-1:-1:-1;;;;;3370:49:2;::::1;-1:-1:-1::0;;;;;;3370:49:2;;::::1;::::0;::::1;::::0;;;3434:51:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;3264:228:::0;:::o;2936:194::-;3049:7;3649;:5;:7::i;:::-;-1:-1:-1;;;;;3635:21:2;:10;-1:-1:-1;;;;;3635:21:2;;:57;;;-1:-1:-1;3674:18:2;;-1:-1:-1;;;;;3674:18:2;3660:10;:32;3635:57;3627:100;;;;;-1:-1:-1;;;3627:100:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;3093:9:::1;-1:-1:-1::0;;;;;3074:45:2::1;;3120:2;3074:49;;;;;;;;;;;;;-1:-1:-1::0;;;;;3074:49:2::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;3074:49:2;;2936:194;-1:-1:-1;;;2936:194:2:o;1717:145:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:0;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;-1:-1:-1;;;;;1807:6:0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;-1:-1:-1;;;;;;1836:19:0::1;::::0;;1717:145::o;691:57:2:-;;;;;;;;;;;;-1:-1:-1;;;;;691:57:2;;;-1:-1:-1;;;691:57:2;;;;;:::o;822:33::-;;;-1:-1:-1;;;;;822:33:2;;:::o;1085:85:0:-;1131:7;1157:6;-1:-1:-1;;;;;1157:6:0;1085:85;:::o;1890:450:2:-;1308:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:0;;;;;;;;;;;;;;;2053:9:2::1;2049:285;2068:19:::0;;::::1;2049:285;;;2153:13;;2167:1;2153:16;;;;;;;;;;;;;-1:-1:-1::0;;;;;2153:16:2::1;2107:18;:30;2126:7;;2134:1;2126:10;;;;;;;;;;;;;-1:-1:-1::0;;;;;2126:10:2::1;-1:-1:-1::0;;;;;2107:30:2::1;-1:-1:-1::0;;;;;2107:30:2::1;;;;;;;;;;;;:43;;;:62;;;;;-1:-1:-1::0;;;;;2107:62:2::1;;;;;-1:-1:-1::0;;;;;2107:62:2::1;;;;;;2226:9;;2236:1;2226:12;;;;;;;;;;;;;;;2183:18;:30;2202:7;;2210:1;2202:10;;;;;;;;;;;;;-1:-1:-1::0;;;;;2202:10:2::1;-1:-1:-1::0;;;;;2183:30:2::1;-1:-1:-1::0;;;;;2183:30:2::1;;;;;;;;;;;;:40;;;:55;;;;;;;;;;;;;;;;;;2280:7;;2288:1;2280:10;;;;;;;;;;;;;-1:-1:-1::0;;;;;2280:10:2::1;-1:-1:-1::0;;;;;2257:66:2::1;;2292:13;;2306:1;2292:16;;;;;;;;;;;;;-1:-1:-1::0;;;;;2292:16:2::1;2310:9;;2320:1;2310:12;;;;;;;2257:66;::::0;;-1:-1:-1;;;;;2257:66:2;;::::1;::::0;;2310:12:::1;::::0;;::::1;::::0;;;::::1;;;;2257:66:::0;;::::1;::::0;-1:-1:-1;2257:66:2;;;;;;;;::::1;2089:3;;2049:285;;;;1890:450:::0;;;;;;:::o;2499:188::-;1308:12:0;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:0;;;;;;;;;;;;;;;2588:18:2::1;:32:::0;;-1:-1:-1;;;;;;2588:32:2::1;-1:-1:-1::0;;;;;2588:32:2;::::1;::::0;;::::1;::::0;;;2635:45:::1;::::0;::::1;::::0;-1:-1:-1;;2635:45:2::1;2499:188:::0;:::o;915:41::-;;;-1:-1:-1;;;;;915:41:2;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1289:68:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;2099:22:0;::::1;2091:73;;;;-1:-1:-1::0;;;2091:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;-1:-1:-1;;;;;2179:38:0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;-1:-1:-1;;;;;;2227:17:0::1;-1:-1:-1::0;;;;;2227:17:0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:1:-;685:10;598:104;:::o

Swarm Source

ipfs://86b69bb3f78475fa76a5f758fbdf2384bcc7025d6add964d1a0164260abf5420

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.