ETH Price: $3,267.05 (-0.58%)

Token

sxETH (sxETH)
 

Overview

Max Total Supply

149.587866316040581658 sxETH

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 sxETH

Value
$0.00
0x6828426a646f55cac2807e83478aa1691ad876fe
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
SxETHProxy

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
default evmVersion
File 1 of 4 : Proxies.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import { InitializeGovernedUpgradeabilityProxy } from "./InitializeGovernedUpgradeabilityProxy.sol";

/**
 * @notice SxETHProxy delegates calls to an sxETH implementation
 */
contract SxETHProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice WSxETHProxy delegates calls to a WSxETH implementation
 */
contract WSxETHProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHVaultProxy delegates calls to a Vault implementation
 */
contract SxETHVaultProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice ExchangeRateProxy delegates calls to a ExchangeRate implementation
 */
contract ExchangeRateProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice CompoundStrategyProxy delegates calls to a CompoundStrategy implementation
 */
contract CompoundStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice ThreePoolStrategyProxy delegates calls to a ThreePoolStrategy implementation
 */
contract ThreePoolStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice ConvexStrategyProxy delegates calls to a ConvexStrategy implementation
 */
contract ConvexStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice MorphoCompoundStrategyProxy delegates calls to a MorphoCompoundStrategy implementation
 */
contract MorphoCompoundStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice MorphoAaveStrategyProxy delegates calls to a MorphoCompoundStrategy implementation
 */
contract MorphoAaveStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHDripperProxy delegates calls to a OETHDripper implementation
 */
contract SxETHDripperProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHHarvesterProxy delegates calls to a Harvester implementation
 */
contract SxETHHarvesterProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice FraxETHStrategyProxy delegates calls to a FraxETHStrategy implementation
 */
contract FraxETHStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice CurveEthStrategyProxy delegates calls to a CurveEthStrategy implementation
 */
contract ConvexEthMetaStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice BuybackProxy delegates calls to Buyback implementation
 */
contract BuybackProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHMorphoAaveStrategyProxy delegates calls to a MorphoAaveStrategy implementation
 */
contract SxETHMorphoAaveStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHBalancerMetaPoolrEthStrategyProxy delegates calls to a BalancerMetaPoolStrategy implementation
 */
contract SxETHBalancerMetaPoolrEthStrategyProxy is
    InitializeGovernedUpgradeabilityProxy
{

}

/**
 * @notice SxETHBalancerMetaPoolwstEthStrategyProxy delegates calls to a BalancerMetaPoolStrategy implementation
 */
contract SxETHBalancerMetaPoolwstEthStrategyProxy is
    InitializeGovernedUpgradeabilityProxy
{

}

/**
 * @notice FluxStrategyProxy delegates calls to a CompoundStrategy implementation
 */
contract FluxStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice MakerDsrStrategyProxy delegates calls to a Generalized4626Strategy implementation
 */
contract MakerDsrStrategyProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice SxETHBuybackProxy delegates calls to Buyback implementation
 */
contract SxETHBuybackProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice BridgedWSxETHProxy delegates calls to BridgedWSxETH implementation
 */
contract BridgedWSxETHProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice WSxETHBridgeMainnetProxy delegates calls to BridgedWSxETH implementation
 */
contract WSxETHBridgeMainnetProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice WSxETHBridgeProxy delegates calls to BridgedWSxETH implementation
 */
contract WSxETHBridgeProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice WSxETHL2DepositPoolProxy delegates calls to a Vault implementation
 */
contract WSxETHL2DepositPoolProxy is InitializeGovernedUpgradeabilityProxy {

}

/**
 * @notice WSxETHL2OracleProxy delegates calls to a Vault implementation
 */
contract WSxETHL2OracleProxy is InitializeGovernedUpgradeabilityProxy {

}

File 2 of 4 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Address.sol)

pragma solidity ^0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

File 3 of 4 : Governable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/**
 * @title Base for contracts that are managed by the StakeEase Protocol.
 * @dev Copy of the openzeppelin Ownable.sol contract with nomenclature change
 *      from owner to governor and renounce methods removed. Does not use
 *      Context.sol like Ownable.sol does for simplification.
 */
contract Governable {
    // Storage position of the owner and pendingOwner of the contract
    // keccak256("EASE.governor");
    bytes32 private constant governorPosition =
        0xc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d;

    // keccak256("EASE.pending.governor");
    bytes32 private constant pendingGovernorPosition =
        0x62e5c7bc94de5ea5e81a993833d7bcc33b7809cca20e86d7b445afc340367afa;

    // keccak256("EASE.reentry.status");
    bytes32 private constant reentryStatusPosition =
        0xb628d6c2acbe202c25175e5f49ca0511ce8465f44ca3ebcc1d8aa4fe5e0798c0;

    // See OpenZeppelin ReentrancyGuard implementation
    uint256 constant _NOT_ENTERED = 1;
    uint256 constant _ENTERED = 2;

    event PendingGovernorshipTransfer(
        address indexed previousGovernor,
        address indexed newGovernor
    );

    event GovernorshipTransferred(
        address indexed previousGovernor,
        address indexed newGovernor
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial Governor.
     */
    constructor() {
        _setGovernor(msg.sender);
        emit GovernorshipTransferred(address(0), _governor());
    }

    /**
     * @notice Returns the address of the current Governor.
     */
    function governor() public view returns (address) {
        return _governor();
    }

    /**
     * @dev Returns the address of the current Governor.
     */
    function _governor() internal view returns (address governorOut) {
        bytes32 position = governorPosition;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            governorOut := sload(position)
        }
    }

    /**
     * @dev Returns the address of the pending Governor.
     */
    function _pendingGovernor()
        internal
        view
        returns (address pendingGovernor)
    {
        bytes32 position = pendingGovernorPosition;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            pendingGovernor := sload(position)
        }
    }

    /**
     * @dev Throws if called by any account other than the Governor.
     */
    modifier onlyGovernor() {
        require(isGovernor(), "Caller is not the Governor");
        _;
    }

    /**
     * @notice Returns true if the caller is the current Governor.
     */
    function isGovernor() public view returns (bool) {
        return msg.sender == _governor();
    }

    function _setGovernor(address newGovernor) internal {
        bytes32 position = governorPosition;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(position, newGovernor)
        }
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        bytes32 position = reentryStatusPosition;
        uint256 _reentry_status;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            _reentry_status := sload(position)
        }

        // On the first call to nonReentrant, _notEntered will be true
        require(_reentry_status != _ENTERED, "Reentrant call");

        // Any calls to nonReentrant after this point will fail
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(position, _ENTERED)
        }

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(position, _NOT_ENTERED)
        }
    }

    function _setPendingGovernor(address newGovernor) internal {
        bytes32 position = pendingGovernorPosition;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(position, newGovernor)
        }
    }

    /**
     * @notice Transfers Governance of the contract to a new account (`newGovernor`).
     * Can only be called by the current Governor. Must be claimed for this to complete
     * @param _newGovernor Address of the new Governor
     */
    function transferGovernance(address _newGovernor) external onlyGovernor {
        _setPendingGovernor(_newGovernor);
        emit PendingGovernorshipTransfer(_governor(), _newGovernor);
    }

    /**
     * @notice Claim Governance of the contract to a new account (`newGovernor`).
     * Can only be called by the new Governor.
     */
    function claimGovernance() external {
        require(
            msg.sender == _pendingGovernor(),
            "Only the pending Governor can complete the claim"
        );
        _changeGovernor(msg.sender);
    }

    /**
     * @dev Change Governance of the contract to a new account (`newGovernor`).
     * @param _newGovernor Address of the new Governor
     */
    function _changeGovernor(address _newGovernor) internal {
        require(_newGovernor != address(0), "New Governor is address(0)");
        emit GovernorshipTransferred(_governor(), _newGovernor);
        _setGovernor(_newGovernor);
    }
}

File 4 of 4 : InitializeGovernedUpgradeabilityProxy.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import { Address } from "@openzeppelin/contracts/utils/Address.sol";

import { Governable } from "../governance/Governable.sol";

/**
 * @title BaseGovernedUpgradeabilityProxy
 * @dev This contract combines an upgradeability proxy with our governor system.
 * It is based on an older version of OpenZeppelins BaseUpgradeabilityProxy
 * with Solidity ^0.8.0.
 */
contract InitializeGovernedUpgradeabilityProxy is Governable {
    /**
     * @dev Emitted when the implementation is upgraded.
     * @param implementation Address of the new implementation.
     */
    event Upgraded(address indexed implementation);

    /**
     * @dev Contract initializer with Governor enforcement
     * @param _logic Address of the initial implementation.
     * @param _initGovernor Address of the initial Governor.
     * @param _data Data to send as msg.data to the implementation to initialize
     * the proxied contract.
     * It should include the signature and the parameters of the function to be
     * called, as described in
     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
     * This parameter is optional, if no data is given the initialization call
     * to proxied contract will be skipped.
     */
    function initialize(
        address _logic,
        address _initGovernor,
        bytes calldata _data
    ) public payable onlyGovernor {
        require(_implementation() == address(0));
        assert(
            IMPLEMENTATION_SLOT ==
                bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1)
        );
        _setImplementation(_logic);
        if (_data.length > 0) {
            (bool success, ) = _logic.delegatecall(_data);
            require(success);
        }
        _changeGovernor(_initGovernor);
    }

    /**
     * @return The address of the proxy admin/it's also the governor.
     */
    function admin() external view returns (address) {
        return _governor();
    }

    /**
     * @return The address of the implementation.
     */
    function implementation() external view returns (address) {
        return _implementation();
    }

    /**
     * @dev Upgrade the backing implementation of the proxy.
     * Only the admin can call this function.
     * @param newImplementation Address of the new implementation.
     */
    function upgradeTo(address newImplementation) external onlyGovernor {
        _upgradeTo(newImplementation);
    }

    /**
     * @dev Upgrade the backing implementation of the proxy and call a function
     * on the new implementation.
     * This is useful to initialize the proxied contract.
     * @param newImplementation Address of the new implementation.
     * @param data Data to send as msg.data in the low level call.
     * It should include the signature and the parameters of the function to be called, as described in
     * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
     */
    function upgradeToAndCall(
        address newImplementation,
        bytes calldata data
    ) external payable onlyGovernor {
        _upgradeTo(newImplementation);
        (bool success, ) = newImplementation.delegatecall(data);
        require(success);
    }

    /**
     * @dev Fallback function.
     * Implemented entirely in `_fallback`.
     */
    fallback() external payable {
        _fallback();
    }

    /**
     * @dev Delegates execution to an implementation contract.
     * This is a low level function that doesn't return to its internal call site.
     * It will return to the external caller whatever the implementation returns.
     * @param _impl Address to delegate.
     */
    function _delegate(address _impl) internal {
        // solhint-disable-next-line no-inline-assembly
        assembly {
            // Copy msg.data. We take full control of memory in this inline assembly
            // block because it will not return to Solidity code. We overwrite the
            // Solidity scratch pad at memory position 0.
            calldatacopy(0, 0, calldatasize())

            // Call the implementation.
            // out and outsize are 0 because we don't know the size yet.
            let result := delegatecall(gas(), _impl, 0, calldatasize(), 0, 0)

            // Copy the returned data.
            returndatacopy(0, 0, returndatasize())

            switch result
            // delegatecall returns 0 on error.
            case 0 {
                revert(0, returndatasize())
            }
            default {
                return(0, returndatasize())
            }
        }
    }

    /**
     * @dev Function that is run as the first thing in the fallback function.
     * Can be redefined in derived contracts to add functionality.
     * Redefinitions must call super._willFallback().
     */
    function _willFallback() internal {}

    /**
     * @dev fallback implementation.
     * Extracted to enable manual triggering.
     */
    function _fallback() internal {
        _willFallback();
        _delegate(_implementation());
    }

    /**
     * @dev Storage slot with the address of the current implementation.
     * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
     * validated in the constructor.
     */
    bytes32 internal constant IMPLEMENTATION_SLOT =
        0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

    /**
     * @dev Returns the current implementation.
     * @return impl Address of the current implementation
     */
    function _implementation() internal view returns (address impl) {
        bytes32 slot = IMPLEMENTATION_SLOT;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            impl := sload(slot)
        }
    }

    /**
     * @dev Upgrades the proxy to a new implementation.
     * @param newImplementation Address of the new implementation.
     */
    function _upgradeTo(address newImplementation) internal {
        _setImplementation(newImplementation);
        emit Upgraded(newImplementation);
    }

    /**
     * @dev Sets the implementation address of the proxy.
     * @param newImplementation Address of the new implementation.
     */
    function _setImplementation(address newImplementation) internal {
        require(
            Address.isContract(newImplementation),
            "Cannot set a proxy implementation to a non-contract address"
        );

        bytes32 slot = IMPLEMENTATION_SLOT;

        // solhint-disable-next-line no-inline-assembly
        assembly {
            sstore(slot, newImplementation)
        }
    }
}

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

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"GovernorshipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousGovernor","type":"address"},{"indexed":true,"internalType":"address","name":"newGovernor","type":"address"}],"name":"PendingGovernorshipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_initGovernor","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"isGovernor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]

6080806040523461005f57337fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d55335f7fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a8180a36109f490816100648239f35b5f80fdfe608060405260043610610889575f803560e01c9081630c340a24146101205781633659cfe614610099575080634f1ef286146100945780635c60da1b1461008f5780635d36b1901461008a578063c7af335214610085578063cf7a1d7714610080578063d38bfff41461007b5763f851a4400361088957610120565b6105e7565b6104d4565b610462565b610367565b6102f7565b610208565b3461011d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5761011a6100d3610194565b61011573ffffffffffffffffffffffffffffffffffffffff7fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b6108c9565b80f35b80fd5b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905760207fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b5f80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361019057565b9181601f840112156101905782359167ffffffffffffffff8311610190576020838186019501011161019057565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905761023a610194565b60243567ffffffffffffffff81116101905761025a9036906004016101da565b9173ffffffffffffffffffffffffffffffffffffffff9061029f827fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b6102a88161090f565b5f938493849383167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2816040519283928337810184815203915af46102ee61081c565b501561011d5780f35b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905773ffffffffffffffffffffffffffffffffffffffff7f62e5c7bc94de5ea5e81a993833d7bcc33b7809cca20e86d7b445afc340367afa541633036103de576103dc33610713565b005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201527f6d706c6574652074686520636c61696d000000000000000000000000000000006064820152fd5b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019057602073ffffffffffffffffffffffffffffffffffffffff7fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d54163314604051908152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019057610506610194565b61050e6101b7565b60443567ffffffffffffffff81116101905761052e9036906004016101da565b73ffffffffffffffffffffffffffffffffffffffff939193610574817fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416610190576103dc936105a88361090f565b816105b6575b505050610713565b6105df925f9283926105cd604051809381936107e2565b03915af46105d961081c565b506107db565b5f80806105ae565b346101905760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905761061e610194565b73ffffffffffffffffffffffffffffffffffffffff807fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d5416916106638333146106ae565b807f62e5c7bc94de5ea5e81a993833d7bcc33b7809cca20e86d7b445afc340367afa5516907fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d5f80a3005b156106b557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616c6c6572206973206e6f742074686520476f7665726e6f720000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff808216801561077d577fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d918254167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a5f80a355565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e657720476f7665726e6f7220697320616464726573732830290000000000006044820152fd5b1561019057565b908092918237015f815290565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d156108845767ffffffffffffffff903d82811161087f57604051927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f85011601168401908482109082111761087f5760405282523d5f602084013e565b6107ef565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f808092368280378136915af43d82803e156108c5573d90f35b3d90fd5b73ffffffffffffffffffffffffffffffffffffffff906108e88161090f565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2565b803b1561093a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea264697066735822122070d1a8ae281281355221000565b62d05aa6fdacfee7021ebc8470a993ad281f364736f6c63430008140033

Deployed Bytecode

0x608060405260043610610889575f803560e01c9081630c340a24146101205781633659cfe614610099575080634f1ef286146100945780635c60da1b1461008f5780635d36b1901461008a578063c7af335214610085578063cf7a1d7714610080578063d38bfff41461007b5763f851a4400361088957610120565b6105e7565b6104d4565b610462565b610367565b6102f7565b610208565b3461011d5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261011d5761011a6100d3610194565b61011573ffffffffffffffffffffffffffffffffffffffff7fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b6108c9565b80f35b80fd5b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905760207fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b5f80fd5b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361019057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361019057565b9181601f840112156101905782359167ffffffffffffffff8311610190576020838186019501011161019057565b60407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905761023a610194565b60243567ffffffffffffffff81116101905761025a9036906004016101da565b9173ffffffffffffffffffffffffffffffffffffffff9061029f827fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b6102a88161090f565b5f938493849383167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2816040519283928337810184815203915af46102ee61081c565b501561011d5780f35b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905760207f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff60405191168152f35b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905773ffffffffffffffffffffffffffffffffffffffff7f62e5c7bc94de5ea5e81a993833d7bcc33b7809cca20e86d7b445afc340367afa541633036103de576103dc33610713565b005b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4f6e6c79207468652070656e64696e6720476f7665726e6f722063616e20636f60448201527f6d706c6574652074686520636c61696d000000000000000000000000000000006064820152fd5b34610190575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019057602073ffffffffffffffffffffffffffffffffffffffff7fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d54163314604051908152f35b60607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019057610506610194565b61050e6101b7565b60443567ffffffffffffffff81116101905761052e9036906004016101da565b73ffffffffffffffffffffffffffffffffffffffff939193610574817fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d541633146106ae565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416610190576103dc936105a88361090f565b816105b6575b505050610713565b6105df925f9283926105cd604051809381936107e2565b03915af46105d961081c565b506107db565b5f80806105ae565b346101905760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101905761061e610194565b73ffffffffffffffffffffffffffffffffffffffff807fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d5416916106638333146106ae565b807f62e5c7bc94de5ea5e81a993833d7bcc33b7809cca20e86d7b445afc340367afa5516907fa39cc5eb22d0f34d8beaefee8a3f17cc229c1a1d1ef87a5ad47313487b1c4f0d5f80a3005b156106b557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f43616c6c6572206973206e6f742074686520476f7665726e6f720000000000006044820152fd5b73ffffffffffffffffffffffffffffffffffffffff808216801561077d577fc232501c7029f9750c88e82f620bc3f6b6f947017928916333387ff7ffec4d3d918254167fc7c0c772add429241571afb3805861fb3cfa2af374534088b76cdb4325a87e9a5f80a355565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4e657720476f7665726e6f7220697320616464726573732830290000000000006044820152fd5b1561019057565b908092918237015f815290565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b3d156108845767ffffffffffffffff903d82811161087f57604051927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f81601f85011601168401908482109082111761087f5760405282523d5f602084013e565b6107ef565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545f808092368280378136915af43d82803e156108c5573d90f35b3d90fd5b73ffffffffffffffffffffffffffffffffffffffff906108e88161090f565b167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2565b803b1561093a577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603b60248201527f43616e6e6f742073657420612070726f787920696d706c656d656e746174696f60448201527f6e20746f2061206e6f6e2d636f6e7472616374206164647265737300000000006064820152fdfea264697066735822122070d1a8ae281281355221000565b62d05aa6fdacfee7021ebc8470a993ad281f364736f6c63430008140033

Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.