ETH Price: $2,022.77 (-1.03%)
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Register Code1054823502023-06-12 9:51:171002 days ago1686563477IN
Minerva Money: Referral Storage
0 ETH0.00002279530.00000732
Register Code1054696402023-06-12 2:47:371003 days ago1686538057IN
Minerva Money: Referral Storage
0 ETH0.0000208502750.00786655
Register Code1054028622023-06-10 13:41:411004 days ago1686404501IN
Minerva Money: Referral Storage
0 ETH0.0000402811090.0001
Register Code1053747502023-06-09 22:04:371005 days ago1686348277IN
Minerva Money: Referral Storage
0 ETH0.000028837030.00000014
Register Code1053461372023-06-09 6:10:511006 days ago1686291051IN
Minerva Money: Referral Storage
0 ETH0.0000270762570.0001
Register Code1053201632023-06-08 15:45:031006 days ago1686239103IN
Minerva Money: Referral Storage
0 ETH0.0000354130720.00000013
Register Code1053195442023-06-08 15:24:251006 days ago1686237865IN
Minerva Money: Referral Storage
0 ETH0.0000477167010.00000009
Register Code1052726292023-06-07 13:20:351007 days ago1686144035IN
Minerva Money: Referral Storage
0 ETH0.0000290515420.0001
Register Code1052724782023-06-07 13:15:331007 days ago1686143733IN
Minerva Money: Referral Storage
0 ETH0.0000271237010.0001
Register Code1052681872023-06-07 10:52:311007 days ago1686135151IN
Minerva Money: Referral Storage
0 ETH0.0000315679220.0042
Set Gov1035560542023-06-01 11:59:151013 days ago1685620755IN
Minerva Money: Referral Storage
0 ETH0.000150511870.001
Set Tier1028975012023-05-30 11:53:111015 days ago1685447591IN
Minerva Money: Referral Storage
0 ETH0.0001472849150.001
Set Tier1028974512023-05-30 11:52:561015 days ago1685447576IN
Minerva Money: Referral Storage
0 ETH0.0001472849150.001
Set Tier1028974032023-05-30 11:52:561015 days ago1685447576IN
Minerva Money: Referral Storage
0 ETH0.0001468713780.001
Set Handler1028973642023-05-30 11:52:411015 days ago1685447561IN
Minerva Money: Referral Storage
0 ETH0.0001489165730.001

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
1054622032023-06-11 22:39:431003 days ago1686523183
Minerva Money: Referral Storage
0 ETH
1054621932023-06-11 22:39:231003 days ago1686523163
Minerva Money: Referral Storage
0 ETH
1054515712023-06-11 16:45:191003 days ago1686501919
Minerva Money: Referral Storage
0 ETH
1054515592023-06-11 16:44:551003 days ago1686501895
Minerva Money: Referral Storage
0 ETH
1054322432023-06-11 6:01:031004 days ago1686463263
Minerva Money: Referral Storage
0 ETH
1054321272023-06-11 5:57:111004 days ago1686463031
Minerva Money: Referral Storage
0 ETH
1054194302023-06-10 22:53:571004 days ago1686437637
Minerva Money: Referral Storage
0 ETH
1054194182023-06-10 22:53:331004 days ago1686437613
Minerva Money: Referral Storage
0 ETH
1054124182023-06-10 19:00:131004 days ago1686423613
Minerva Money: Referral Storage
0 ETH
1054085362023-06-10 16:50:491004 days ago1686415849
Minerva Money: Referral Storage
0 ETH
1054085162023-06-10 16:50:091004 days ago1686415809
Minerva Money: Referral Storage
0 ETH
1054051402023-06-10 14:57:371004 days ago1686409057
Minerva Money: Referral Storage
0 ETH
1054024752023-06-10 13:28:471004 days ago1686403727
Minerva Money: Referral Storage
0 ETH
1054002172023-06-10 12:13:311004 days ago1686399211
Minerva Money: Referral Storage
0 ETH
1053979632023-06-10 10:58:231004 days ago1686394703
Minerva Money: Referral Storage
0 ETH
1053971152023-06-10 10:30:071004 days ago1686393007
Minerva Money: Referral Storage
0 ETH
1053970992023-06-10 10:29:351004 days ago1686392975
Minerva Money: Referral Storage
0 ETH
1053970912023-06-10 10:29:191004 days ago1686392959
Minerva Money: Referral Storage
0 ETH
1053962222023-06-10 10:00:211004 days ago1686391221
Minerva Money: Referral Storage
0 ETH
1053962192023-06-10 10:00:151004 days ago1686391215
Minerva Money: Referral Storage
0 ETH
1053962132023-06-10 10:00:031004 days ago1686391203
Minerva Money: Referral Storage
0 ETH
1053961492023-06-10 9:57:551004 days ago1686391075
Minerva Money: Referral Storage
0 ETH
1053839262023-06-10 3:10:291005 days ago1686366629
Minerva Money: Referral Storage
0 ETH
1053759192023-06-09 22:43:351005 days ago1686350615
Minerva Money: Referral Storage
0 ETH
1053758552023-06-09 22:41:271005 days ago1686350487
Minerva Money: Referral Storage
0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReferralStorage

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 50 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.12;

import "../libraries/math/SafeMath.sol";

import "../access/Governable.sol";
import "../peripherals/interfaces/ITimelock.sol";

import "./interfaces/IReferralStorage.sol";

contract ReferralStorage is Governable, IReferralStorage {
    using SafeMath for uint256;

    struct Tier {
        uint256 totalRebate; // e.g. 2400 for 24%
        uint256 discountShare; // 5000 for 50%/50%, 7000 for 30% rebates/70% discount
    }

    uint256 public constant BASIS_POINTS = 10000;

    mapping(address => uint256) public referrerDiscountShares; // to override default value in tier
    mapping(address => uint256) public referrerTiers; // link between user <> tier
    mapping(uint256 => Tier) public tiers;

    mapping(address => bool) public isHandler;

    mapping(bytes32 => address) public override codeOwners;
    mapping(address => bytes32) public traderReferralCodes;

    event SetHandler(address handler, bool isActive);
    event SetTraderReferralCode(address account, bytes32 code);
    event SetTier(uint256 tierId, uint256 totalRebate, uint256 discountShare);
    event SetReferrerTier(address referrer, uint256 tierId);
    event SetReferrerDiscountShare(address referrer, uint256 discountShare);
    event RegisterCode(address account, bytes32 code);
    event SetCodeOwner(address account, address newAccount, bytes32 code);
    event GovSetCodeOwner(bytes32 code, address newAccount);

    modifier onlyHandler() {
        require(isHandler[msg.sender], "ReferralStorage: forbidden");
        _;
    }

    function setHandler(address _handler, bool _isActive) external onlyGov {
        isHandler[_handler] = _isActive;
        emit SetHandler(_handler, _isActive);
    }

    function setTier(
        uint256 _tierId,
        uint256 _totalRebate,
        uint256 _discountShare
    ) external override onlyGov {
        require(_totalRebate <= BASIS_POINTS, "ReferralStorage: invalid totalRebate");
        require(_discountShare <= BASIS_POINTS, "ReferralStorage: invalid discountShare");

        Tier memory tier = tiers[_tierId];
        tier.totalRebate = _totalRebate;
        tier.discountShare = _discountShare;
        tiers[_tierId] = tier;
        emit SetTier(_tierId, _totalRebate, _discountShare);
    }

    function setReferrerTier(address _referrer, uint256 _tierId) external override onlyGov {
        referrerTiers[_referrer] = _tierId;
        emit SetReferrerTier(_referrer, _tierId);
    }

    function setReferrerDiscountShare(uint256 _discountShare) external {
        require(_discountShare <= BASIS_POINTS, "ReferralStorage: invalid discountShare");

        referrerDiscountShares[msg.sender] = _discountShare;
        emit SetReferrerDiscountShare(msg.sender, _discountShare);
    }

    function setTraderReferralCode(address _account, bytes32 _code) external override onlyHandler {
        _setTraderReferralCode(_account, _code);
    }

    function setTraderReferralCodeByUser(bytes32 _code) external {
        _setTraderReferralCode(msg.sender, _code);
    }

    function registerCode(bytes32 _code) external {
        require(_code != bytes32(0), "ReferralStorage: invalid _code");
        require(codeOwners[_code] == address(0), "ReferralStorage: code already exists");

        codeOwners[_code] = msg.sender;
        emit RegisterCode(msg.sender, _code);
    }

    function setCodeOwner(bytes32 _code, address _newAccount) external {
        require(_code != bytes32(0), "ReferralStorage: invalid _code");

        address account = codeOwners[_code];
        require(msg.sender == account, "ReferralStorage: forbidden");

        codeOwners[_code] = _newAccount;
        emit SetCodeOwner(msg.sender, _newAccount, _code);
    }

    function govSetCodeOwner(bytes32 _code, address _newAccount) external override onlyGov {
        require(_code != bytes32(0), "ReferralStorage: invalid _code");

        codeOwners[_code] = _newAccount;
        emit GovSetCodeOwner(_code, _newAccount);
    }

    function getTraderReferralInfo(address _account) external view override returns (bytes32, address) {
        bytes32 code = traderReferralCodes[_account];
        address referrer;
        if (code != bytes32(0)) {
            referrer = codeOwners[code];
        }
        return (code, referrer);
    }

    function _setTraderReferralCode(address _account, bytes32 _code) private {
        traderReferralCodes[_account] = _code;
        emit SetTraderReferralCode(_account, _code);
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

contract Governable {
    address public gov;

    constructor() public {
        gov = msg.sender;
    }

    modifier onlyGov() {
        require(msg.sender == gov, "Governable: forbidden");
        _;
    }

    function setGov(address _gov) external onlyGov {
        gov = _gov;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface ITimelock {
    function setAdmin(address _admin) external;
    function enableLeverage(address _vault) external;
    function disableLeverage(address _vault) external;
    function setIsLeverageEnabled(address _vault, bool _isLeverageEnabled) external;
    function signalSetGov(address _target, address _gov) external;
}

// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;

interface IReferralStorage {
    function codeOwners(bytes32 _code) external view returns (address);

    function getTraderReferralInfo(address _account) external view returns (bytes32, address);

    function setTraderReferralCode(address _account, bytes32 _code) external;

    function setTier(
        uint256 _tierId,
        uint256 _totalRebate,
        uint256 _discountShare
    ) external;

    function setReferrerTier(address _referrer, uint256 _tierId) external;

    function govSetCodeOwner(bytes32 _code, address _newAccount) external;
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 50
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"code","type":"bytes32"},{"indexed":false,"internalType":"address","name":"newAccount","type":"address"}],"name":"GovSetCodeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"RegisterCode","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"address","name":"newAccount","type":"address"},{"indexed":false,"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"SetCodeOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"handler","type":"address"},{"indexed":false,"internalType":"bool","name":"isActive","type":"bool"}],"name":"SetHandler","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"discountShare","type":"uint256"}],"name":"SetReferrerDiscountShare","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"referrer","type":"address"},{"indexed":false,"internalType":"uint256","name":"tierId","type":"uint256"}],"name":"SetReferrerTier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tierId","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalRebate","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"discountShare","type":"uint256"}],"name":"SetTier","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bytes32","name":"code","type":"bytes32"}],"name":"SetTraderReferralCode","type":"event"},{"inputs":[],"name":"BASIS_POINTS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"codeOwners","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getTraderReferralInfo","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gov","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"name":"govSetCodeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHandler","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrerDiscountShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referrerTiers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"name":"registerCode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"},{"internalType":"address","name":"_newAccount","type":"address"}],"name":"setCodeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_gov","type":"address"}],"name":"setGov","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_handler","type":"address"},{"internalType":"bool","name":"_isActive","type":"bool"}],"name":"setHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_discountShare","type":"uint256"}],"name":"setReferrerDiscountShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_referrer","type":"address"},{"internalType":"uint256","name":"_tierId","type":"uint256"}],"name":"setReferrerTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tierId","type":"uint256"},{"internalType":"uint256","name":"_totalRebate","type":"uint256"},{"internalType":"uint256","name":"_discountShare","type":"uint256"}],"name":"setTier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"},{"internalType":"bytes32","name":"_code","type":"bytes32"}],"name":"setTraderReferralCode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_code","type":"bytes32"}],"name":"setTraderReferralCodeByUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tiers","outputs":[{"internalType":"uint256","name":"totalRebate","type":"uint256"},{"internalType":"uint256","name":"discountShare","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"traderReferralCodes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50600080546001600160a01b03191633179055610d69806100326000396000f3fe608060405234801561001057600080fd5b50600436106101015760003560e01c8063836a01871161009d578063836a0187146102b657806385725b58146102df5780639c8e2de9146103055780639cb7de4b14610322578063c8b3c46014610350578063cfad57a21461036d578063dfcfa25014610393578063e1e01bf3146103bf578063e1f1c4a7146103dc578063ed843134146103e457610101565b8063039af9eb1461010657806312d43a511461013c5780631582a0181461016057806336def2c8146101985780633fb8b323146101b757806346ea87af146101e3578063534ef8831461021d57806356b4b2ad1461026457806371a6a79014610290575b600080fd5b6101236004803603602081101561011c57600080fd5b5035610410565b6040805192835260208301919091528051918290030190f35b610144610429565b604080516001600160a01b039092168252519081900360200190f35b6101866004803603602081101561017657600080fd5b50356001600160a01b0316610438565b60408051918252519081900360200190f35b6101b5600480360360208110156101ae57600080fd5b503561044a565b005b6101b5600480360360408110156101cd57600080fd5b506001600160a01b03813516906020013561053e565b610209600480360360208110156101f957600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6102436004803603602081101561023357600080fd5b50356001600160a01b03166105f9565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101b56004803603604081101561027a57600080fd5b506001600160a01b03813516906020013561063f565b610186600480360360208110156102a657600080fd5b50356001600160a01b03166106ae565b6101b5600480360360608110156102cc57600080fd5b50803590602081013590604001356106c0565b610186600480360360208110156102f557600080fd5b50356001600160a01b0316610815565b6101b56004803603602081101561031b57600080fd5b5035610827565b6101b56004803603604081101561033857600080fd5b506001600160a01b03813516906020013515156108b7565b6101446004803603602081101561036657600080fd5b5035610968565b6101b56004803603602081101561038357600080fd5b50356001600160a01b0316610983565b6101b5600480360360408110156103a957600080fd5b50803590602001356001600160a01b03166109f2565b6101b5600480360360208110156103d557600080fd5b5035610ae7565b610186610af4565b6101b5600480360360408110156103fa57600080fd5b50803590602001356001600160a01b0316610afa565b6003602052600090815260409020805460019091015482565b6000546001600160a01b031681565b60026020526000908152604090205481565b8061048a576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b0316156104de5760405162461bcd60e51b8152600401808060200182810382526024815260200180610cea6024913960400191505060405180910390fd5b60008181526005602090815260409182902080546001600160a01b03191633908117909155825190815290810183905281517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d8029929181900390910190a150565b6000546001600160a01b0316331461058b576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290208490558151928352820183905280517f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc9281900390910190a15050565b60046020526000908152604090205460ff1681565b6001600160a01b038116600090815260066020526040812054819081811561063557506000818152600560205260409020546001600160a01b03165b9092509050915091565b3360009081526004602052604090205460ff166106a0576040805162461bcd60e51b815260206004820152601a6024820152792932b332b93930b629ba37b930b3b29d103337b93134b23232b760311b604482015290519081900360640190fd5b6106aa8282610c12565b5050565b60016020526000908152604090205481565b6000546001600160a01b0316331461070d576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b61271082111561074e5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca66024913960400191505060405180910390fd5b61271081111561078f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d0e6026913960400191505060405180910390fd5b610797610c6b565b50600083815260036020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052808301849052915190917f4ebd23a492b2bd79586cb57cae40d7793408265f20320f68b478b971e696f4c7919081900360600190a150505050565b60066020526000908152604090205481565b6127108111156108685760405162461bcd60e51b8152600401808060200182810382526026815260200180610d0e6026913960400191505060405180910390fd5b336000818152600160209081526040918290208490558151928352820183905280517fbd224f3917462b0fa80805fe3ec29be3a37f664955aad6224e5ece036224c4299281900390910190a150565b6000546001600160a01b03163314610904576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015280517fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e9281900390910190a15050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146109d0576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a3f576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b81610a7f576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b60008281526005602090815260409182902080546001600160a01b0319166001600160a01b03851690811790915582518581529182015281517f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e97929181900390910190a15050565b610af13382610c12565b50565b61271081565b81610b3a576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b6000828152600560205260409020546001600160a01b0316338114610ba3576040805162461bcd60e51b815260206004820152601a6024820152792932b332b93930b629ba37b930b3b29d103337b93134b23232b760311b604482015290519081900360640190fd5b60008381526005602090815260409182902080546001600160a01b0386166001600160a01b0319909116811790915582513381529182015280820185905290517f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979181900360600190a1505050565b6001600160a01b0382166000818152600660209081526040918290208490558151928352820183905280517f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f19281900390910190a15050565b60405180604001604052806000815260200160008152509056fe476f7665726e61626c653a20666f7262696464656e0000000000000000000000526566657272616c53746f726167653a20696e76616c696420746f74616c526562617465526566657272616c53746f726167653a20696e76616c6964205f636f64650000526566657272616c53746f726167653a20636f646520616c726561647920657869737473526566657272616c53746f726167653a20696e76616c696420646973636f756e745368617265a26469706673582212209cf076646bc5c5ae24f9c72a54e9cfe0895fd86c5265e7a2db3881551403959664736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101015760003560e01c8063836a01871161009d578063836a0187146102b657806385725b58146102df5780639c8e2de9146103055780639cb7de4b14610322578063c8b3c46014610350578063cfad57a21461036d578063dfcfa25014610393578063e1e01bf3146103bf578063e1f1c4a7146103dc578063ed843134146103e457610101565b8063039af9eb1461010657806312d43a511461013c5780631582a0181461016057806336def2c8146101985780633fb8b323146101b757806346ea87af146101e3578063534ef8831461021d57806356b4b2ad1461026457806371a6a79014610290575b600080fd5b6101236004803603602081101561011c57600080fd5b5035610410565b6040805192835260208301919091528051918290030190f35b610144610429565b604080516001600160a01b039092168252519081900360200190f35b6101866004803603602081101561017657600080fd5b50356001600160a01b0316610438565b60408051918252519081900360200190f35b6101b5600480360360208110156101ae57600080fd5b503561044a565b005b6101b5600480360360408110156101cd57600080fd5b506001600160a01b03813516906020013561053e565b610209600480360360208110156101f957600080fd5b50356001600160a01b03166105e4565b604080519115158252519081900360200190f35b6102436004803603602081101561023357600080fd5b50356001600160a01b03166105f9565b604080519283526001600160a01b0390911660208301528051918290030190f35b6101b56004803603604081101561027a57600080fd5b506001600160a01b03813516906020013561063f565b610186600480360360208110156102a657600080fd5b50356001600160a01b03166106ae565b6101b5600480360360608110156102cc57600080fd5b50803590602081013590604001356106c0565b610186600480360360208110156102f557600080fd5b50356001600160a01b0316610815565b6101b56004803603602081101561031b57600080fd5b5035610827565b6101b56004803603604081101561033857600080fd5b506001600160a01b03813516906020013515156108b7565b6101446004803603602081101561036657600080fd5b5035610968565b6101b56004803603602081101561038357600080fd5b50356001600160a01b0316610983565b6101b5600480360360408110156103a957600080fd5b50803590602001356001600160a01b03166109f2565b6101b5600480360360208110156103d557600080fd5b5035610ae7565b610186610af4565b6101b5600480360360408110156103fa57600080fd5b50803590602001356001600160a01b0316610afa565b6003602052600090815260409020805460019091015482565b6000546001600160a01b031681565b60026020526000908152604090205481565b8061048a576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b0316156104de5760405162461bcd60e51b8152600401808060200182810382526024815260200180610cea6024913960400191505060405180910390fd5b60008181526005602090815260409182902080546001600160a01b03191633908117909155825190815290810183905281517f04f82286a2a3b2ee5c8555de8304dfe2ea70991613213184b73a9e408d2d8029929181900390910190a150565b6000546001600160a01b0316331461058b576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290208490558151928352820183905280517f7696855cdbb94bb5a44cb0a95caff6f29173aa1cbfba193834b12b90827ce2bc9281900390910190a15050565b60046020526000908152604090205460ff1681565b6001600160a01b038116600090815260066020526040812054819081811561063557506000818152600560205260409020546001600160a01b03165b9092509050915091565b3360009081526004602052604090205460ff166106a0576040805162461bcd60e51b815260206004820152601a6024820152792932b332b93930b629ba37b930b3b29d103337b93134b23232b760311b604482015290519081900360640190fd5b6106aa8282610c12565b5050565b60016020526000908152604090205481565b6000546001600160a01b0316331461070d576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b61271082111561074e5760405162461bcd60e51b8152600401808060200182810382526024815260200180610ca66024913960400191505060405180910390fd5b61271081111561078f5760405162461bcd60e51b8152600401808060200182810382526026815260200180610d0e6026913960400191505060405180910390fd5b610797610c6b565b50600083815260036020818152604080842081518083018352878152808401878152958990529383528351815593516001909401939093558251868152908101859052808301849052915190917f4ebd23a492b2bd79586cb57cae40d7793408265f20320f68b478b971e696f4c7919081900360600190a150505050565b60066020526000908152604090205481565b6127108111156108685760405162461bcd60e51b8152600401808060200182810382526026815260200180610d0e6026913960400191505060405180910390fd5b336000818152600160209081526040918290208490558151928352820183905280517fbd224f3917462b0fa80805fe3ec29be3a37f664955aad6224e5ece036224c4299281900390910190a150565b6000546001600160a01b03163314610904576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b6001600160a01b038216600081815260046020908152604091829020805460ff191685151590811790915582519384529083015280517fd373464a39404e5f98fdb4b152b8ba9a094561e97e5c4b4ea11eb18cd9e6695e9281900390910190a15050565b6005602052600090815260409020546001600160a01b031681565b6000546001600160a01b031633146109d0576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610a3f576040805162461bcd60e51b81526020600482015260156024820152600080516020610c86833981519152604482015290519081900360640190fd5b81610a7f576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b60008281526005602090815260409182902080546001600160a01b0319166001600160a01b03851690811790915582518581529182015281517f6431f88c655dd0e2b8d09b6405c007c515c66d67f2998e69c902873a8c8f3e97929181900390910190a15050565b610af13382610c12565b50565b61271081565b81610b3a576040805162461bcd60e51b815260206004820152601e6024820152600080516020610cca833981519152604482015290519081900360640190fd5b6000828152600560205260409020546001600160a01b0316338114610ba3576040805162461bcd60e51b815260206004820152601a6024820152792932b332b93930b629ba37b930b3b29d103337b93134b23232b760311b604482015290519081900360640190fd5b60008381526005602090815260409182902080546001600160a01b0386166001600160a01b0319909116811790915582513381529182015280820185905290517f5640856798d41ce9ca0a109b54c20a06eb99ba9c36ab4547115dafb8473cf3979181900360600190a1505050565b6001600160a01b0382166000818152600660209081526040918290208490558151928352820183905280517f43825f14567dda057e821be2e51a5aa79aa51f3907a647e3ed2bd486a01050f19281900390910190a15050565b60405180604001604052806000815260200160008152509056fe476f7665726e61626c653a20666f7262696464656e0000000000000000000000526566657272616c53746f726167653a20696e76616c696420746f74616c526562617465526566657272616c53746f726167653a20696e76616c6964205f636f64650000526566657272616c53746f726167653a20636f646520616c726561647920657869737473526566657272616c53746f726167653a20696e76616c696420646973636f756e745368617265a26469706673582212209cf076646bc5c5ae24f9c72a54e9cfe0895fd86c5265e7a2db3881551403959664736f6c634300060c0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
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  ]
[ 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.