ETH Price: $3,483.31 (+3.32%)
Gas: 4 Gwei

Contract

0x8f1E749b211967Df09204d871e988462Eb2E3669
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Redeem197907242024-05-03 16:17:2358 days ago1714753043IN
0x8f1E749b...2Eb2E3669
0 ETH0.002155169.49227189
Mint197826402024-05-02 13:08:5959 days ago1714655339IN
0x8f1E749b...2Eb2E3669
0.42069006 ETH0.0021956210.26014662
Mint197310942024-04-25 8:09:1166 days ago1714032551IN
0x8f1E749b...2Eb2E3669
0.03020767 ETH0.0026731112.49206701
Mint197309052024-04-25 7:30:5966 days ago1714030259IN
0x8f1E749b...2Eb2E3669
0.02107762 ETH0.001805647.93116457
Mint197270372024-04-24 18:32:2367 days ago1713983543IN
0x8f1E749b...2Eb2E3669
0.13396606 ETH0.0032097715
Mint197270262024-04-24 18:30:1167 days ago1713983411IN
0x8f1E749b...2Eb2E3669
0.08293808 ETH0.002639812.33639444
Mint197263302024-04-24 16:09:4767 days ago1713974987IN
0x8f1E749b...2Eb2E3669
0.01760719 ETH0.0035467116.57459008
Mint197261432024-04-24 15:32:2367 days ago1713972743IN
0x8f1E749b...2Eb2E3669
0.16521845 ETH0.0046258421.61763517
Mint197255062024-04-24 13:23:1167 days ago1713964991IN
0x8f1E749b...2Eb2E3669
0.22145545 ETH0.0062959529.42240759
Mint197254342024-04-24 13:08:4767 days ago1713964127IN
0x8f1E749b...2Eb2E3669
0.07357359 ETH0.0065717928.86607326
Mint197252622024-04-24 12:33:3567 days ago1713962015IN
0x8f1E749b...2Eb2E3669
0.00742513 ETH0.0017191626.53933102
Mint197252262024-04-24 12:26:1167 days ago1713961571IN
0x8f1E749b...2Eb2E3669
0.04414902 ETH0.0054132525.29736351
Mint197251402024-04-24 12:08:5967 days ago1713960539IN
0x8f1E749b...2Eb2E3669
0.01471455 ETH0.0082985436.45068161
Mint197251202024-04-24 12:04:2367 days ago1713960263IN
0x8f1E749b...2Eb2E3669
0.01471441 ETH0.0023512336.29688376
Mint197133522024-04-22 20:34:2369 days ago1713818063IN
0x8f1E749b...2Eb2E3669
0.32552801 ETH0.0023421210.28712096
Mint197132852024-04-22 20:20:5969 days ago1713817259IN
0x8f1E749b...2Eb2E3669
0.06504525 ETH0.0026185711.50187557
Mint197124032024-04-22 17:23:3569 days ago1713806615IN
0x8f1E749b...2Eb2E3669
0.00815562 ETH0.0028486213.31283839
Mint197102132024-04-22 10:02:5969 days ago1713780179IN
0x8f1E749b...2Eb2E3669
0.06672859 ETH0.002781813
Mint197102042024-04-22 10:01:1169 days ago1713780071IN
0x8f1E749b...2Eb2E3669
0.51856524 ETH0.002066419.07614164
Mint197101922024-04-22 9:58:3569 days ago1713779915IN
0x8f1E749b...2Eb2E3669
0.52398173 ETH0.000452586.98534393
Mint197026092024-04-21 8:32:3570 days ago1713688355IN
0x8f1E749b...2Eb2E3669
0.01358638 ETH0.002110179.2687609
Mint196991342024-04-20 20:52:5971 days ago1713646379IN
0x8f1E749b...2Eb2E3669
0.00141383 ETH0.001676756.69305757
Mint196991192024-04-20 20:49:5971 days ago1713646199IN
0x8f1E749b...2Eb2E3669
0.00141383 ETH0.000419416.47579799
Mint196990962024-04-20 20:45:2371 days ago1713645923IN
0x8f1E749b...2Eb2E3669
0.00141383 ETH0.00073237.37327466
Redeem196560572024-04-14 20:07:5977 days ago1713125279IN
0x8f1E749b...2Eb2E3669
0 ETH0.0028639111.00332856
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
197826402024-05-02 13:08:5959 days ago1714655339
0x8f1E749b...2Eb2E3669
0.00042026 ETH
197826402024-05-02 13:08:5959 days ago1714655339
0x8f1E749b...2Eb2E3669
0.00042026 ETH
197826402024-05-02 13:08:5959 days ago1714655339
0x8f1E749b...2Eb2E3669
0.42069006 ETH
197310942024-04-25 8:09:1166 days ago1714032551
0x8f1E749b...2Eb2E3669
0.00003017 ETH
197310942024-04-25 8:09:1166 days ago1714032551
0x8f1E749b...2Eb2E3669
0.00003017 ETH
197310942024-04-25 8:09:1166 days ago1714032551
0x8f1E749b...2Eb2E3669
0.03020767 ETH
197309052024-04-25 7:30:5966 days ago1714030259
0x8f1E749b...2Eb2E3669
0.00002105 ETH
197309052024-04-25 7:30:5966 days ago1714030259
0x8f1E749b...2Eb2E3669
0.00002105 ETH
197309052024-04-25 7:30:5966 days ago1714030259
0x8f1E749b...2Eb2E3669
0.02107762 ETH
197270372024-04-24 18:32:2367 days ago1713983543
0x8f1E749b...2Eb2E3669
0.00013383 ETH
197270372024-04-24 18:32:2367 days ago1713983543
0x8f1E749b...2Eb2E3669
0.00013383 ETH
197270372024-04-24 18:32:2367 days ago1713983543
0x8f1E749b...2Eb2E3669
0.13396606 ETH
197270262024-04-24 18:30:1167 days ago1713983411
0x8f1E749b...2Eb2E3669
0.00008285 ETH
197270262024-04-24 18:30:1167 days ago1713983411
0x8f1E749b...2Eb2E3669
0.00008285 ETH
197270262024-04-24 18:30:1167 days ago1713983411
0x8f1E749b...2Eb2E3669
0.08293808 ETH
197263302024-04-24 16:09:4767 days ago1713974987
0x8f1E749b...2Eb2E3669
0.00001758 ETH
197263302024-04-24 16:09:4767 days ago1713974987
0x8f1E749b...2Eb2E3669
0.00001758 ETH
197263302024-04-24 16:09:4767 days ago1713974987
0x8f1E749b...2Eb2E3669
0.01760719 ETH
197261432024-04-24 15:32:2367 days ago1713972743
0x8f1E749b...2Eb2E3669
0.00016505 ETH
197261432024-04-24 15:32:2367 days ago1713972743
0x8f1E749b...2Eb2E3669
0.00016505 ETH
197261432024-04-24 15:32:2367 days ago1713972743
0x8f1E749b...2Eb2E3669
0.16521845 ETH
197255062024-04-24 13:23:1167 days ago1713964991
0x8f1E749b...2Eb2E3669
0.00022123 ETH
197255062024-04-24 13:23:1167 days ago1713964991
0x8f1E749b...2Eb2E3669
0.00022123 ETH
197255062024-04-24 13:23:1167 days ago1713964991
0x8f1E749b...2Eb2E3669
0.22145545 ETH
197254342024-04-24 13:08:4767 days ago1713964127
0x8f1E749b...2Eb2E3669
0.0000735 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Eth_broker

Compiler Version
v0.5.0+commit.1d4f565a

Optimization Enabled:
Yes with 500 runs

Other Settings:
default evmVersion, BSD-3-Clause license
/**
 *Submitted for verification at Etherscan.io on 2021-08-12
*/

// File: contracts/I_Curve.sol

pragma solidity 0.5.0;

/**
 * @title   Interface Curve
 * @notice  This contract acts as an interface to the curve contract. For
 *          documentation please see the curve smart contract.
 */
interface I_Curve {
    
    // -------------------------------------------------------------------------
    // View functions
    // -------------------------------------------------------------------------

    /**
     * @notice This function is only callable after the curve contract has been
     *         initialized.
     * @param  _amount The amount of tokens a user wants to buy
     * @return uint256 The cost to buy the _amount of tokens in the collateral
     *         currency (see collateral token).
     */
    function buyPrice(uint256 _amount)
        external
        view
        returns (uint256 collateralRequired);

    /**
     * @notice This function is only callable after the curve contract has been
     *         initialized.
     * @param  _amount The amount of tokens a user wants to sell
     * @return collateralReward The reward for selling the _amount of tokens in the
     *         collateral currency (see collateral token).
     */
    function sellReward(uint256 _amount)
        external
        view
        returns (uint256 collateralReward);

    /**
      * @return If the curve is both active and initialised.
      */
    function isCurveActive() external view returns (bool);

    /**
      * @return The address of the collateral token (DAI)
      */
    function collateralToken() external view returns (address);

    /**
      * @return The address of the bonded token (BZZ).
      */
    function bondedToken() external view returns (address);

    /**
      * @return The required collateral amount (DAI) to initialise the curve.
      */
    function requiredCollateral(uint256 _initialSupply)
        external
        view
        returns (uint256);

    // -------------------------------------------------------------------------
    // State modifying functions
    // -------------------------------------------------------------------------

    /**
     * @notice This function initializes the curve contract, and ensure the
     *         curve has the required permissions on the token contract needed
     *         to function.
     */
    function init() external;

    /**
      * @param  _amount The amount of tokens (BZZ) the user wants to buy.
      * @param  _maxCollateralSpend The max amount of collateral (DAI) the user is
      *         willing to spend in order to buy the _amount of tokens.
      * @return The status of the mint. Note that should the total cost of the
      *         purchase exceed the _maxCollateralSpend the transaction will revert.
      */
    function mint(uint256 _amount, uint256 _maxCollateralSpend)
        external
        returns (bool success);

    /**
      * @param  _amount The amount of tokens (BZZ) the user wants to buy.
      * @param  _maxCollateralSpend The max amount of collateral (DAI) the user is
      *         willing to spend in order to buy the _amount of tokens.
      * @param  _to The address to send the tokens to.
      * @return The status of the mint. Note that should the total cost of the
      *         purchase exceed the _maxCollateralSpend the transaction will revert.
      */
    function mintTo(
        uint256 _amount, 
        uint256 _maxCollateralSpend, 
        address _to
    )
        external
        returns (bool success);

    /**
      * @param  _amount The amount of tokens (BZZ) the user wants to sell.
      * @param  _minCollateralReward The min amount of collateral (DAI) the user is
      *         willing to receive for their tokens.
      * @return The status of the burn. Note that should the total reward of the
      *         burn be below the _minCollateralReward the transaction will revert.
      */
    function redeem(uint256 _amount, uint256 _minCollateralReward)
        external
        returns (bool success);

    /**
      * @notice Shuts down the curve, disabling buying, selling and both price
      *         functions. Can only be called by the owner. Will renounce the
      *         minter role on the bonded token.
      */
    function shutDown() external;
}

// File: contracts/I_router_02.sol

pragma solidity 0.5.0;

/**
  * Please note that this interface was created as IUniswapV2Router02 uses
  * Solidity >= 0.6.2, and the BZZ infastructure uses 0.5.0. 
  */
interface I_router_02 {
    // Views & Pure
    function WETH() external pure returns (address);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
   
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

    // State modifying
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function swapExactTokensForETH(
        uint amountIn, 
        uint amountOutMin, 
        address[] calldata path, 
        address to, 
        uint deadline
    )
        external
        returns (uint[] memory amounts);
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol

pragma solidity ^0.5.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/Eth_broker.sol

pragma solidity 0.5.0;




contract Eth_broker {
    // The instance of the curve
    I_Curve internal curve_;
    // The instance of the Uniswap router
    I_router_02 internal router_;
    // The instance of the DAI token
    IERC20 internal dai_;
    // The address for the underlying token address
    IERC20 internal bzz_;
    // Mutex guard for state modifying functions
    uint256 private status_;
    // States for the guard 
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    // -------------------------------------------------------------------------
    // Events
    // -------------------------------------------------------------------------

    // Emitted when tokens are minted
    event mintTokensWithEth(
        address indexed buyer,      // The address of the buyer
        uint256 amount,             // The amount of bonded tokens to mint
        uint256 priceForTokensDai,  // The price in DAI for the token amount
        uint256 EthTradedForDai,    // The ETH amount sold for DAI
        uint256 maxSpendDai         // The max amount of DAI to spend
    );
    // Emitted when tokens are minted
    event mintTokensToWithEth(
        address indexed buyer,      // The address of the buyer
        address indexed receiver,   // The address of the receiver of the tokens
        uint256 amount,             // The amount of bonded tokens to mint
        uint256 priceForTokensDai,  // The price in DAI for the token amount
        uint256 EthTradedForDai,    // The ETH amount sold for DAI
        uint256 maxSpendDai         // The max amount of DAI to spend
    );
    // Emitted when tokens are burnt
    event burnTokensWithEth(
        address indexed seller,     // The address of the seller
        uint256 amount,             // The amount of bonded tokens to burn
        uint256 rewardReceivedDai,  // The amount of DAI received for selling
        uint256 ethReceivedForDai,  // How much ETH the DAI was traded for
        uint256 minRewardDai        // The min amount of DAI to sell for
    );

    // -------------------------------------------------------------------------
    // Modifiers
    // -------------------------------------------------------------------------

    /**
      * @notice Checks if the curve is active (may be redundant).
      */
    modifier isCurveActive() {
        require(curve_.isCurveActive(), "Curve inactive");
        _;
    }

    /**
      * @notice Protects against re-entrancy attacks
      */
    modifier mutex() {
        require(status_ != _ENTERED, "ReentrancyGuard: reentrant call");
        // Any calls to non Reentrant after this point will fail
        status_ = _ENTERED;
        // Function executes
        _;
        // Status set to not entered
        status_ = _NOT_ENTERED;
    }

    // -------------------------------------------------------------------------
    // Constructor
    // -------------------------------------------------------------------------

    constructor(
        address _bzzCurve, 
        address _collateralToken, 
        address _router02
    ) 
        public 
    {
        require(
            _bzzCurve != address(0) &&
            _collateralToken != address(0) &&
            _router02 != address(0),
            "Addresses of contracts cannot be 0x address"
        );
        curve_ = I_Curve(_bzzCurve);
        dai_ = IERC20(_collateralToken);
        router_ = I_router_02(_router02);
        // Setting the address of the underlying token (BZZ)
        bzz_ = IERC20(curve_.bondedToken());
    }

    // -------------------------------------------------------------------------
    // View functions
    // -------------------------------------------------------------------------

    /**
     * @notice This function is only callable after the curve contract has been
     *         initialized.
     * @param  _amount The amount of tokens a user wants to buy
     * @return uint256 The cost to buy the _amount of tokens in ETH
     */
    function buyPrice(uint256 _amount)
        public
        view
        isCurveActive()
        returns (uint256)
    {
        // Getting the current DAI cost for token amount
        uint256 daiCost = curve_.buyPrice(_amount);
        // Returning the required ETH to buy DAI amount
        return router_.getAmountsIn(
            daiCost, 
            getPath(true)
        )[0];
    }

    /**
     * @notice This function is only callable after the curve contract has been
     *         initialized.
     * @param  _amount The amount of tokens a user wants to sell
     * @return uint256 The reward for selling the _amount of tokens in ETH
     */
    function sellReward(uint256 _amount)
        public
        view
        isCurveActive()
        returns (uint256)
    {
        // Getting the current DAI reward for token amount
        uint256 daiReward = curve_.sellReward(_amount);
        // Returning the ETH reward for token sale
        return router_.getAmountsIn(
            daiReward, 
            getPath(true)
        )[0];
    }
    
    /**
      * @param  _daiAmount The amount of dai to be traded for ETH
      * @return uint256 The amount of ETH that can be traded for given the
      *         dai amount
      */
    function sellRewardDai(uint256 _daiAmount)
        public
        view
        isCurveActive()
        returns (uint256)
    {
        // Returning the ETH reward for the dai amount
        return router_.getAmountsIn(
            _daiAmount, 
            getPath(true)
        )[0];
    }
    
    /**
      * @param  _buy If the path is for a buy or sell transaction
      * @return address[] The path for the transaction
      */
    function getPath(bool _buy) public view returns(address[] memory) {
        address[] memory buyPath = new address[](2);
        if(_buy) {
            buyPath[0] = router_.WETH();
            buyPath[1] = address(dai_);
        } else {
            buyPath[0] = address(dai_);
            buyPath[1] = router_.WETH();
        }
        
        return buyPath;
    }
    
    /**
      * @return Gets the current time
      */
    function getTime() public view returns(uint256) {
        return now;
    }

    // -------------------------------------------------------------------------
    // State modifying functions
    // -------------------------------------------------------------------------

    /**
      * @param  _tokenAmount The amount of BZZ tokens the user would like to
      *         buy from the curve.
      * @param  _maxDaiSpendAmount The max amount of collateral (DAI) the user
      *         is willing to spend to buy the amount of tokens.
      * @param  _deadline Unix timestamp after which the transaction will 
      *         revert. - Taken from Uniswap documentation: 
      *         https://uniswap.org/docs/v2/smart-contracts/router02/#swapethforexacttokens
      * @return bool If the transaction completed successfully.
      * @notice Before this function is called the caller does not need to
      *         approve the spending of anything. Please assure that the amount
      *         of ETH sent with this transaction is sufficient by first calling
      *         `buyPrice` with the same token amount. Add your % slippage to
      *         the max dai spend amount (you can get the expected amount by 
      *         calling `buyPrice` on the curve contract).
      */
    function mint(
        uint256 _tokenAmount, 
        uint256 _maxDaiSpendAmount, 
        uint _deadline
    )
        external
        payable
        isCurveActive()
        mutex()
        returns (bool)
    {
        (uint256 daiNeeded, uint256 ethReceived) = _commonMint(
            _tokenAmount,
            _maxDaiSpendAmount,
            _deadline,
            msg.sender
        );
        // Emitting event with all important info
        emit mintTokensWithEth(
            msg.sender, 
            _tokenAmount, 
            daiNeeded, 
            ethReceived, 
            _maxDaiSpendAmount
        );
        // Returning that the mint executed successfully
        return true;
    }

    /**
      * @param  _tokenAmount The amount of BZZ tokens the user would like to
      *         buy from the curve.
      * @param  _maxDaiSpendAmount The max amount of collateral (DAI) the user
      *         is willing to spend to buy the amount of tokens.
      * @param  _deadline Unix timestamp after which the transaction will 
      *         revert. - Taken from Uniswap documentation: 
      *         https://uniswap.org/docs/v2/smart-contracts/router02/#swapethforexacttokens
      * @return bool If the transaction completed successfully.
      * @notice Before this function is called the caller does not need to
      *         approve the spending of anything. Please assure that the amount
      *         of ETH sent with this transaction is sufficient by first calling
      *         `buyPrice` with the same token amount. Add your % slippage to
      *         the max dai spend amount (you can get the expected amount by 
      *         calling `buyPrice` on the curve contract).
      */
    function mintTo(
        uint256 _tokenAmount, 
        uint256 _maxDaiSpendAmount, 
        uint _deadline,
        address _to
    )
        external
        payable
        isCurveActive()
        mutex()
        returns (bool)
    {
        (uint256 daiNeeded, uint256 ethReceived) = _commonMint(
            _tokenAmount,
            _maxDaiSpendAmount,
            _deadline,
            _to
        );
        // Emitting event with all important info
        emit mintTokensToWithEth(
            msg.sender, 
            _to,
            _tokenAmount, 
            daiNeeded, 
            ethReceived, 
            _maxDaiSpendAmount
        );
        // Returning that the mint executed successfully
        return true;
    }

    /**
      * @notice The user needs to have approved this contract as a spender of
      *         of the desired `_tokenAmount` to sell before calling this
      *         transaction. Failure to do so will result in the call reverting.
      *         This function is payable to receive ETH from internal calls.
      *         Please do not send ETH to this function.
      * @param  _tokenAmount The amount of BZZ tokens the user would like to
      *         sell.
      * @param  _minDaiSellValue The min value of collateral (DAI) the user
      *         is willing to sell their tokens for.
      * @param  _deadline Unix timestamp after which the transaction will 
      *         revert. - Taken from Uniswap documentation: 
      *         https://uniswap.org/docs/v2/smart-contracts/router02/#swapexacttokensforeth
      * @return bool If the transaction completed successfully.
      */
    function redeem(
        uint256 _tokenAmount, 
        uint256 _minDaiSellValue,
        uint _deadline
    )
        external
        payable
        isCurveActive()
        mutex()
        returns (bool)
    {
        // Gets the current reward for selling the amount of tokens
        uint256 daiReward = curve_.sellReward(_tokenAmount);
        // The check that the dai reward amount is not more than the min sell 
        // amount happens in the curve.

        // Transferring _amount of tokens into this contract
        require(
            bzz_.transferFrom(
                msg.sender,
                address(this),
                _tokenAmount
            ),
            "Transferring BZZ failed"
        );
        // Approving the curve as a spender
        require(
            bzz_.approve(
                address(curve_),
                _tokenAmount
            ),
            "BZZ approve failed"
        );
        // Selling tokens for DAI
        require(
            curve_.redeem(
                _tokenAmount,
                daiReward
            ),
            "Curve burn failed"
        );
        // Getting expected ETH for DAI
        uint256 ethMin = sellRewardDai(_minDaiSellValue);
        // Approving the router as a spender
        require(
            dai_.approve(
                address(router_),
                daiReward
            ),
            "DAI approve failed"
        );
        // Selling DAI received for ETH
        router_.swapExactTokensForETH(
            daiReward, 
            ethMin, 
            getPath(false), 
            msg.sender, 
            _deadline
        );
        // Emitting event with all important info
        emit burnTokensWithEth(
            msg.sender, 
            _tokenAmount, 
            daiReward, 
            ethMin, 
            _minDaiSellValue
        );
        // Returning that the burn executed successfully
        return true;
    }

    function() external payable {
        require(
            msg.sender == address(router_),
            "ETH not accepted outside router"
        );
    }


    // -------------------------------------------------------------------------
    // Internal functions
    // -------------------------------------------------------------------------

    /**
      * @param  _tokenAmount The amount of BZZ tokens the user would like to
      *         buy from the curve.
      * @param  _maxDaiSpendAmount The max amount of collateral (DAI) the user
      *         is willing to spend to buy the amount of tokens.
      * @param  _deadline Unix timestamp after which the transaction will 
      *         revert. - Taken from Uniswap documentation: 
      *         https://uniswap.org/docs/v2/smart-contracts/router02/#swapethforexacttokens
      * @return uint256 The dai needed to buy the tokens.
      * @return uint256 The Ether received from the user for the trade.
      * @notice Before this function is called the caller does not need to
      *         approve the spending of anything. Please assure that the amount
      *         of ETH sent with this transaction is sufficient by first calling
      *         `buyPrice` with the same token amount. Add your % slippage to
      *         the max dai spend amount (you can get the expected amount by 
      *         calling `buyPrice` on the curve contract).
      */
    function _commonMint(
        uint256 _tokenAmount, 
        uint256 _maxDaiSpendAmount, 
        uint _deadline,
        address _to
    )
        internal
        returns(
            uint256 daiNeeded,
            uint256 ethReceived
        )
    {
        // Getting the exact needed amount of DAI for desired token amount
        daiNeeded = curve_.buyPrice(_tokenAmount);
        // Checking that this amount is not more than the max spend amount
        require(
            _maxDaiSpendAmount >= daiNeeded,
            "DAI required for trade above max"
        );
        // Swapping sent ETH for exact amount of DAI needed
        router_.swapETHForExactTokens.value(msg.value)(
            daiNeeded, 
            getPath(true), 
            address(this), 
            _deadline
        );
        // Getting the amount of ETH received
        ethReceived = address(this).balance;
        // Approving the curve as a spender
        require(
            dai_.approve(address(curve_), daiNeeded),
            "DAI approve failed"
        );
        // Buying tokens (BZZ) against the curve
        require(
            curve_.mintTo(_tokenAmount, daiNeeded, _to),
            "BZZ mintTo failed"
        );
        // Refunding user excess ETH
        msg.sender.transfer(ethReceived);
    }
}

Contract Security Audit

Contract ABI

[{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"},{"name":"_maxDaiSpendAmount","type":"uint256"},{"name":"_deadline","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_buy","type":"bool"}],"name":"getPath","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_daiAmount","type":"uint256"}],"name":"sellRewardDai","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"},{"name":"_minDaiSellValue","type":"uint256"},{"name":"_deadline","type":"uint256"}],"name":"redeem","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenAmount","type":"uint256"},{"name":"_maxDaiSpendAmount","type":"uint256"},{"name":"_deadline","type":"uint256"},{"name":"_to","type":"address"}],"name":"mintTo","outputs":[{"name":"","type":"bool"}],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"buyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_amount","type":"uint256"}],"name":"sellReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_bzzCurve","type":"address"},{"name":"_collateralToken","type":"address"},{"name":"_router02","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"priceForTokensDai","type":"uint256"},{"indexed":false,"name":"EthTradedForDai","type":"uint256"},{"indexed":false,"name":"maxSpendDai","type":"uint256"}],"name":"mintTokensWithEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"priceForTokensDai","type":"uint256"},{"indexed":false,"name":"EthTradedForDai","type":"uint256"},{"indexed":false,"name":"maxSpendDai","type":"uint256"}],"name":"mintTokensToWithEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"rewardReceivedDai","type":"uint256"},{"indexed":false,"name":"ethReceivedForDai","type":"uint256"},{"indexed":false,"name":"minRewardDai","type":"uint256"}],"name":"burnTokensWithEth","type":"event"}]

608060405234801561001057600080fd5b5060405160608062001bae8339810180604052606081101561003157600080fd5b5080516020820151604090920151909190600160a060020a038316158015906100625750600160a060020a03821615155b80156100765750600160a060020a03811615155b151561010957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f416464726573736573206f6620636f6e7472616374732063616e6e6f7420626560448201527f2030782061646472657373000000000000000000000000000000000000000000606482015290519081900360840190fd5b60008054600160a060020a03808616600160a060020a031992831617928390556002805486831690841617905560018054858316931692909217909155604080517fe36a4ec70000000000000000000000000000000000000000000000000000000081529051929091169163e36a4ec791600480820192602092909190829003018186803b15801561019a57600080fd5b505afa1580156101ae573d6000803e3d6000fd5b505050506040513d60208110156101c457600080fd5b505160038054600160a060020a03909216600160a060020a03199092169190911790555050506119b480620001fa6000396000f3fe6080604052600436106100745763ffffffff60e060020a60003504166302acc94b81146100d85780631cb0cbbc1461011557806322937f8414610191578063557ed1ba146101cd578063b8192205146101e2578063be228dcc1461020b578063c4dbf62214610243578063c9f1dba81461026d575b600154600160a060020a031633146100d6576040805160e560020a62461bcd02815260206004820152601f60248201527f455448206e6f74206163636570746564206f75747369646520726f7574657200604482015290519081900360640190fd5b005b610101600480360360608110156100ee57600080fd5b5080359060208101359060400135610297565b604080519115158252519081900360200190f35b34801561012157600080fd5b506101416004803603602081101561013857600080fd5b5035151561043b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561017d578181015183820152602001610165565b505050509050019250505060405180910390f35b34801561019d57600080fd5b506101bb600480360360208110156101b457600080fd5b503561061a565b60408051918252519081900360200190f35b3480156101d957600080fd5b506101bb610832565b610101600480360360608110156101f857600080fd5b5080359060208101359060400135610836565b6101016004803603608081101561022157600080fd5b5080359060208101359060408101359060600135600160a060020a0316610f8c565b34801561024f57600080fd5b506101bb6004803603602081101561026657600080fd5b503561113d565b34801561027957600080fd5b506101bb6004803603602081101561029057600080fd5b50356113ed565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156102e957600080fd5b505afa1580156102fd573d6000803e3d6000fd5b505050506040513d602081101561031357600080fd5b5051151561036b576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b600454600214156103c6576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026004556000806103da86868633611527565b604080518981526020810184905280820183905260608101899052905192945090925033917f4327eea945b1ba6ff37d2123b5d61dc45738400e84b80b918df27bf18c8c3b0b9181900360800190a260019250505060016004559392505050565b604080516002808252606080830184529283929190602083019080388339019050509050821561053757600160009054906101000a9004600160a060020a0316600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104b657600080fd5b505afa1580156104ca573d6000803e3d6000fd5b505050506040513d60208110156104e057600080fd5b50518151829060009081106104f157fe5b600160a060020a039283166020918202909201015260025482519116908290600190811061051b57fe5b600160a060020a03909216602092830290910190910152610614565b6002548151600160a060020a03909116908290600090811061055557fe5b600160a060020a039283166020918202909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d60208110156105eb57600080fd5b50518151829060019081106105fc57fe5b600160a060020a039092166020928302909101909101525b92915050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561066c57600080fd5b505afa158015610680573d6000803e3d6000fd5b505050506040513d602081101561069657600080fd5b505115156106ee576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60018054600160a060020a031690631f00ca7490849061070d9061043b565b6040805160e060020a63ffffffff86160281526004810184815260248201928352835160448301528351909291606401906020858101910280838360005b8381101561076357818101518382015260200161074b565b50505050905001935050505060006040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107c457600080fd5b8101908080516401000000008111156107dc57600080fd5b820160208101848111156107ef57600080fd5b815185602082028301116401000000008211171561080c57600080fd5b50508051909350600092508210905061082157fe5b906020019060200201519050919050565b4290565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b5051151561090a576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60045460021415610965576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600490815560008054604080517fc9f1dba8000000000000000000000000000000000000000000000000000000008152938401889052519192600160a060020a039091169163c9f1dba891602480820192602092909190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b5051600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018990529051929350600160a060020a03909116916323b872dd916064808201926020929091908290030181600087803b158015610a7457600080fd5b505af1158015610a88573d6000803e3d6000fd5b505050506040513d6020811015610a9e57600080fd5b50511515610af6576040805160e560020a62461bcd02815260206004820152601760248201527f5472616e7366657272696e6720425a5a206661696c6564000000000000000000604482015290519081900360640190fd5b60035460008054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018a90529051919093169263095ea7b39260448083019360209390929083900390910190829087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b505050506040513d6020811015610b9657600080fd5b50511515610bee576040805160e560020a62461bcd02815260206004820152601260248201527f425a5a20617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60008054604080517f7cbc237300000000000000000000000000000000000000000000000000000000815260048101899052602481018590529051600160a060020a0390921692637cbc2373926044808401936020939083900390910190829087803b158015610c5d57600080fd5b505af1158015610c71573d6000803e3d6000fd5b505050506040513d6020811015610c8757600080fd5b50511515610cdf576040805160e560020a62461bcd02815260206004820152601160248201527f4375727665206275726e206661696c6564000000000000000000000000000000604482015290519081900360640190fd5b6000610cea8561061a565b600254600154604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101879052905193945091169163095ea7b3916044808201926020929091908290030181600087803b158015610d5e57600080fd5b505af1158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b50511515610de0576040805160e560020a62461bcd02815260206004820152601260248201527f44414920617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a03166318cbafe58383610dfd600061043b565b33896040518663ffffffff1660e060020a028152600401808681526020018581526020018060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610e7b578181015183820152602001610e63565b505050509050019650505050505050600060405180830381600087803b158015610ea457600080fd5b505af1158015610eb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ee157600080fd5b810190808051640100000000811115610ef957600080fd5b82016020810184811115610f0c57600080fd5b8151856020820283011164010000000082111715610f2957600080fd5b5050604080518b815260208101889052808201879052606081018b905290513395507fe1da4be543e2eabcb36806b05a91cee4d2eefa7ad5e71dc73333c5c8d42b64c894509081900360800192509050a260019250505060016004559392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fde57600080fd5b505afa158015610ff2573d6000803e3d6000fd5b505050506040513d602081101561100857600080fd5b50511515611060576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b600454600214156110bb576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026004556000806110cf87878787611527565b604080518a815260208101849052808201839052606081018a90529051929450909250600160a060020a0386169133917f941fec67f36fd219de33f2cbbde64befe6b267982e50ee0f76e9b1b8446c4ca6919081900360800190a36001925050506001600455949350505050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561118f57600080fd5b505afa1580156111a3573d6000803e3d6000fd5b505050506040513d60208110156111b957600080fd5b50511515611211576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604080517fc4dbf622000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163c4dbf62291602480820192602092909190829003018186803b15801561127757600080fd5b505afa15801561128b573d6000803e3d6000fd5b505050506040513d60208110156112a157600080fd5b505160018054919250600160a060020a0390911690631f00ca749083906112c79061043b565b6040805160e060020a63ffffffff86160281526004810184815260248201928352835160448301528351909291606401906020858101910280838360005b8381101561131d578181015183820152602001611305565b50505050905001935050505060006040518083038186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561137e57600080fd5b81019080805164010000000081111561139657600080fd5b820160208101848111156113a957600080fd5b81518560208202830111640100000000821117156113c657600080fd5b5050805190935060009250821090506113db57fe5b90602001906020020151915050919050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d602081101561146957600080fd5b505115156114c1576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604080517fc9f1dba8000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163c9f1dba891602480820192602092909190829003018186803b15801561127757600080fd5b60008054604080517fc4dbf6220000000000000000000000000000000000000000000000000000000081526004810188905290518392600160a060020a03169163c4dbf622916024808301926020929190829003018186803b15801561158c57600080fd5b505afa1580156115a0573d6000803e3d6000fd5b505050506040513d60208110156115b657600080fd5b5051915081851015611612576040805160e560020a62461bcd02815260206004820181905260248201527f44414920726571756972656420666f722074726164652061626f7665206d6178604482015290519081900360640190fd5b60018054600160a060020a03169063fb3bdb4190349085906116339061043b565b30896040518663ffffffff1660e060020a028152600401808581526020018060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156116ab578181015183820152602001611693565b50505050905001955050505050506000604051808303818588803b1580156116d257600080fd5b505af11580156116e6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052602081101561171057600080fd5b81019080805164010000000081111561172857600080fd5b8201602081018481111561173b57600080fd5b815185602082028301116401000000008211171561175857600080fd5b505060025460008054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018b905290513031995093909116965063095ea7b395506044808201955060209450908390030190829087803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b505050506040513d60208110156117fe57600080fd5b50511515611856576040805160e560020a62461bcd02815260206004820152601260248201527f44414920617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60008054604080517f6190e3a8000000000000000000000000000000000000000000000000000000008152600481018a905260248101869052600160a060020a03878116604483015291519190921692636190e3a892606480820193602093909283900390910190829087803b1580156118cf57600080fd5b505af11580156118e3573d6000803e3d6000fd5b505050506040513d60208110156118f957600080fd5b50511515611951576040805160e560020a62461bcd02815260206004820152601160248201527f425a5a206d696e74546f206661696c6564000000000000000000000000000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f1935050505015801561197e573d6000803e3d6000fd5b509450949250505056fea165627a7a7230582000f08187231dd23bf6fe55ecb35bf58c32121f608f821b1bef65dcbc6466c5b600290000000000000000000000004f32ab778e85c4ad0cead54f8f82f5ee74d469040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

Deployed Bytecode

0x6080604052600436106100745763ffffffff60e060020a60003504166302acc94b81146100d85780631cb0cbbc1461011557806322937f8414610191578063557ed1ba146101cd578063b8192205146101e2578063be228dcc1461020b578063c4dbf62214610243578063c9f1dba81461026d575b600154600160a060020a031633146100d6576040805160e560020a62461bcd02815260206004820152601f60248201527f455448206e6f74206163636570746564206f75747369646520726f7574657200604482015290519081900360640190fd5b005b610101600480360360608110156100ee57600080fd5b5080359060208101359060400135610297565b604080519115158252519081900360200190f35b34801561012157600080fd5b506101416004803603602081101561013857600080fd5b5035151561043b565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561017d578181015183820152602001610165565b505050509050019250505060405180910390f35b34801561019d57600080fd5b506101bb600480360360208110156101b457600080fd5b503561061a565b60408051918252519081900360200190f35b3480156101d957600080fd5b506101bb610832565b610101600480360360608110156101f857600080fd5b5080359060208101359060400135610836565b6101016004803603608081101561022157600080fd5b5080359060208101359060408101359060600135600160a060020a0316610f8c565b34801561024f57600080fd5b506101bb6004803603602081101561026657600080fd5b503561113d565b34801561027957600080fd5b506101bb6004803603602081101561029057600080fd5b50356113ed565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156102e957600080fd5b505afa1580156102fd573d6000803e3d6000fd5b505050506040513d602081101561031357600080fd5b5051151561036b576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b600454600214156103c6576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026004556000806103da86868633611527565b604080518981526020810184905280820183905260608101899052905192945090925033917f4327eea945b1ba6ff37d2123b5d61dc45738400e84b80b918df27bf18c8c3b0b9181900360800190a260019250505060016004559392505050565b604080516002808252606080830184529283929190602083019080388339019050509050821561053757600160009054906101000a9004600160a060020a0316600160a060020a031663ad5c46486040518163ffffffff1660e060020a02815260040160206040518083038186803b1580156104b657600080fd5b505afa1580156104ca573d6000803e3d6000fd5b505050506040513d60208110156104e057600080fd5b50518151829060009081106104f157fe5b600160a060020a039283166020918202909201015260025482519116908290600190811061051b57fe5b600160a060020a03909216602092830290910190910152610614565b6002548151600160a060020a03909116908290600090811061055557fe5b600160a060020a039283166020918202909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c4648926004808301939192829003018186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d60208110156105eb57600080fd5b50518151829060019081106105fc57fe5b600160a060020a039092166020928302909101909101525b92915050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561066c57600080fd5b505afa158015610680573d6000803e3d6000fd5b505050506040513d602081101561069657600080fd5b505115156106ee576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60018054600160a060020a031690631f00ca7490849061070d9061043b565b6040805160e060020a63ffffffff86160281526004810184815260248201928352835160448301528351909291606401906020858101910280838360005b8381101561076357818101518382015260200161074b565b50505050905001935050505060006040518083038186803b15801561078757600080fd5b505afa15801561079b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156107c457600080fd5b8101908080516401000000008111156107dc57600080fd5b820160208101848111156107ef57600080fd5b815185602082028301116401000000008211171561080c57600080fd5b50508051909350600092508210905061082157fe5b906020019060200201519050919050565b4290565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561088857600080fd5b505afa15801561089c573d6000803e3d6000fd5b505050506040513d60208110156108b257600080fd5b5051151561090a576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60045460021415610965576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600490815560008054604080517fc9f1dba8000000000000000000000000000000000000000000000000000000008152938401889052519192600160a060020a039091169163c9f1dba891602480820192602092909190829003018186803b1580156109d257600080fd5b505afa1580156109e6573d6000803e3d6000fd5b505050506040513d60208110156109fc57600080fd5b5051600354604080517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018990529051929350600160a060020a03909116916323b872dd916064808201926020929091908290030181600087803b158015610a7457600080fd5b505af1158015610a88573d6000803e3d6000fd5b505050506040513d6020811015610a9e57600080fd5b50511515610af6576040805160e560020a62461bcd02815260206004820152601760248201527f5472616e7366657272696e6720425a5a206661696c6564000000000000000000604482015290519081900360640190fd5b60035460008054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018a90529051919093169263095ea7b39260448083019360209390929083900390910190829087803b158015610b6c57600080fd5b505af1158015610b80573d6000803e3d6000fd5b505050506040513d6020811015610b9657600080fd5b50511515610bee576040805160e560020a62461bcd02815260206004820152601260248201527f425a5a20617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60008054604080517f7cbc237300000000000000000000000000000000000000000000000000000000815260048101899052602481018590529051600160a060020a0390921692637cbc2373926044808401936020939083900390910190829087803b158015610c5d57600080fd5b505af1158015610c71573d6000803e3d6000fd5b505050506040513d6020811015610c8757600080fd5b50511515610cdf576040805160e560020a62461bcd02815260206004820152601160248201527f4375727665206275726e206661696c6564000000000000000000000000000000604482015290519081900360640190fd5b6000610cea8561061a565b600254600154604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101879052905193945091169163095ea7b3916044808201926020929091908290030181600087803b158015610d5e57600080fd5b505af1158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b50511515610de0576040805160e560020a62461bcd02815260206004820152601260248201527f44414920617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b600154600160a060020a03166318cbafe58383610dfd600061043b565b33896040518663ffffffff1660e060020a028152600401808681526020018581526020018060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015610e7b578181015183820152602001610e63565b505050509050019650505050505050600060405180830381600087803b158015610ea457600080fd5b505af1158015610eb8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ee157600080fd5b810190808051640100000000811115610ef957600080fd5b82016020810184811115610f0c57600080fd5b8151856020820283011164010000000082111715610f2957600080fd5b5050604080518b815260208101889052808201879052606081018b905290513395507fe1da4be543e2eabcb36806b05a91cee4d2eefa7ad5e71dc73333c5c8d42b64c894509081900360800192509050a260019250505060016004559392505050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b158015610fde57600080fd5b505afa158015610ff2573d6000803e3d6000fd5b505050506040513d602081101561100857600080fd5b50511515611060576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b600454600214156110bb576040805160e560020a62461bcd02815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026004556000806110cf87878787611527565b604080518a815260208101849052808201839052606081018a90529051929450909250600160a060020a0386169133917f941fec67f36fd219de33f2cbbde64befe6b267982e50ee0f76e9b1b8446c4ca6919081900360800190a36001925050506001600455949350505050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561118f57600080fd5b505afa1580156111a3573d6000803e3d6000fd5b505050506040513d60208110156111b957600080fd5b50511515611211576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604080517fc4dbf622000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163c4dbf62291602480820192602092909190829003018186803b15801561127757600080fd5b505afa15801561128b573d6000803e3d6000fd5b505050506040513d60208110156112a157600080fd5b505160018054919250600160a060020a0390911690631f00ca749083906112c79061043b565b6040805160e060020a63ffffffff86160281526004810184815260248201928352835160448301528351909291606401906020858101910280838360005b8381101561131d578181015183820152602001611305565b50505050905001935050505060006040518083038186803b15801561134157600080fd5b505afa158015611355573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561137e57600080fd5b81019080805164010000000081111561139657600080fd5b820160208101848111156113a957600080fd5b81518560208202830111640100000000821117156113c657600080fd5b5050805190935060009250821090506113db57fe5b90602001906020020151915050919050565b60008060009054906101000a9004600160a060020a0316600160a060020a03166305a27c9d6040518163ffffffff1660e060020a02815260040160206040518083038186803b15801561143f57600080fd5b505afa158015611453573d6000803e3d6000fd5b505050506040513d602081101561146957600080fd5b505115156114c1576040805160e560020a62461bcd02815260206004820152600e60248201527f437572766520696e616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b60008054604080517fc9f1dba8000000000000000000000000000000000000000000000000000000008152600481018690529051600160a060020a039092169163c9f1dba891602480820192602092909190829003018186803b15801561127757600080fd5b60008054604080517fc4dbf6220000000000000000000000000000000000000000000000000000000081526004810188905290518392600160a060020a03169163c4dbf622916024808301926020929190829003018186803b15801561158c57600080fd5b505afa1580156115a0573d6000803e3d6000fd5b505050506040513d60208110156115b657600080fd5b5051915081851015611612576040805160e560020a62461bcd02815260206004820181905260248201527f44414920726571756972656420666f722074726164652061626f7665206d6178604482015290519081900360640190fd5b60018054600160a060020a03169063fb3bdb4190349085906116339061043b565b30896040518663ffffffff1660e060020a028152600401808581526020018060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156116ab578181015183820152602001611693565b50505050905001955050505050506000604051808303818588803b1580156116d257600080fd5b505af11580156116e6573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052602081101561171057600080fd5b81019080805164010000000081111561172857600080fd5b8201602081018481111561173b57600080fd5b815185602082028301116401000000008211171561175857600080fd5b505060025460008054604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a039283166004820152602481018b905290513031995093909116965063095ea7b395506044808201955060209450908390030190829087803b1580156117d457600080fd5b505af11580156117e8573d6000803e3d6000fd5b505050506040513d60208110156117fe57600080fd5b50511515611856576040805160e560020a62461bcd02815260206004820152601260248201527f44414920617070726f7665206661696c65640000000000000000000000000000604482015290519081900360640190fd5b60008054604080517f6190e3a8000000000000000000000000000000000000000000000000000000008152600481018a905260248101869052600160a060020a03878116604483015291519190921692636190e3a892606480820193602093909283900390910190829087803b1580156118cf57600080fd5b505af11580156118e3573d6000803e3d6000fd5b505050506040513d60208110156118f957600080fd5b50511515611951576040805160e560020a62461bcd02815260206004820152601160248201527f425a5a206d696e74546f206661696c6564000000000000000000000000000000604482015290519081900360640190fd5b604051339082156108fc029083906000818181858888f1935050505015801561197e573d6000803e3d6000fd5b509450949250505056fea165627a7a7230582000f08187231dd23bf6fe55ecb35bf58c32121f608f821b1bef65dcbc6466c5b60029

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

0000000000000000000000004f32ab778e85c4ad0cead54f8f82f5ee74d469040000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d

-----Decoded View---------------
Arg [0] : _bzzCurve (address): 0x4F32Ab778e85C4aD0CEad54f8f82F5Ee74d46904
Arg [1] : _collateralToken (address): 0x6B175474E89094C44Da98b954EedeAC495271d0F
Arg [2] : _router02 (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000004f32ab778e85c4ad0cead54f8f82f5ee74d46904
Arg [1] : 0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f
Arg [2] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d


Deployed Bytecode Sourcemap

8356:15901:0:-;;;;;;;;;-1:-1:-1;;;8356:15901:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21533:7;;-1:-1:-1;;;;;21533:7:0;21511:10;:30;21489:111;;;;;-1:-1:-1;;;;;21489:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8356:15901;15969:729;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15969:729:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14203:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14203:378:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14203:378:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14203:378:0;;;;;;;;;;;;;;;;;13749:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13749:300:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13749:300:0;;;;;;;;;;;;;;;;;;;14651:77;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14651:77:0;;;;19432:2010;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19432:2010:0;;;;;;;;;;;;;17739:766;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;17739:766:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17739:766:0;;;12462:401;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12462:401:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12462:401:0;;;13141:406;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13141:406:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13141:406:0;;;15969:729;16180:4;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10950:7;;8864:1;10950:19;;10942:63;;;;;-1:-1:-1;;;;;10942:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8864:1;11082:7;:18;16203:17;;16245:131;16271:12;16298:18;16331:9;16355:10;16245:11;:131::i;:::-;16443:167;;;;;;;;;;;;;;;;;;;;;;;;;;16202:174;;-1:-1:-1;16202:174:0;;-1:-1:-1;16475:10:0;;16443:167;;;;;;;;;16686:4;16679:11;;;;8820:1;11191:7;:22;15969:729;;-1:-1:-1;;;15969:729:0:o;14203:378::-;14307:16;;;14321:1;14307:16;;;14251;14307;;;;;14251;;;14307;14321:1;14307:16;;;;;105:10:-1;14307:16:0;88:34:-1;136:17;;-1:-1;14307:16:0;14280:43;;14337:4;14334:205;;;14371:7;;;;;;;;;-1:-1:-1;;;;;14371:7:0;-1:-1:-1;;;;;14371:12:0;;:14;;;;;-1:-1:-1;;;14371:14:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14371:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14371:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14371:14:0;14358:10;;:7;;14366:1;;14358:10;;;;;;-1:-1:-1;;;;;14358:27:0;;;:10;;;;;;;;:27;14421:4;;14400:10;;14421:4;;;14400:7;;14421:4;;14400:10;;;;;;-1:-1:-1;;;;;14400:26:0;;;:10;;;;;;;;;;:26;14334:205;;;14480:4;;14459:10;;-1:-1:-1;;;;;14480:4:0;;;;14459:7;;14480:4;;14459:10;;;;;;-1:-1:-1;;;;;14459:26:0;;;:10;;;;;;;;;:26;;;;14513:7;;:14;;;;;;;;:7;;;;;:12;;:14;;;;;14459:10;;14513:14;;;;;:7;:14;;;5:2:-1;;;;30:1;27;20:12;5:2;14513:14:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14513:14:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14513:14:0;14500:10;;:7;;14508:1;;14500:10;;;;;;-1:-1:-1;;;;;14500:27:0;;;:10;;;;;;;;;;:27;14334:205;14566:7;14203:378;-1:-1:-1;;14203:378:0:o;13749:300::-;13865:7;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13953:7;;;-1:-1:-1;;;;;13953:7:0;;:20;;13988:10;;14014:13;;:7;:13::i;:::-;13953:85;;;-1:-1:-1;;;13953:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13953:85:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13953:85:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;13953:85:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;13953:85:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;13953:85:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;13953:88:0;;:85;;-1:-1:-1;14039:1:0;;-1:-1:-1;13953:88:0;;;-1:-1:-1;13953:88:0;;;;;;;;;;;;13946:95;;13749:300;;;:::o;14651:77::-;14717:3;14651:77;:::o;19432:2010::-;19642:4;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10950:7;;8864:1;10950:19;;10942:63;;;;;-1:-1:-1;;;;;10942:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8864:1;11082:7;:18;;;19733:17;19753:6;;:31;;;;;;;;;;;;;19733:17;;-1:-1:-1;;;;;19753:6:0;;;;:17;;:31;;;;;;;;;;;;;;;:6;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;19753:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19753:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19753:31:0;20002:4;;:124;;;;;;20038:10;20002:124;;;;20075:4;20002:124;;;;;;;;;;;;19753:31;;-1:-1:-1;;;;;;20002:4:0;;;;:17;;:124;;;;;19753:31;;20002:124;;;;;;;;:4;;:124;;;5:2:-1;;;;30:1;27;20:12;5:2;20002:124:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20002:124:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20002:124:0;19980:197;;;;;;;-1:-1:-1;;;;;19980:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20255:4;;;20294:6;;20255:92;;;;;;-1:-1:-1;;;;;20294:6:0;;;20255:92;;;;;;;;;;;;:4;;;;;:12;;:92;;;;;;;;;;;;;;;;;;;:4;:92;;;5:2:-1;;;;30:1;27;20:12;5:2;20255:92:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20255:92:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20255:92:0;20233:160;;;;;;;-1:-1:-1;;;;;20233:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20461:6;;;:87;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20461:6:0;;;;:13;;:87;;;;;;;;;;;;;;;;;:6;:87;;;5:2:-1;;;;30:1;27;20:12;5:2;20461:87:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20461:87:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20461:87:0;20439:154;;;;;;;-1:-1:-1;;;;;20439:154:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20645:14;20662:31;20676:16;20662:13;:31::i;:::-;20772:4;;;20811:7;20772:90;;;;;;-1:-1:-1;;;;;20811:7:0;;;20772:90;;;;;;;;;;;;20645:48;;-1:-1:-1;20772:4:0;;;:12;;:90;;;;;;;;;;;;;;;:4;;:90;;;5:2:-1;;;;30:1;27;20:12;5:2;20772:90:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20772:90:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20772:90:0;20750:158;;;;;;;-1:-1:-1;;;;;20750:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20960:7;;-1:-1:-1;;;;;20960:7:0;:29;21004:9;21029:6;21051:14;20960:7;21051;:14::i;:::-;21081:10;21107:9;20960:167;;;;;-1:-1:-1;;;20960:167:0;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20960:167:0;-1:-1:-1;;;;;20960:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;20960:167:0;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20960:167:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20960:167:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;20960:167:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;20960:167:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;21194:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;21226:10;;-1:-1:-1;21194:160:0;;-1:-1:-1;21194:160:0;;;;;;;-1:-1:-1;21194:160:0;-1:-1:-1;21194:160:0;21430:4;21423:11;;;;8820:1;11191:7;:22;19432:2010;;-1:-1:-1;;;19432:2010:0:o;17739:766::-;17974:4;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10950:7;;8864:1;10950:19;;10942:63;;;;;-1:-1:-1;;;;;10942:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8864:1;11082:7;:18;17997:17;;18039:124;18065:12;18092:18;18125:9;18149:3;18039:11;:124::i;:::-;18230:187;;;;;;;;;;;;;;;;;;;;;;;;;;17996:167;;-1:-1:-1;17996:167:0;;-1:-1:-1;;;;;;18230:187:0;;;18264:10;;18230:187;;;;;;;;;;18493:4;18486:11;;;;8820:1;11191:7;:22;17739:766;;-1:-1:-1;;;;17739:766:0:o;12462:401::-;12570:7;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12653:15;12671:6;;:24;;;;;;;;;;;;;;-1:-1:-1;;;;;12671:6:0;;;;:15;;:24;;;;;;;;;;;;;;;:6;:24;;;5:2:-1;;;;30:1;27;20:12;5:2;12671:24:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12671:24:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12671:24:0;12770:7;;;12671:24;;-1:-1:-1;;;;;;12770:7:0;;;;:20;;12671:24;;12828:13;;:7;:13::i;:::-;12770:82;;;-1:-1:-1;;;12770:82:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;12770:82:0;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12770:82:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12770:82:0;;;;;;39:16:-1;36:1;17:17;2:54;101:4;12770:82:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;12770:82:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;12770:85:0;;:82;;-1:-1:-1;12853:1:0;;-1:-1:-1;12770:85:0;;;-1:-1:-1;12770:85:0;;;;;;;;;;;;12763:92;;;12462:401;;;:::o;13141:406::-;13251:7;10772:6;;;;;;;;;-1:-1:-1;;;;;10772:6:0;-1:-1:-1;;;;;10772:20:0;;:22;;;;;-1:-1:-1;;;10772:22:0;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10772:22:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10772:22:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10772:22:0;10764:49;;;;;;;-1:-1:-1;;;;;10764:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13336:17;13356:6;;:26;;;;;;;;;;;;;;-1:-1:-1;;;;;13356:6:0;;;;:17;;:26;;;;;;;;;;;;;;;:6;:26;;;5:2:-1;;;;30:1;27;20:12;22911:1343:0;23105:17;23272:6;;:29;;;;;;;;;;;;;;23105:17;;-1:-1:-1;;;;;23272:6:0;;:15;;:29;;;;;;;;;;;;;;:6;:29;;;5:2:-1;;;;30:1;27;20:12;5:2;23272:29:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23272:29:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23272:29:0;;-1:-1:-1;23410:31:0;;;;23388:113;;;;;-1:-1:-1;;;;;23388:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23573:7;;;-1:-1:-1;;;;;23573:7:0;;:29;;23609:9;;23634;;23659:13;;:7;:13::i;:::-;23696:4;23717:9;23573:164;;;;;-1:-1:-1;;;23573:164:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23573:164:0;-1:-1:-1;;;;;23573:164:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23573:164:0;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23573:164:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23573:164:0;;;;;;;39:16:-1;36:1;17:17;2:54;101:4;23573:164:0;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;23573:164:0;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;;23908:4:0;;;23929:6;;23908:40;;;;;;-1:-1:-1;;;;;23929:6:0;;;23908:40;;;;;;;;;;;;23817:4;23809:21;;-1:-1:-1;23908:4:0;;;;;-1:-1:-1;23908:12:0;;-1:-1:-1;23908:40:0;;;;;-1:-1:-1;23908:40:0;;-1:-1:-1;23908:40:0;;;;;;;;:4;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;23908:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;23908:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23908:40:0;23886:108;;;;;;;-1:-1:-1;;;;;23886:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24077:6;;;:43;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24077:43:0;;;;;;;;;:6;;;;;:13;;:43;;;;;;;;;;;;;;;;;;:6;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;24077:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24077:43:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24077:43:0;24055:110;;;;;;;-1:-1:-1;;;;;24055:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24214:32;;:10;;:32;;;;;24234:11;;24214:32;;;;24234:11;24214:10;:32;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;24214:32:0;22911:1343;;;;;;;:::o

Swarm Source

bzzr://00f08187231dd23bf6fe55ecb35bf58c32121f608f821b1bef65dcbc6466c5b6

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  ]
[ 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.