More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Transfer Ownersh... | 8764719 | 1934 days ago | IN | 0 ETH | 0.00003032 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
CompoundAllocationStrategy
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-10-18 */ // 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. * - Sainv 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 Calculates the exchange rate from the underlying to the saving assets * @return uint256 Calculated exchange rate scaled by 1e18 */ 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); } // File: openzeppelin-solidity/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 aplied to your functions to restrict their use to * the owner. */ contract Ownable { 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 = msg.sender; 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 msg.sender == _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: openzeppelin-solidity/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. * * > 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/CompoundAllocationStrategy.sol pragma solidity ^0.5.8; 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.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; if (cTotalAfter > cTotalBefore) { cCreatedAmount = cTotalAfter - cTotalBefore; } // else can there be case that we mint but we get less cTokens!?\ 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, "redeemUnderlying failed"); uint256 cTotalAfter = cToken.totalSupply(); uint256 cBurnedAmount; if (cTotalAfter < cTotalBefore) { cBurnedAmount = cTotalBefore - cTotalAfter; } // else can there be case that we end up with more cTokens ?! token.transfer(msg.sender, redeemAmount); return cBurnedAmount; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"exchangeRateStored","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"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":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"accrueInterest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract CErc20Interface","name":"cToken_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610bac380380610bac8339818101604052602081101561003357600080fd5b5051600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3600180546001600160a01b0319166001600160a01b038381169190911791829055604080517f6f307dc300000000000000000000000000000000000000000000000000000000815290519290911691636f307dc391600480820192602092909190829003018186803b1580156100f357600080fd5b505afa158015610107573d6000803e3d6000fd5b505050506040513d602081101561011d57600080fd5b5051600280546001600160a01b0319166001600160a01b0390921691909117905550610a5e8061014e6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100fd5780638f32d59b14610105578063a6afed9514610121578063c17693c014610129578063f2fde38b1461014657610093565b8063182df0f5146100985780636f307dc3146100b2578063715018a6146100d6578063852a12e3146100e0575b600080fd5b6100a061016c565b60408051918252519081900360200190f35b6100ba6101e2565b604080516001600160a01b039092168252519081900360200190f35b6100de610227565b005b6100a0600480360360208110156100f657600080fd5b50356102b8565b6100ba61054c565b61010d61055b565b604080519115158252519081900360200190f35b61010d61056c565b6100a06004803603602081101561013f57600080fd5b50356105e4565b6100de6004803603602081101561015c57600080fd5b50356001600160a01b03166108f0565b6001546040805163182df0f560e01b815290516000926001600160a01b03169163182df0f5916004808301926020929190829003018186803b1580156101b157600080fd5b505afa1580156101c5573d6000803e3d6000fd5b505050506040513d60208110156101db57600080fd5b5051905090565b60015460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b1580156101b157600080fd5b61022f61055b565b61026e576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006102c261055b565b610301576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561034657600080fd5b505afa15801561035a573d6000803e3d6000fd5b505050506040513d602081101561037057600080fd5b50516001546040805163852a12e360e01b81526004810187905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b505115610441576040805162461bcd60e51b815260206004820152601760248201527f72656465656d556e6465726c79696e67206661696c6564000000000000000000604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561048657600080fd5b505afa15801561049a573d6000803e3d6000fd5b505050506040513d60208110156104b057600080fd5b505190506000828210156104c357508082035b6002546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561051757600080fd5b505af115801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b509095945050505050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6001546040805163a6afed9560e01b815290516000926001600160a01b03169163a6afed9591600480830192602092919082900301818787803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b505050506040513d60208110156105dc57600080fd5b505115905090565b60006105ee61055b565b61062d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561068757600080fd5b505af115801561069b573d6000803e3d6000fd5b505050506040513d60208110156106b157600080fd5b50506002546001546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561070c57600080fd5b505af1158015610720573d6000803e3d6000fd5b505050506040513d602081101561073657600080fd5b5050600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b50516001546040805163140e25ad60e31b81526004810187905290519293506001600160a01b039091169163a0712d68916024808201926020929091908290030181600087803b1580156107fa57600080fd5b505af115801561080e573d6000803e3d6000fd5b505050506040513d602081101561082457600080fd5b505115610866576040805162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156108ab57600080fd5b505afa1580156108bf573d6000803e3d6000fd5b505050506040513d60208110156108d557600080fd5b505190506000828211156108e857508181035b949350505050565b6108f861055b565b610937576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b61094081610943565b50565b6001600160a01b0381166109885760405162461bcd60e51b81526004018080602001828103825260268152602001806109e46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a723158208af9fff59799b257c930c37571464590a311d48aca475c7feaebc903383a257a64736f6c634300050b0032000000000000000000000000f5dce57282a584d2746faf1593d3121fcac444dc
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b146100fd5780638f32d59b14610105578063a6afed9514610121578063c17693c014610129578063f2fde38b1461014657610093565b8063182df0f5146100985780636f307dc3146100b2578063715018a6146100d6578063852a12e3146100e0575b600080fd5b6100a061016c565b60408051918252519081900360200190f35b6100ba6101e2565b604080516001600160a01b039092168252519081900360200190f35b6100de610227565b005b6100a0600480360360208110156100f657600080fd5b50356102b8565b6100ba61054c565b61010d61055b565b604080519115158252519081900360200190f35b61010d61056c565b6100a06004803603602081101561013f57600080fd5b50356105e4565b6100de6004803603602081101561015c57600080fd5b50356001600160a01b03166108f0565b6001546040805163182df0f560e01b815290516000926001600160a01b03169163182df0f5916004808301926020929190829003018186803b1580156101b157600080fd5b505afa1580156101c5573d6000803e3d6000fd5b505050506040513d60208110156101db57600080fd5b5051905090565b60015460408051636f307dc360e01b815290516000926001600160a01b031691636f307dc3916004808301926020929190829003018186803b1580156101b157600080fd5b61022f61055b565b61026e576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b60006102c261055b565b610301576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561034657600080fd5b505afa15801561035a573d6000803e3d6000fd5b505050506040513d602081101561037057600080fd5b50516001546040805163852a12e360e01b81526004810187905290519293506001600160a01b039091169163852a12e3916024808201926020929091908290030181600087803b1580156103c357600080fd5b505af11580156103d7573d6000803e3d6000fd5b505050506040513d60208110156103ed57600080fd5b505115610441576040805162461bcd60e51b815260206004820152601760248201527f72656465656d556e6465726c79696e67206661696c6564000000000000000000604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561048657600080fd5b505afa15801561049a573d6000803e3d6000fd5b505050506040513d60208110156104b057600080fd5b505190506000828210156104c357508082035b6002546040805163a9059cbb60e01b81523360048201526024810188905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561051757600080fd5b505af115801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b509095945050505050565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6001546040805163a6afed9560e01b815290516000926001600160a01b03169163a6afed9591600480830192602092919082900301818787803b1580156105b257600080fd5b505af11580156105c6573d6000803e3d6000fd5b505050506040513d60208110156105dc57600080fd5b505115905090565b60006105ee61055b565b61062d576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b600254604080516323b872dd60e01b81523360048201523060248201526044810185905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b15801561068757600080fd5b505af115801561069b573d6000803e3d6000fd5b505050506040513d60208110156106b157600080fd5b50506002546001546040805163095ea7b360e01b81526001600160a01b039283166004820152602481018690529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561070c57600080fd5b505af1158015610720573d6000803e3d6000fd5b505050506040513d602081101561073657600080fd5b5050600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b15801561077d57600080fd5b505afa158015610791573d6000803e3d6000fd5b505050506040513d60208110156107a757600080fd5b50516001546040805163140e25ad60e31b81526004810187905290519293506001600160a01b039091169163a0712d68916024808201926020929091908290030181600087803b1580156107fa57600080fd5b505af115801561080e573d6000803e3d6000fd5b505050506040513d602081101561082457600080fd5b505115610866576040805162461bcd60e51b815260206004820152600b60248201526a1b5a5b9d0819985a5b195960aa1b604482015290519081900360640190fd5b600154604080516318160ddd60e01b815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156108ab57600080fd5b505afa1580156108bf573d6000803e3d6000fd5b505050506040513d60208110156108d557600080fd5b505190506000828211156108e857508181035b949350505050565b6108f861055b565b610937576040805162461bcd60e51b81526020600482018190526024820152600080516020610a0a833981519152604482015290519081900360640190fd5b61094081610943565b50565b6001600160a01b0381166109885760405162461bcd60e51b81526004018080602001828103825260268152602001806109e46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b039290921691909117905556fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a723158208af9fff59799b257c930c37571464590a311d48aca475c7feaebc903383a257a64736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f5dce57282a584d2746faf1593d3121fcac444dc
-----Decoded View---------------
Arg [0] : cToken_ (address): 0xF5DCe57282A584D2746FaF1593d3121Fcac444dC
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000f5dce57282a584d2746faf1593d3121fcac444dc
Deployed Bytecode Sourcemap
14384:2242:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14384:2242:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14887:115;;;:::i;:::-;;;;;;;;;;;;;;;;14716:99;;;:::i;:::-;;;;-1:-1:-1;;;;;14716:99:0;;;;;;;;;;;;;;3655:140;;;:::i;:::-;;15995:626;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15995:626:0;;:::i;2844:79::-;;;:::i;3210:92::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;15070:104;;;:::i;15244:681::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15244:681:0;;:::i;3950:109::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3950:109:0;-1:-1:-1;;;;;3950:109:0;;:::i;14887:115::-;14967:6;;:27;;;-1:-1:-1;;;14967:27:0;;;;14940:7;;-1:-1:-1;;;;;14967:6:0;;:25;;:27;;;;;;;;;;;;;;:6;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;14967:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14967:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14967:27:0;;-1:-1:-1;14887:115:0;:::o;14716:99::-;14788:6;;:19;;;-1:-1:-1;;;14788:19:0;;;;14761:7;;-1:-1:-1;;;;;14788:6:0;;:17;;:19;;;;;;;;;;;;;;:6;:19;;;5:2:-1;;;;30:1;27;20:12;3655:140:0;3056:9;:7;:9::i;:::-;3048:54;;;;;-1:-1:-1;;;3048:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3048:54:0;;;;;;;;;;;;;;;3754:1;3738:6;;3717:40;;-1:-1:-1;;;;;3738:6:0;;;;3717:40;;3754:1;;3717:40;3785:1;3768:19;;-1:-1:-1;;;;;;3768:19:0;;;3655:140::o;15995:626::-;16071:7;3056:9;:7;:9::i;:::-;3048:54;;;;;-1:-1:-1;;;3048:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3048:54:0;;;;;;;;;;;;;;;16114:6;;:20;;;-1:-1:-1;;;16114:20:0;;;;16091;;-1:-1:-1;;;;;16114:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;16114:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16114:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16114:20:0;16203:6;;:37;;;-1:-1:-1;;;16203:37:0;;;;;;;;;;16114:20;;-1:-1:-1;;;;;;16203:6:0;;;;:23;;:37;;;;;16114:20;;16203:37;;;;;;;;:6;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;16203:37:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16203:37:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16203:37:0;:42;16195:78;;;;;-1:-1:-1;;;16195:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16306:6;;:20;;;-1:-1:-1;;;16306:20:0;;;;16284:19;;-1:-1:-1;;;;;16306:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;16306:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16306:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16306:20:0;;-1:-1:-1;16337:21:0;16373:26;;;16369:101;;;-1:-1:-1;16432:26:0;;;16369:101;16542:5;;:40;;;-1:-1:-1;;;16542:40:0;;16557:10;16542:40;;;;;;;;;;;;-1:-1:-1;;;;;16542:5:0;;;;:14;;:40;;;;;;;;;;;;;;;:5;;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;16542:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16542:40:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16600:13:0;;15995:626;-1:-1:-1;;;;;15995:626:0:o;2844:79::-;2882:7;2909:6;-1:-1:-1;;;;;2909:6:0;2844:79;:::o;3210:92::-;3250:4;3288:6;-1:-1:-1;;;;;3288:6:0;3274:10;:20;;3210:92::o;15070:104::-;15138:6;;:23;;;-1:-1:-1;;;15138:23:0;;;;15114:4;;-1:-1:-1;;;;;15138:6:0;;:21;;:23;;;;;;;;;;;;;;15114:4;15138:6;:23;;;5:2:-1;;;;30:1;27;20:12;5:2;15138:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15138:23:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15138:23:0;:28;;-1:-1:-1;15070:104:0;:::o;15244:681::-;15320:7;3056:9;:7;:9::i;:::-;3048:54;;;;;-1:-1:-1;;;3048:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3048:54:0;;;;;;;;;;;;;;;15340:5;;:59;;;-1:-1:-1;;;15340:59:0;;15359:10;15340:59;;;;15379:4;15340:59;;;;;;;;;;;;-1:-1:-1;;;;;15340:5:0;;;;:18;;:59;;;;;;;;;;;;;;;:5;;:59;;;5:2:-1;;;;30:1;27;20:12;5:2;15340:59:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15340:59:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15410:5:0;;;15432:6;15410:44;;;-1:-1:-1;;;15410:44:0;;-1:-1:-1;;;;;15432:6:0;;;15410:44;;;;;;;;;;;;:5;;;;;:13;;:44;;;;;15340:59;;15410:44;;;;;;;:5;;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;15410:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15410:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;15488:6:0;;:20;;;-1:-1:-1;;;15488:20:0;;;;15465;;-1:-1:-1;;;;;15488:6:0;;:18;;:20;;;;;15410:44;;15488:20;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;15488:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15488:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15488:20:0;15575:6;;:25;;;-1:-1:-1;;;15575:25:0;;;;;;;;;;15488:20;;-1:-1:-1;;;;;;15575:6:0;;;;:11;;:25;;;;;15488:20;;15575:25;;;;;;;;:6;;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;15575:25:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15575:25:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15575:25:0;:30;15567:54;;;;;-1:-1:-1;;;15567:54:0;;;;;;;;;;;;-1:-1:-1;;;15567:54:0;;;;;;;;;;;;;;;15654:6;;:20;;;-1:-1:-1;;;15654:20:0;;;;15632:19;;-1:-1:-1;;;;;15654:6:0;;:18;;:20;;;;;;;;;;;;;;:6;:20;;;5:2:-1;;;;30:1;27;20:12;5:2;15654:20:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15654:20:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15654:20:0;;-1:-1:-1;15685:22:0;15722:26;;;15718:102;;;-1:-1:-1;15782:26:0;;;15718:102;15903:14;15244:681;-1:-1:-1;;;;15244:681:0:o;3950:109::-;3056:9;:7;:9::i;:::-;3048:54;;;;;-1:-1:-1;;;3048:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3048:54:0;;;;;;;;;;;;;;;4023:28;4042:8;4023:18;:28::i;:::-;3950:109;:::o;4165:229::-;-1:-1:-1;;;;;4239:22:0;;4231:73;;;;-1:-1:-1;;;4231:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4341:6;;;4320:38;;-1:-1:-1;;;;;4320:38:0;;;;4341:6;;;4320:38;;;4369:6;:17;;-1:-1:-1;;;;;;4369:17:0;-1:-1:-1;;;;;4369:17:0;;;;;;;;;;4165:229::o
Swarm Source
bzzr://8af9fff59799b257c930c37571464590a311d48aca475c7feaebc903383a257a
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.