Contract 0xa58e822De1517aAE7114714fB354Ee853Cd35780 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x63e33fbf519f8bde9bf398958fdb32f3b5753d46dd24b0b1fbac386c0a1b9d44Redeem104563562021-08-29 17:21:5224 days 7 hrs ago0x5bc450c5f8f584ed61675298e4ec8e4094df7dcb IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.001757475
0xcbb29a6ffbc57c7d65dd4d696f1ce5778d378959073cfd8636a65ceb1114d7b2Mint98459052021-08-08 6:31:0845 days 18 hrs ago0xd06f95a78553fd94b05281aa97e8afd87af48cef IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00046092
0xaead09cf30ef0ee7a03fe9e321d853b1c9c6eba57a7b727d004a3496119a7cefMint96860792021-08-02 12:25:4451 days 12 hrs ago0x5bc450c5f8f584ed61675298e4ec8e4094df7dcb IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00046086
0x194918f53eba7ee56625452bfa9ee9eecba24d5ecee5e66ff932c0312ad78c82Mint96798732021-08-02 7:04:1151 days 17 hrs ago0x38a37fbdd6284231a52af4e7d70d983183cd1dbb IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00061086
0x8108786cdb118cf62554d69a26766fa4d4d88595a1af950c85736691aa390a25Redeem95680472021-07-29 6:36:3055 days 18 hrs ago0xa97aaf7a996bcfec0fb02e9645a0458b83870d2f IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.003120425
0x97840a1ce0eb3661d3f17613abeac30a85d2556ec5ce7a561c56ee0b06031f19Redeem89055952021-07-06 1:13:4578 days 23 hrs ago0xd06f95a78553fd94b05281aa97e8afd87af48cef IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.001990955
0x1393c53a479e99726df7018df753574a4942d00ebec9173179eca2f9d24cb8d0_set Pending Adm...87428072021-06-30 8:18:0484 days 16 hrs ago0x17d04113a3651e79e7d40a40e47aae23046f7761 IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00023647
0x79560fc720a0a1f494c0f96c61001941fd76964b370603f9b828607e073467aaRedeem83690692021-06-17 7:11:0197 days 17 hrs ago0x232bb0aca84ebb9e4e9d218081a01562e67cee70 IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.003270605
0x471b9afbb6703dfd0c287b307055274b9888e202ad4845291b06965c5734ad91Redeem81744362021-06-10 11:36:34104 days 13 hrs ago0x9f36df5cb5fe4badd939743f9db54cdcc9c0906f IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.000851585
0x5d630463edc3b822bf2f21b361a9e9587b10ea2f65f0cdf1e106561f0f072c6fMint81740412021-06-10 11:16:47104 days 13 hrs ago0x232bb0aca84ebb9e4e9d218081a01562e67cee70 IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00046092
0x3498c7614969c481df2d14d4fdabe44ee5305f1ab9a56d6faf364c9df2d7ea60Mint81738712021-06-10 11:08:17104 days 13 hrs ago0xd06f95a78553fd94b05281aa97e8afd87af48cef IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.000645204
0x2cdc4933752dc87f42b58b8b099f615f7bce6ca65b26b4096990d997c7f09ad5Mint81732242021-06-10 10:35:56104 days 14 hrs ago0x9f36df5cb5fe4badd939743f9db54cdcc9c0906f IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00046092
0xdf710a7b8732801a340bb0d53e8f560af7bc9b73d70074f12a5e22ba196d778aMint78890842021-05-31 13:09:18114 days 11 hrs ago0xa97aaf7a996bcfec0fb02e9645a0458b83870d2f IN  0xa58e822de1517aae7114714fb354ee853cd357800 BNB0.00061074
0x4787b9f151b436612eb2252fa3cc772cc9a7068f185ff9131214b89d8aa1fcc50x6080604078252162021-05-29 7:44:33116 days 17 hrs ago0x17d04113a3651e79e7d40a40e47aae23046f7761 IN  Contract Creation0 BNB0.006849
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
KErc20Delegator

Compiler Version
v0.5.16+commit.9c3226ce

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : KErc20Delegator.sol
pragma solidity ^0.5.16;

import "./KTokenInterfaces.sol";



/**
Copyright 2020 Compound Labs, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
* Original work from Compound: https://github.com/compound-finance/compound-protocol/blob/master/contracts/CErc20Delegator.sol
* Modified to work in the Kine system.
* Main modifications:
*   1. removed Comp token related logics.
*   2. removed interest rate model related logics.
*   3. removed borrow logics, user can only borrow Kine MCD (see KMCD).
*   4. removed error code propagation mechanism, using revert to fail fast and loudly.
*/

/**
 * @title Kine's KErc20Delegator Contract
 * @notice KTokens which wrap an EIP-20 underlying and delegate to an implementation
 * @author Kine
 */
contract KErc20Delegator is KTokenInterface, KErc20Interface, KDelegatorInterface {
    /**
     * @notice Construct a new money market
     * @param underlying_ The address of the underlying asset
     * @param controller_ The address of the Controller
     * @param name_ ERC-20 name of this token
     * @param symbol_ ERC-20 symbol of this token
     * @param decimals_ ERC-20 decimal precision of this token
     * @param admin_ Address of the administrator of this token
     * @param implementation_ The address of the implementation the contract delegates to
     * @param becomeImplementationData The encoded args for becomeImplementation
     */
    constructor(address underlying_,
                KineControllerInterface controller_,
                string memory name_,
                string memory symbol_,
                uint8 decimals_,
                address payable admin_,
                address implementation_,
                bytes memory becomeImplementationData) public {
        // Creator of the contract is admin during initialization
        admin = msg.sender;
        initialized = false;

        // First delegate gets to initialize the delegator (i.e. storage contract)
        delegateTo(implementation_, abi.encodeWithSignature("initialize(address,address,string,string,uint8)",
                                                            underlying_,
                                                            controller_,
                                                            name_,
                                                            symbol_,
                                                            decimals_));

        // New implementations always get set via the settor (post-initialize)
        _setImplementation(implementation_, false, becomeImplementationData);

        // Set the proper admin now that initialization is done
        admin = admin_;
    }

    /**
     * @notice Called by the admin to update the implementation of the delegator
     * @param implementation_ The address of the new implementation for delegation
     * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation
     * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation
     */
    function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public {
        require(msg.sender == admin, "KErc20Delegator::_setImplementation: Caller must be admin");

        if (allowResign) {
            delegateToImplementation(abi.encodeWithSignature("_resignImplementation()"));
        }

        address oldImplementation = implementation;
        implementation = implementation_;

        delegateToImplementation(abi.encodeWithSignature("_becomeImplementation(bytes)", becomeImplementationData));

        emit NewImplementation(oldImplementation, implementation);
    }

    /**
     * @notice Sender supplies assets into the market and receives kTokens in exchange
     * @param mintAmount The amount of the underlying asset to supply
     * @return the actual mint amount.
     */
    function mint(uint mintAmount) external returns (uint) {
        bytes memory data = delegateToImplementation(abi.encodeWithSignature("mint(uint256)", mintAmount));
        return abi.decode(data, (uint));
    }

    /**
     * @notice Sender redeems kTokens in exchange for the underlying asset
     * @param redeemTokens The number of kTokens to redeem into underlying
     */
    function redeem(uint redeemTokens) external {
        delegateToImplementation(abi.encodeWithSignature("redeem(uint256)", redeemTokens));
    }

    /**
     * @notice Transfer `amount` tokens from `msg.sender` to `dst`
     * @param dst The address of the destination account
     * @param amount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transfer(address dst, uint amount) external returns (bool) {
        bytes memory data = delegateToImplementation(abi.encodeWithSignature("transfer(address,uint256)", dst, amount));
        return abi.decode(data, (bool));
    }

    /**
     * @notice Transfer `amount` tokens from `src` to `dst`
     * @param src The address of the source account
     * @param dst The address of the destination account
     * @param amount The number of tokens to transfer
     * @return Whether or not the transfer succeeded
     */
    function transferFrom(address src, address dst, uint256 amount) external returns (bool) {
        bytes memory data = delegateToImplementation(abi.encodeWithSignature("transferFrom(address,address,uint256)", src, dst, amount));
        return abi.decode(data, (bool));
    }

    /**
     * @notice Approve `spender` to transfer up to `amount` from `src`
     * @dev This will overwrite the approval amount for `spender`
     *  and is subject to issues noted [here](https://eips.ethereum.org/EIPS/eip-20#approve)
     * @param spender The address of the account which may transfer tokens
     * @param amount The number of tokens that are approved (-1 means infinite)
     * @return Whether or not the approval succeeded
     */
    function approve(address spender, uint256 amount) external returns (bool) {
        bytes memory data = delegateToImplementation(abi.encodeWithSignature("approve(address,uint256)", spender, amount));
        return abi.decode(data, (bool));
    }

    /**
     * @notice Get the current allowance from `owner` for `spender`
     * @param owner The address of the account which owns the tokens to be spent
     * @param spender The address of the account which may transfer tokens
     * @return The number of tokens allowed to be spent (-1 means infinite)
     */
    function allowance(address owner, address spender) external view returns (uint) {
        bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("allowance(address,address)", owner, spender));
        return abi.decode(data, (uint));
    }

    /**
     * @notice Get the token balance of the `owner`
     * @param owner The address of the account to query
     * @return The number of tokens owned by `owner`
     */
    function balanceOf(address owner) external view returns (uint) {
        bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("balanceOf(address)", owner));
        return abi.decode(data, (uint));
    }

    /**
     * @notice Get a snapshot of the account's balances, and the cached exchange rate
     * @dev This is used by controller to more efficiently perform liquidity checks.
     * and for kTokens, there is only token balance, for kMCD, there is only borrow balance
     * @param account Address of the account to snapshot
     * @return (token balance, borrow balance)
     */
    function getAccountSnapshot(address account) external view returns (uint, uint) {
        bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("getAccountSnapshot(address)", account));
        return abi.decode(data, (uint, uint));
    }

    /**
     * @notice Get cash balance of this kToken in the underlying asset
     * @return The quantity of underlying asset owned by this contract
     */
    function getCash() external view returns (uint) {
        bytes memory data = delegateToViewImplementation(abi.encodeWithSignature("getCash()"));
        return abi.decode(data, (uint));
    }

    /**
     * @notice Transfers collateral tokens (this market) to the liquidator.
     * @dev Will fail unless called by another kToken during the process of liquidation.
     *  Its absolutely critical to use msg.sender as the borrowed kToken and not a parameter.
     * @param liquidator The account receiving seized collateral
     * @param borrower The account having collateral seized
     * @param seizeTokens The number of kTokens to seize
     */
    function seize(address liquidator, address borrower, uint seizeTokens) external {
        delegateToImplementation(abi.encodeWithSignature("seize(address,address,uint256)", liquidator, borrower, seizeTokens));
    }

    /*** Admin Functions ***/

    /**
      * @notice Begins transfer of admin rights. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
      * @dev Admin function to begin change of admin. The newPendingAdmin must call `_acceptAdmin` to finalize the transfer.
      * @param newPendingAdmin New pending admin.
      */
    function _setPendingAdmin(address payable newPendingAdmin) external {
        delegateToImplementation(abi.encodeWithSignature("_setPendingAdmin(address)", newPendingAdmin));
    }

    /**
      * @notice Sets a new controller for the market
      * @dev Admin function to set a new controller
      */
    function _setController(KineControllerInterface newController) public {
        delegateToImplementation(abi.encodeWithSignature("_setController(address)", newController));
    }

    /**
      * @notice Accepts transfer of admin rights. msg.sender must be pendingAdmin
      * @dev Admin function for pending admin to accept role and update admin
      */
    function _acceptAdmin() external {
        delegateToImplementation(abi.encodeWithSignature("_acceptAdmin()"));
    }

    /**
     * @notice Internal method to delegate execution to another contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     * @param callee The contract to delegatecall
     * @param data The raw data to delegatecall
     * @return The returned bytes from the delegatecall
     */
    function delegateTo(address callee, bytes memory data) internal returns (bytes memory) {
        (bool success, bytes memory returnData) = callee.delegatecall(data);
        assembly {
            if eq(success, 0) {
                revert(add(returnData, 0x20), returndatasize)
            }
        }
        return returnData;
    }

    /**
     * @notice Delegates execution to the implementation contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     * @param data The raw data to delegatecall
     * @return The returned bytes from the delegatecall
     */
    function delegateToImplementation(bytes memory data) public returns (bytes memory) {
        return delegateTo(implementation, data);
    }

    /**
     * @notice Delegates execution to an implementation contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     *  There are an additional 2 prefix uints from the wrapper returndata, which we ignore since we make an extra hop.
     * @param data The raw data to delegatecall
     * @return The returned bytes from the delegatecall
     */
    function delegateToViewImplementation(bytes memory data) public view returns (bytes memory) {
        (bool success, bytes memory returnData) = address(this).staticcall(abi.encodeWithSignature("delegateToImplementation(bytes)", data));
        assembly {
            if eq(success, 0) {
                revert(add(returnData, 0x20), returndatasize)
            }
        }
        return abi.decode(returnData, (bytes));
    }

    /**
     * @notice Delegates execution to an implementation contract
     * @dev It returns to the external caller whatever the implementation returns or forwards reverts
     */
    function () external payable {
        require(msg.value == 0,"KErc20Delegator:fallback: cannot send value to fallback");

        // delegate all other functions to current implementation
        (bool success, ) = implementation.delegatecall(msg.data);

        assembly {
            let free_mem_ptr := mload(0x40)
            returndatacopy(free_mem_ptr, 0, returndatasize)

            switch success
            case 0 { revert(free_mem_ptr, returndatasize) }
            default { return(free_mem_ptr, returndatasize) }
        }
    }
}

File 2 of 3 : KTokenInterfaces.sol
pragma solidity ^0.5.16;

import "./KineControllerInterface.sol";

contract KTokenStorage {
    /**
     * @dev Guard variable for re-entrancy checks
     */
    bool internal _notEntered;

    /**
    * @notice flag that kToken has been initialized;
    */
    bool public initialized;

    /**
     * @notice EIP-20 token name for this token
     */
    string public name;

    /**
     * @notice EIP-20 token symbol for this token
     */
    string public symbol;

    /**
     * @notice EIP-20 token decimals for this token
     */
    uint8 public decimals;

    /**
     * @notice Administrator for this contract
     */
    address payable public admin;

    /**
     * @notice Pending administrator for this contract
     */
    address payable public pendingAdmin;

    /**
     * @notice Contract which oversees inter-kToken operations
     */
    KineControllerInterface public controller;

    /**
     * @notice Total number of tokens in circulation
     */
    uint public totalSupply;

    /**
     * @notice Official record of token balances for each account
     */
    mapping (address => uint) internal accountTokens;

    /**
     * @notice Approved token transfer amounts on behalf of others
     */
    mapping (address => mapping (address => uint)) internal transferAllowances;

}

contract KTokenInterface is KTokenStorage {
    /**
     * @notice Indicator that this is a KToken contract (for inspection)
     */
    bool public constant isKToken = true;


    /*** Market Events ***/

    /**
     * @notice Event emitted when tokens are minted
     */
    event Mint(address minter, uint mintAmount, uint mintTokens);

    /**
     * @notice Event emitted when tokens are redeemed
     */
    event Redeem(address redeemer, uint redeemTokens);


    /*** Admin Events ***/

    /**
     * @notice Event emitted when pendingAdmin is changed
     */
    event NewPendingAdmin(address oldPendingAdmin, address newPendingAdmin);

    /**
     * @notice Event emitted when pendingAdmin is accepted, which means admin is updated
     */
    event NewAdmin(address oldAdmin, address newAdmin);

    /**
     * @notice Event emitted when controller is changed
     */
    event NewController(KineControllerInterface oldController, KineControllerInterface newController);

    /**
     * @notice EIP20 Transfer event
     */
    event Transfer(address indexed from, address indexed to, uint amount);

    /**
     * @notice EIP20 Approval event
     */
    event Approval(address indexed owner, address indexed spender, uint amount);


    /*** User Interface ***/

    function transfer(address dst, uint amount) external returns (bool);
    function transferFrom(address src, address dst, uint amount) external returns (bool);
    function approve(address spender, uint amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function getAccountSnapshot(address account) external view returns (uint, uint);
    function getCash() external view returns (uint);
    function seize(address liquidator, address borrower, uint seizeTokens) external;


    /*** Admin Functions ***/

    function _setPendingAdmin(address payable newPendingAdmin) external;
    function _acceptAdmin() external;
    function _setController(KineControllerInterface newController) public;
}

contract KErc20Storage {
    /**
     * @notice Underlying asset for this KToken
     */
    address public underlying;
}

contract KErc20Interface is KErc20Storage {

    /*** User Interface ***/

    function mint(uint mintAmount) external returns (uint);
    function redeem(uint redeemTokens) external;

}

contract KDelegationStorage {
    /**
     * @notice Implementation address for this contract
     */
    address public implementation;
}

contract KDelegatorInterface is KDelegationStorage {
    /**
     * @notice Emitted when implementation is changed
     */
    event NewImplementation(address oldImplementation, address newImplementation);

    /**
     * @notice Called by the admin to update the implementation of the delegator
     * @param implementation_ The address of the new implementation for delegation
     * @param allowResign Flag to indicate whether to call _resignImplementation on the old implementation
     * @param becomeImplementationData The encoded bytes data to be passed to _becomeImplementation
     */
    function _setImplementation(address implementation_, bool allowResign, bytes memory becomeImplementationData) public;
}

contract KDelegateInterface is KDelegationStorage {
    /**
     * @notice Called by the delegator on a delegate to initialize it for duty
     * @dev Should revert if any issues arise which make it unfit for delegation
     * @param data The encoded bytes data for any initialization
     */
    function _becomeImplementation(bytes memory data) public;

    /**
     * @notice Called by the delegator on a delegate to forfeit its responsibility
     */
    function _resignImplementation() public;
}

File 3 of 3 : KineControllerInterface.sol
pragma solidity ^0.5.16;

/**
Copyright 2020 Compound Labs, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/**
* Original work from Compound: https://github.com/compound-finance/compound-protocol/blob/master/contracts/ComptrollerInterface.sol
* Modified to work in the Kine system.
* Main modifications:
*   1. removed Comp token related logics.
*   2. removed interest rate model related logics.
*   3. removed error code propagation mechanism to fail fast and loudly
*/

contract KineControllerInterface {
    /// @notice Indicator that this is a Controller contract (for inspection)
    bool public constant isController = true;

    /// @notice oracle getter function
    function getOracle() external view returns (address);

    /*** Assets You Are In ***/

    function enterMarkets(address[] calldata kTokens) external;

    function exitMarket(address kToken) external;

    /*** Policy Hooks ***/

    function mintAllowed(address kToken, address minter, uint mintAmount) external returns (bool, string memory);

    function mintVerify(address kToken, address minter, uint mintAmount, uint mintTokens) external;

    function redeemAllowed(address kToken, address redeemer, uint redeemTokens) external returns (bool, string memory);

    function redeemVerify(address kToken, address redeemer, uint redeemTokens) external;

    function borrowAllowed(address kToken, address borrower, uint borrowAmount) external returns (bool, string memory);

    function borrowVerify(address kToken, address borrower, uint borrowAmount) external;

    function repayBorrowAllowed(
        address kToken,
        address payer,
        address borrower,
        uint repayAmount) external returns (bool, string memory);

    function repayBorrowVerify(
        address kToken,
        address payer,
        address borrower,
        uint repayAmount) external;

    function liquidateBorrowAllowed(
        address kTokenBorrowed,
        address kTokenCollateral,
        address liquidator,
        address borrower,
        uint repayAmount) external returns (bool, string memory);

    function liquidateBorrowVerify(
        address kTokenBorrowed,
        address kTokenCollateral,
        address liquidator,
        address borrower,
        uint repayAmount,
        uint seizeTokens) external;

    function seizeAllowed(
        address kTokenCollateral,
        address kTokenBorrowed,
        address liquidator,
        address borrower,
        uint seizeTokens) external returns (bool, string memory);

    function seizeVerify(
        address kTokenCollateral,
        address kTokenBorrowed,
        address liquidator,
        address borrower,
        uint seizeTokens) external;

    function transferAllowed(address kToken, address src, address dst, uint transferTokens) external returns (bool, string memory);

    function transferVerify(address kToken, address src, address dst, uint transferTokens) external;

    /*** Liquidity/Liquidation Calculations ***/

    function liquidateCalculateSeizeTokens(
        address target,
        address kTokenBorrowed,
        address kTokenCollateral,
        uint repayAmount) external view returns (uint);
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"underlying_","type":"address"},{"internalType":"contract KineControllerInterface","name":"controller_","type":"address"},{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint8","name":"decimals_","type":"uint8"},{"internalType":"address payable","name":"admin_","type":"address"},{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"mintAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mintTokens","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract KineControllerInterface","name":"oldController","type":"address"},{"indexed":false,"internalType":"contract KineControllerInterface","name":"newController","type":"address"}],"name":"NewController","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"NewImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldPendingAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"redeemer","type":"address"},{"indexed":false,"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"constant":false,"inputs":[],"name":"_acceptAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"contract KineControllerInterface","name":"newController","type":"address"}],"name":"_setController","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"allowResign","type":"bool"},{"internalType":"bytes","name":"becomeImplementationData","type":"bytes"}],"name":"_setImplementation","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address payable","name":"newPendingAdmin","type":"address"}],"name":"_setPendingAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"internalType":"contract KineControllerInterface","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"name":"delegateToViewImplementation","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getAccountSnapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCash","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isKToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"mintAmount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pendingAdmin","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"redeemTokens","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"liquidator","type":"address"},{"internalType":"address","name":"borrower","type":"address"},{"internalType":"uint256","name":"seizeTokens","type":"uint256"}],"name":"seize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"src","type":"address"},{"internalType":"address","name":"dst","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b5060405162001b3238038062001b3283398181016040526101008110156200003857600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006457600080fd5b9083019060208201858111156200007a57600080fd5b82516401000000008111828201881017156200009557600080fd5b82525081516020918201929091019080838360005b83811015620000c4578181015183820152602001620000aa565b50505050905090810190601f168015620000f25780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011657600080fd5b9083019060208201858111156200012c57600080fd5b82516401000000008111828201881017156200014757600080fd5b82525081516020918201929091019080838360005b83811015620001765781810151838201526020016200015c565b50505050905090810190601f168015620001a45780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160608401516080909401805192969195919284640100000000821115620001d957600080fd5b908301906020820185811115620001ef57600080fd5b82516401000000008111828201881017156200020a57600080fd5b82525081516020918201929091019080838360005b83811015620002395781810151838201526020016200021f565b50505050905090810190601f168015620002675780820380516001836020036101000a031916815260200191505b50604081905260038054610100600160a81b03191633610100021790556000805461ff00191681556001600160a01b038d811660248401908152908d16604484015260ff8a1660a484015260a0606484019081528c5160c48501528c51620003de97508996508f95508e948e948e948e9490939092608481019260e49091019160208901918190849084905b838110156200030d578181015183820152602001620002f3565b50505050905090810190601f1680156200033b5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200037057818101518382015260200162000356565b50505050905090810190601f1680156200039e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116638420ce9960e01b179091529098506200042a169650505050505050565b50620003f6826000836001600160e01b03620004f116565b5050600380546001600160a01b0390921661010002610100600160a81b031990921691909117905550620006d29350505050565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106200046c5780518252601f1990920191602091820191016200044b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620004ce576040519150601f19603f3d011682016040523d82523d6000602084013e620004d3565b606091505b50915091506000821415620004e9573d60208201fd5b949350505050565b60035461010090046001600160a01b03163314620005415760405162461bcd60e51b815260040180806020018281038252603981526020018062001af96039913960400191505060405180910390fd5b811562000583576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b17909152620005819190620006a816565b505b600a80546001600160a01b038581166001600160a01b0319831617909255604051602060248201818152855160448401528551949093169362000659938693909283926064909201919085019080838360005b83811015620005f0578181015183820152602001620005d6565b50505050905090810190601f1680156200061e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b17909152909350620006a816915050565b50600a54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600a54606090620006cc906001600160a01b0316836001600160e01b036200042a16565b92915050565b61141780620006e26000396000f3fe60806040526004361061019c5760003560e01c80636f307dc3116100ec578063b71d1a0c1161008a578063dd62ed3e11610064578063dd62ed3e14610858578063e9c714f214610893578063f77c4791146108a8578063f851a440146108bd5761019c565b8063b71d1a0c146107af578063c37f68e2146107e2578063db006a751461082e5761019c565b806395d89b41116100c657806395d89b41146106f4578063a0712d6814610709578063a9059cbb14610733578063b2a02ff11461076c5761019c565b80636f307dc31461067957806370a082311461068e57806383de424e146106c15761019c565b806326782247116101595780633b1d21a2116101335780633b1d21a2146104d45780634487152f146104e9578063555bcc401461059a5780635c60da1b146106645761019c565b8063267822471461046357806329d9109c14610494578063313ce567146104a95761019c565b806306fdde031461025c5780630933c1ed146102e6578063095ea7b314610397578063158ef93e146103e457806318160ddd146103f957806323b872dd14610420575b34156101d95760405162461bcd60e51b81526004018080602001828103825260378152602001806113736037913960400191505060405180910390fd5b600a546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b505090506040513d6000823e818015610258573d82f35b3d82fd5b34801561026857600080fd5b506102716108d2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f257600080fd5b506102716004803603602081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460018302840111600160201b8311171561035657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061095f945050505050565b3480156103a357600080fd5b506103d0600480360360408110156103ba57600080fd5b506001600160a01b03813516906020013561097e565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103d06109f5565b34801561040557600080fd5b5061040e610a03565b60408051918252519081900360200190f35b34801561042c57600080fd5b506103d06004803603606081101561044357600080fd5b506001600160a01b03813581169160208101359091169060400135610a09565b34801561046f57600080fd5b50610478610a89565b604080516001600160a01b039092168252519081900360200190f35b3480156104a057600080fd5b506103d0610a98565b3480156104b557600080fd5b506104be610a9d565b6040805160ff9092168252519081900360200190f35b3480156104e057600080fd5b5061040e610aa6565b3480156104f557600080fd5b506102716004803603602081101561050c57600080fd5b810190602081018135600160201b81111561052657600080fd5b82018360208201111561053857600080fd5b803590602001918460018302840111600160201b8311171561055957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610afd945050505050565b3480156105a657600080fd5b50610662600480360360608110156105bd57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156105ee57600080fd5b82018360208201111561060057600080fd5b803590602001918460018302840111600160201b8311171561062157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1c945050505050565b005b34801561067057600080fd5b50610478610ebf565b34801561068557600080fd5b50610478610ece565b34801561069a57600080fd5b5061040e600480360360208110156106b157600080fd5b50356001600160a01b0316610edd565b3480156106cd57600080fd5b50610662600480360360208110156106e457600080fd5b50356001600160a01b0316610f4f565b34801561070057600080fd5b50610271610f9f565b34801561071557600080fd5b5061040e6004803603602081101561072c57600080fd5b5035610ff7565b34801561073f57600080fd5b506103d06004803603604081101561075657600080fd5b506001600160a01b03813516906020013561103e565b34801561077857600080fd5b506106626004803603606081101561078f57600080fd5b506001600160a01b03813581169160208101359091169060400135611094565b3480156107bb57600080fd5b50610662600480360360208110156107d257600080fd5b50356001600160a01b03166110f2565b3480156107ee57600080fd5b506108156004803603602081101561080557600080fd5b50356001600160a01b031661113e565b6040805192835260208301919091528051918290030190f35b34801561083a57600080fd5b506106626004803603602081101561085157600080fd5b50356111bd565b34801561086457600080fd5b5061040e6004803603604081101561087b57600080fd5b506001600160a01b03813581169160200135166111fe565b34801561089f57600080fd5b50610662611258565b3480156108b457600080fd5b5061047861128d565b3480156108c957600080fd5b5061047861129c565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b820191906000526020600020905b81548152906001019060200180831161093a57829003601f168201915b505050505081565b600a54606090610978906001600160a01b0316836112b0565b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526000906060906109d49061095f565b90508080602001905160208110156109eb57600080fd5b5051949350505050565b600054610100900460ff1681565b60065481565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052600090606090610a679061095f565b9050808060200190516020811015610a7e57600080fd5b505195945050505050565b6004546001600160a01b031681565b600181565b60035460ff1681565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b179052600090606090610ade90610afd565b9050808060200190516020811015610af557600080fd5b505191505090565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610b4e578181015183820152602001610b36565b50505050905090810190601f168015610b7b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610bd65780518252601f199092019160209182019101610bb7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610c36576040519150601f19603f3d011682016040523d82523d6000602084013e610c3b565b606091505b50915091506000821415610c50573d60208201fd5b808060200190516020811015610c6557600080fd5b8101908080516040519392919084600160201b821115610c8457600080fd5b908301906020820185811115610c9957600080fd5b8251600160201b811182820188101715610cb257600080fd5b82525081516020918201929091019080838360005b83811015610cdf578181015183820152602001610cc7565b50505050905090810190601f168015610d0c5780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60035461010090046001600160a01b03163314610d6a5760405162461bcd60e51b81526004018080602001828103825260398152602001806113aa6039913960400191505060405180910390fd5b8115610da4576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610da29061095f565b505b600a80546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693610e70938693909283926064909201919085019080838360005b83811015610e0e578181015183820152602001610df6565b50505050905090810190601f168015610e3b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b179052925061095f915050565b50600a54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600a546001600160a01b031681565b6009546001600160a01b031681565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166370a0823160e01b179052600090606090610f2f90610afd565b9050808060200190516020811015610f4657600080fd5b50519392505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166341ef212760e11b179052610f9b9061095f565b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663140e25ad60e31b179052600090606090610f2f9061095f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526000906060906109d49061095f565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b031663b2a02ff160e01b1790526110ec9061095f565b50505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316632dc7468360e21b179052610f9b9061095f565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166361bfb47160e11b179052600090819060609061119290610afd565b90508080602001905160408110156111a957600080fd5b508051602090910151909350915050915091565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663db006a7560e01b179052610f9b9061095f565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316636eb1769f60e11b1790526000906060906109d490610afd565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b17905261128a9061095f565b50565b6005546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106112f05780518252601f1990920191602091820191016112d1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611350576040519150601f19603f3d011682016040523d82523d6000602084013e611355565b606091505b5091509150600082141561136a573d60208201fd5b94935050505056fe4b457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b4b457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a72315820406372dec99d4072530a1e9a310d531d3219bd6eeba67bfd6f570e6cb391876164736f6c634300051000324b457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e0000000000000000000000004338665cbb7b2485a8855a139b75d5e34ab0db940000000000000000000000003c2ddd486c07343b711a4415cdc9ab90ed32b57100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000800000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761000000000000000000000000cea2d0a0413b6bf052eb2eca9c256ee25ad7d128000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000124b6f6c6c61746572616c697a6564204c5443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046b4c54430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000

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

0000000000000000000000004338665cbb7b2485a8855a139b75d5e34ab0db940000000000000000000000003c2ddd486c07343b711a4415cdc9ab90ed32b57100000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000800000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761000000000000000000000000cea2d0a0413b6bf052eb2eca9c256ee25ad7d128000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000124b6f6c6c61746572616c697a6564204c5443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046b4c54430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : underlying_ (address): 0x4338665cbb7b2485a8855a139b75d5e34ab0db94
Arg [1] : controller_ (address): 0x3c2ddd486c07343b711a4415cdc9ab90ed32b571
Arg [2] : name_ (string): Kollateralized LTC
Arg [3] : symbol_ (string): kLTC
Arg [4] : decimals_ (uint8): 8
Arg [5] : admin_ (address): 0x17d04113a3651e79e7d40a40e47aae23046f7761
Arg [6] : implementation_ (address): 0xcea2d0a0413b6bf052eb2eca9c256ee25ad7d128
Arg [7] : becomeImplementationData (bytes): 0x00

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 0000000000000000000000004338665cbb7b2485a8855a139b75d5e34ab0db94
Arg [1] : 0000000000000000000000003c2ddd486c07343b711a4415cdc9ab90ed32b571
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
Arg [6] : 000000000000000000000000cea2d0a0413b6bf052eb2eca9c256ee25ad7d128
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [9] : 4b6f6c6c61746572616c697a6564204c54430000000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [11] : 6b4c544300000000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.