ETH Price: $2,636.21 (-3.67%)

Contract

0xE1A2E68C401378050fdba9704FA8BCb1f72b98f4
 

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Approve104537952024-10-23 21:03:25464 days ago1729717405IN
0xE1A2E68C...1f72b98f4
0 ETH0.000000150.00284862

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
76458632024-08-19 21:05:41529 days ago1724101541  Contract Creation0 ETH

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BlastWrappedCollateral

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
Yes with 200 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {BlastERC20RebasingYield} from "../Blast/BlastERC20RebasingYield.sol";
import {IAddressFinder} from "../Blast/interfaces/IAddressFinder.sol";
import {WrappedCollateral} from "./WrappedCollateral.sol";

contract BlastWrappedCollateral is WrappedCollateral, BlastERC20RebasingYield {
    IAddressFinder public immutable ADDRESS_FINDER;

    error NotYieldOperator();

    constructor(
        address _addressFinder,
        address _underlying,
        uint8 _decimals
    ) WrappedCollateral(_underlying, _decimals) BlastERC20RebasingYield(_addressFinder) {
        ADDRESS_FINDER = IAddressFinder(_addressFinder);
    }

    function claimYield(address wethReceiver, address usdbReceiver) external {
        if (ADDRESS_FINDER.getImplementationAddress("Governor") != msg.sender) {
            revert NotYieldOperator();
        }

        _claimERC20RebasingYield(wethReceiver, usdbReceiver);
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;

import {BlastNativeYield} from "./BlastNativeYield.sol";
import {IERC20Rebasing, YieldMode} from "./interfaces/IERC20Rebasing.sol";
import {IAddressFinder} from "./interfaces/IAddressFinder.sol";

/**
 * @title BlastERC20RebasingYield
 * @notice This contract is a base contract for inheriting functions to claim Blast WETH or USDB yield
 */
contract BlastERC20RebasingYield is BlastNativeYield {
    address public immutable WETH;
    address public immutable USDB;

    /**
     * @param addressFinder Blast address finder
     */
    constructor(address addressFinder) BlastNativeYield(addressFinder) {
        WETH = IAddressFinder(addressFinder).getImplementationAddress("WETH");
        USDB = IAddressFinder(addressFinder).getImplementationAddress("USDB");

        IERC20Rebasing(WETH).configure(YieldMode.CLAIMABLE);
        IERC20Rebasing(USDB).configure(YieldMode.CLAIMABLE);
    }

    /**
     * @notice Claim Blast yield. Guarding of the function is dependent on the inherited contract.
     *         Inheriting does not allow claiming by default.
     *         A public or external function is required in the child contract to access the _claim function.
     * @param wethReceiver The receiver of WETH.
     * @param usdbReceiver The receiver of USDB.
     */
    function _claimERC20RebasingYield(address wethReceiver, address usdbReceiver) internal {
        uint256 claimableWETH = IERC20Rebasing(WETH).getClaimableAmount(address(this));
        if (claimableWETH != 0) {
            IERC20Rebasing(WETH).claim(wethReceiver, claimableWETH);
        }

        uint256 claimableUSDB = IERC20Rebasing(USDB).getClaimableAmount(address(this));
        if (claimableUSDB != 0) {
            IERC20Rebasing(USDB).claim(usdbReceiver, claimableUSDB);
        }
    }
}

File 3 of 11 : BlastNativeYield.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;

import {IBlast, YieldMode, GasMode} from "./interfaces/IBlast.sol";
import {IAddressFinder} from "./interfaces/IAddressFinder.sol";
import {BlastPoints} from "./BlastPoints.sol";

/**
 * @title BlastNativeYield
 * @notice This contract is a base contract for inheriting functions to claim native yield and for those that wish to receive Blast points
 */
contract BlastNativeYield is BlastPoints {
    /**
     * @param addressFinder Blast address finder
     */
    constructor(address addressFinder) BlastPoints(addressFinder) {
        address blast = IAddressFinder(addressFinder).getImplementationAddress("Blast");
        address governor = IAddressFinder(addressFinder).getImplementationAddress("Governor");
        IBlast(blast).configure(YieldMode.CLAIMABLE, GasMode.CLAIMABLE, governor);
    }
}

File 4 of 11 : BlastPoints.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.8.24;

import {IBlastPoints} from "./interfaces/IBlastPoints.sol";
import {IAddressFinder} from "./interfaces/IAddressFinder.sol";

/**
 * @title BlastPoints
 * @notice This contract is a base for future contracts that wish to be recipients of Blast points to inherit from
 */
contract BlastPoints {
    /**
     * @param addressFinder Blast address finder
     */
    constructor(address addressFinder) {
        address blastPoints = IAddressFinder(addressFinder).getImplementationAddress("BlastPoints");
        address blastPointsOperator = IAddressFinder(addressFinder).getImplementationAddress("BlastPointsOperator");
        IBlastPoints(blastPoints).configurePointsOperator(blastPointsOperator);
    }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/**
 * @title Provides addresses of the live contracts implementing certain interfaces.
 * @dev Examples are the Oracle or Store interfaces.
 * @notice This is a straight fork of UMA's Finder contract and we are using it for non-contracts as well.
 */
interface IAddressFinder {
    /**
     * @notice Updates the address of the contract that implements `interfaceName`.
     * @param interfaceName bytes32 encoding of the interface name that is either changed or registered.
     * @param implementationAddress address of the deployed contract that implements the interface.
     */
    function changeImplementationAddress(bytes32 interfaceName, address implementationAddress) external;

    /**
     * @notice Gets the address of the contract that implements the given `interfaceName`.
     * @param interfaceName queried interface.
     * @return implementationAddress address of the deployed contract that implements the interface.
     */
    function getImplementationAddress(bytes32 interfaceName) external view returns (address);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

enum YieldMode {
    AUTOMATIC,
    VOID,
    CLAIMABLE
}

enum GasMode {
    VOID,
    CLAIMABLE
}

interface IBlast {
    // configure
    function configureContract(address contractAddress, YieldMode _yield, GasMode gasMode, address governor) external;

    function configure(YieldMode _yield, GasMode gasMode, address governor) external;

    // base configuration options
    function configureClaimableYield() external;

    function configureClaimableYieldOnBehalf(address contractAddress) external;

    function configureAutomaticYield() external;

    function configureAutomaticYieldOnBehalf(address contractAddress) external;

    function configureVoidYield() external;

    function configureVoidYieldOnBehalf(address contractAddress) external;

    function configureClaimableGas() external;

    function configureClaimableGasOnBehalf(address contractAddress) external;

    function configureVoidGas() external;

    function configureVoidGasOnBehalf(address contractAddress) external;

    function configureGovernor(address _governor) external;

    function configureGovernorOnBehalf(address _newGovernor, address contractAddress) external;

    // claim yield
    function claimYield(address contractAddress, address recipientOfYield, uint256 amount) external returns (uint256);

    function claimAllYield(address contractAddress, address recipientOfYield) external returns (uint256);

    // claim gas
    function claimAllGas(address contractAddress, address recipientOfGas) external returns (uint256);

    function claimGasAtMinClaimRate(
        address contractAddress,
        address recipientOfGas,
        uint256 minClaimRateBips
    ) external returns (uint256);

    function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);

    function claimGas(
        address contractAddress,
        address recipientOfGas,
        uint256 gasToClaim,
        uint256 gasSecondsToConsume
    ) external returns (uint256);

    // read functions
    function readClaimableYield(address contractAddress) external view returns (uint256);

    function readYieldConfiguration(address contractAddress) external view returns (uint8);

    function readGasParams(
        address contractAddress
    ) external view returns (uint256 etherSeconds, uint256 etherBalance, uint256 lastUpdated, GasMode);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

interface IBlastPoints {
    function configurePointsOperator(address operator) external;
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

enum YieldMode {
    AUTOMATIC,
    VOID,
    CLAIMABLE
}

interface IERC20Rebasing {
    // changes the yield mode of the caller and update the balance
    // to reflect the configuration
    function configure(YieldMode) external returns (uint256);

    // "claimable" yield mode accounts can call this this claim their yield
    // to another address
    function claim(address recipient, uint256 amount) external returns (uint256);

    // read the claimable amount for an account
    function getClaimableAmount(address account) external view returns (uint256);
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {ERC20} from "solmate/src/tokens/ERC20.sol";
import {SafeTransferLib} from "solmate/src/utils/SafeTransferLib.sol";

/// @title IWrappedCollateralEE
/// @notice WrappedCollateral Errors and Events
interface IWrappedCollateralEE {
    error OnlyOwner();
}

string constant NAME = "Wrapped Collateral";
string constant SYMBOL = "WCOL";

/// @title WrappedCollateral
/// @notice Wraps an ERC20 token to be used as collateral in the CTF
contract WrappedCollateral is IWrappedCollateralEE, ERC20 {
    using SafeTransferLib for ERC20;

    /*//////////////////////////////////////////////////////////////
                                 STATE
    //////////////////////////////////////////////////////////////*/

    address public immutable owner;
    address public immutable underlying;

    /*//////////////////////////////////////////////////////////////
                               MODIFIERS
    //////////////////////////////////////////////////////////////*/

    modifier onlyOwner() {
        if (msg.sender != owner) revert OnlyOwner();
        _;
    }

    /*//////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    /// @param _underlying The address of the underlying ERC20 token
    /// @param _decimals The number of decimals of the underlying ERC20 token
    constructor(address _underlying, uint8 _decimals) ERC20(NAME, SYMBOL, _decimals) {
        owner = msg.sender;
        underlying = _underlying;
    }

    /*//////////////////////////////////////////////////////////////
                                 UNWRAP
    //////////////////////////////////////////////////////////////*/

    /// @notice Unwraps the specified amount of tokens
    /// @param _to The address to send the unwrapped tokens to
    /// @param _amount The amount of tokens to unwrap
    function unwrap(address _to, uint256 _amount) external {
        _burn(msg.sender, _amount);
        ERC20(underlying).safeTransfer(_to, _amount);
    }

    /*//////////////////////////////////////////////////////////////
                                 ADMIN
    //////////////////////////////////////////////////////////////*/

    /// @notice Wraps the specified amount of tokens
    /// @notice Can only be called by the owner
    /// @param _to     - the address to send the wrapped tokens to
    /// @param _amount - the amount of tokens to wrap
    function wrap(address _to, uint256 _amount) external onlyOwner {
        ERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        _mint(_to, _amount);
    }

    /// @notice Burns the specified amount of tokens
    /// @notice Can only be called by the owner
    /// @param _amount - the amount of tokens to burn
    function burn(uint256 _amount) external onlyOwner {
        _burn(msg.sender, _amount);
    }

    /// @notice Mints the specified amount of tokens
    /// @notice Can only be called by the owner
    /// @param _amount - the amount of tokens to mint
    function mint(uint256 _amount) external onlyOwner {
        _mint(msg.sender, _amount);
    }

    /// @notice Releases the specified amount of the underlying token
    /// @notice Can only be called by the owner
    /// @param _to     - the address to send the released tokens to
    /// @param _amount - the amount of tokens to release
    function release(address _to, uint256 _amount) external onlyOwner {
        ERC20(underlying).safeTransfer(_to, _amount);
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

/// @notice Modern and gas efficient ERC20 + EIP-2612 implementation.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/tokens/ERC20.sol)
/// @author Modified from Uniswap (https://github.com/Uniswap/uniswap-v2-core/blob/master/contracts/UniswapV2ERC20.sol)
/// @dev Do not manually set balances without updating totalSupply, as the sum of all user balances must not exceed it.
abstract contract ERC20 {
    /*//////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 amount);

    event Approval(address indexed owner, address indexed spender, uint256 amount);

    /*//////////////////////////////////////////////////////////////
                            METADATA STORAGE
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;

    uint8 public immutable decimals;

    /*//////////////////////////////////////////////////////////////
                              ERC20 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 public totalSupply;

    mapping(address => uint256) public balanceOf;

    mapping(address => mapping(address => uint256)) public allowance;

    /*//////////////////////////////////////////////////////////////
                            EIP-2612 STORAGE
    //////////////////////////////////////////////////////////////*/

    uint256 internal immutable INITIAL_CHAIN_ID;

    bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;

    mapping(address => uint256) public nonces;

    /*//////////////////////////////////////////////////////////////
                               CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(
        string memory _name,
        string memory _symbol,
        uint8 _decimals
    ) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;

        INITIAL_CHAIN_ID = block.chainid;
        INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
    }

    /*//////////////////////////////////////////////////////////////
                               ERC20 LOGIC
    //////////////////////////////////////////////////////////////*/

    function approve(address spender, uint256 amount) public virtual returns (bool) {
        allowance[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);

        return true;
    }

    function transfer(address to, uint256 amount) public virtual returns (bool) {
        balanceOf[msg.sender] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(msg.sender, to, amount);

        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual returns (bool) {
        uint256 allowed = allowance[from][msg.sender]; // Saves gas for limited approvals.

        if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount;

        balanceOf[from] -= amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(from, to, amount);

        return true;
    }

    /*//////////////////////////////////////////////////////////////
                             EIP-2612 LOGIC
    //////////////////////////////////////////////////////////////*/

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        require(deadline >= block.timestamp, "PERMIT_DEADLINE_EXPIRED");

        // Unchecked because the only math done is incrementing
        // the owner's nonce which cannot realistically overflow.
        unchecked {
            address recoveredAddress = ecrecover(
                keccak256(
                    abi.encodePacked(
                        "\x19\x01",
                        DOMAIN_SEPARATOR(),
                        keccak256(
                            abi.encode(
                                keccak256(
                                    "Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
                                ),
                                owner,
                                spender,
                                value,
                                nonces[owner]++,
                                deadline
                            )
                        )
                    )
                ),
                v,
                r,
                s
            );

            require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNER");

            allowance[recoveredAddress][spender] = value;
        }

        emit Approval(owner, spender, value);
    }

    function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
        return block.chainid == INITIAL_CHAIN_ID ? INITIAL_DOMAIN_SEPARATOR : computeDomainSeparator();
    }

    function computeDomainSeparator() internal view virtual returns (bytes32) {
        return
            keccak256(
                abi.encode(
                    keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                    keccak256(bytes(name)),
                    keccak256("1"),
                    block.chainid,
                    address(this)
                )
            );
    }

    /*//////////////////////////////////////////////////////////////
                        INTERNAL MINT/BURN LOGIC
    //////////////////////////////////////////////////////////////*/

    function _mint(address to, uint256 amount) internal virtual {
        totalSupply += amount;

        // Cannot overflow because the sum of all user
        // balances can't exceed the max uint256 value.
        unchecked {
            balanceOf[to] += amount;
        }

        emit Transfer(address(0), to, amount);
    }

    function _burn(address from, uint256 amount) internal virtual {
        balanceOf[from] -= amount;

        // Cannot underflow because a user's balance
        // will never be larger than the total supply.
        unchecked {
            totalSupply -= amount;
        }

        emit Transfer(from, address(0), amount);
    }
}

// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity >=0.8.0;

import {ERC20} from "../tokens/ERC20.sol";

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
/// @dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller.
library SafeTransferLib {
    /*//////////////////////////////////////////////////////////////
                             ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Transfer the ETH and store if it succeeded or not.
            success := call(gas(), to, amount, 0, 0, 0, 0)
        }

        require(success, "ETH_TRANSFER_FAILED");
    }

    /*//////////////////////////////////////////////////////////////
                            ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        ERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(from, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "from" argument.
            mstore(add(freeMemoryPointer, 36), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 100 because the length of our calldata totals up like so: 4 + 32 * 3.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 100, 0, 32)
            )
        }

        require(success, "TRANSFER_FROM_FAILED");
    }

    function safeTransfer(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        require(success, "TRANSFER_FAILED");
    }

    function safeApprove(
        ERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), and(to, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument. Masking not required as it's a full 32 byte type.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        require(success, "APPROVE_FAILED");
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_addressFinder","type":"address"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"uint8","name":"_decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotYieldOperator","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADDRESS_FINDER","outputs":[{"internalType":"contract IAddressFinder","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDB","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wethReceiver","type":"address"},{"internalType":"address","name":"usdbReceiver","type":"address"}],"name":"claimYield","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"release","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unwrap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"wrap","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6101806040818152346200050d57600060608362001cdb80380380916200002782856200098a565b83398101031262000941576200003d83620009ae565b91602090806200004f838701620009ae565b9501519160ff8316830362000686578151946200006c866200096e565b601286527115dc985c1c19590810dbdb1b185d195c985b60721b8287015282519462000098866200096e565b60048087526315d0d3d360e21b8488015287516001600160401b039891969190898111620008695780620000cd8554620009c3565b92601f93848111620008f0575b508790848311600114620008885786926200087c575b50508160011b916000199060031b1c19161783555b87519089821162000869578190600199620001218b54620009c3565b82811162000814575b5087918311600114620007b0578592620007a4575b5050600019600383901b1c191690881b1787555b6080524660a052835181549082816200016c84620009c3565b9182825287820194888c821691826000146200078757505060011462000746575b6200019b925003826200098a565b51902094845195848701907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8252868801527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608801524660808801523060a088015260a0875260c0870198878a10908a111762000733578886528651902060c0523360e0526101009889526302abf57960e61b8089526a426c617374506f696e747360a81b60c48801526024986001600160a01b039485169891979086818c818d5afa918215620005575787908693620006f4575b5050508651908882527f426c617374506f696e74734f70657261746f72000000000000000000000000008483015286828c818d5afa91821562000557579086918693620006b2575b501690813b156200060957858b8692838b5195869485936336b91f2b60e01b855216898401525af1801562000692576200069c575b5085519087825264109b185cdd60da1b8383015285828b818c5afa918215620006925784926200064f575b508651918883526723b7bb32b93737b960c11b8484015286838c818d5afa928315620005575790869186946200060d575b5016803b1562000609579060648b868094898c51978896879563c8992e6160e01b875260028c8801528601521660448401525af18015620005a457908391620005ed575b5050845197868952630ae8aa8960e31b828a0152848982818b5afa988915620005a4578399620005ae575b506101209889528551968752632aa9a22160e11b82880152848782818b5afa968715620005a457839762000561575b50610140968752838951169386518681848188631a33757d60e01b9a8b835260028a8401525af18015620005575790879493929162000525575b5094846002968a51168951978895869485528401525af19081156200051a5750620004e6575b505061016092835251926112da948562000a01863960805185610c1b015260a05185610fd3015260c05185610ffa015260e05185818161041d015281816108ce01528181610a0d01528181610b060152610e5901525184818161046b01528181610ac101528181610b6c0152610e8c01525183818161050c01526106460152518281816106a10152610bd201525181818161013501526106030152f35b813d831162000512575b620004fc81836200098a565b810103126200050d57388062000449565b600080fd5b503d620004f0565b8451903d90823e3d90fd5b8491943d83116200054f575b6200053d81836200098a565b810103126200050d5785923862000423565b503d62000531565b88513d87823e3d90fd5b9096508481813d83116200059c575b6200057c81836200098a565b8101031262000598576200059090620009ae565b9538620003e9565b8280fd5b503d62000570565b86513d85823e3d90fd5b9098508481813d8311620005e5575b620005c981836200098a565b810103126200059857620005dd90620009ae565b9738620003ba565b503d620005bd565b620005f89062000944565b620006055781386200038f565b5080fd5b8480fd5b88809295508193503d831162000647575b6200062a81836200098a565b8101031262000609576200063f8691620009ae565b92386200034b565b503d6200061e565b9091508581813d83116200068a575b6200066a81836200098a565b8101031262000686576200067e90620009ae565b90386200031a565b8380fd5b503d6200065e565b87513d86823e3d90fd5b620006aa9093919362000944565b9138620002ef565b88809294508193503d8311620006ec575b620006cf81836200098a565b810103126200060957620006e48691620009ae565b9138620002ba565b503d620006c3565b90809293503d83116200072b575b6200070e81856200098a565b8101031262000686576200072290620009ae565b38868162000272565b503d62000702565b634e487b7160e01b835260418252602483fd5b505083805281868086208b87915b8583106200076d5750506200019b93508201016200018d565b80919294505483858801015201910187908b859362000754565b60ff191687526200019b94151560051b84010191506200018d9050565b0151905038806200013f565b8a86528786208b94509190601f198416875b8a828210620007fd5750508411620007e3575b505050811b01875562000153565b015160001960f88460031b161c19169055388080620007d5565b8385015186558e97909501949384019301620007c2565b909192508a86528786208380860160051c8201928a87106200085f575b9186958e929594930160051c01915b828110620008505750506200012a565b8881558695508d910162000840565b9250819262000831565b634e487b7160e01b845260418852602484fd5b015190503880620000f0565b8680528887209250601f198416875b8a828210620008d9575050908460019594939210620008bf575b505050811b01835562000105565b015160001960f88460031b161c19169055388080620008b1565b600185968293968601518155019501930162000897565b9091508580528786208480850160051c8201928a861062000937575b9085949392910160051c01905b818110620009285750620000da565b87815584935060010162000919565b925081926200090c565b80fd5b6001600160401b0381116200095857604052565b634e487b7160e01b600052604160045260246000fd5b604081019081106001600160401b038211176200095857604052565b601f909101601f19168101906001600160401b038211908210176200095857604052565b51906001600160a01b03821682036200050d57565b90600182811c92168015620009f5575b6020831014620009df57565b634e487b7160e01b600052602260045260246000fd5b91607f1691620009d356fe608060408181526004918236101561001657600080fd5b600092833560e01c9182630357371d14610e345750816306fdde0314610d8e578163095ea7b314610d1f57816318160ddd14610d0057816323b872dd14610c3f578163313ce56714610c0157816331a0edec14610bbd5781633644e51514610b9957816339f4769314610b4057816342966c6814610af05781636f307dc314610aac57816370a0823114610a745781637ecebe0014610a3c5781638da5cb5b146109f857816395d89b4114610915578163a0712d68146108b8578163a53da0a0146105ad578163a9059cbb1461053b578163ad5c4648146104f7578163bf376c7a146103f4578163d505accf146101b5578163dd62ed3e14610168575063f7c94e871461012257600080fd5b34610164578160031936011261016457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5080fd5b9050346101b157816003193601126101b1576020928291610187610ebf565b61018f610eda565b6001600160a01b03918216845291865283832091168252845220549051908152f35b8280fd5b8383346101645760e0366003190112610164576101d0610ebf565b906101d9610eda565b91604435606435926084359260ff84168094036103f0574285106103ad576101ff610fce565b9560018060a01b038092169586895260209560058752848a209889549960018b01905585519285898501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528b89870152169a8b606086015288608086015260a085015260c084015260c0835260e0830167ffffffffffffffff9484821086831117610399578188528451902061010085019261190160f01b8452610102860152610122850152604281526101608401948186109086111761038657848752519020835261018082015260a4356101a082015260c4356101c0909101528780528490889060809060015afa1561037c578651169687151580610373575b156103415786977f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596975283528087208688528352818188205551908152a380f35b83606492519162461bcd60e51b8352820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152fd5b508488146102fe565b81513d88823e3d90fd5b634e487b7160e01b8c5260418d5260248cfd5b50634e487b7160e01b8c5260418d5260248cfd5b815162461bcd60e51b81526020818a0152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b8680fd5b8391503461016457826003193601126101645761040f610ebf565b602435916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811633036104e857846064602092828951916323b872dd60e01b835233878401523060248401528860448401527f0000000000000000000000000000000000000000000000000000000000000000165af13d15601f3d116001875114161716156104ae5750906104ab9161123b565b80f35b606490602086519162461bcd60e51b835282015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152fd5b508451635fc483c560e01b8152fd5b505034610164578160031936011261016457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b505034610164578060031936011261016457602091610558610ebf565b826024359133845260038652818420610572848254610fab565b90556001600160a01b031680845260038652922080548201905582519081523390600080516020611285833981519152908590a35160018152f35b839150346101645782600319360112610164576105c8610ebf565b926105d1610eda565b81516302abf57960e61b81526723b7bb32b93737b960c11b818501526001600160a01b039560209492909185816024817f00000000000000000000000000000000000000000000000000000000000000008c165afa9081156108ae578791610878575b508733911603610868578686979695967f00000000000000000000000000000000000000000000000000000000000000001692855163e12f3a6160e01b9485825230878301528982602481845afa91821561085e57908a92918a92610829575b50816107ac575b505050507f00000000000000000000000000000000000000000000000000000000000000001690845192835230848401528683602481855afa9283156107a257869361076f575b50826106ec578580f35b8451635569f64b60e11b81526001600160a01b039091169381019384526020840192909252909385928592918391829060400103925af1908115610766575061073a575b8080808086948580f35b813d831161075f575b61074d8183610f2a565b8101031261075c578180610730565b80fd5b503d610743565b513d85823e3d90fd5b9092508681813d831161079b575b6107878183610f2a565b81010312610797575191886106e2565b8580fd5b503d61077d565b85513d88823e3d90fd5b8851635569f64b60e11b81526001600160a01b039094168885019081526020810192909252839182908b90829060400103925af1801561081f579088916107f6575b80829161069b565b813d8311610818575b6108098183610f2a565b810103126107975786896107ee565b503d6107ff565b86513d89823e3d90fd5b8381949293503d8311610857575b6108418183610f2a565b8101031261085357899151908c610694565b8880fd5b503d610837565b88513d8b823e3d90fd5b8351630fb48b4b60e31b81528390fd5b90508581813d83116108a7575b61088f8183610f2a565b810103126103f0575187811681036103f05788610634565b503d610885565b85513d89823e3d90fd5b919050346101b15760203660031901126101b1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361090857506104ab90353361123b565b51635fc483c560e01b8152fd5b82843461075c578060031936011261075c5781519080600180549061093982610ef0565b80865292602092600181169081156109cb5750600114610973575b61096f868861096582890383610f2a565b5191829182610f62565b0390f35b9350600184527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8385106109b8575050505081016020016109658261096f86610954565b805486860184015293820193810161099b565b905061096f9795508693506020925061096594915060ff191682840152151560051b820101929486610954565b505034610164578160031936011261016457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346101645760203660031901126101645760209181906001600160a01b03610a64610ebf565b1681526005845220549051908152f35b5050346101645760203660031901126101645760209181906001600160a01b03610a9c610ebf565b1681526003845220549051908152f35b505034610164578160031936011261016457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b919050346101b15760203660031901126101b1577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361090857506104ab9035336111f4565b5050346101645736600319011261075c576104ab610b5c610ebf565b60243590610b6a82336111f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611175565b505034610164578160031936011261016457602090610bb6610fce565b9051908152f35b505034610164578160031936011261016457517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5050346101645781600319360112610164576020905160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b82843461075c57606036600319011261075c57610c5a610ebf565b600080516020611285833981519152610c71610eda565b6001600160a01b0392831680855260208781528686203387528152868620549097919488936044359389938560018201610cdd575b50505086885260038552828820610cbe858254610fab565b9055169586815260038452208181540190558551908152a35160018152f35b610ce691610fab565b90888a528652838920338a528652838920558a8085610ca6565b5050346101645781600319360112610164576020906002549051908152f35b9050346101b157816003193601126101b157602092610d3c610ebf565b918360243592839233825287528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b82843461075c578060031936011261075c5781519080805490610db082610ef0565b808552916020916001918281169081156109cb5750600114610ddd5761096f868861096582890383610f2a565b80809550527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b838510610e21575050505081016020016109658261096f86610954565b8054868601840152938201938101610e04565b849084346101b15736600319011261016457610e4e610ebf565b6001600160a01b03917f000000000000000000000000000000000000000000000000000000000000000083163303610eb15750906104ab91602435917f000000000000000000000000000000000000000000000000000000000000000016611175565b635fc483c560e01b81528490fd5b600435906001600160a01b0382168203610ed557565b600080fd5b602435906001600160a01b0382168203610ed557565b90600182811c92168015610f20575b6020831014610f0a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691610eff565b90601f8019910116810190811067ffffffffffffffff821117610f4c57604052565b634e487b7160e01b600052604160045260246000fd5b6020808252825181830181905290939260005b828110610f9757505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610f75565b91908203918211610fb857565b634e487b7160e01b600052601160045260246000fd5b6000467f00000000000000000000000000000000000000000000000000000000000000000361101c57507f000000000000000000000000000000000000000000000000000000000000000090565b6040518154829161102c82610ef0565b8082528160209485820194600190876001821691826000146111575750506001146110fe575b5061105f92500382610f2a565b51902091604051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f845260408301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019082821067ffffffffffffffff8311176110ea575060405251902090565b634e487b7160e01b81526041600452602490fd5b87805286915087907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061113f57505061105f935082010138611052565b80548388018501528694508893909201918101611128565b60ff1916885261105f95151560051b85010192503891506110529050565b60405163a9059cbb60e01b81526001600160a01b039092166004830152602482019290925260209160009160449183905af13d15601f3d11600160005114161716156111bd57565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b90600080516020611285833981519152602060009360018060a01b0316928385526003825260408520611228828254610fab565b90558060025403600255604051908152a3565b60025490828201809211610fb85760206000805160206112858339815191529160009360025560018060a01b0316938484526003825260408420818154019055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c11da8a87f13743bcf660aad6e18a8290e1a762918b193f4e933a9290ef158da64736f6c63430008180033000000000000000000000000c31bb90ee75706911faf6b831699026e5eb6f24a00000000000000000000000043000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000012

Deployed Bytecode

0x608060408181526004918236101561001657600080fd5b600092833560e01c9182630357371d14610e345750816306fdde0314610d8e578163095ea7b314610d1f57816318160ddd14610d0057816323b872dd14610c3f578163313ce56714610c0157816331a0edec14610bbd5781633644e51514610b9957816339f4769314610b4057816342966c6814610af05781636f307dc314610aac57816370a0823114610a745781637ecebe0014610a3c5781638da5cb5b146109f857816395d89b4114610915578163a0712d68146108b8578163a53da0a0146105ad578163a9059cbb1461053b578163ad5c4648146104f7578163bf376c7a146103f4578163d505accf146101b5578163dd62ed3e14610168575063f7c94e871461012257600080fd5b34610164578160031936011261016457517f000000000000000000000000c31bb90ee75706911faf6b831699026e5eb6f24a6001600160a01b03168152602090f35b5080fd5b9050346101b157816003193601126101b1576020928291610187610ebf565b61018f610eda565b6001600160a01b03918216845291865283832091168252845220549051908152f35b8280fd5b8383346101645760e0366003190112610164576101d0610ebf565b906101d9610eda565b91604435606435926084359260ff84168094036103f0574285106103ad576101ff610fce565b9560018060a01b038092169586895260209560058752848a209889549960018b01905585519285898501957f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c987528b89870152169a8b606086015288608086015260a085015260c084015260c0835260e0830167ffffffffffffffff9484821086831117610399578188528451902061010085019261190160f01b8452610102860152610122850152604281526101608401948186109086111761038657848752519020835261018082015260a4356101a082015260c4356101c0909101528780528490889060809060015afa1561037c578651169687151580610373575b156103415786977f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259596975283528087208688528352818188205551908152a380f35b83606492519162461bcd60e51b8352820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152fd5b508488146102fe565b81513d88823e3d90fd5b634e487b7160e01b8c5260418d5260248cfd5b50634e487b7160e01b8c5260418d5260248cfd5b815162461bcd60e51b81526020818a0152601760248201527f5045524d49545f444541444c494e455f455850495245440000000000000000006044820152606490fd5b8680fd5b8391503461016457826003193601126101645761040f610ebf565b602435916001600160a01b037f000000000000000000000000c55687812285d05b74815ee2716d046faf61b003811633036104e857846064602092828951916323b872dd60e01b835233878401523060248401528860448401527f0000000000000000000000004300000000000000000000000000000000000003165af13d15601f3d116001875114161716156104ae5750906104ab9161123b565b80f35b606490602086519162461bcd60e51b835282015260146024820152731514905394d1915497d19493d357d1905253115160621b6044820152fd5b508451635fc483c560e01b8152fd5b505034610164578160031936011261016457517f00000000000000000000000043000000000000000000000000000000000000046001600160a01b03168152602090f35b505034610164578060031936011261016457602091610558610ebf565b826024359133845260038652818420610572848254610fab565b90556001600160a01b031680845260038652922080548201905582519081523390600080516020611285833981519152908590a35160018152f35b839150346101645782600319360112610164576105c8610ebf565b926105d1610eda565b81516302abf57960e61b81526723b7bb32b93737b960c11b818501526001600160a01b039560209492909185816024817f000000000000000000000000c31bb90ee75706911faf6b831699026e5eb6f24a8c165afa9081156108ae578791610878575b508733911603610868578686979695967f00000000000000000000000043000000000000000000000000000000000000041692855163e12f3a6160e01b9485825230878301528982602481845afa91821561085e57908a92918a92610829575b50816107ac575b505050507f00000000000000000000000043000000000000000000000000000000000000031690845192835230848401528683602481855afa9283156107a257869361076f575b50826106ec578580f35b8451635569f64b60e11b81526001600160a01b039091169381019384526020840192909252909385928592918391829060400103925af1908115610766575061073a575b8080808086948580f35b813d831161075f575b61074d8183610f2a565b8101031261075c578180610730565b80fd5b503d610743565b513d85823e3d90fd5b9092508681813d831161079b575b6107878183610f2a565b81010312610797575191886106e2565b8580fd5b503d61077d565b85513d88823e3d90fd5b8851635569f64b60e11b81526001600160a01b039094168885019081526020810192909252839182908b90829060400103925af1801561081f579088916107f6575b80829161069b565b813d8311610818575b6108098183610f2a565b810103126107975786896107ee565b503d6107ff565b86513d89823e3d90fd5b8381949293503d8311610857575b6108418183610f2a565b8101031261085357899151908c610694565b8880fd5b503d610837565b88513d8b823e3d90fd5b8351630fb48b4b60e31b81528390fd5b90508581813d83116108a7575b61088f8183610f2a565b810103126103f0575187811681036103f05788610634565b503d610885565b85513d89823e3d90fd5b919050346101b15760203660031901126101b1577f000000000000000000000000c55687812285d05b74815ee2716d046faf61b0036001600160a01b0316330361090857506104ab90353361123b565b51635fc483c560e01b8152fd5b82843461075c578060031936011261075c5781519080600180549061093982610ef0565b80865292602092600181169081156109cb5750600114610973575b61096f868861096582890383610f2a565b5191829182610f62565b0390f35b9350600184527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b8385106109b8575050505081016020016109658261096f86610954565b805486860184015293820193810161099b565b905061096f9795508693506020925061096594915060ff191682840152151560051b820101929486610954565b505034610164578160031936011261016457517f000000000000000000000000c55687812285d05b74815ee2716d046faf61b0036001600160a01b03168152602090f35b5050346101645760203660031901126101645760209181906001600160a01b03610a64610ebf565b1681526005845220549051908152f35b5050346101645760203660031901126101645760209181906001600160a01b03610a9c610ebf565b1681526003845220549051908152f35b505034610164578160031936011261016457517f00000000000000000000000043000000000000000000000000000000000000036001600160a01b03168152602090f35b919050346101b15760203660031901126101b1577f000000000000000000000000c55687812285d05b74815ee2716d046faf61b0036001600160a01b0316330361090857506104ab9035336111f4565b5050346101645736600319011261075c576104ab610b5c610ebf565b60243590610b6a82336111f4565b7f00000000000000000000000043000000000000000000000000000000000000036001600160a01b0316611175565b505034610164578160031936011261016457602090610bb6610fce565b9051908152f35b505034610164578160031936011261016457517f00000000000000000000000043000000000000000000000000000000000000036001600160a01b03168152602090f35b5050346101645781600319360112610164576020905160ff7f0000000000000000000000000000000000000000000000000000000000000012168152f35b82843461075c57606036600319011261075c57610c5a610ebf565b600080516020611285833981519152610c71610eda565b6001600160a01b0392831680855260208781528686203387528152868620549097919488936044359389938560018201610cdd575b50505086885260038552828820610cbe858254610fab565b9055169586815260038452208181540190558551908152a35160018152f35b610ce691610fab565b90888a528652838920338a528652838920558a8085610ca6565b5050346101645781600319360112610164576020906002549051908152f35b9050346101b157816003193601126101b157602092610d3c610ebf565b918360243592839233825287528181209460018060a01b0316948582528752205582519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925843392a35160018152f35b82843461075c578060031936011261075c5781519080805490610db082610ef0565b808552916020916001918281169081156109cb5750600114610ddd5761096f868861096582890383610f2a565b80809550527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b838510610e21575050505081016020016109658261096f86610954565b8054868601840152938201938101610e04565b849084346101b15736600319011261016457610e4e610ebf565b6001600160a01b03917f000000000000000000000000c55687812285d05b74815ee2716d046faf61b00383163303610eb15750906104ab91602435917f000000000000000000000000430000000000000000000000000000000000000316611175565b635fc483c560e01b81528490fd5b600435906001600160a01b0382168203610ed557565b600080fd5b602435906001600160a01b0382168203610ed557565b90600182811c92168015610f20575b6020831014610f0a57565b634e487b7160e01b600052602260045260246000fd5b91607f1691610eff565b90601f8019910116810190811067ffffffffffffffff821117610f4c57604052565b634e487b7160e01b600052604160045260246000fd5b6020808252825181830181905290939260005b828110610f9757505060409293506000838284010152601f8019910116010190565b818101860151848201604001528501610f75565b91908203918211610fb857565b634e487b7160e01b600052601160045260246000fd5b6000467f0000000000000000000000000000000000000000000000000000000000013e310361101c57507f119af3e668ed51b4caaf2e140d47ce1c334daf1a1acc9910cd35df9ebfb28f3090565b6040518154829161102c82610ef0565b8082528160209485820194600190876001821691826000146111575750506001146110fe575b5061105f92500382610f2a565b51902091604051918201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f845260408301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a083015260a0825260c082019082821067ffffffffffffffff8311176110ea575060405251902090565b634e487b7160e01b81526041600452602490fd5b87805286915087907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b85831061113f57505061105f935082010138611052565b80548388018501528694508893909201918101611128565b60ff1916885261105f95151560051b85010192503891506110529050565b60405163a9059cbb60e01b81526001600160a01b039092166004830152602482019290925260209160009160449183905af13d15601f3d11600160005114161716156111bd57565b60405162461bcd60e51b815260206004820152600f60248201526e1514905394d1915497d19052531151608a1b6044820152606490fd5b90600080516020611285833981519152602060009360018060a01b0316928385526003825260408520611228828254610fab565b90558060025403600255604051908152a3565b60025490828201809211610fb85760206000805160206112858339815191529160009360025560018060a01b0316938484526003825260408420818154019055604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c11da8a87f13743bcf660aad6e18a8290e1a762918b193f4e933a9290ef158da64736f6c63430008180033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c31bb90ee75706911faf6b831699026e5eb6f24a00000000000000000000000043000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000012

-----Decoded View---------------
Arg [0] : _addressFinder (address): 0xc31BB90Ee75706911faf6b831699026e5eB6f24a
Arg [1] : _underlying (address): 0x4300000000000000000000000000000000000003
Arg [2] : _decimals (uint8): 18

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000c31bb90ee75706911faf6b831699026e5eb6f24a
Arg [1] : 0000000000000000000000004300000000000000000000000000000000000003
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012


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.