ETH Price: $4,006.00 (+1.32%)

Contract

0x75B7B44dCD28df0beda913Ae2809ede986e8F461
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
0x94de1e8cd0bfbcd3e6ac971354ea8d9741fd62c5b6e99c40e0edf74945b38c8c Migrate And Stak...(pending)2024-12-15 1:50:162 days ago1734227416IN
Syrup: mpl User Actions
0 ETH(Pending)(Pending)
Migrate And Stak...214193242024-12-17 2:39:592 hrs ago1734403199IN
Syrup: mpl User Actions
0 ETH0.0029041213.66768411
Migrate And Stak...214190212024-12-17 1:38:593 hrs ago1734399539IN
Syrup: mpl User Actions
0 ETH0.001972499.28315808
Migrate And Stak...214189922024-12-17 1:33:113 hrs ago1734399191IN
Syrup: mpl User Actions
0 ETH0.0021540110.13697079
Migrate And Stak...214188572024-12-17 1:05:593 hrs ago1734397559IN
Syrup: mpl User Actions
0 ETH0.0024023311.30659522
Migrate And Stak...214182082024-12-16 22:55:476 hrs ago1734389747IN
Syrup: mpl User Actions
0 ETH0.002823713.28859785
Migrate And Stak...214180792024-12-16 22:29:476 hrs ago1734388187IN
Syrup: mpl User Actions
0 ETH0.002650512.4734744
Migrate And Stak...214180472024-12-16 22:23:236 hrs ago1734387803IN
Syrup: mpl User Actions
0 ETH0.0035504716.70959745
Migrate And Stak...214172882024-12-16 19:51:239 hrs ago1734378683IN
Syrup: mpl User Actions
0 ETH0.004367623.59199476
Migrate And Stak...214171522024-12-16 19:24:119 hrs ago1734377051IN
Syrup: mpl User Actions
0 ETH0.0065509130.82914387
Migrate And Stak...214160682024-12-16 15:46:3513 hrs ago1734363995IN
Syrup: mpl User Actions
0 ETH0.0037707320.36904722
Migrate And Stak...214154282024-12-16 13:38:2315 hrs ago1734356303IN
Syrup: mpl User Actions
0 ETH0.0028257113.29921447
Migrate And Stak...214153272024-12-16 13:18:1115 hrs ago1734355091IN
Syrup: mpl User Actions
0 ETH0.0027873213.11800379
Migrate And Stak...214146802024-12-16 11:08:2317 hrs ago1734347303IN
Syrup: mpl User Actions
0 ETH0.0033631115.82783705
Migrate And Stak...214145412024-12-16 10:40:2318 hrs ago1734345623IN
Syrup: mpl User Actions
0 ETH0.0026718112.57378808
Migrate And Stak...214143512024-12-16 10:02:1118 hrs ago1734343331IN
Syrup: mpl User Actions
0 ETH0.002337911.00287848
Migrate And Stak...214135692024-12-16 7:25:1121 hrs ago1734333911IN
Syrup: mpl User Actions
0 ETH0.001676147.88879215
Migrate And Stak...214135492024-12-16 7:21:1121 hrs ago1734333671IN
Syrup: mpl User Actions
0 ETH0.001672877.87235678
Migrate And Stak...214135212024-12-16 7:15:3521 hrs ago1734333335IN
Syrup: mpl User Actions
0 ETH0.001820988.56972608
Migrate And Stak...214133332024-12-16 6:37:2322 hrs ago1734331043IN
Syrup: mpl User Actions
0 ETH0.001602817.54332244
Migrate And Stak...214125532024-12-16 4:00:3525 hrs ago1734321635IN
Syrup: mpl User Actions
0 ETH0.002168110.20326927
Migrate And Stak...214119402024-12-16 1:57:1127 hrs ago1734314231IN
Syrup: mpl User Actions
0 ETH0.0028831513.56779476
Migrate And Stak...214111752024-12-15 23:23:4729 hrs ago1734305027IN
Syrup: mpl User Actions
0 ETH0.0028658513.48757078
Migrate And Stak...214106582024-12-15 21:39:4731 hrs ago1734298787IN
Syrup: mpl User Actions
0 ETH0.0024038311.31264052
Migrate And Stak...214106562024-12-15 21:39:2331 hrs ago1734298763IN
Syrup: mpl User Actions
0 ETH0.002278712.30927375
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MplUserActions

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, BSL 1.1 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-12
*/

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.8.20 ^0.8.0 ^0.8.7;

// contracts/interfaces/IMplUserActions.sol

interface IMplUserActions {

    /**************************************************************************************************************************************/
    /*** Events                                                                                                                         ***/
    /**************************************************************************************************************************************/

    event MigratedAndStaked(
        address indexed sender,
        address assetSent,
        uint256 amountSent,
        address indexed receiver,
        address assetReceived,
        uint256 amountReceived
    );

    event RedeemedAndMigrated(
        address indexed sender,
        address assetSent,
        uint256 amountSent,
        address indexed receiver,
        address assetReceived,
        uint256 amountReceived
    );

    event RedeemedAndMigratedAndStaked(
        address indexed sender,
        address assetSent,
        uint256 amountSent,
        address indexed receiver,
        address assetReceived,
        uint256 amountReceived
    );

    /**************************************************************************************************************************************/
    /*** State Variables                                                                                                                ***/
    /**************************************************************************************************************************************/

    /**
     *  @dev    Returns the address of the MPL migrator contract.
     *  @return migrator Address of the migrator contract.
     */
    function migrator() external returns (address migrator);

    /**
     *  @dev    Returns the address of the MPL contract.
     *  @return mpl Address of the MPL contract.
     */
    function mpl() external returns (address mpl);

    /**
     *  @dev    Returns the address of the stSYRUP contract.
     *  @return stsyrup Address of the stSYRUP contract.
     */
    function stsyrup() external returns (address stsyrup);

    /**
     *  @dev    Returns the address of the SYRUP contract.
     *  @return syrup Address of the SYRUP contract.
     */
    function syrup() external returns (address syrup);

    /**
     *  @dev    Returns the address of the xMPL contract.
     *  @return xmpl Address of the xMPL contract.
     */
    function xmpl() external returns (address xmpl);

    /**************************************************************************************************************************************/
    /*** User Actions                                                                                                                   ***/
    /**************************************************************************************************************************************/

    /**
     *  @dev    Migrates MPL to SYRUP and then stakes it.
     *  @param  receiver   Address that will receive stSYRUP.
     *  @param  mplIn      Amount of MPL to migrate.
     *  @return stsyrupOut Amount of stSYRUP received.
     */
    function migrateAndStake(address receiver, uint256 mplIn) external returns (uint256 stsyrupOut);

    /**
     *  @dev    Migrates MPL to SYRUP and then stakes it.
     *          Approves the transfer of MPL with the use of a permit signature.
     *  @param  receiver   Address that will receive stSYRUP.
     *  @param  mplIn      Amount of MPL to migrate.
     *  @param  deadline   The deadline of the permit.
     *  @param  v          The v value of the permit signature.
     *  @param  r          The r value of the permit signature.
     *  @param  s          The s value of the permit signature.
     *  @return stsyrupOut Amount of stSYRUP received.
     */
    function migrateAndStakeWithPermit(
        address receiver,
        uint256 mplIn,
        uint256 deadline,
        uint8   v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 stsyrupOut);

    /**
     *  @dev    Redeems xMPL into MPL and then migrates it to SYRUP.
     *  @param  receiver Address that will receive SYRUP.
     *  @param  xmplIn   Amount of xMPL to redeem.
     *  @return syrupOut Amount of SYRUP received.
     */
    function redeemAndMigrate(address receiver, uint256 xmplIn) external returns (uint256 syrupOut);

    /**
     *  @dev    Redeems xMPL into MPL and then migrates it to SYRUP.
     *          Approves the transfer of xMPL with the use of a permit signature.
     *  @param  receiver Address that will receive SYRUP.
     *  @param  xmplIn   Amount of xMPL to redeem.
     *  @param  deadline The deadline of the permit.
     *  @param  v        The v value of the permit signature.
     *  @param  r        The r value of the permit signature.
     *  @param  s        The s value of the permit signature.
     *  @return syrupOut Amount of SYRUP received.
     */
    function redeemAndMigrateWithPermit(
        address receiver,
        uint256 xmplIn,
        uint256 deadline,
        uint8   v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 syrupOut);

    /**
     *  @dev    Redeems xMPL into MPL, migrates it to SYRUP, and then stakes it.
     *  @param  receiver   Address that will receive stSYRUP.
     *  @param  xmplIn     Amount of xMPL to redeem.
     *  @return stsyrupOut Amount of stSYRUP received.
     */
    function redeemAndMigrateAndStake(address receiver, uint256 xmplIn) external returns (uint256 stsyrupOut);

    /**
     *  @dev    Redeems xMPL into MPL, migrates it to SYRUP, and then stakes it.
     *          Approves the transfer of xMPL with the use of a permit signature.
     *  @param  receiver   sAddress that will receive stSYRUP.
     *  @param  xmplIn     Amount of xMPL to redeem.
     *  @param  deadline   The deadline of the permit.
     *  @param  v          The v value of the permit signature.
     *  @param  r          The r value of the permit signature.
     *  @param  s          The s value of the permit signature.
     *  @return stsyrupOut Amount of stSYRUP received.
     */
    function redeemAndMigrateAndStakeWithPermit(
        address receiver,
        uint256 xmplIn,
        uint256 deadline,
        uint8   v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 stsyrupOut);

}

// contracts/interfaces/Interfaces.sol

interface IBalancerVaultLike {

    enum SwapKind { GIVEN_IN, GIVEN_OUT }

    struct FundManagement {
        address sender;
        bool fromInternalBalance;
        address recipient;
        bool toInternalBalance;
    }

    struct SingleSwap {
        bytes32 poolId;
        SwapKind kind;
        address assetIn;
        address assetOut;
        uint256 amount;
        bytes userData;
    }

    function swap(
        SingleSwap calldata singleSwap,
        FundManagement calldata funds,
        uint256 limit,
        uint256 deadline
    ) external returns (uint256 assetDelta);

}

interface IERC20Like_0 {

    function allowance(address owner, address spender) external view returns (uint256 allowance);

    function balanceOf(address account) external view returns (uint256 balance);

    function DOMAIN_SEPARATOR() external view returns (bytes32 domainSeparator);

    function PERMIT_TYPEHASH() external view returns (bytes32 permitTypehash);

    function approve(address spender, uint256 amount) external returns (bool success);

    function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    function transfer(address recipient, uint256 amount) external returns (bool success);

    function transferFrom(address owner, address recipient, uint256 amount) external returns (bool success);

}

interface IGlobalsLike {

    function governor() external view returns (address governor);

    function operationalAdmin() external view returns (address operationalAdmin);

}

interface IMigratorLike {

    function migrate(address receiver, uint256 mplAmount) external returns (uint256 syrupAmount);

}

interface IPoolLike is IERC20Like_0 {

    function asset() external view returns (address asset);

    function convertToExitAssets(uint256 shares) external view returns (uint256);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function manager() external view returns (address manager);

}

interface IPoolManagerLike {

    function poolPermissionManager() external view returns (address poolPermissionManager);

}

interface IPoolPermissionManagerLike {

    function hasPermission(address poolManager, address lender, bytes32 functionId) external view returns (bool hasPermission);

    function permissionAdmins(address account) external view returns (bool isAdmin);

    function setLenderBitmaps(address[] calldata lenders, uint256[] calldata bitmaps) external;

}

interface IPSMLike {

    function buyGem(address account, uint256 daiAmount) external;

    function tout() external view returns (uint256 tout);  // This is the fee charged for conversion

}

interface ISDaiLike {

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IRDTLike {

    function asset() external view returns (address asset);

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

    function redeem(uint256 shares, address receiver, address owner) external returns (uint256 assets);

}

interface IStakedSyrupLike {

    function deposit(uint256 assets, address receiver) external returns (uint256 shares);

}

// modules/erc20-helper/src/interfaces/IERC20Like.sol

/// @title Interface of the ERC20 standard as needed by ERC20Helper.
interface IERC20Like_1 {

    function approve(address spender_, uint256 amount_) external returns (bool success_);

    function transfer(address recipient_, uint256 amount_) external returns (bool success_);

    function transferFrom(address owner_, address recipient_, uint256 amount_) external returns (bool success_);

}

// modules/erc20-helper/src/ERC20Helper.sol

/**
 * @title Small Library to standardize erc20 token interactions.
 */
library ERC20Helper {

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    function transfer(address token_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transfer.selector, to_, amount_));
    }

    function transferFrom(address token_, address from_, address to_, uint256 amount_) internal returns (bool success_) {
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.transferFrom.selector, from_, to_, amount_));
    }

    function approve(address token_, address spender_, uint256 amount_) internal returns (bool success_) {
        // If setting approval to zero fails, return false.
        if (!_call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, uint256(0)))) return false;

        // If `amount_` is zero, return true as the previous step already did this.
        if (amount_ == uint256(0)) return true;

        // Return the result of setting the approval to `amount_`.
        return _call(token_, abi.encodeWithSelector(IERC20Like_1.approve.selector, spender_, amount_));
    }

    function _call(address token_, bytes memory data_) private returns (bool success_) {
        if (token_.code.length == uint256(0)) return false;

        bytes memory returnData;
        ( success_, returnData ) = token_.call(data_);

        return success_ && (returnData.length == uint256(0) || abi.decode(returnData, (bool)));
    }

}

// contracts/MplUserActions.sol

contract MplUserActions is IMplUserActions {

    /**************************************************************************************************************************************/
    /*** State Variables                                                                                                                ***/
    /**************************************************************************************************************************************/

    address public immutable override migrator;
    address public immutable override mpl;
    address public immutable override stsyrup;
    address public immutable override syrup;
    address public immutable override xmpl;

    /**************************************************************************************************************************************/
    /*** Constructor                                                                                                                    ***/
    /**************************************************************************************************************************************/

    constructor(address migrator_, address xmpl_, address stsyrup_) {
        address mpl_   = IRDTLike(xmpl_).asset();
        address syrup_ = IRDTLike(stsyrup_).asset();

        migrator = migrator_;
        mpl      = mpl_;
        syrup    = syrup_;
        xmpl     = xmpl_;
        stsyrup  = stsyrup_;

        require(ERC20Helper.approve(mpl_,   migrator_, type(uint256).max), "MUA:C:MPL_APPROVE");
        require(ERC20Helper.approve(syrup_, stsyrup_,  type(uint256).max), "MUA:C:SYRUP_APPROVE");
    }

    /**************************************************************************************************************************************/
    /*** User Actions                                                                                                                   ***/
    /**************************************************************************************************************************************/

    // MPL -> SYRUP -> stSYRUP
    function migrateAndStake(address receiver_, uint256 mplIn_) external override returns (uint256 stsyrupOut_) {
        stsyrupOut_ = _migrateAndStake(receiver_, mplIn_);
    }

    // MPL -> SYRUP -> stSYRUP
    function migrateAndStakeWithPermit(
        address receiver_,
        uint256 mplIn_,
        uint256 deadline_,
        uint8   v_,
        bytes32 r_,
        bytes32 s_
    )
        external override returns (uint256 stsyrupOut_)
    {
        _permit(mpl, deadline_, mplIn_, v_, r_, s_);

        stsyrupOut_ = _migrateAndStake(receiver_, mplIn_);
    }

    // xMPL -> MPL -> SYRUP
    function redeemAndMigrate(address receiver_, uint256 xmplIn_) external override returns (uint256 syrupOut_) {
        syrupOut_ = _redeemAndMigrate(receiver_, xmplIn_);
    }

    // xMPL -> MPL -> SYRUP
    function redeemAndMigrateWithPermit(
        address receiver_,
        uint256 xmplIn_,
        uint256 deadline_,
        uint8   v_,
        bytes32 r_,
        bytes32 s_
    )
        external override returns (uint256 syrupOut_)
    {
        _permit(xmpl, deadline_, xmplIn_, v_, r_, s_);

        syrupOut_ = _redeemAndMigrate(receiver_, xmplIn_);
    }

    // xMPL -> MPL -> SYRUP -> stSYRUP
    function redeemAndMigrateAndStake(address receiver_, uint256 xmplIn_) external override returns (uint256 stsyrupOut_) {
        stsyrupOut_ = _redeemAndMigrateAndStake(receiver_, xmplIn_);
    }

    // xMPL -> MPL -> SYRUP -> stSYRUP
    function redeemAndMigrateAndStakeWithPermit(
        address receiver_,
        uint256 xmplIn_,
        uint256 deadline_,
        uint8   v_,
        bytes32 r_,
        bytes32 s_
    )
        external override returns (uint256 stsyrupOut_)
    {
        _permit(xmpl, deadline_, xmplIn_, v_, r_, s_);

        stsyrupOut_ = _redeemAndMigrateAndStake(receiver_, xmplIn_);
    }

    /**************************************************************************************************************************************/
    /*** Internal Functions                                                                                                             ***/
    /**************************************************************************************************************************************/

    // MPL -> SYRUP -> stSYRUP
    function _migrateAndStake(address receiver_, uint256 mplIn_) internal returns (uint256 stsyrupOut_) {
        require(mplIn_ > 0,                                                       "MUA:MAS:ZERO_AMOUNT");
        require(ERC20Helper.transferFrom(mpl, msg.sender, address(this), mplIn_), "MUA:MAS:TRANSFER_FAIL");

        uint256 syrupAmount_ = _migrate(address(this), mplIn_);
        stsyrupOut_          = _stake(receiver_, syrupAmount_);

        emit MigratedAndStaked(msg.sender, mpl, mplIn_, receiver_, stsyrup, stsyrupOut_);
    }

    // MPL -> SYRUP
    function _migrate(address receiver_, uint256 mplIn_) internal returns (uint256 syrupOut_) {
        syrupOut_ = IMigratorLike(migrator).migrate(receiver_, mplIn_);
    }

    function _permit(address asset_, uint256 deadline_, uint256 amount_, uint8 v_, bytes32 r_, bytes32 s_) internal {
        uint256 allowance_ = IERC20Like_0(asset_).allowance(msg.sender, address(this));

        if (allowance_ < amount_) {
            IERC20Like_0(asset_).permit(msg.sender, address(this), amount_, deadline_, v_, r_, s_);
        }
    }

    // xMPL -> MPL
    function _redeem(address receiver_, uint256 xmplIn_) internal returns (uint256 mplOut_) {
        mplOut_ = IRDTLike(xmpl).redeem(xmplIn_, receiver_, address(this));
    }

    // xMPL -> MPL -> SYRUP
    function _redeemAndMigrate(address receiver_, uint256 xmplIn_) internal returns (uint256 syrupOut_) {
        require(xmplIn_ > 0,                                                        "MUA:RAM:ZERO_AMOUNT");
        require(ERC20Helper.transferFrom(xmpl, msg.sender, address(this), xmplIn_), "MUA:RAM:TRANSFER_FAIL");

        uint256 mplAmount_ = _redeem(address(this), xmplIn_);
        syrupOut_          = _migrate(receiver_, mplAmount_);

        emit RedeemedAndMigrated(msg.sender, xmpl, xmplIn_, receiver_, syrup, syrupOut_);
    }

    // xMPL -> MPL -> SYRUP -> stSYRUP
    function _redeemAndMigrateAndStake(address receiver_, uint256 xmplIn_) internal returns (uint256 stsyrupOut_) {
        require(xmplIn_ > 0,                                                        "MUA:RAMAS:ZERO_AMOUNT");
        require(ERC20Helper.transferFrom(xmpl, msg.sender, address(this), xmplIn_), "MUA:RAMAS:TRANSFER_FAIL");

        uint256 mplAmount_   = _redeem(address(this), xmplIn_);
        uint256 syrupAmount_ = _migrate(address(this), mplAmount_);
        stsyrupOut_          = _stake(receiver_, syrupAmount_);

        emit RedeemedAndMigratedAndStaked(msg.sender, xmpl, xmplIn_, receiver_, stsyrup, stsyrupOut_);
    }

    // SYRUP -> stSYRUP
    function _stake(address receiver_, uint256 syrupIn_) internal returns (uint256 stsyrupOut_) {
        stsyrupOut_ = IRDTLike(stsyrup).deposit(syrupIn_, receiver_);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"migrator_","type":"address"},{"internalType":"address","name":"xmpl_","type":"address"},{"internalType":"address","name":"stsyrup_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"assetSent","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSent","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"assetReceived","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceived","type":"uint256"}],"name":"MigratedAndStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"assetSent","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSent","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"assetReceived","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceived","type":"uint256"}],"name":"RedeemedAndMigrated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"address","name":"assetSent","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountSent","type":"uint256"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":false,"internalType":"address","name":"assetReceived","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountReceived","type":"uint256"}],"name":"RedeemedAndMigratedAndStaked","type":"event"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"mplIn_","type":"uint256"}],"name":"migrateAndStake","outputs":[{"internalType":"uint256","name":"stsyrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"mplIn_","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":"migrateAndStakeWithPermit","outputs":[{"internalType":"uint256","name":"stsyrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"migrator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"xmplIn_","type":"uint256"}],"name":"redeemAndMigrate","outputs":[{"internalType":"uint256","name":"syrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"xmplIn_","type":"uint256"}],"name":"redeemAndMigrateAndStake","outputs":[{"internalType":"uint256","name":"stsyrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"xmplIn_","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":"redeemAndMigrateAndStakeWithPermit","outputs":[{"internalType":"uint256","name":"stsyrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"receiver_","type":"address"},{"internalType":"uint256","name":"xmplIn_","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":"redeemAndMigrateWithPermit","outputs":[{"internalType":"uint256","name":"syrupOut_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stsyrup","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"syrup","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"xmpl","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

61012060405234801562000011575f80fd5b50604051620010a4380380620010a483398101604081905262000034916200036b565b5f826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000072573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000989190620003b2565b90505f826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620000fe9190620003b2565b6001600160a01b0380871660805283811660a05280821660e05285811661010052841660c05290506200013482865f19620001e1565b6200017a5760405162461bcd60e51b81526020600482015260116024820152704d55413a433a4d504c5f415050524f564560781b60448201526064015b60405180910390fd5b6200018881845f19620001e1565b620001d65760405162461bcd60e51b815260206004820152601360248201527f4d55413a433a53595255505f415050524f564500000000000000000000000000604482015260640162000171565b50505050506200041d565b6040516001600160a01b03831660248201525f60448201819052906200024990859063095ea7b360e01b906064015b60408051808303601f190181529190526020810180516001600160e01b0319939093166001600160e01b0393841617905290620002a116565b6200025657505f6200029a565b8162000265575060016200029a565b6040516001600160a01b0384166024820152604481018390526200029790859063095ea7b360e01b9060640162000210565b90505b9392505050565b5f6001600160a01b0383163b620002ba57505f62000349565b6060836001600160a01b031683604051620002d69190620003ce565b5f604051808303815f865af19150503d805f811462000311576040519150601f19603f3d011682016040523d82523d5f602084013e62000316565b606091505b5090925090508180156200034557508051158062000345575080806020019051810190620003459190620003fc565b9150505b92915050565b80516001600160a01b038116811462000366575f80fd5b919050565b5f805f606084860312156200037e575f80fd5b62000389846200034f565b925062000399602085016200034f565b9150620003a9604085016200034f565b90509250925092565b5f60208284031215620003c3575f80fd5b6200029a826200034f565b5f82515f5b81811015620003ef5760208186018101518583015201620003d3565b505f920191825250919050565b5f602082840312156200040d575f80fd5b815180151581146200029a575f80fd5b60805160a05160c05160e05161010051610be2620004c25f395f818160f3015281816102100152818161025401528181610439015281816104f4015281816105a20152818161067201526108bf01525f8181610175015261051601525f818160af01528181610694015281816107fc01526109ad01525f81816101af015281816102b50152818161071f01526107da01525f818161014e01526109540152610be25ff3fe608060405234801561000f575f80fd5b50600436106100a6575f3560e01c806386a952c41161006e57806386a952c4146101705780638fcea8f714610197578063a0530946146101aa578063b2252469146101d1578063bb14c494146101e4578063fd7fc33b146101f7575f80fd5b80632807024b146100aa578063359156a0146100ee57806339e07878146101155780635194acda146101365780637cd07e4714610149575b5f80fd5b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b610128610123366004610a9d565b61020a565b6040519081526020016100e5565b610128610144366004610a9d565b61024e565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6101286101a5366004610af8565b610287565b6100d17f000000000000000000000000000000000000000000000000000000000000000081565b6101286101df366004610af8565b610299565b6101286101f2366004610af8565b6102a4565b610128610205366004610a9d565b6102af565b5f6102397f000000000000000000000000000000000000000000000000000000000000000086888787876102e8565b61024387876103e9565b979650505050505050565b5f61027d7f000000000000000000000000000000000000000000000000000000000000000086888787876102e8565b6102438787610555565b5f61029283836106d4565b9392505050565b5f6102928383610555565b5f61029283836103e9565b5f6102de7f000000000000000000000000000000000000000000000000000000000000000086888787876102e8565b61024387876106d4565b604051636eb1769f60e11b81523360048201523060248201525f906001600160a01b0388169063dd62ed3e90604401602060405180830381865afa158015610332573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103569190610b20565b9050848110156103e05760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e4015f604051808303815f87803b1580156103c9575f80fd5b505af11580156103db573d5f803e3d5ffd5b505050505b50505050505050565b5f8082116104345760405162461bcd60e51b81526020600482015260136024820152721355504e9490534e96915493d7d05353d55395606a1b60448201526064015b60405180910390fd5b6104607f000000000000000000000000000000000000000000000000000000000000000033308561082c565b6104a45760405162461bcd60e51b81526020600482015260156024820152741355504e9490534e9514905394d1915497d1905253605a1b604482015260640161042b565b5f6104af3084610891565b90506104bb848261092c565b9150836001600160a01b0316336001600160a01b03167fa583658e3a14505064d423ae6cbfb469e4fa8b9a03a25fe1b8f8323f0dbb9f5a7f0000000000000000000000000000000000000000000000000000000000000000867f0000000000000000000000000000000000000000000000000000000000000000876040516105469493929190610b37565b60405180910390a35092915050565b5f80821161059d5760405162461bcd60e51b81526020600482015260156024820152741355504e9490535054ce96915493d7d05353d55395605a1b604482015260640161042b565b6105c97f000000000000000000000000000000000000000000000000000000000000000033308561082c565b6106155760405162461bcd60e51b815260206004820152601760248201527f4d55413a52414d41533a5452414e534645525f4641494c000000000000000000604482015260640161042b565b5f6106203084610891565b90505f61062d308361092c565b90506106398582610985565b9250846001600160a01b0316336001600160a01b03167f8ace6952b64b5c3dd907d02813e4c97ccc1f3e43adb13ca65d3ef5f96e2be8027f0000000000000000000000000000000000000000000000000000000000000000877f0000000000000000000000000000000000000000000000000000000000000000886040516106c49493929190610b37565b60405180910390a3505092915050565b5f80821161071a5760405162461bcd60e51b81526020600482015260136024820152721355504e935054ce96915493d7d05353d55395606a1b604482015260640161042b565b6107467f000000000000000000000000000000000000000000000000000000000000000033308561082c565b61078a5760405162461bcd60e51b81526020600482015260156024820152741355504e935054ce9514905394d1915497d1905253605a1b604482015260640161042b565b5f610795308461092c565b90506107a18482610985565b9150836001600160a01b0316336001600160a01b03167f49cf5016ce06d57f096837afcc8af05006ad93f9f02e854dae515f103a5319b97f0000000000000000000000000000000000000000000000000000000000000000867f0000000000000000000000000000000000000000000000000000000000000000876040516105469493929190610b37565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790525f906108889086906109de565b95945050505050565b604051635d043b2960e11b8152600481018290526001600160a01b0383811660248301523060448301525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ba087652906064015b6020604051808303815f875af1158015610908573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102929190610b20565b60405163ad68ebf760e01b81526001600160a01b038381166004830152602482018390525f917f00000000000000000000000000000000000000000000000000000000000000009091169063ad68ebf7906044016108ec565b604051636e553f6560e01b8152600481018290526001600160a01b0383811660248301525f917f000000000000000000000000000000000000000000000000000000000000000090911690636e553f65906044016108ec565b5f6001600160a01b0383163b6109f557505f610a7c565b6060836001600160a01b031683604051610a0f9190610b61565b5f604051808303815f865af19150503d805f8114610a48576040519150601f19603f3d011682016040523d82523d5f602084013e610a4d565b606091505b509092509050818015610a78575080511580610a78575080806020019051810190610a789190610b8d565b9150505b92915050565b80356001600160a01b0381168114610a98575f80fd5b919050565b5f805f805f8060c08789031215610ab2575f80fd5b610abb87610a82565b95506020870135945060408701359350606087013560ff81168114610ade575f80fd5b9598949750929560808101359460a0909101359350915050565b5f8060408385031215610b09575f80fd5b610b1283610a82565b946020939093013593505050565b5f60208284031215610b30575f80fd5b5051919050565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b5f82515f5b81811015610b805760208186018101518583015201610b66565b505f920191825250919050565b5f60208284031215610b9d575f80fd5b81518015158114610292575f80fdfea264697066735822122092bf9fe4a87f1e5ad4a854c7b19f116e30b44cd672dd35cb03f9066eb6d00e3364736f6c634300081400330000000000000000000000009c9499edd0cd2dcbc3c9dd5070baf54777ad8f2c0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b45

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100a6575f3560e01c806386a952c41161006e57806386a952c4146101705780638fcea8f714610197578063a0530946146101aa578063b2252469146101d1578063bb14c494146101e4578063fd7fc33b146101f7575f80fd5b80632807024b146100aa578063359156a0146100ee57806339e07878146101155780635194acda146101365780637cd07e4714610149575b5f80fd5b6100d17f000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b4581565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d17f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c81565b610128610123366004610a9d565b61020a565b6040519081526020016100e5565b610128610144366004610a9d565b61024e565b6100d17f0000000000000000000000009c9499edd0cd2dcbc3c9dd5070baf54777ad8f2c81565b6100d17f000000000000000000000000643c4e15d7d62ad0abec4a9bd4b001aa3ef52d6681565b6101286101a5366004610af8565b610287565b6100d17f00000000000000000000000033349b282065b0284d756f0577fb39c158f935e681565b6101286101df366004610af8565b610299565b6101286101f2366004610af8565b6102a4565b610128610205366004610a9d565b6102af565b5f6102397f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c86888787876102e8565b61024387876103e9565b979650505050505050565b5f61027d7f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c86888787876102e8565b6102438787610555565b5f61029283836106d4565b9392505050565b5f6102928383610555565b5f61029283836103e9565b5f6102de7f00000000000000000000000033349b282065b0284d756f0577fb39c158f935e686888787876102e8565b61024387876106d4565b604051636eb1769f60e11b81523360048201523060248201525f906001600160a01b0388169063dd62ed3e90604401602060405180830381865afa158015610332573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103569190610b20565b9050848110156103e05760405163d505accf60e01b8152336004820152306024820152604481018690526064810187905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e4015f604051808303815f87803b1580156103c9575f80fd5b505af11580156103db573d5f803e3d5ffd5b505050505b50505050505050565b5f8082116104345760405162461bcd60e51b81526020600482015260136024820152721355504e9490534e96915493d7d05353d55395606a1b60448201526064015b60405180910390fd5b6104607f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c33308561082c565b6104a45760405162461bcd60e51b81526020600482015260156024820152741355504e9490534e9514905394d1915497d1905253605a1b604482015260640161042b565b5f6104af3084610891565b90506104bb848261092c565b9150836001600160a01b0316336001600160a01b03167fa583658e3a14505064d423ae6cbfb469e4fa8b9a03a25fe1b8f8323f0dbb9f5a7f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c867f000000000000000000000000643c4e15d7d62ad0abec4a9bd4b001aa3ef52d66876040516105469493929190610b37565b60405180910390a35092915050565b5f80821161059d5760405162461bcd60e51b81526020600482015260156024820152741355504e9490535054ce96915493d7d05353d55395605a1b604482015260640161042b565b6105c97f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c33308561082c565b6106155760405162461bcd60e51b815260206004820152601760248201527f4d55413a52414d41533a5452414e534645525f4641494c000000000000000000604482015260640161042b565b5f6106203084610891565b90505f61062d308361092c565b90506106398582610985565b9250846001600160a01b0316336001600160a01b03167f8ace6952b64b5c3dd907d02813e4c97ccc1f3e43adb13ca65d3ef5f96e2be8027f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c877f000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b45886040516106c49493929190610b37565b60405180910390a3505092915050565b5f80821161071a5760405162461bcd60e51b81526020600482015260136024820152721355504e935054ce96915493d7d05353d55395606a1b604482015260640161042b565b6107467f00000000000000000000000033349b282065b0284d756f0577fb39c158f935e633308561082c565b61078a5760405162461bcd60e51b81526020600482015260156024820152741355504e935054ce9514905394d1915497d1905253605a1b604482015260640161042b565b5f610795308461092c565b90506107a18482610985565b9150836001600160a01b0316336001600160a01b03167f49cf5016ce06d57f096837afcc8af05006ad93f9f02e854dae515f103a5319b97f00000000000000000000000033349b282065b0284d756f0577fb39c158f935e6867f000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b45876040516105469493929190610b37565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b1790525f906108889086906109de565b95945050505050565b604051635d043b2960e11b8152600481018290526001600160a01b0383811660248301523060448301525f917f0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c9091169063ba087652906064015b6020604051808303815f875af1158015610908573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102929190610b20565b60405163ad68ebf760e01b81526001600160a01b038381166004830152602482018390525f917f0000000000000000000000009c9499edd0cd2dcbc3c9dd5070baf54777ad8f2c9091169063ad68ebf7906044016108ec565b604051636e553f6560e01b8152600481018290526001600160a01b0383811660248301525f917f000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b4590911690636e553f65906044016108ec565b5f6001600160a01b0383163b6109f557505f610a7c565b6060836001600160a01b031683604051610a0f9190610b61565b5f604051808303815f865af19150503d805f8114610a48576040519150601f19603f3d011682016040523d82523d5f602084013e610a4d565b606091505b509092509050818015610a78575080511580610a78575080806020019051810190610a789190610b8d565b9150505b92915050565b80356001600160a01b0381168114610a98575f80fd5b919050565b5f805f805f8060c08789031215610ab2575f80fd5b610abb87610a82565b95506020870135945060408701359350606087013560ff81168114610ade575f80fd5b9598949750929560808101359460a0909101359350915050565b5f8060408385031215610b09575f80fd5b610b1283610a82565b946020939093013593505050565b5f60208284031215610b30575f80fd5b5051919050565b6001600160a01b039485168152602081019390935292166040820152606081019190915260800190565b5f82515f5b81811015610b805760208186018101518583015201610b66565b505f920191825250919050565b5f60208284031215610b9d575f80fd5b81518015158114610292575f80fdfea264697066735822122092bf9fe4a87f1e5ad4a854c7b19f116e30b44cd672dd35cb03f9066eb6d00e3364736f6c63430008140033

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

0000000000000000000000009c9499edd0cd2dcbc3c9dd5070baf54777ad8f2c0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b45

-----Decoded View---------------
Arg [0] : migrator_ (address): 0x9c9499edD0cd2dCBc3C9Dd5070bAf54777AD8F2C
Arg [1] : xmpl_ (address): 0x4937A209D4cDbD3ecD48857277cfd4dA4D82914c
Arg [2] : stsyrup_ (address): 0xc7E8b36E0766D9B04c93De68A9D47dD11f260B45

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000009c9499edd0cd2dcbc3c9dd5070baf54777ad8f2c
Arg [1] : 0000000000000000000000004937a209d4cdbd3ecd48857277cfd4da4d82914c
Arg [2] : 000000000000000000000000c7e8b36e0766d9b04c93de68a9d47dd11f260b45


Deployed Bytecode Sourcemap

12569:7307:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13142:41;;;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;13142:41:0;;;;;;;;13236:38;;;;;15538:374;;;;;;:::i;:::-;;:::i;:::-;;;1169:25:1;;;1157:2;1142:18;15538:374:0;1023:177:1;16204:394:0;;;;;;:::i;:::-;;:::i;13049:42::-;;;;;13190:39;;;;;14700:176;;;;;;:::i;:::-;;:::i;13098:37::-;;;;;15960:196;;;;;;:::i;:::-;;:::i;15325:176::-;;;;;;:::i;:::-;;:::i;14916:372::-;;;;;;:::i;:::-;;:::i;15538:374::-;15762:17;15797:45;15805:4;15811:9;15822:7;15831:2;15835;15839;15797:7;:45::i;:::-;15867:37;15885:9;15896:7;15867:17;:37::i;:::-;15855:49;15538:374;-1:-1:-1;;;;;;;15538:374:0:o;16204:394::-;16436:19;16473:45;16481:4;16487:9;16498:7;16507:2;16511;16515;16473:7;:45::i;:::-;16545;16571:9;16582:7;16545:25;:45::i;14700:176::-;14787:19;14833:35;14850:9;14861:6;14833:16;:35::i;:::-;14819:49;14700:176;-1:-1:-1;;;14700:176:0:o;15960:196::-;16057:19;16103:45;16129:9;16140:7;16103:25;:45::i;15325:176::-;15414:17;15456:37;15474:9;15485:7;15456:17;:37::i;14916:372::-;15138:19;15175:43;15183:3;15188:9;15199:6;15207:2;15211;15215;15175:7;:43::i;:::-;15245:35;15262:9;15273:6;15245:16;:35::i;17823:360::-;17967:57;;-1:-1:-1;;;17967:57:0;;17998:10;17967:57;;;1676:34:1;18018:4:0;1726:18:1;;;1719:43;17946:18:0;;-1:-1:-1;;;;;17967:30:0;;;;;1611:18:1;;17967:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17946:78;;18054:7;18041:10;:20;18037:139;;;18078:86;;-1:-1:-1;;;18078:86:0;;18106:10;18078:86;;;2311:34:1;18126:4:0;2361:18:1;;;2354:43;2413:18;;;2406:34;;;2456:18;;;2449:34;;;2532:4;2520:17;;2499:19;;;2492:46;2554:19;;;2547:35;;;2598:19;;;2591:35;;;-1:-1:-1;;;;;18078:27:0;;;;;2245:19:1;;18078:86:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18037:139;17935:248;17823:360;;;;;;:::o;18421:549::-;18502:17;18550:1;18540:7;:11;18532:98;;;;-1:-1:-1;;;18532:98:0;;2839:2:1;18532:98:0;;;2821:21:1;2878:2;2858:18;;;2851:30;-1:-1:-1;;;2897:18:1;;;2890:49;2956:18;;18532:98:0;;;;;;;;;18649:66;18674:4;18680:10;18700:4;18707:7;18649:24;:66::i;:::-;18641:100;;;;-1:-1:-1;;;18641:100:0;;3187:2:1;18641:100:0;;;3169:21:1;3226:2;3206:18;;;3199:30;-1:-1:-1;;;3245:18:1;;;3238:51;3306:18;;18641:100:0;2985:345:1;18641:100:0;18754:18;18775:31;18791:4;18798:7;18775;:31::i;:::-;18754:52;;18838:31;18847:9;18858:10;18838:8;:31::i;:::-;18817:52;;18934:9;-1:-1:-1;;;;;18887:75:0;18907:10;-1:-1:-1;;;;;18887:75:0;;18919:4;18925:7;18945:5;18952:9;18887:75;;;;;;;;;:::i;:::-;;;;;;;;18521:449;18421:549;;;;:::o;19018:649::-;19107:19;19157:1;19147:7;:11;19139:100;;;;-1:-1:-1;;;19139:100:0;;3989:2:1;19139:100:0;;;3971:21:1;4028:2;4008:18;;;4001:30;-1:-1:-1;;;4047:18:1;;;4040:51;4108:18;;19139:100:0;3787:345:1;19139:100:0;19258:66;19283:4;19289:10;19309:4;19316:7;19258:24;:66::i;:::-;19250:102;;;;-1:-1:-1;;;19250:102:0;;4339:2:1;19250:102:0;;;4321:21:1;4378:2;4358:18;;;4351:30;4417:25;4397:18;;;4390:53;4460:18;;19250:102:0;4137:347:1;19250:102:0;19365:18;19388:31;19404:4;19411:7;19388;:31::i;:::-;19365:54;;19430:20;19453:35;19470:4;19477:10;19453:8;:35::i;:::-;19430:58;;19522:31;19529:9;19540:12;19522:6;:31::i;:::-;19499:54;;19627:9;-1:-1:-1;;;;;19571:88:0;19600:10;-1:-1:-1;;;;;19571:88:0;;19612:4;19618:7;19638;19647:11;19571:88;;;;;;;;;:::i;:::-;;;;;;;;19128:539;;19018:649;;;;:::o;17066:549::-;17145:19;17194:1;17185:6;:10;17177:96;;;;-1:-1:-1;;;17177:96:0;;4691:2:1;17177:96:0;;;4673:21:1;4730:2;4710:18;;;4703:30;-1:-1:-1;;;4749:18:1;;;4742:49;4808:18;;17177:96:0;4489:343:1;17177:96:0;17292:64;17317:3;17322:10;17342:4;17349:6;17292:24;:64::i;:::-;17284:98;;;;-1:-1:-1;;;17284:98:0;;5039:2:1;17284:98:0;;;5021:21:1;5078:2;5058:18;;;5051:30;-1:-1:-1;;;5097:18:1;;;5090:51;5158:18;;17284:98:0;4837:345:1;17284:98:0;17395:20;17418:31;17435:4;17442:6;17418:8;:31::i;:::-;17395:54;;17483:31;17490:9;17501:12;17483:6;:31::i;:::-;17460:54;;17575:9;-1:-1:-1;;;;;17532:75:0;17550:10;-1:-1:-1;;;;;17532:75:0;;17562:3;17567:6;17586:7;17595:11;17532:75;;;;;;;;;:::i;11329:236::-;11477:79;;;-1:-1:-1;;;;;5445:15:1;;;11477:79:0;;;5427:34:1;5497:15;;5477:18;;;5470:43;5529:18;;;;5522:34;;;11477:79:0;;;;;;;;;;5362:18:1;;;;11477:79:0;;;;;;;;-1:-1:-1;;;;;11477:79:0;-1:-1:-1;;;11477:79:0;;;-1:-1:-1;;11463:94:0;;11469:6;;11463:5;:94::i;:::-;11456:101;11329:236;-1:-1:-1;;;;;11329:236:0:o;18211:173::-;18320:56;;-1:-1:-1;;;18320:56:0;;;;;5769:25:1;;;-1:-1:-1;;;;;5868:15:1;;;5848:18;;;5841:43;18370:4:0;5900:18:1;;;5893:43;18282:15:0;;18329:4;18320:21;;;;;;5742:18:1;;18320:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17644:171::-;17757:50;;-1:-1:-1;;;17757:50:0;;-1:-1:-1;;;;;6139:32:1;;;17757:50:0;;;6121:51:1;6188:18;;;6181:34;;;17715:17:0;;17771:8;17757:31;;;;;;6094:18:1;;17757:50:0;5947:274:1;19700:171:0;19817:46;;-1:-1:-1;;;19817:46:0;;;;;6400:25:1;;;-1:-1:-1;;;;;6461:32:1;;;6441:18;;;6434:60;19771:19:0;;19826:7;19817:25;;;;;;6373:18:1;;19817:46:0;6226:274:1;12182:343:0;12250:13;-1:-1:-1;;;;;12280:18:0;;;12276:50;;-1:-1:-1;12321:5:0;12314:12;;12276:50;12339:23;12400:6;-1:-1:-1;;;;;12400:11:0;12412:5;12400:18;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12373:45:0;;-1:-1:-1;12373:45:0;-1:-1:-1;12373:45:0;12438:79;;;;-1:-1:-1;12451:17:0;;:31;;:65;;;12497:10;12486:30;;;;;;;;;;;;:::i;:::-;12431:86;;;12182:343;;;;;:::o;222:173:1:-;290:20;;-1:-1:-1;;;;;339:31:1;;329:42;;319:70;;385:1;382;375:12;319:70;222:173;;;:::o;400:618::-;502:6;510;518;526;534;542;595:3;583:9;574:7;570:23;566:33;563:53;;;612:1;609;602:12;563:53;635:29;654:9;635:29;:::i;:::-;625:39;;711:2;700:9;696:18;683:32;673:42;;762:2;751:9;747:18;734:32;724:42;;816:2;805:9;801:18;788:32;860:4;853:5;849:16;842:5;839:27;829:55;;880:1;877;870:12;829:55;400:618;;;;-1:-1:-1;400:618:1;;955:3;940:19;;927:33;;1007:3;992:19;;;979:33;;-1:-1:-1;400:618:1;-1:-1:-1;;400:618:1:o;1205:254::-;1273:6;1281;1334:2;1322:9;1313:7;1309:23;1305:32;1302:52;;;1350:1;1347;1340:12;1302:52;1373:29;1392:9;1373:29;:::i;:::-;1363:39;1449:2;1434:18;;;;1421:32;;-1:-1:-1;;;1205:254:1:o;1773:184::-;1843:6;1896:2;1884:9;1875:7;1871:23;1867:32;1864:52;;;1912:1;1909;1902:12;1864:52;-1:-1:-1;1935:16:1;;1773:184;-1:-1:-1;1773:184:1:o;3335:447::-;-1:-1:-1;;;;;3622:15:1;;;3604:34;;3669:2;3654:18;;3647:34;;;;3717:15;;3712:2;3697:18;;3690:43;3764:2;3749:18;;3742:34;;;;3553:3;3538:19;;3335:447::o;6505:412::-;6634:3;6672:6;6666:13;6697:1;6707:129;6721:6;6718:1;6715:13;6707:129;;;6819:4;6803:14;;;6799:25;;6793:32;6780:11;;;6773:53;6736:12;6707:129;;;-1:-1:-1;6891:1:1;6855:16;;6880:13;;;-1:-1:-1;6855:16:1;6505:412;-1:-1:-1;6505:412:1:o;6922:277::-;6989:6;7042:2;7030:9;7021:7;7017:23;7013:32;7010:52;;;7058:1;7055;7048:12;7010:52;7090:9;7084:16;7143:5;7136:13;7129:21;7122:5;7119:32;7109:60;;7165:1;7162;7155:12

Swarm Source

ipfs://92bf9fe4a87f1e5ad4a854c7b19f116e30b44cd672dd35cb03f9066eb6d00e33

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.