ETH Price: $3,524.97 (+0.32%)
Gas: 2 Gwei

Contract

0x2b695860d1B69E51Ef65681DDBB520B5f892BF9b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Comp Re...107661912020-08-31 3:14:311419 days ago1598843671IN
0x2b695860...5f892BF9b
0 ETH0.00486466158
Claim And Transf...107661712020-08-31 3:11:411419 days ago1598843501IN
0x2b695860...5f892BF9b
0 ETH0.06763622157
Transfer Ownersh...106888232020-08-19 5:58:381431 days ago1597816718IN
0x2b695860...5f892BF9b
0 ETH0.00417865135
0x60806040106888102020-08-19 5:56:271431 days ago1597816587IN
 Create: CompoundAllocationStrategyV2
0 ETH0.17669205135

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CompoundAllocationStrategyV2

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-08-19
*/

// 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: compound/contracts/CErc20Interface.sol

pragma solidity >=0.4.21 <0.6.0;

// converted from ethereum/contracts/compound/abi/CErc20.json
interface CErc20Interface {

    function name() external view returns (
        string memory
    );

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

    function repayBorrow(
        uint256 repayAmount
    ) external returns (
        uint256
    );

    function reserveFactorMantissa() external view returns (
        uint256
    );

    function borrowBalanceCurrent(
        address account
    ) external returns (
        uint256
    );

    function totalSupply() external view returns (
        uint256
    );

    function exchangeRateStored() external view returns (
        uint256
    );

    function transferFrom(
        address src,
        address dst,
        uint256 amount
    ) external returns (
        bool
    );

    function repayBorrowBehalf(
        address borrower,
        uint256 repayAmount
    ) external returns (
        uint256
    );

    function pendingAdmin() external view returns (
        address
    );

    function decimals() external view returns (
        uint256
    );

    function balanceOfUnderlying(
        address owner
    ) external returns (
        uint256
    );

    function getCash() external view returns (
        uint256
    );

    function _setComptroller(
        address newComptroller
    ) external returns (
        uint256
    );

    function totalBorrows() external view returns (
        uint256
    );

    function comptroller() external view returns (
        address
    );

    function _reduceReserves(
        uint256 reduceAmount
    ) external returns (
        uint256
    );

    function initialExchangeRateMantissa() external view returns (
        uint256
    );

    function accrualBlockNumber() external view returns (
        uint256
    );

    function underlying() external view returns (
        address
    );

    function balanceOf(
        address owner
    ) external view returns (
        uint256
    );

    function totalBorrowsCurrent() external returns (
        uint256
    );

    function redeemUnderlying(
        uint256 redeemAmount
    ) external returns (
        uint256
    );

    function totalReserves() external view returns (
        uint256
    );

    function symbol() external view returns (
        string memory
    );

    function borrowBalanceStored(
        address account
    ) external view returns (
        uint256
    );

    function mint(
        uint256 mintAmount
    ) external returns (
        uint256
    );

    function accrueInterest() external returns (
        uint256
    );

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

    function borrowIndex() external view returns (
        uint256
    );

    function supplyRatePerBlock() external view returns (
        uint256
    );

    function seize(
        address liquidator,
        address borrower,
        uint256 seizeTokens
    ) external returns (
        uint256
    );

    function _setPendingAdmin(
        address newPendingAdmin
    ) external returns (
        uint256
    );

    function exchangeRateCurrent() external returns (
        uint256
    );

    function getAccountSnapshot(
        address account
    ) external view returns (
        uint256,
        uint256,
        uint256,
        uint256
    );

    function borrow(
        uint256 borrowAmount
    ) external returns (
        uint256
    );

    function redeem(
        uint256 redeemTokens
    ) external returns (
        uint256
    );

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

    function _acceptAdmin() external returns (
        uint256
    );

    function _setInterestRateModel(
        address newInterestRateModel
    ) external returns (
        uint256
    );

    function interestRateModel() external view returns (
        address
    );

    function liquidateBorrow(
        address borrower,
        uint256 repayAmount,
        address cTokenCollateral
    ) external returns (
        uint256
    );

    function admin() external view returns (
        address
    );

    function borrowRatePerBlock() external view returns (
        uint256
    );

    function _setReserveFactor(
        uint256 newReserveFactorMantissa
    ) external returns (
        uint256
    );

    function isCToken() external view returns (
        bool
    );

    /*
    constructor(
        address underlying_,
        address comptroller_,
        address interestRateModel_,
        uint256 initialExchangeRateMantissa_,
        string  calldata name_,
        string  calldata symbol_,
        uint256 decimals_
    );
    */

    event AccrueInterest(
        uint256 interestAccumulated,
        uint256 borrowIndex,
        uint256 totalBorrows
    );

    event Mint(
        address minter,
        uint256 mintAmount,
        uint256 mintTokens
    );

    event Redeem(
        address redeemer,
        uint256 redeemAmount,
        uint256 redeemTokens
    );

    event Borrow(
        address borrower,
        uint256 borrowAmount,
        uint256 accountBorrows,
        uint256 totalBorrows
    );

    event RepayBorrow(
        address payer,
        address borrower,
        uint256 repayAmount,
        uint256 accountBorrows,
        uint256 totalBorrows
    );

    event LiquidateBorrow(
        address liquidator,
        address borrower,
        uint256 repayAmount,
        address cTokenCollateral,
        uint256 seizeTokens
    );

    event NewPendingAdmin(
        address oldPendingAdmin,
        address newPendingAdmin
    );

    event NewAdmin(
        address oldAdmin,
        address newAdmin
    );

    event NewComptroller(
        address oldComptroller,
        address newComptroller
    );

    event NewMarketInterestRateModel(
        address oldInterestRateModel,
        address newInterestRateModel
    );

    event NewReserveFactor(
        uint256 oldReserveFactorMantissa,
        uint256 newReserveFactorMantissa
    );

    event ReservesReduced(
        address admin,
        uint256 reduceAmount,
        uint256 newTotalReserves
    );

    event Failure(
        uint256 error,
        uint256 info,
        uint256 detail
    );

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

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

}

// File: contracts/IAllocationStrategy.sol

pragma solidity ^0.5.8;

/**
 * @notice Allocation strategy for assets.
 *         - It invests the underlying assets into some yield generating contracts,
 *           usually lending contracts, in return it gets new assets aka. saving assets.
 *         - Savings assets can be redeemed back to the underlying assets plus interest any time.
 */
interface IAllocationStrategy {

    /**
     * @notice Underlying asset for the strategy
     * @return address Underlying asset address
     */
    function underlying() external view returns (address);

    /**
     * @notice Supply and Borrow percentage yield
     * @return percentage yield in uint256
     */
    function supplyAndBorrowApy() external view returns (uint256, uint256);

    /**
     * @notice Calculates the exchange rate from underlying to saving assets
     * @return uint256 Calculated exchange rate scaled by 1e18
     *
     * NOTE:
     *
     *   underlying = savingAssets × exchangeRate
     */
    function exchangeRateStored() external view returns (uint256);

    /**
      * @notice Applies accrued interest to all savings
      * @dev This should calculates interest accrued from the last checkpointed
      *      block up to the current block and writes new checkpoint to storage.
      * @return bool success(true) or failure(false)
      */
    function accrueInterest() external returns (bool);

    /**
     * @notice Sender supplies underlying assets into the market and receives saving assets in exchange
     * @dev Interst shall be accrued
     * @param investAmount The amount of the underlying asset to supply
     * @return uint256 Amount of saving assets created
     */
    function investUnderlying(uint256 investAmount) external returns (uint256);

    /**
     * @notice Sender redeems saving assets in exchange for a specified amount of underlying asset
     * @dev Interst shall be accrued
     * @param redeemAmount The amount of underlying to redeem
     * @return uint256 Amount of saving assets burned
     */
    function redeemUnderlying(uint256 redeemAmount) external returns (uint256);

    /**
     * @notice Owner redeems all saving assets
     * @dev Interst shall be accrued
     * @return uint256 savingsAmount Amount of savings redeemed
     * @return uint256 underlyingAmount Amount of underlying redeemed
     */
    function redeemAll() external returns (uint256 savingsAmount, uint256 underlyingAmount);

}

// File: @openzeppelin/contracts/GSN/Context.sol

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

    function _msgSender() internal view returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = _msgSender();
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return _msgSender() == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/CompoundAllocationStrategy.sol

pragma solidity >=0.5.10 <0.6.0;





contract CompoundAllocationStrategy is IAllocationStrategy, Ownable {

    CErc20Interface private cToken;
    IERC20 private token;

    constructor(CErc20Interface cToken_) public {
        cToken = cToken_;
        token = IERC20(cToken.underlying());
    }

    /// @dev ISavingStrategy.underlying implementation
    function underlying() external view returns (address) {
        return cToken.underlying();
    }

    /// @dev ISavingStrategy.exchangeRateStored implementation
    function exchangeRateStored() external view returns (uint256) {
        return cToken.exchangeRateStored();
    }

    /// @dev ISavingStrategy.accrueInterest implementation
    function accrueInterest() external returns (bool) {
        return cToken.accrueInterest() == 0;
    }

    /// @dev ISavingStrategy.supplyAndBorrowApy implementation
    function supplyAndBorrowApy() external view returns (uint256, uint256) {
        uint256 supplyRatePerBlock = cToken.supplyRatePerBlock();
        uint256 borrowRatePerBlock = cToken.borrowRatePerBlock();
        return (supplyRatePerBlock, borrowRatePerBlock);
    }

    /// @dev ISavingStrategy.investUnderlying implementation
    function investUnderlying(uint256 investAmount) external onlyOwner returns (uint256) {
        token.transferFrom(msg.sender, address(this), investAmount);
        token.approve(address(cToken), investAmount);
        uint256 cTotalBefore = cToken.totalSupply();
        // TODO should we handle mint failure?
        require(cToken.mint(investAmount) == 0, "mint failed");
        uint256 cTotalAfter = cToken.totalSupply();
        uint256 cCreatedAmount;
        require (cTotalAfter >= cTotalBefore, "Compound minted negative amount!?");
        cCreatedAmount = cTotalAfter - cTotalBefore;
        return cCreatedAmount;
    }

    /// @dev ISavingStrategy.redeemUnderlying implementation
    function redeemUnderlying(uint256 redeemAmount) external onlyOwner returns (uint256) {
        uint256 cTotalBefore = cToken.totalSupply();
        // TODO should we handle redeem failure?
        require(cToken.redeemUnderlying(redeemAmount) == 0, "cToken.redeemUnderlying failed");
        uint256 cTotalAfter = cToken.totalSupply();
        uint256 cBurnedAmount;
        require(cTotalAfter <= cTotalBefore, "Compound redeemed negative amount!?");
        cBurnedAmount = cTotalBefore - cTotalAfter;
        token.transfer(msg.sender, redeemAmount);
        return cBurnedAmount;
    }

    /// @dev ISavingStrategy.redeemAll implementation
    function redeemAll() external onlyOwner
        returns (uint256 savingsAmount, uint256 underlyingAmount) {
        savingsAmount = cToken.balanceOf(address(this));
        require(cToken.redeem(savingsAmount) == 0, "cToken.redeem failed");
        underlyingAmount = token.balanceOf(address(this));
        token.transfer(msg.sender, underlyingAmount);
    }

}

// File: contracts/CompoundAllocationStrategyV2.sol

pragma solidity >=0.5.10 <0.6.0;




/**
 * @notice CompoundAllocationStrategyV2 collects governance tokens from
 * Compound protocol and transfers them to a single address - compReceiver
 */
contract CompoundAllocationStrategyV2 is CompoundAllocationStrategy {

    event CompReceiverChanged(address indexed oldReceiver, address indexed newReceiver);

    // This variable is repeated because CompoundAllocationStrategy has private cToken
    CErc20Interface public cTokenContract;

    address public compReceiver;

    constructor(CErc20Interface cToken_, address compReceiver_) CompoundAllocationStrategy(cToken_)
      public {
          cTokenContract = cToken_;
          compReceiver = compReceiver_;
          emit CompReceiverChanged(address(0), compReceiver);
    }

    modifier auth() {
        require(msg.sender == compReceiver, "Caller is not the Comp Receiver");
        _;
    }

    function transferCompReceiverRights(address newReceiver) external auth {

        emit CompReceiverChanged(compReceiver, newReceiver);
        compReceiver = newReceiver;
    }

    function claimComp() public {
        address comptroller = getComptrollerAddress();
        IComptroller(comptroller).claimComp(address(this));
    }

    function claimAndTransferComp() public {

        IComptroller comptroller = IComptroller(getComptrollerAddress());
        comptroller.claimComp(address(this));

        IERC20 compToken = IERC20(comptroller.getCompAddress());
        uint totalCompBalance = compToken.balanceOf(address(this));

        require(compToken.transfer(compReceiver, totalCompBalance), "token transfer failed");
    }

    function claimAndTransferComp(uint amount_) public {

        IComptroller comptroller = IComptroller(getComptrollerAddress());
        comptroller.claimComp(address(this));

        IERC20 compToken = IERC20(comptroller.getCompAddress());
        require(compToken.transfer(compReceiver, amount_), "token transfer failed");
    }

    function getComptrollerAddress() public view returns(address) {
        return cTokenContract.comptroller();
    }

}


contract IComptroller {
    function claimComp(address holder) public {}
    function getCompAddress() public view returns (address) {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract CErc20Interface","name":"cToken_","type":"address"},{"internalType":"address","name":"compReceiver_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"CompReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"cTokenContract","outputs":[{"internalType":"contract CErc20Interface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimAndTransferComp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount_","type":"uint256"}],"name":"claimAndTransferComp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"claimComp","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"compReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getComptrollerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"investAmount","type":"uint256"}],"name":"investUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"redeemAll","outputs":[{"internalType":"uint256","name":"savingsAmount","type":"uint256"},{"internalType":"uint256","name":"underlyingAmount","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemAmount","type":"uint256"}],"name":"redeemUnderlying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"supplyAndBorrowApy","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newReceiver","type":"address"}],"name":"transferCompReceiverRights","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b506040516116543803806116548339818101604052604081101561003357600080fd5b5080516020909101518161004e6001600160e01b036101a716565b600080546001600160a01b0319166001600160a01b03928316178082556040519216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b038381169190911791829055604080517f6f307dc300000000000000000000000000000000000000000000000000000000815290519290911691636f307dc391600480820192602092909190829003018186803b15801561010b57600080fd5b505afa15801561011f573d6000803e3d6000fd5b505050506040513d602081101561013557600080fd5b5051600280546001600160a01b03199081166001600160a01b0393841617909155600380548216868416179055600480549091168483161790819055604051911691506000907f865381678a35f68c5890abfad64fce82c444875ed0642a7be1f05ec1d8f1cb75908290a350506101ab565b3390565b61149a806101ba6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063a6afed9511610071578063a6afed9514610213578063c17693c01461021b578063c91f08cb14610238578063ebc9143e14610240578063f2fde38b1461025d57610116565b80638da5cb5b146101df5780638f32d59b146101e75780639c52da7a14610203578063a131d8871461020b57610116565b80634ee9159a116100e95780634ee9159a146101865780636f307dc3146101aa57806370f51d03146101b2578063715018a6146101ba578063852a12e3146101c257610116565b8063182df0f51461011b5780631bd85bdb146101355780632f4350c21461013f578063374e045414610160575b600080fd5b610123610283565b60408051918252519081900360200190f35b61013d6102f9565b005b610147610369565b6040805192835260208301919091528051918290030190f35b61013d6004803603602081101561017657600080fd5b50356001600160a01b03166105f0565b61018e6106ab565b604080516001600160a01b039092168252519081900360200190f35b61018e6106f0565b61018e610735565b61013d610744565b610123600480360360208110156101d857600080fd5b50356107d5565b61018e610a9d565b6101ef610aac565b604080519115158252519081900360200190f35b610147610ad0565b61013d610bd1565b6101ef610df1565b6101236004803603602081101561023157600080fd5b5035610e69565b61018e6111a7565b61013d6004803603602081101561025657600080fd5b50356111b6565b61013d6004803603602081101561027357600080fd5b50356001600160a01b03166112e4565b6001546040805163182df0f560e01b815290516000926001600160a01b03169163182df0f5916004808301926020929190829003018186803b1580156102c857600080fd5b505afa1580156102dc573d6000803e3d6000fd5b505050506040513d60208110156102f257600080fd5b5051905090565b60006103036106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b600080610374610aac565b6103b3576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d602081101561042857600080fd5b50516001546040805163db006a7560e01b81526004810184905290519294506001600160a01b039091169163db006a75916024808201926020929091908290030181600087803b15801561047b57600080fd5b505af115801561048f573d6000803e3d6000fd5b505050506040513d60208110156104a557600080fd5b5051156104f0576040805162461bcd60e51b815260206004820152601460248201527318d51bdad95b8b9c995919595b4819985a5b195960621b604482015290519081900360640190fd5b600254604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561053b57600080fd5b505afa15801561054f573d6000803e3d6000fd5b505050506040513d602081101561056557600080fd5b50516002546040805163a9059cbb60e01b81523360048201526024810184905290519293506001600160a01b039091169163a9059cbb916044808201926020929091908290030181600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050506040513d60208110156105e857600080fd5b509192909150565b6004546001600160a01b0316331461064f576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f742074686520436f6d7020526563656976657200604482015290519081900360640190fd5b6004546040516001600160a01b038084169216907f865381678a35f68c5890abfad64fce82c444875ed0642a7be1f05ec1d8f1cb7590600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60035460408051635fe3b56760e01b815290516000926001600160a01b031691635fe3b567916004808301926020929190829003018186803b1580156102c857600080fd5b60015460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b1580156102c857600080fd5b6003546001600160a01b031681565b61074c610aac565b61078b576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006107df610aac565b61081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d602081101561088d57600080fd5b50516001546040805163852a12e360e01b81526004810187905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b50511561095e576040805162461bcd60e51b815260206004820152601e60248201527f63546f6b656e2e72656465656d556e6465726c79696e67206661696c65640000604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b50519050600082821115610a125760405162461bcd60e51b81526004018080602001828103825260238152602001806114436023913960400191505060405180910390fd5b506002546040805163a9059cbb60e01b8152336004820152602481018790529051838503926001600160a01b03169163a9059cbb9160448083019260209291908290030181600087803b158015610a6857600080fd5b505af1158015610a7c573d6000803e3d6000fd5b505050506040513d6020811015610a9257600080fd5b509095945050505050565b6000546001600160a01b031690565b600080546001600160a01b0316610ac1611337565b6001600160a01b031614905090565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b031663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6020811015610b4d57600080fd5b505160015460408051631f1f3b4560e31b815290519293506000926001600160a01b039092169163f8f9da2891600480820192602092909190829003018186803b158015610b9a57600080fd5b505afa158015610bae573d6000803e3d6000fd5b505050506040513d6020811015610bc457600080fd5b5051919350909150509091565b6000610bdb6106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b505050506000816001600160a01b0316639d1b5a0a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7957600080fd5b505afa158015610c8d573d6000803e3d6000fd5b505050506040513d6020811015610ca357600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610cf157600080fd5b505afa158015610d05573d6000803e3d6000fd5b505050506040513d6020811015610d1b57600080fd5b5051600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018490525192935084169163a9059cbb916044808201926020929091908290030181600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d6020811015610da157600080fd5b5051610dec576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b505050565b6001546040805163a6afed9560e01b815290516000926001600160a01b03169163a6afed9591600480830192602092919082900301818787803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d6020811015610e6157600080fd5b505115905090565b6000610e73610aac565b610eb2576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610f0c57600080fd5b505af1158015610f20573d6000803e3d6000fd5b505050506040513d6020811015610f3657600080fd5b50506002546001546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d6020811015610fbb57600080fd5b5050600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b50516001546040805163140e25ad60e31b81526004810187905290519293506001600160a01b039091169163a0712d68916024808201926020929091908290030181600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050506040513d60208110156110a957600080fd5b5051156110eb576040805162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b5051905060008282101561119f5760405162461bcd60e51b81526004018080602001828103825260218152602001806114026021913960400191505060405180910390fd5b500392915050565b6004546001600160a01b031681565b60006111c06106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506000816001600160a01b0316639d1b5a0a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b5051600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018790525192935083169163a9059cbb916044808201926020929091908290030181600087803b158015610d7757600080fd5b6112ec610aac565b61132b576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b6113348161133b565b50565b3390565b6001600160a01b0381166113805760405162461bcd60e51b81526004018080602001828103825260268152602001806113dc6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6d706f756e64206d696e746564206e6567617469766520616d6f756e74213f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6d706f756e642072656465656d6564206e6567617469766520616d6f756e74213fa265627a7a72315820f0357abafc17e1bea25a9dafeebfd0e9857dcb79e1f5cdb35eada4afda81703864736f6c634300050c0032000000000000000000000000e5c6c14f466a4f3a73ecec7f3aaaa15c5ecbc769000000000000000000000000a13b3e79f2ed49bc05af2274dc509d73a75cafe2

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c80638da5cb5b116100a2578063a6afed9511610071578063a6afed9514610213578063c17693c01461021b578063c91f08cb14610238578063ebc9143e14610240578063f2fde38b1461025d57610116565b80638da5cb5b146101df5780638f32d59b146101e75780639c52da7a14610203578063a131d8871461020b57610116565b80634ee9159a116100e95780634ee9159a146101865780636f307dc3146101aa57806370f51d03146101b2578063715018a6146101ba578063852a12e3146101c257610116565b8063182df0f51461011b5780631bd85bdb146101355780632f4350c21461013f578063374e045414610160575b600080fd5b610123610283565b60408051918252519081900360200190f35b61013d6102f9565b005b610147610369565b6040805192835260208301919091528051918290030190f35b61013d6004803603602081101561017657600080fd5b50356001600160a01b03166105f0565b61018e6106ab565b604080516001600160a01b039092168252519081900360200190f35b61018e6106f0565b61018e610735565b61013d610744565b610123600480360360208110156101d857600080fd5b50356107d5565b61018e610a9d565b6101ef610aac565b604080519115158252519081900360200190f35b610147610ad0565b61013d610bd1565b6101ef610df1565b6101236004803603602081101561023157600080fd5b5035610e69565b61018e6111a7565b61013d6004803603602081101561025657600080fd5b50356111b6565b61013d6004803603602081101561027357600080fd5b50356001600160a01b03166112e4565b6001546040805163182df0f560e01b815290516000926001600160a01b03169163182df0f5916004808301926020929190829003018186803b1580156102c857600080fd5b505afa1580156102dc573d6000803e3d6000fd5b505050506040513d60208110156102f257600080fd5b5051905090565b60006103036106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b5050505050565b600080610374610aac565b6103b3576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600154604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103fe57600080fd5b505afa158015610412573d6000803e3d6000fd5b505050506040513d602081101561042857600080fd5b50516001546040805163db006a7560e01b81526004810184905290519294506001600160a01b039091169163db006a75916024808201926020929091908290030181600087803b15801561047b57600080fd5b505af115801561048f573d6000803e3d6000fd5b505050506040513d60208110156104a557600080fd5b5051156104f0576040805162461bcd60e51b815260206004820152601460248201527318d51bdad95b8b9c995919595b4819985a5b195960621b604482015290519081900360640190fd5b600254604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b15801561053b57600080fd5b505afa15801561054f573d6000803e3d6000fd5b505050506040513d602081101561056557600080fd5b50516002546040805163a9059cbb60e01b81523360048201526024810184905290519293506001600160a01b039091169163a9059cbb916044808201926020929091908290030181600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050506040513d60208110156105e857600080fd5b509192909150565b6004546001600160a01b0316331461064f576040805162461bcd60e51b815260206004820152601f60248201527f43616c6c6572206973206e6f742074686520436f6d7020526563656976657200604482015290519081900360640190fd5b6004546040516001600160a01b038084169216907f865381678a35f68c5890abfad64fce82c444875ed0642a7be1f05ec1d8f1cb7590600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b60035460408051635fe3b56760e01b815290516000926001600160a01b031691635fe3b567916004808301926020929190829003018186803b1580156102c857600080fd5b60015460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b1580156102c857600080fd5b6003546001600160a01b031681565b61074c610aac565b61078b576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006107df610aac565b61081e576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561086357600080fd5b505afa158015610877573d6000803e3d6000fd5b505050506040513d602081101561088d57600080fd5b50516001546040805163852a12e360e01b81526004810187905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b1580156108e057600080fd5b505af11580156108f4573d6000803e3d6000fd5b505050506040513d602081101561090a57600080fd5b50511561095e576040805162461bcd60e51b815260206004820152601e60248201527f63546f6b656e2e72656465656d556e6465726c79696e67206661696c65640000604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156109a357600080fd5b505afa1580156109b7573d6000803e3d6000fd5b505050506040513d60208110156109cd57600080fd5b50519050600082821115610a125760405162461bcd60e51b81526004018080602001828103825260238152602001806114436023913960400191505060405180910390fd5b506002546040805163a9059cbb60e01b8152336004820152602481018790529051838503926001600160a01b03169163a9059cbb9160448083019260209291908290030181600087803b158015610a6857600080fd5b505af1158015610a7c573d6000803e3d6000fd5b505050506040513d6020811015610a9257600080fd5b509095945050505050565b6000546001600160a01b031690565b600080546001600160a01b0316610ac1611337565b6001600160a01b031614905090565b6000806000600160009054906101000a90046001600160a01b03166001600160a01b031663ae9d70b06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b2357600080fd5b505afa158015610b37573d6000803e3d6000fd5b505050506040513d6020811015610b4d57600080fd5b505160015460408051631f1f3b4560e31b815290519293506000926001600160a01b039092169163f8f9da2891600480820192602092909190829003018186803b158015610b9a57600080fd5b505afa158015610bae573d6000803e3d6000fd5b505050506040513d6020811015610bc457600080fd5b5051919350909150509091565b6000610bdb6106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b158015610c2657600080fd5b505af1158015610c3a573d6000803e3d6000fd5b505050506000816001600160a01b0316639d1b5a0a6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7957600080fd5b505afa158015610c8d573d6000803e3d6000fd5b505050506040513d6020811015610ca357600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610cf157600080fd5b505afa158015610d05573d6000803e3d6000fd5b505050506040513d6020811015610d1b57600080fd5b5051600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018490525192935084169163a9059cbb916044808201926020929091908290030181600087803b158015610d7757600080fd5b505af1158015610d8b573d6000803e3d6000fd5b505050506040513d6020811015610da157600080fd5b5051610dec576040805162461bcd60e51b81526020600482015260156024820152741d1bdad95b881d1c985b9cd9995c8819985a5b1959605a1b604482015290519081900360640190fd5b505050565b6001546040805163a6afed9560e01b815290516000926001600160a01b03169163a6afed9591600480830192602092919082900301818787803b158015610e3757600080fd5b505af1158015610e4b573d6000803e3d6000fd5b505050506040513d6020811015610e6157600080fd5b505115905090565b6000610e73610aac565b610eb2576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015610f0c57600080fd5b505af1158015610f20573d6000803e3d6000fd5b505050506040513d6020811015610f3657600080fd5b50506002546001546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b158015610f9157600080fd5b505af1158015610fa5573d6000803e3d6000fd5b505050506040513d6020811015610fbb57600080fd5b5050600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561100257600080fd5b505afa158015611016573d6000803e3d6000fd5b505050506040513d602081101561102c57600080fd5b50516001546040805163140e25ad60e31b81526004810187905290519293506001600160a01b039091169163a0712d68916024808201926020929091908290030181600087803b15801561107f57600080fd5b505af1158015611093573d6000803e3d6000fd5b505050506040513d60208110156110a957600080fd5b5051156110eb576040805162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b5051905060008282101561119f5760405162461bcd60e51b81526004018080602001828103825260218152602001806114026021913960400191505060405180910390fd5b500392915050565b6004546001600160a01b031681565b60006111c06106ab565b604080516374d7814960e11b815230600482015290519192506001600160a01b0383169163e9af02929160248082019260009290919082900301818387803b15801561120b57600080fd5b505af115801561121f573d6000803e3d6000fd5b505050506000816001600160a01b0316639d1b5a0a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561125e57600080fd5b505afa158015611272573d6000803e3d6000fd5b505050506040513d602081101561128857600080fd5b5051600480546040805163a9059cbb60e01b81526001600160a01b0392831693810193909352602483018790525192935083169163a9059cbb916044808201926020929091908290030181600087803b158015610d7757600080fd5b6112ec610aac565b61132b576040805162461bcd60e51b81526020600482018190526024820152600080516020611423833981519152604482015290519081900360640190fd5b6113348161133b565b50565b3390565b6001600160a01b0381166113805760405162461bcd60e51b81526004018080602001828103825260268152602001806113dc6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373436f6d706f756e64206d696e746564206e6567617469766520616d6f756e74213f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572436f6d706f756e642072656465656d6564206e6567617469766520616d6f756e74213fa265627a7a72315820f0357abafc17e1bea25a9dafeebfd0e9857dcb79e1f5cdb35eada4afda81703864736f6c634300050c0032

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

000000000000000000000000e5c6c14f466a4f3a73ecec7f3aaaa15c5ecbc769000000000000000000000000a13b3e79f2ed49bc05af2274dc509d73a75cafe2

-----Decoded View---------------
Arg [0] : cToken_ (address): 0xE5C6c14F466A4F3A73eCEc7F3aAaA15c5EcBc769
Arg [1] : compReceiver_ (address): 0xa13b3E79f2ed49BC05Af2274dC509D73a75cAFE2

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e5c6c14f466a4f3a73ecec7f3aaaa15c5ecbc769
Arg [1] : 000000000000000000000000a13b3e79f2ed49bc05af2274dc509d73a75cafe2


Deployed Bytecode Sourcemap

19407:1959:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19407:1959:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16703:115;;;:::i;:::-;;;;;;;;;;;;;;;;20326:153;;;:::i;:::-;;18777:365;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20138:180;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20138:180:0;-1:-1:-1;;;;;20138:180:0;;:::i;21245:116::-;;;:::i;:::-;;;;-1:-1:-1;;;;;21245:116:0;;;;;;;;;;;;;;16532:99;;;:::i;19664:37::-;;;:::i;15357:140::-;;;:::i;18115:599::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18115:599:0;;:::i;14546:79::-;;;:::i;14912:94::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;17062:271;;;:::i;20487:405::-;;;:::i;16886:104::-;;;:::i;17403:642::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17403:642:0;;:::i;19710:27::-;;;:::i;20900:337::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20900:337:0;;:::i;15652:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15652:109:0;-1:-1:-1;;;;;15652:109:0;;:::i;16703:115::-;16783:6;;:27;;;-1:-1:-1;;;16783:27:0;;;;16756:7;;-1:-1:-1;;;;;16783:6:0;;:25;;:27;;;;;;;;;;;;;;:6;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;16783:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16783:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16783:27:0;;-1:-1:-1;16703:115:0;:::o;20326:153::-;20365:19;20387:23;:21;:23::i;:::-;20421:50;;;-1:-1:-1;;;20421:50:0;;20465:4;20421:50;;;;;;20365:45;;-1:-1:-1;;;;;;20421:35:0;;;;;:50;;;;;-1:-1:-1;;20421:50:0;;;;;;;;-1:-1:-1;20421:35:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;20421:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20421:50:0;;;;20326:153;:::o;18777:365::-;18835:21;18858:24;14758:9;:7;:9::i;:::-;14750:54;;;;;-1:-1:-1;;;14750:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14750:54:0;;;;;;;;;;;;;;;18911:6;;:31;;;-1:-1:-1;;;18911:31:0;;18936:4;18911:31;;;;;;-1:-1:-1;;;;;18911:6:0;;;;:16;;:31;;;;;;;;;;;;;;;:6;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;18911:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18911:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18911:31:0;18961:6;;:28;;;-1:-1:-1;;;18961:28:0;;;;;;;;;;18911:31;;-1:-1:-1;;;;;;18961:6:0;;;;:13;;:28;;;;;18911:31;;18961:28;;;;;;;;:6;;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;18961:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18961:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18961:28:0;:33;18953:66;;;;;-1:-1:-1;;;18953:66:0;;;;;;;;;;;;-1:-1:-1;;;18953:66:0;;;;;;;;;;;;;;;19049:5;;:30;;;-1:-1:-1;;;19049:30:0;;19073:4;19049:30;;;;;;-1:-1:-1;;;;;19049:5:0;;;;:15;;:30;;;;;;;;;;;;;;;:5;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;19049:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19049:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19049:30:0;19090:5;;:44;;;-1:-1:-1;;;19090:44:0;;19105:10;19090:44;;;;;;;;;;;;19049:30;;-1:-1:-1;;;;;;19090:5:0;;;;:14;;:44;;;;;19049:30;;19090:44;;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;19090:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;19090:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18777:365:0;;;;-1:-1:-1;18777:365:0:o;20138:180::-;20062:12;;-1:-1:-1;;;;;20062:12:0;20048:10;:26;20040:70;;;;;-1:-1:-1;;;20040:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;20247:12;;20227:46;;-1:-1:-1;;;;;20227:46:0;;;;20247:12;;20227:46;;20247:12;;20227:46;20284:12;:26;;-1:-1:-1;;;;;;20284:26:0;-1:-1:-1;;;;;20284:26:0;;;;;;;;;;20138:180::o;21245:116::-;21325:14;;:28;;;-1:-1:-1;;;21325:28:0;;;;21298:7;;-1:-1:-1;;;;;21325:14:0;;:26;;:28;;;;;;;;;;;;;;:14;:28;;;5:2:-1;;;;30:1;27;20:12;16532:99:0;16604:6;;:19;;;-1:-1:-1;;;16604:19:0;;;;16577:7;;-1:-1:-1;;;;;16604:6:0;;:17;;:19;;;;;;;;;;;;;;:6;:19;;;5:2:-1;;;;30:1;27;20:12;19664:37:0;;;-1:-1:-1;;;;;19664:37:0;;:::o;15357:140::-;14758:9;:7;:9::i;:::-;14750:54;;;;;-1:-1:-1;;;14750:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14750:54:0;;;;;;;;;;;;;;;15456:1;15440:6;;15419:40;;-1:-1:-1;;;;;15440:6:0;;;;15419:40;;15456:1;;15419:40;15487:1;15470:19;;-1:-1:-1;;;;;;15470:19:0;;;15357:140::o;18115:599::-;18191:7;14758:9;:7;:9::i;:::-;14750:54;;;;;-1:-1:-1;;;14750:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14750:54:0;;;;;;;;;;;;;;;18234:6;;:20;;;-1:-1:-1;;;18234:20:0;;;;18211;;-1:-1:-1;;;;;18234:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;18234:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18234:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18234:20:0;18323:6;;:37;;;-1:-1:-1;;;18323:37:0;;;;;;;;;;18234:20;;-1:-1:-1;;;;;;18323:6:0;;;;:23;;:37;;;;;18234:20;;18323:37;;;;;;;;:6;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;18323:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18323:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18323:37:0;:42;18315:85;;;;;-1:-1:-1;;;18315:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18433:6;;:20;;;-1:-1:-1;;;18433:20:0;;;;18411:19;;-1:-1:-1;;;;;18433:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;18433:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18433:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18433:20:0;;-1:-1:-1;18464:21:0;18504:27;;;;18496:75;;;;-1:-1:-1;;;18496:75:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18635:5:0;;:40;;;-1:-1:-1;;;18635:40:0;;18650:10;18635:40;;;;;;;;;;;;18598:26;;;;-1:-1:-1;;;;;18635:5:0;;:14;;:40;;;;;;;;;;;;;;:5;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;18635:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18635:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18693:13:0;;18115:599;-1:-1:-1;;;;;18115:599:0:o;14546:79::-;14584:7;14611:6;-1:-1:-1;;;;;14611:6:0;14546:79;:::o;14912:94::-;14952:4;14992:6;;-1:-1:-1;;;;;14992:6:0;14976:12;:10;:12::i;:::-;-1:-1:-1;;;;;14976:22:0;;14969:29;;14912:94;:::o;17062:271::-;17115:7;17124;17144:26;17173:6;;;;;;;;;-1:-1:-1;;;;;17173:6:0;-1:-1:-1;;;;;17173:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17173:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17173:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17173:27:0;17240:6;;:27;;;-1:-1:-1;;;17240:27:0;;;;17173;;-1:-1:-1;17211:26:0;;-1:-1:-1;;;;;17240:6:0;;;;:25;;:27;;;;;17173;;17240;;;;;;;;:6;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;17240:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17240:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17240:27:0;17286:18;;-1:-1:-1;17240:27:0;;-1:-1:-1;;17062:271:0;;:::o;20487:405::-;20539:24;20579:23;:21;:23::i;:::-;20614:36;;;-1:-1:-1;;;20614:36:0;;20644:4;20614:36;;;;;;20539:64;;-1:-1:-1;;;;;;20614:21:0;;;;;:36;;;;;-1:-1:-1;;20614:36:0;;;;;;;;-1:-1:-1;20614:21:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;20614:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20614:36:0;;;;20663:16;20689:11;-1:-1:-1;;;;;20689:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20689:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20689:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20689:28:0;20753:34;;;-1:-1:-1;;;20753:34:0;;20781:4;20753:34;;;;;;20689:28;;-1:-1:-1;20729:21:0;;-1:-1:-1;;;;;20753:19:0;;;;;:34;;;;;20689:28;;20753:34;;;;;;;:19;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;20753:34:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20753:34:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20753:34:0;20827:12;;;20808:50;;;-1:-1:-1;;;20808:50:0;;-1:-1:-1;;;;;20827:12:0;;;20808:50;;;;;;;;;;;;;;20753:34;;-1:-1:-1;20808:18:0;;;;;:50;;;;;20753:34;;20808:50;;;;;;;;20827:12;20808:18;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;20808:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20808:50:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20808:50:0;20800:84;;;;;-1:-1:-1;;;20800:84:0;;;;;;;;;;;;-1:-1:-1;;;20800:84:0;;;;;;;;;;;;;;;20487:405;;;:::o;16886:104::-;16954:6;;:23;;;-1:-1:-1;;;16954:23:0;;;;16930:4;;-1:-1:-1;;;;;16954:6:0;;:21;;:23;;;;;;;;;;;;;;16930:4;16954:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;16954:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16954:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16954:23:0;:28;;-1:-1:-1;16886:104:0;:::o;17403:642::-;17479:7;14758:9;:7;:9::i;:::-;14750:54;;;;;-1:-1:-1;;;14750:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14750:54:0;;;;;;;;;;;;;;;17499:5;;:59;;;-1:-1:-1;;;17499:59:0;;17518:10;17499:59;;;;17538:4;17499:59;;;;;;;;;;;;-1:-1:-1;;;;;17499:5:0;;;;:18;;:59;;;;;;;;;;;;;;;:5;;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;17499:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17499:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;17569:5:0;;;17591:6;17569:44;;;-1:-1:-1;;;17569:44:0;;-1:-1:-1;;;;;17591:6:0;;;17569:44;;;;;;;;;;;;:5;;;;;:13;;:44;;;;;17499:59;;17569:44;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;17569:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17569:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;17647:6:0;;:20;;;-1:-1:-1;;;17647:20:0;;;;17624;;-1:-1:-1;;;;;17647:6:0;;:18;;:20;;;;;17569:44;;17647:20;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;17647:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17647:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17647:20:0;17734:6;;:25;;;-1:-1:-1;;;17734:25:0;;;;;;;;;;17647:20;;-1:-1:-1;;;;;;17734:6:0;;;;:11;;:25;;;;;17647:20;;17734:25;;;;;;;;:6;;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;17734:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17734:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17734:25:0;:30;17726:54;;;;;-1:-1:-1;;;17726:54:0;;;;;;;;;;;;-1:-1:-1;;;17726:54:0;;;;;;;;;;;;;;;17813:6;;:20;;;-1:-1:-1;;;17813:20:0;;;;17791:19;;-1:-1:-1;;;;;17813:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;17813:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17813:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17813:20:0;;-1:-1:-1;17844:22:0;17886:27;;;;17877:74;;;;-1:-1:-1;;;17877:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17979:26:0;;17403:642;-1:-1:-1;;17403:642:0:o;19710:27::-;;;-1:-1:-1;;;;;19710:27:0;;:::o;20900:337::-;20964:24;21004:23;:21;:23::i;:::-;21039:36;;;-1:-1:-1;;;21039:36:0;;21069:4;21039:36;;;;;;20964:64;;-1:-1:-1;;;;;;21039:21:0;;;;;:36;;;;;-1:-1:-1;;21039:36:0;;;;;;;;-1:-1:-1;21039:21:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;21039:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21039:36:0;;;;21088:16;21114:11;-1:-1:-1;;;;;21114:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21114:28:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21114:28:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21114:28:0;21181:12;;;21162:41;;;-1:-1:-1;;;21162:41:0;;-1:-1:-1;;;;;21181:12:0;;;21162:41;;;;;;;;;;;;;;21114:28;;-1:-1:-1;21162:18:0;;;;;:41;;;;;21114:28;;21162:41;;;;;;;;21181:12;21162:18;:41;;;5:2:-1;;;;30:1;27;20:12;15652:109:0;14758:9;:7;:9::i;:::-;14750:54;;;;;-1:-1:-1;;;14750:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;14750:54:0;;;;;;;;;;;;;;;15725:28;15744:8;15725:18;:28::i;:::-;15652:109;:::o;13295:98::-;13375:10;13295:98;:::o;15867:229::-;-1:-1:-1;;;;;15941:22:0;;15933:73;;;;-1:-1:-1;;;15933:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16043:6;;;16022:38;;-1:-1:-1;;;;;16022:38:0;;;;16043:6;;;16022:38;;;16071:6;:17;;-1:-1:-1;;;;;;16071:17:0;-1:-1:-1;;;;;16071:17:0;;;;;;;;;;15867:229::o

Swarm Source

bzzr://f0357abafc17e1bea25a9dafeebfd0e9857dcb79e1f5cdb35eada4afda817038

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.