ETH Price: $3,278.75 (-2.49%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Plugin190118352024-01-15 10:58:11359 days ago1705316291IN
0x8aE58861...842683Ccc
0 ETH0.0005760522.00938319
Set Plugin190118022024-01-15 10:51:35359 days ago1705315895IN
0x8aE58861...842683Ccc
0 ETH0.0010964722.8029528
Set Addresses184911342023-11-03 11:07:47432 days ago1699009667IN
0x8aE58861...842683Ccc
0 ETH0.0014912421.76180328
Set Plugins184911342023-11-03 11:07:47432 days ago1699009667IN
0x8aE58861...842683Ccc
0 ETH0.0016773321.76180328
Set Plugin184769512023-11-01 11:27:35434 days ago1698838055IN
0x8aE58861...842683Ccc
0 ETH0.0008732518.16061563
Set Addresses184328262023-10-26 7:12:35440 days ago1698304355IN
0x8aE58861...842683Ccc
0 ETH0.005939117.93466596
Set Plugin184328262023-10-26 7:12:35440 days ago1698304355IN
0x8aE58861...842683Ccc
0 ETH0.0008623817.93466596
Set Plugin184328262023-10-26 7:12:35440 days ago1698304355IN
0x8aE58861...842683Ccc
0 ETH0.0008623817.93466596
Set Max Distribu...184328262023-10-26 7:12:35440 days ago1698304355IN
0x8aE58861...842683Ccc
0 ETH0.0008415317.93466596

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Operator

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
File 1 of 2 : Operator.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;

import {Errors} from "src/libraries/Errors.sol";

/// @title Operator
/// @notice Contract to manage all the state variables for STFX and OZO
contract Operator {
    /*//////////////////////////////////////////////////////////////
                            STATE VARIABLES
    //////////////////////////////////////////////////////////////*/

    uint256 public maxDistributeIndex;

    mapping(string => address) public addressValues;
    mapping(address => address) public traderAccount;
    mapping(address => bool) public whitelistedPlugins;

    /// @notice manager address -> subscriber address -> amount per stv
    mapping(address => mapping(address => uint96)) public subscriptionAmount;
    /// @notice manager address -> subscribers
    mapping(address => address[]) public subscribers;
    /// @notice manager address -> total subscribed amount
    mapping(address => uint96) public totalSubscriptionAmount;
    /// @notice manager address -> subscriber address -> unique field in the array
    mapping(address => mapping(address => bool)) public isUniqueSubscriber;

    /*//////////////////////////////////////////////////////////////
                                EVENTS
    //////////////////////////////////////////////////////////////*/

    event SetAddress(string adapter, address indexed addressValue);
    event SetAddresses(string[] adapter, address[] indexed addressValues);
    event SetPlugin(address indexed plugin, bool isWhitelisted);
    event SetPlugins(address[] indexed plugins, bool[] isWhitelisted);
    event SetMaxDistributeIndex(uint256 maxDistributeIndex);

    /*//////////////////////////////////////////////////////////////
                        CONSTRUCTOR/MODIFIERS
    //////////////////////////////////////////////////////////////*/

    constructor() {
        addressValues["OWNER"] = msg.sender;
        emit SetAddress("OWNER", msg.sender);
    }

    modifier onlyOwner() {
        if (msg.sender != addressValues["OWNER"]) revert Errors.NoAccess();
        _;
    }

    modifier onlyQ() {
        if (msg.sender != addressValues["Q"]) revert Errors.NoAccess();
        _;
    }

    modifier onlySubscriptions() {
        if (msg.sender != addressValues["SUBSCRIPTIONS"]) revert Errors.NoAccess();
        _;
    }

    /*//////////////////////////////////////////////////////////////
                        VIEW FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    /// @notice get the address of the trader's Account contract
    /// @param trader address of the trader
    /// @return address of the trader's Account contract
    function getTraderAccount(address trader) external view returns (address) {
        return traderAccount[trader];
    }

    /// @notice gettter to check if the address is a plugin or not
    /// @param plugin address of the plugin
    /// @return bool to check if the address is a plugin
    function getPlugin(address plugin) external view returns (bool) {
        return whitelistedPlugins[plugin];
    }

    /// @notice gettter to check if the addresses are a plugin or not
    /// @param plugins addresses of the plugins
    /// @return bool to check if the addresses are plugins
    function getPlugins(address[] calldata plugins) external view returns (bool[] memory) {
        uint256 length = plugins.length;
        bool[] memory isPlugin = new bool[](length);
        uint256 i;
        for (; i < length;) {
            isPlugin[i] = whitelistedPlugins[plugins[i]];
            unchecked {
                ++i;
            }
        }
        return isPlugin;
    }

    /// @notice get the address of an adapter
    /// @param adapter name of the contract
    /// @return address of the adapter
    function getAddress(string calldata adapter) external view returns (address) {
        return addressValues[adapter];
    }

    /// @notice get the addresses of the given adapters
    /// @param adapters name of the contracts
    /// @return address of the adapter
    function getAddresses(string[] calldata adapters) external view returns (address[] memory) {
        uint256 length = adapters.length;
        address[] memory addresses = new address[](length);
        uint256 i;
        for (; i < length;) {
            addresses[i] = addressValues[adapters[i]];
            unchecked {
                ++i;
            }
        }
        return addresses;
    }

    function getAllSubscribers(address manager) external view returns (address[] memory) {
        return subscribers[manager];
    }

    function getIsSubscriber(address manager, address subscriber) external view returns (bool) {
        return subscriptionAmount[manager][subscriber] > 0;
    }

    function getSubscriptionAmount(address manager, address subscriber) external view returns (uint96) {
        return subscriptionAmount[manager][subscriber];
    }

    function getTotalSubscribedAmountPerManager(address manager) external view returns (uint96) {
        return totalSubscriptionAmount[manager];
    }

    /// @notice get maxDistributeIndex for StvAccount distribution Loop
    function getMaxDistributeIndex() external view returns (uint256) {
        return maxDistributeIndex;
    }

    /*//////////////////////////////////////////////////////////////
                        EXTERNAL FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    /// @notice set a new plugin or update an existing plugin
    /// @dev can only be called by the `owner`
    /// @param plugin address of the plugin
    /// @param isPlugin bool to set if the address is a plugin or not
    function setPlugin(address plugin, bool isPlugin) external onlyOwner {
        _setPlugin(plugin, isPlugin);
        emit SetPlugin(plugin, isPlugin);
    }

    /// @notice set multiple new plugins or update existing plugins
    /// @dev can only be called by the `owner`
    /// @param plugins addresses of the plugin
    /// @param isPlugin bool to set if the addresses are a plugin or not
    function setPlugins(address[] calldata plugins, bool[] calldata isPlugin) external onlyOwner {
        if (plugins.length != isPlugin.length) revert Errors.LengthMismatch();
        uint256 i;
        for (; i < plugins.length;) {
            if (plugins[i] == address(0)) revert Errors.ZeroAddress();
            _setPlugin(plugins[i], isPlugin[i]);
            unchecked {
                ++i;
            }
        }
        emit SetPlugins(plugins, isPlugin);
    }

    /// @notice set a new adapter or update an existing adapter
    /// @dev can only be called by the `owner`
    /// @param adapter name of the adapter
    /// @param addr address of the adapter
    function setAddress(string calldata adapter, address addr) external onlyOwner {
        _setAddress(adapter, addr);
        emit SetAddress(adapter, addr);
    }

    /// @notice set multiple new adapters or update existing adapters
    /// @dev can only be called by the `owner`
    /// @param adapters name of the adapters
    /// @param addresses addresses of the adapters
    function setAddresses(string[] calldata adapters, address[] calldata addresses) external onlyOwner {
        if (adapters.length != addresses.length) revert Errors.LengthMismatch();
        uint256 i;
        for (; i < adapters.length;) {
            if (addresses[i] == address(0)) revert Errors.ZeroAddress();
            _setAddress(adapters[i], addresses[i]);
            unchecked {
                ++i;
            }
        }
        emit SetAddresses(adapters, addresses);
    }

    /// @notice set the Account contract of a trader
    /// @dev can only be called by `Q` contract
    /// @param trader address of the trader
    /// @param account address of the account
    function setTraderAccount(address trader, address account) external onlyQ {
        traderAccount[trader] = account;
    }

    function setSubscribe(address manager, address subscriber, uint96 maxLimit) external onlySubscriptions {
        if (subscriptionAmount[manager][subscriber] > 0) revert Errors.AlreadySubscribed();

        subscriptionAmount[manager][subscriber] = maxLimit;
        totalSubscriptionAmount[manager] += maxLimit;
        if (!isUniqueSubscriber[manager][subscriber]) {
            subscribers[manager].push(subscriber);
            isUniqueSubscriber[manager][subscriber] = true;
        }
    }

    function setUnsubscribe(address manager, address subscriber) external onlySubscriptions {
        if (subscriptionAmount[manager][subscriber] == 0) revert Errors.NotASubscriber();

        totalSubscriptionAmount[manager] -= subscriptionAmount[manager][subscriber];
        subscriptionAmount[manager][subscriber] = 0;
    }

    /// @notice set a new maxDistributeIndex for StvAccount distribution Loop
    /// @dev can only be called by the `owner`
    /// @param _maxDistributeIndex new maxDistributeIndex in uint256
    function setMaxDistributeIndex(uint256 _maxDistributeIndex) external onlyOwner {
        if (_maxDistributeIndex < 1) revert Errors.ZeroAmount();
        maxDistributeIndex = _maxDistributeIndex;
        emit SetMaxDistributeIndex(_maxDistributeIndex);
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL FUNCTIONS
    //////////////////////////////////////////////////////////////*/

    function _setPlugin(address plugin, bool isPlugin) internal {
        if (plugin == address(0)) revert Errors.ZeroAddress();
        whitelistedPlugins[plugin] = isPlugin;
    }

    function _setAddress(string calldata adapter, address addr) internal {
        if (addr == address(0)) revert Errors.ZeroAddress();
        addressValues[adapter] = addr;
    }
}

File 2 of 2 : Errors.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.17;

library Errors {
    // Zero Errors
    error ZeroAmount();
    error ZeroAddress();
    error ZeroTotalRaised();
    error ZeroClaimableAmount();

    // Modifier Errors
    error NotOwner();
    error NotAdmin();
    error CallerNotVault();
    error CallerNotTrade();
    error CallerNotVaultOwner();
    error CallerNotGenerate();
    error NoAccess();
    error NotPlugin();

    // State Errors
    error BelowMinFundraisingPeriod();
    error AboveMaxFundraisingPeriod();
    error BelowMinLeverage();
    error AboveMaxLeverage();
    error BelowMinEndTime();
    error TradeTokenNotApplicable();

    // STV errors
    error StvDoesNotExist();
    error AlreadyOpened();
    error MoreThanTotalRaised();
    error MoreThanTotalReceived();
    error StvNotOpen();
    error StvNotClose();
    error ClaimNotApplicable();
    error StvStatusMismatch();

    // General Errors
    error BalanceLessThanAmount();
    error FundraisingPeriodEnded();
    error TotalRaisedMoreThanCapacity();
    error StillFundraising();
    error CommandMisMatch();
    error TradeCommandMisMatch();
    error NotInitialised();
    error Initialised();
    error LengthMismatch();
    error TransferFailed();
    error DelegateCallFailed();
    error CallFailed(bytes);
    error AccountAlreadyExists();
    error SwapFailed();
    error ExchangeDataMismatch();
    error AccountNotExists();
    error InputMismatch();
    error AboveMaxDistributeIndex();
    error BelowMinStvDepositAmount();

    // Protocol specific errors
    error GmxFeesMisMatch();
    error UpdateOrderRequestMisMatch();
    error CancelOrderRequestMisMatch();

    // Subscriptions
    error NotASubscriber();
    error AlreadySubscribed();
    error MoreThanLimit();
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/",
    "@synthetix/=src/interfaces/synthetix/",
    "@openzeppelin/=lib/openzeppelin-contracts/",
    "@openzeppelin-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "solmate/=lib/solmate/src/",
    "ds-test/=lib/forge-std/lib/ds-test/src/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {
    "src/Generate.sol": {
      "Generate": "0x74e0ca6e1ecfb462a80f3b7ab6840013ee32c1c5"
    },
    "src/SpotTrade/SpotTrade.sol": {
      "SpotTrade": "0x019dfb87e218a07091c83cec604cb2d48fbdf194"
    },
    "src/Trade.sol": {
      "Trade": "0x16766913fae839da226a669c76f04b2b5e2380a0"
    },
    "src/libraries/BytesCheck.sol": {
      "BytesCheck": "0x3f3a5da6dbb99dc879a8ed2ec26c831da962231f"
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadySubscribed","type":"error"},{"inputs":[],"name":"LengthMismatch","type":"error"},{"inputs":[],"name":"NoAccess","type":"error"},{"inputs":[],"name":"NotASubscriber","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"adapter","type":"string"},{"indexed":true,"internalType":"address","name":"addressValue","type":"address"}],"name":"SetAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string[]","name":"adapter","type":"string[]"},{"indexed":true,"internalType":"address[]","name":"addressValues","type":"address[]"}],"name":"SetAddresses","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxDistributeIndex","type":"uint256"}],"name":"SetMaxDistributeIndex","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"plugin","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"SetPlugin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address[]","name":"plugins","type":"address[]"},{"indexed":false,"internalType":"bool[]","name":"isWhitelisted","type":"bool[]"}],"name":"SetPlugins","type":"event"},{"inputs":[{"internalType":"string","name":"","type":"string"}],"name":"addressValues","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"adapter","type":"string"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string[]","name":"adapters","type":"string[]"}],"name":"getAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"getAllSubscribers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getIsSubscriber","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMaxDistributeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"}],"name":"getPlugin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"plugins","type":"address[]"}],"name":"getPlugins","outputs":[{"internalType":"bool[]","name":"","type":"bool[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"getSubscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"getTotalSubscribedAmountPerManager","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"trader","type":"address"}],"name":"getTraderAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"isUniqueSubscriber","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDistributeIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"adapter","type":"string"},{"internalType":"address","name":"addr","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string[]","name":"adapters","type":"string[]"},{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"setAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDistributeIndex","type":"uint256"}],"name":"setMaxDistributeIndex","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"plugin","type":"address"},{"internalType":"bool","name":"isPlugin","type":"bool"}],"name":"setPlugin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"plugins","type":"address[]"},{"internalType":"bool[]","name":"isPlugin","type":"bool[]"}],"name":"setPlugins","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"uint96","name":"maxLimit","type":"uint96"}],"name":"setSubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"trader","type":"address"},{"internalType":"address","name":"account","type":"address"}],"name":"setTraderAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"address","name":"subscriber","type":"address"}],"name":"setUnsubscribe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"subscribers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"subscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalSubscriptionAmount","outputs":[{"internalType":"uint96","name":"","type":"uint96"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"traderAccount","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedPlugins","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b5033600160405161002c906427aba722a960d91b815260050190565b90815260405190819003602001812080546001600160a01b03939093166001600160a01b03199093169290921790915533907fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb96511906100a39060208082526005908201526427aba722a960d91b604082015260600190565b60405180910390a26117b7806100ba6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80637d69a892116100de578063cffe244a11610097578063e034b09011610071578063e034b09014610472578063eda38edb14610485578063f9a832e2146104b9578063fba0e490146104fd57600080fd5b8063cffe244a14610439578063d312f9f51461044c578063df0762a81461045f57600080fd5b80637d69a89214610392578063803b7a30146103a557806392f10652146103b85780639b2ea4bd146103e1578063a0fc27ae146103f4578063bf40fac11461042657600080fd5b806350741dba1161014b5780635a9c0de2116101255780635a9c0de2146102f15780635f5bafcc1461032557806360862d6914610338578063708675111461036457600080fd5b806350741dba146102bf57806351cdaf4d146102d25780635674286e146102e957600080fd5b80631a9ff333146101935780632a3909be146101bc5780632c789331146101fd57806332d794cc146102575780633aad1b401461028a5780634fb33bdd1461029f575b600080fd5b6101a66101a136600461112d565b610529565b6040516101b3919061116f565b60405180910390f35b6101e56101ca3660046111d1565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b61023f61020b3660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b031690565b6040516001600160601b0390911681526020016101b3565b61027a6102653660046111d1565b60036020526000908152604090205460ff1681565b60405190151581526020016101b3565b61029d6102983660046111f3565b6105fe565b005b6102b26102ad3660046111d1565b610675565b6040516101b39190611226565b61029d6102cd366004611267565b6106eb565b6102db60005481565b6040519081526020016101b3565b6000546102db565b61023f6102ff3660046111f3565b60046020908152600092835260408084209091529082529020546001600160601b031681565b6101e5610333366004611280565b610796565b6101e56103463660046111d1565b6001600160a01b039081166000908152600260205260409020541690565b61027a6103723660046111f3565b600760209081526000928352604080842090915290825290205460ff1681565b61029d6103a03660046112aa565b6107ce565b61029d6103b33660046111f3565b61094d565b61023f6103c63660046111d1565b6006602052600090815260409020546001600160601b031681565b61029d6103ef366004611358565b610aa0565b61023f6104023660046111d1565b6001600160a01b03166000908152600660205260409020546001600160601b031690565b6101e56104343660046113ac565b610b41565b6102b261044736600461112d565b610b76565b61029d61045a3660046113e2565b610c4f565b61029d61046d366004611445565b610e0d565b61029d6104803660046112aa565b610eae565b6101e5610493366004611485565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b61027a6104c73660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b0316151590565b61027a61050b3660046111d1565b6001600160a01b031660009081526003602052604090205460ff1690565b60608160008167ffffffffffffffff8111156105475761054761146f565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b828110156105f5576003600087878481811061059457610594611536565b90506020020160208101906105a991906111d1565b6001600160a01b03168152602081019190915260400160002054825160ff909116908390839081106105dd576105dd611536565b91151560209283029190910190910152600101610576565b50949350505050565b604051605160f81b8152600190810190815260405190819003602001902054336001600160a01b03909116146106475760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156106df57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c1575b50505050509050919050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b03909116146107395760405163160d3af160e11b815260040160405180910390fd5b600181101561075b57604051631f2a200560e01b815260040160405180910390fd5b60008190556040518181527f09600168cccbcc1c95935c2db77a179aa2c1b8768c91df32dda20a5ef2cb25839060200160405180910390a150565b600560205281600052604060002081815481106107b257600080fd5b6000918252602090912001546001600160a01b03169150829050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b039091161461081c5760405163160d3af160e11b815260040160405180910390fd5b82811461083f576040516001621398b960e31b0319815260040160405180910390fd5b60005b838110156108f557600083838381811061085e5761085e611536565b905060200201602081019061087391906111d1565b6001600160a01b03160361089a5760405163d92e233d60e01b815260040160405180910390fd5b6108ed8585838181106108af576108af611536565b90506020028101906108c1919061154c565b8585858181106108d3576108d3611536565b90506020020160208101906108e891906111d1565b611021565b600101610842565b8282604051610905929190611593565b60405180910390207fc8fbc51702dcdf096312aa4fe5eec7138c1ffee1b46811b1d406099fc4425144868660405161093e9291906115fc565b60405180910390a25050505050565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b03909116146109a35760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b0380831660009081526004602090815260408083209385168352929052908120546001600160601b031690036109f3576040516303da0d0b60e51b815260040160405180910390fd5b6001600160a01b0380831660008181526004602090815260408083209486168352938152838220549282526006905291822080546001600160601b03928316939192610a41918591166116ae565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b039182166000908152600460209081526040808320939094168252919091522080546bffffffffffffffffffffffff19169055565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610aee5760405163160d3af160e11b815260040160405180910390fd5b610af9838383611021565b806001600160a01b03167fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb965118484604051610b349291906116d5565b60405180910390a2505050565b600060018383604051610b559291906116f1565b908152604051908190036020019020546001600160a01b0316905092915050565b60608160008167ffffffffffffffff811115610b9457610b9461146f565b604051908082528060200260200182016040528015610bbd578160200160208202803683370190505b50905060005b828110156105f5576001868683818110610bdf57610bdf611536565b9050602002810190610bf1919061154c565b604051610bff9291906116f1565b9081526040519081900360200190205482516001600160a01b0390911690839083908110610c2f57610c2f611536565b6001600160a01b0390921660209283029190910190910152600101610bc3565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b0390911614610ca55760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b038084166000908152600460209081526040808320938616835292905220546001600160601b031615610cf257604051632fec509960e11b815260040160405180910390fd5b6001600160a01b038381166000818152600460209081526040808320948716835293815283822080546bffffffffffffffffffffffff19166001600160601b038781169190911790915592825260069052918220805484939192610d5891859116611701565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff16610e08576001600160a01b0383811660008181526005602090815260408083208054600180820183559185528385200180546001600160a01b03191696891696871790559383526007825280832094835293905291909120805460ff191690911790555b505050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610e5b5760405163160d3af160e11b815260040160405180910390fd5b610e65828261108f565b816001600160a01b03167f59cb8348593c4f99a7a9bd46fc9e56008831ff8c46640d1bfdccf4fa1fcd731782604051610ea2911515815260200190565b60405180910390a25050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610efc5760405163160d3af160e11b815260040160405180910390fd5b828114610f1f576040516001621398b960e31b0319815260040160405180910390fd5b60005b83811015610fd8576000858583818110610f3e57610f3e611536565b9050602002016020810190610f5391906111d1565b6001600160a01b031603610f7a5760405163d92e233d60e01b815260040160405180910390fd5b610fd0858583818110610f8f57610f8f611536565b9050602002016020810190610fa491906111d1565b848484818110610fb657610fb6611536565b9050602002016020810190610fcb9190611721565b61108f565b600101610f22565b8484604051610fe8929190611593565b60405180910390207f4899afe5bb10b3699499d09e2b1748da94e8532f36ba3662add363862fd3f6f9848460405161093e92919061173c565b6001600160a01b0381166110485760405163d92e233d60e01b815260040160405180910390fd5b806001848460405161105b9291906116f1565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6001600160a01b0382166110b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b60008083601f8401126110f357600080fd5b50813567ffffffffffffffff81111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6000806020838503121561114057600080fd5b823567ffffffffffffffff81111561115757600080fd5b611163858286016110e1565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111a957835115158352928401929184019160010161118b565b50909695505050505050565b80356001600160a01b03811681146111cc57600080fd5b919050565b6000602082840312156111e357600080fd5b6111ec826111b5565b9392505050565b6000806040838503121561120657600080fd5b61120f836111b5565b915061121d602084016111b5565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156111a95783516001600160a01b031683529284019291840191600101611242565b60006020828403121561127957600080fd5b5035919050565b6000806040838503121561129357600080fd5b61129c836111b5565b946020939093013593505050565b600080600080604085870312156112c057600080fd5b843567ffffffffffffffff808211156112d857600080fd5b6112e4888389016110e1565b909650945060208701359150808211156112fd57600080fd5b5061130a878288016110e1565b95989497509550505050565b60008083601f84011261132857600080fd5b50813567ffffffffffffffff81111561134057600080fd5b60208301915083602082850101111561112657600080fd5b60008060006040848603121561136d57600080fd5b833567ffffffffffffffff81111561138457600080fd5b61139086828701611316565b90945092506113a39050602085016111b5565b90509250925092565b600080602083850312156113bf57600080fd5b823567ffffffffffffffff8111156113d657600080fd5b61116385828601611316565b6000806000606084860312156113f757600080fd5b611400846111b5565b925061140e602085016111b5565b915060408401356001600160601b038116811461142a57600080fd5b809150509250925092565b803580151581146111cc57600080fd5b6000806040838503121561145857600080fd5b611461836111b5565b915061121d60208401611435565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561149757600080fd5b813567ffffffffffffffff808211156114af57600080fd5b818401915084601f8301126114c357600080fd5b8135818111156114d5576114d561146f565b604051601f8201601f19908116603f011681019083821181831017156114fd576114fd61146f565b8160405282815287602084870101111561151657600080fd5b826020860160208301376000928101602001929092525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261156357600080fd5b83018035915067ffffffffffffffff82111561157e57600080fd5b60200191503681900382131561112657600080fd5b60008184825b858110156115c8576001600160a01b036115b2836111b5565b1683526020928301929190910190600101611599565b509095945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561168b57868403603f190183528135368a9003601e1901811261164157600080fd5b8901858101903567ffffffffffffffff81111561165d57600080fd5b80360382131561166c57600080fd5b6116778682846115d3565b95505050918401919084019060010161161b565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b038281168282160390808211156116ce576116ce611698565b5092915050565b6020815260006116e96020830184866115d3565b949350505050565b8183823760009101908152919050565b6001600160601b038181168382160190808211156116ce576116ce611698565b60006020828403121561173357600080fd5b6111ec82611435565b60208082528181018390526000908460408401835b868110156117765761176283611435565b151582529183019190830190600101611751565b50969550505050505056fea264697066735822122060354355784f5a1668f205d898484b3cb41316722ac332d05097257eea271a2164736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80637d69a892116100de578063cffe244a11610097578063e034b09011610071578063e034b09014610472578063eda38edb14610485578063f9a832e2146104b9578063fba0e490146104fd57600080fd5b8063cffe244a14610439578063d312f9f51461044c578063df0762a81461045f57600080fd5b80637d69a89214610392578063803b7a30146103a557806392f10652146103b85780639b2ea4bd146103e1578063a0fc27ae146103f4578063bf40fac11461042657600080fd5b806350741dba1161014b5780635a9c0de2116101255780635a9c0de2146102f15780635f5bafcc1461032557806360862d6914610338578063708675111461036457600080fd5b806350741dba146102bf57806351cdaf4d146102d25780635674286e146102e957600080fd5b80631a9ff333146101935780632a3909be146101bc5780632c789331146101fd57806332d794cc146102575780633aad1b401461028a5780634fb33bdd1461029f575b600080fd5b6101a66101a136600461112d565b610529565b6040516101b3919061116f565b60405180910390f35b6101e56101ca3660046111d1565b6002602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b3565b61023f61020b3660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b031690565b6040516001600160601b0390911681526020016101b3565b61027a6102653660046111d1565b60036020526000908152604090205460ff1681565b60405190151581526020016101b3565b61029d6102983660046111f3565b6105fe565b005b6102b26102ad3660046111d1565b610675565b6040516101b39190611226565b61029d6102cd366004611267565b6106eb565b6102db60005481565b6040519081526020016101b3565b6000546102db565b61023f6102ff3660046111f3565b60046020908152600092835260408084209091529082529020546001600160601b031681565b6101e5610333366004611280565b610796565b6101e56103463660046111d1565b6001600160a01b039081166000908152600260205260409020541690565b61027a6103723660046111f3565b600760209081526000928352604080842090915290825290205460ff1681565b61029d6103a03660046112aa565b6107ce565b61029d6103b33660046111f3565b61094d565b61023f6103c63660046111d1565b6006602052600090815260409020546001600160601b031681565b61029d6103ef366004611358565b610aa0565b61023f6104023660046111d1565b6001600160a01b03166000908152600660205260409020546001600160601b031690565b6101e56104343660046113ac565b610b41565b6102b261044736600461112d565b610b76565b61029d61045a3660046113e2565b610c4f565b61029d61046d366004611445565b610e0d565b61029d6104803660046112aa565b610eae565b6101e5610493366004611485565b80516020818301810180516001825292820191909301209152546001600160a01b031681565b61027a6104c73660046111f3565b6001600160a01b0391821660009081526004602090815260408083209390941682529190915220546001600160601b0316151590565b61027a61050b3660046111d1565b6001600160a01b031660009081526003602052604090205460ff1690565b60608160008167ffffffffffffffff8111156105475761054761146f565b604051908082528060200260200182016040528015610570578160200160208202803683370190505b50905060005b828110156105f5576003600087878481811061059457610594611536565b90506020020160208101906105a991906111d1565b6001600160a01b03168152602081019190915260400160002054825160ff909116908390839081106105dd576105dd611536565b91151560209283029190910190910152600101610576565b50949350505050565b604051605160f81b8152600190810190815260405190819003602001902054336001600160a01b03909116146106475760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b03918216600090815260026020526040902080546001600160a01b03191691909216179055565b6001600160a01b0381166000908152600560209081526040918290208054835181840281018401909452808452606093928301828280156106df57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106c1575b50505050509050919050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b03909116146107395760405163160d3af160e11b815260040160405180910390fd5b600181101561075b57604051631f2a200560e01b815260040160405180910390fd5b60008190556040518181527f09600168cccbcc1c95935c2db77a179aa2c1b8768c91df32dda20a5ef2cb25839060200160405180910390a150565b600560205281600052604060002081815481106107b257600080fd5b6000918252602090912001546001600160a01b03169150829050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b039091161461081c5760405163160d3af160e11b815260040160405180910390fd5b82811461083f576040516001621398b960e31b0319815260040160405180910390fd5b60005b838110156108f557600083838381811061085e5761085e611536565b905060200201602081019061087391906111d1565b6001600160a01b03160361089a5760405163d92e233d60e01b815260040160405180910390fd5b6108ed8585838181106108af576108af611536565b90506020028101906108c1919061154c565b8585858181106108d3576108d3611536565b90506020020160208101906108e891906111d1565b611021565b600101610842565b8282604051610905929190611593565b60405180910390207fc8fbc51702dcdf096312aa4fe5eec7138c1ffee1b46811b1d406099fc4425144868660405161093e9291906115fc565b60405180910390a25050505050565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b03909116146109a35760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b0380831660009081526004602090815260408083209385168352929052908120546001600160601b031690036109f3576040516303da0d0b60e51b815260040160405180910390fd5b6001600160a01b0380831660008181526004602090815260408083209486168352938152838220549282526006905291822080546001600160601b03928316939192610a41918591166116ae565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b039182166000908152600460209081526040808320939094168252919091522080546bffffffffffffffffffffffff19169055565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610aee5760405163160d3af160e11b815260040160405180910390fd5b610af9838383611021565b806001600160a01b03167fb5fa77bd6bc3d862c73fa2474bfb96a0f76d38b622c54ff2a0188be82fb965118484604051610b349291906116d5565b60405180910390a2505050565b600060018383604051610b559291906116f1565b908152604051908190036020019020546001600160a01b0316905092915050565b60608160008167ffffffffffffffff811115610b9457610b9461146f565b604051908082528060200260200182016040528015610bbd578160200160208202803683370190505b50905060005b828110156105f5576001868683818110610bdf57610bdf611536565b9050602002810190610bf1919061154c565b604051610bff9291906116f1565b9081526040519081900360200190205482516001600160a01b0390911690839083908110610c2f57610c2f611536565b6001600160a01b0390921660209283029190910190910152600101610bc3565b6040516c535542534352495054494f4e5360981b8152600190600d0190815260405190819003602001902054336001600160a01b0390911614610ca55760405163160d3af160e11b815260040160405180910390fd5b6001600160a01b038084166000908152600460209081526040808320938616835292905220546001600160601b031615610cf257604051632fec509960e11b815260040160405180910390fd5b6001600160a01b038381166000818152600460209081526040808320948716835293815283822080546bffffffffffffffffffffffff19166001600160601b038781169190911790915592825260069052918220805484939192610d5891859116611701565b82546001600160601b039182166101009390930a9283029190920219909116179055506001600160a01b0380841660009081526007602090815260408083209386168352929052205460ff16610e08576001600160a01b0383811660008181526005602090815260408083208054600180820183559185528385200180546001600160a01b03191696891696871790559383526007825280832094835293905291909120805460ff191690911790555b505050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610e5b5760405163160d3af160e11b815260040160405180910390fd5b610e65828261108f565b816001600160a01b03167f59cb8348593c4f99a7a9bd46fc9e56008831ff8c46640d1bfdccf4fa1fcd731782604051610ea2911515815260200190565b60405180910390a25050565b6040516427aba722a960d91b815260019060050190815260405190819003602001902054336001600160a01b0390911614610efc5760405163160d3af160e11b815260040160405180910390fd5b828114610f1f576040516001621398b960e31b0319815260040160405180910390fd5b60005b83811015610fd8576000858583818110610f3e57610f3e611536565b9050602002016020810190610f5391906111d1565b6001600160a01b031603610f7a5760405163d92e233d60e01b815260040160405180910390fd5b610fd0858583818110610f8f57610f8f611536565b9050602002016020810190610fa491906111d1565b848484818110610fb657610fb6611536565b9050602002016020810190610fcb9190611721565b61108f565b600101610f22565b8484604051610fe8929190611593565b60405180910390207f4899afe5bb10b3699499d09e2b1748da94e8532f36ba3662add363862fd3f6f9848460405161093e92919061173c565b6001600160a01b0381166110485760405163d92e233d60e01b815260040160405180910390fd5b806001848460405161105b9291906116f1565b90815260405190819003602001902080546001600160a01b03929092166001600160a01b0319909216919091179055505050565b6001600160a01b0382166110b65760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b60008083601f8401126110f357600080fd5b50813567ffffffffffffffff81111561110b57600080fd5b6020830191508360208260051b850101111561112657600080fd5b9250929050565b6000806020838503121561114057600080fd5b823567ffffffffffffffff81111561115757600080fd5b611163858286016110e1565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156111a957835115158352928401929184019160010161118b565b50909695505050505050565b80356001600160a01b03811681146111cc57600080fd5b919050565b6000602082840312156111e357600080fd5b6111ec826111b5565b9392505050565b6000806040838503121561120657600080fd5b61120f836111b5565b915061121d602084016111b5565b90509250929050565b6020808252825182820181905260009190848201906040850190845b818110156111a95783516001600160a01b031683529284019291840191600101611242565b60006020828403121561127957600080fd5b5035919050565b6000806040838503121561129357600080fd5b61129c836111b5565b946020939093013593505050565b600080600080604085870312156112c057600080fd5b843567ffffffffffffffff808211156112d857600080fd5b6112e4888389016110e1565b909650945060208701359150808211156112fd57600080fd5b5061130a878288016110e1565b95989497509550505050565b60008083601f84011261132857600080fd5b50813567ffffffffffffffff81111561134057600080fd5b60208301915083602082850101111561112657600080fd5b60008060006040848603121561136d57600080fd5b833567ffffffffffffffff81111561138457600080fd5b61139086828701611316565b90945092506113a39050602085016111b5565b90509250925092565b600080602083850312156113bf57600080fd5b823567ffffffffffffffff8111156113d657600080fd5b61116385828601611316565b6000806000606084860312156113f757600080fd5b611400846111b5565b925061140e602085016111b5565b915060408401356001600160601b038116811461142a57600080fd5b809150509250925092565b803580151581146111cc57600080fd5b6000806040838503121561145857600080fd5b611461836111b5565b915061121d60208401611435565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561149757600080fd5b813567ffffffffffffffff808211156114af57600080fd5b818401915084601f8301126114c357600080fd5b8135818111156114d5576114d561146f565b604051601f8201601f19908116603f011681019083821181831017156114fd576114fd61146f565b8160405282815287602084870101111561151657600080fd5b826020860160208301376000928101602001929092525095945050505050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261156357600080fd5b83018035915067ffffffffffffffff82111561157e57600080fd5b60200191503681900382131561112657600080fd5b60008184825b858110156115c8576001600160a01b036115b2836111b5565b1683526020928301929190910190600101611599565b509095945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60208082528181018390526000906040600585901b8401810190840186845b8781101561168b57868403603f190183528135368a9003601e1901811261164157600080fd5b8901858101903567ffffffffffffffff81111561165d57600080fd5b80360382131561166c57600080fd5b6116778682846115d3565b95505050918401919084019060010161161b565b5091979650505050505050565b634e487b7160e01b600052601160045260246000fd5b6001600160601b038281168282160390808211156116ce576116ce611698565b5092915050565b6020815260006116e96020830184866115d3565b949350505050565b8183823760009101908152919050565b6001600160601b038181168382160190808211156116ce576116ce611698565b60006020828403121561173357600080fd5b6111ec82611435565b60208082528181018390526000908460408401835b868110156117765761176283611435565b151582529183019190830190600101611751565b50969550505050505056fea264697066735822122060354355784f5a1668f205d898484b3cb41316722ac332d05097257eea271a2164736f6c63430008130033

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.