ETH Price: $3,719.73 (+3.51%)

Contract

0x473ccDeC83B7125a4F52Aa6F8699026FCB878eE8
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Mint209081902024-10-06 18:05:3555 days ago1728237935IN
0x473ccDeC...FCB878eE8
0 ETH0.000654487.07026879
Redeem202620102024-07-08 13:12:23145 days ago1720444343IN
0x473ccDeC...FCB878eE8
0 ETH0.000702233.54712314
Redeem194022242024-03-10 4:10:47265 days ago1710043847IN
0x473ccDeC...FCB878eE8
0 ETH0.024967848.19592516
Redeem193446712024-03-02 3:01:59273 days ago1709348519IN
0x473ccDeC...FCB878eE8
0 ETH0.0081810442.35151851
Mint193161382024-02-27 3:14:59277 days ago1709003699IN
0x473ccDeC...FCB878eE8
0 ETH0.0049683747.36609842
Redeem192556992024-02-18 15:53:11286 days ago1708271591IN
0x473ccDeC...FCB878eE8
0 ETH0.0053486631.77769475
Mint190062172024-01-14 16:07:59321 days ago1705248479IN
0x473ccDeC...FCB878eE8
0 ETH0.0029600229.56919051
Mint188513122023-12-23 21:53:35343 days ago1703368415IN
0x473ccDeC...FCB878eE8
0 ETH0.0018070720.58337468
Redeem188104472023-12-18 4:17:47348 days ago1702873067IN
0x473ccDeC...FCB878eE8
0 ETH0.0144590941.96747103
Redeem182752492023-10-04 6:04:23423 days ago1696399463IN
0x473ccDeC...FCB878eE8
0 ETH0.001257517.47119679
Mint181342082023-09-14 11:25:23443 days ago1694690723IN
0x473ccDeC...FCB878eE8
0 ETH0.0009304910.59879442
Redeem171099752023-04-23 15:43:11587 days ago1682264591IN
0x473ccDeC...FCB878eE8
0 ETH0.0076278845.3191091
Redeem170759192023-04-18 20:27:35592 days ago1681849655IN
0x473ccDeC...FCB878eE8
0 ETH0.0083257165.68246318
Redeem170748102023-04-18 16:43:11592 days ago1681836191IN
0x473ccDeC...FCB878eE8
0 ETH0.0112483166.82897097
Mint170369432023-04-13 6:29:35597 days ago1681367375IN
0x473ccDeC...FCB878eE8
0 ETH0.0016436125.38993903
Mint170369432023-04-13 6:29:35597 days ago1681367375IN
0x473ccDeC...FCB878eE8
0 ETH0.0026531425.29095822
Redeem170279952023-04-11 23:10:23599 days ago1681254623IN
0x473ccDeC...FCB878eE8
0 ETH0.0033791526.65855696
Redeem170279952023-04-11 23:10:23599 days ago1681254623IN
0x473ccDeC...FCB878eE8
0 ETH0.0035608921.15614521
Mint170276582023-04-11 22:01:11599 days ago1681250471IN
0x473ccDeC...FCB878eE8
0 ETH0.0028594827.25781692
Redeem168946432023-03-24 3:19:35617 days ago1679627975IN
0x473ccDeC...FCB878eE8
0 ETH0.0038731814.08342284
Redeem168808532023-03-22 4:47:23619 days ago1679460443IN
0x473ccDeC...FCB878eE8
0 ETH0.0021967211.37199658
Redeem167186932023-02-27 9:38:59642 days ago1677490739IN
0x473ccDeC...FCB878eE8
0 ETH0.0026826215.93813579
Mint166993332023-02-24 16:19:23645 days ago1677255563IN
0x473ccDeC...FCB878eE8
0 ETH0.0061872358.97938149
Mint165632262023-02-05 14:37:23664 days ago1675607843IN
0x473ccDeC...FCB878eE8
0 ETH0.0018969218.94939008
Redeem162753892022-12-27 10:08:47704 days ago1672135727IN
0x473ccDeC...FCB878eE8
0 ETH0.0019360111.50235656
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
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 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"}]

60806040523480156200001157600080fd5b5060405162001b3238038062001b3283398181016040526101008110156200003857600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006457600080fd5b9083019060208201858111156200007a57600080fd5b82516401000000008111828201881017156200009557600080fd5b82525081516020918201929091019080838360005b83811015620000c4578181015183820152602001620000aa565b50505050905090810190601f168015620000f25780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200011657600080fd5b9083019060208201858111156200012c57600080fd5b82516401000000008111828201881017156200014757600080fd5b82525081516020918201929091019080838360005b83811015620001765781810151838201526020016200015c565b50505050905090810190601f168015620001a45780820380516001836020036101000a031916815260200191505b50604081815260208301519083015160608401516080909401805192969195919284640100000000821115620001d957600080fd5b908301906020820185811115620001ef57600080fd5b82516401000000008111828201881017156200020a57600080fd5b82525081516020918201929091019080838360005b83811015620002395781810151838201526020016200021f565b50505050905090810190601f168015620002675780820380516001836020036101000a031916815260200191505b50604081905260038054610100600160a81b03191633610100021790556000805461ff00191681556001600160a01b038d811660248401908152908d16604484015260ff8a1660a484015260a0606484019081528c5160c48501528c51620003de97508996508f95508e948e948e948e9490939092608481019260e49091019160208901918190849084905b838110156200030d578181015183820152602001620002f3565b50505050905090810190601f1680156200033b5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156200037057818101518382015260200162000356565b50505050905090810190601f1680156200039e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116638420ce9960e01b179091529098506200042a169650505050505050565b50620003f6826000836001600160e01b03620004f116565b5050600380546001600160a01b0390921661010002610100600160a81b031990921691909117905550620006d29350505050565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106200046c5780518252601f1990920191602091820191016200044b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114620004ce576040519150601f19603f3d011682016040523d82523d6000602084013e620004d3565b606091505b50915091506000821415620004e9573d60208201fd5b949350505050565b60035461010090046001600160a01b03163314620005415760405162461bcd60e51b815260040180806020018281038252603981526020018062001af96039913960400191505060405180910390fd5b811562000583576040805160048152602481019091526020810180516001600160e01b0390811663153ab50560e01b17909152620005819190620006a816565b505b600a80546001600160a01b038581166001600160a01b0319831617909255604051602060248201818152855160448401528551949093169362000659938693909283926064909201919085019080838360005b83811015620005f0578181015183820152602001620005d6565b50505050905090810190601f1680156200061e5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b03908116630adccee560e31b17909152909350620006a816915050565b50600a54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600a54606090620006cc906001600160a01b0316836001600160e01b036200042a16565b92915050565b61141780620006e26000396000f3fe60806040526004361061019c5760003560e01c80636f307dc3116100ec578063b71d1a0c1161008a578063dd62ed3e11610064578063dd62ed3e14610858578063e9c714f214610893578063f77c4791146108a8578063f851a440146108bd5761019c565b8063b71d1a0c146107af578063c37f68e2146107e2578063db006a751461082e5761019c565b806395d89b41116100c657806395d89b41146106f4578063a0712d6814610709578063a9059cbb14610733578063b2a02ff11461076c5761019c565b80636f307dc31461067957806370a082311461068e57806383de424e146106c15761019c565b806326782247116101595780633b1d21a2116101335780633b1d21a2146104d45780634487152f146104e9578063555bcc401461059a5780635c60da1b146106645761019c565b8063267822471461046357806329d9109c14610494578063313ce567146104a95761019c565b806306fdde031461025c5780630933c1ed146102e6578063095ea7b314610397578063158ef93e146103e457806318160ddd146103f957806323b872dd14610420575b34156101d95760405162461bcd60e51b81526004018080602001828103825260378152602001806113736037913960400191505060405180910390fd5b600a546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b505090506040513d6000823e818015610258573d82f35b3d82fd5b34801561026857600080fd5b506102716108d2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f257600080fd5b506102716004803603602081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460018302840111600160201b8311171561035657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061095f945050505050565b3480156103a357600080fd5b506103d0600480360360408110156103ba57600080fd5b506001600160a01b03813516906020013561097e565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103d06109f5565b34801561040557600080fd5b5061040e610a03565b60408051918252519081900360200190f35b34801561042c57600080fd5b506103d06004803603606081101561044357600080fd5b506001600160a01b03813581169160208101359091169060400135610a09565b34801561046f57600080fd5b50610478610a89565b604080516001600160a01b039092168252519081900360200190f35b3480156104a057600080fd5b506103d0610a98565b3480156104b557600080fd5b506104be610a9d565b6040805160ff9092168252519081900360200190f35b3480156104e057600080fd5b5061040e610aa6565b3480156104f557600080fd5b506102716004803603602081101561050c57600080fd5b810190602081018135600160201b81111561052657600080fd5b82018360208201111561053857600080fd5b803590602001918460018302840111600160201b8311171561055957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610afd945050505050565b3480156105a657600080fd5b50610662600480360360608110156105bd57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156105ee57600080fd5b82018360208201111561060057600080fd5b803590602001918460018302840111600160201b8311171561062157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1c945050505050565b005b34801561067057600080fd5b50610478610ebf565b34801561068557600080fd5b50610478610ece565b34801561069a57600080fd5b5061040e600480360360208110156106b157600080fd5b50356001600160a01b0316610edd565b3480156106cd57600080fd5b50610662600480360360208110156106e457600080fd5b50356001600160a01b0316610f4f565b34801561070057600080fd5b50610271610f9f565b34801561071557600080fd5b5061040e6004803603602081101561072c57600080fd5b5035610ff7565b34801561073f57600080fd5b506103d06004803603604081101561075657600080fd5b506001600160a01b03813516906020013561103e565b34801561077857600080fd5b506106626004803603606081101561078f57600080fd5b506001600160a01b03813581169160208101359091169060400135611094565b3480156107bb57600080fd5b50610662600480360360208110156107d257600080fd5b50356001600160a01b03166110f2565b3480156107ee57600080fd5b506108156004803603602081101561080557600080fd5b50356001600160a01b031661113e565b6040805192835260208301919091528051918290030190f35b34801561083a57600080fd5b506106626004803603602081101561085157600080fd5b50356111bd565b34801561086457600080fd5b5061040e6004803603604081101561087b57600080fd5b506001600160a01b03813581169160200135166111fe565b34801561089f57600080fd5b50610662611258565b3480156108b457600080fd5b5061047861128d565b3480156108c957600080fd5b5061047861129c565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b820191906000526020600020905b81548152906001019060200180831161093a57829003601f168201915b505050505081565b600a54606090610978906001600160a01b0316836112b0565b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526000906060906109d49061095f565b90508080602001905160208110156109eb57600080fd5b5051949350505050565b600054610100900460ff1681565b60065481565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052600090606090610a679061095f565b9050808060200190516020811015610a7e57600080fd5b505195945050505050565b6004546001600160a01b031681565b600181565b60035460ff1681565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b179052600090606090610ade90610afd565b9050808060200190516020811015610af557600080fd5b505191505090565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610b4e578181015183820152602001610b36565b50505050905090810190601f168015610b7b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610bd65780518252601f199092019160209182019101610bb7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610c36576040519150601f19603f3d011682016040523d82523d6000602084013e610c3b565b606091505b50915091506000821415610c50573d60208201fd5b808060200190516020811015610c6557600080fd5b8101908080516040519392919084600160201b821115610c8457600080fd5b908301906020820185811115610c9957600080fd5b8251600160201b811182820188101715610cb257600080fd5b82525081516020918201929091019080838360005b83811015610cdf578181015183820152602001610cc7565b50505050905090810190601f168015610d0c5780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60035461010090046001600160a01b03163314610d6a5760405162461bcd60e51b81526004018080602001828103825260398152602001806113aa6039913960400191505060405180910390fd5b8115610da4576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610da29061095f565b505b600a80546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693610e70938693909283926064909201919085019080838360005b83811015610e0e578181015183820152602001610df6565b50505050905090810190601f168015610e3b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b179052925061095f915050565b50600a54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600a546001600160a01b031681565b6009546001600160a01b031681565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166370a0823160e01b179052600090606090610f2f90610afd565b9050808060200190516020811015610f4657600080fd5b50519392505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166341ef212760e11b179052610f9b9061095f565b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663140e25ad60e31b179052600090606090610f2f9061095f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526000906060906109d49061095f565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b031663b2a02ff160e01b1790526110ec9061095f565b50505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316632dc7468360e21b179052610f9b9061095f565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166361bfb47160e11b179052600090819060609061119290610afd565b90508080602001905160408110156111a957600080fd5b508051602090910151909350915050915091565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663db006a7560e01b179052610f9b9061095f565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316636eb1769f60e11b1790526000906060906109d490610afd565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b17905261128a9061095f565b50565b6005546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106112f05780518252601f1990920191602091820191016112d1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611350576040519150601f19603f3d011682016040523d82523d6000602084013e611355565b606091505b5091509150600082141561136a573d60208201fd5b94935050505056fe4b457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b4b457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a7231582055d2e9cde5bc1bc833c43cbec7a58eafdc7ebcca786bc32bb69e6d3b6957587064736f6c634300051000324b457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696e000000000000000000000000a8d7643324df0f38764f514eb1a99d8f379cc692000000000000000000000000bb7d94a423f4978545ecf73161f0678e8afd1a9200000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000800000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000024ff636d8671cb8d35e63d6b36f26893818e57af000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000144b6f6c6c61746572616c697a656420784b494e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000066b584b494e45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061019c5760003560e01c80636f307dc3116100ec578063b71d1a0c1161008a578063dd62ed3e11610064578063dd62ed3e14610858578063e9c714f214610893578063f77c4791146108a8578063f851a440146108bd5761019c565b8063b71d1a0c146107af578063c37f68e2146107e2578063db006a751461082e5761019c565b806395d89b41116100c657806395d89b41146106f4578063a0712d6814610709578063a9059cbb14610733578063b2a02ff11461076c5761019c565b80636f307dc31461067957806370a082311461068e57806383de424e146106c15761019c565b806326782247116101595780633b1d21a2116101335780633b1d21a2146104d45780634487152f146104e9578063555bcc401461059a5780635c60da1b146106645761019c565b8063267822471461046357806329d9109c14610494578063313ce567146104a95761019c565b806306fdde031461025c5780630933c1ed146102e6578063095ea7b314610397578063158ef93e146103e457806318160ddd146103f957806323b872dd14610420575b34156101d95760405162461bcd60e51b81526004018080602001828103825260378152602001806113736037913960400191505060405180910390fd5b600a546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d806000811461023c576040519150601f19603f3d011682016040523d82523d6000602084013e610241565b606091505b505090506040513d6000823e818015610258573d82f35b3d82fd5b34801561026857600080fd5b506102716108d2565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ab578181015183820152602001610293565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102f257600080fd5b506102716004803603602081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460018302840111600160201b8311171561035657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061095f945050505050565b3480156103a357600080fd5b506103d0600480360360408110156103ba57600080fd5b506001600160a01b03813516906020013561097e565b604080519115158252519081900360200190f35b3480156103f057600080fd5b506103d06109f5565b34801561040557600080fd5b5061040e610a03565b60408051918252519081900360200190f35b34801561042c57600080fd5b506103d06004803603606081101561044357600080fd5b506001600160a01b03813581169160208101359091169060400135610a09565b34801561046f57600080fd5b50610478610a89565b604080516001600160a01b039092168252519081900360200190f35b3480156104a057600080fd5b506103d0610a98565b3480156104b557600080fd5b506104be610a9d565b6040805160ff9092168252519081900360200190f35b3480156104e057600080fd5b5061040e610aa6565b3480156104f557600080fd5b506102716004803603602081101561050c57600080fd5b810190602081018135600160201b81111561052657600080fd5b82018360208201111561053857600080fd5b803590602001918460018302840111600160201b8311171561055957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610afd945050505050565b3480156105a657600080fd5b50610662600480360360608110156105bd57600080fd5b6001600160a01b03823516916020810135151591810190606081016040820135600160201b8111156105ee57600080fd5b82018360208201111561060057600080fd5b803590602001918460018302840111600160201b8311171561062157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d1c945050505050565b005b34801561067057600080fd5b50610478610ebf565b34801561068557600080fd5b50610478610ece565b34801561069a57600080fd5b5061040e600480360360208110156106b157600080fd5b50356001600160a01b0316610edd565b3480156106cd57600080fd5b50610662600480360360208110156106e457600080fd5b50356001600160a01b0316610f4f565b34801561070057600080fd5b50610271610f9f565b34801561071557600080fd5b5061040e6004803603602081101561072c57600080fd5b5035610ff7565b34801561073f57600080fd5b506103d06004803603604081101561075657600080fd5b506001600160a01b03813516906020013561103e565b34801561077857600080fd5b506106626004803603606081101561078f57600080fd5b506001600160a01b03813581169160208101359091169060400135611094565b3480156107bb57600080fd5b50610662600480360360208110156107d257600080fd5b50356001600160a01b03166110f2565b3480156107ee57600080fd5b506108156004803603602081101561080557600080fd5b50356001600160a01b031661113e565b6040805192835260208301919091528051918290030190f35b34801561083a57600080fd5b506106626004803603602081101561085157600080fd5b50356111bd565b34801561086457600080fd5b5061040e6004803603604081101561087b57600080fd5b506001600160a01b03813581169160200135166111fe565b34801561089f57600080fd5b50610662611258565b3480156108b457600080fd5b5061047861128d565b3480156108c957600080fd5b5061047861129c565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b820191906000526020600020905b81548152906001019060200180831161093a57829003601f168201915b505050505081565b600a54606090610978906001600160a01b0316836112b0565b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526000906060906109d49061095f565b90508080602001905160208110156109eb57600080fd5b5051949350505050565b600054610100900460ff1681565b60065481565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052600090606090610a679061095f565b9050808060200190516020811015610a7e57600080fd5b505195945050505050565b6004546001600160a01b031681565b600181565b60035460ff1681565b6040805160048152602481019091526020810180516001600160e01b0316631d8e90d160e11b179052600090606090610ade90610afd565b9050808060200190516020811015610af557600080fd5b505191505090565b606060006060306001600160a01b0316846040516024018080602001828103825283818151815260200191508051906020019080838360005b83811015610b4e578181015183820152602001610b36565b50505050905090810190601f168015610b7b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180516001600160e01b0316630933c1ed60e01b178152905182519295509350839250908083835b60208310610bd65780518252601f199092019160209182019101610bb7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610c36576040519150601f19603f3d011682016040523d82523d6000602084013e610c3b565b606091505b50915091506000821415610c50573d60208201fd5b808060200190516020811015610c6557600080fd5b8101908080516040519392919084600160201b821115610c8457600080fd5b908301906020820185811115610c9957600080fd5b8251600160201b811182820188101715610cb257600080fd5b82525081516020918201929091019080838360005b83811015610cdf578181015183820152602001610cc7565b50505050905090810190601f168015610d0c5780820380516001836020036101000a031916815260200191505b5060405250505092505050919050565b60035461010090046001600160a01b03163314610d6a5760405162461bcd60e51b81526004018080602001828103825260398152602001806113aa6039913960400191505060405180910390fd5b8115610da4576040805160048152602481019091526020810180516001600160e01b031663153ab50560e01b179052610da29061095f565b505b600a80546001600160a01b038581166001600160a01b03198316179092556040516020602482018181528551604484015285519490931693610e70938693909283926064909201919085019080838360005b83811015610e0e578181015183820152602001610df6565b50505050905090810190601f168015610e3b5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529190526020810180516001600160e01b0316630adccee560e31b179052925061095f915050565b50600a54604080516001600160a01b038085168252909216602083015280517fd604de94d45953f9138079ec1b82d533cb2160c906d1076d1f7ed54befbca97a9281900390910190a150505050565b600a546001600160a01b031681565b6009546001600160a01b031681565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166370a0823160e01b179052600090606090610f2f90610afd565b9050808060200190516020811015610f4657600080fd5b50519392505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166341ef212760e11b179052610f9b9061095f565b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156109575780601f1061092c57610100808354040283529160200191610957565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663140e25ad60e31b179052600090606090610f2f9061095f565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526000906060906109d49061095f565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b031663b2a02ff160e01b1790526110ec9061095f565b50505050565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b0316632dc7468360e21b179052610f9b9061095f565b604080516001600160a01b0383166024808301919091528251808303909101815260449091019091526020810180516001600160e01b03166361bfb47160e11b179052600090819060609061119290610afd565b90508080602001905160408110156111a957600080fd5b508051602090910151909350915050915091565b6040805160248082018490528251808303909101815260449091019091526020810180516001600160e01b031663db006a7560e01b179052610f9b9061095f565b604080516001600160a01b03808516602483015283166044808301919091528251808303909101815260649091019091526020810180516001600160e01b0316636eb1769f60e11b1790526000906060906109d490610afd565b6040805160048152602481019091526020810180516001600160e01b03166374e38a7960e11b17905261128a9061095f565b50565b6005546001600160a01b031681565b60035461010090046001600160a01b031681565b606060006060846001600160a01b0316846040518082805190602001908083835b602083106112f05780518252601f1990920191602091820191016112d1565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114611350576040519150601f19603f3d011682016040523d82523d6000602084013e611355565b606091505b5091509150600082141561136a573d60208201fd5b94935050505056fe4b457263323044656c656761746f723a66616c6c6261636b3a2063616e6e6f742073656e642076616c756520746f2066616c6c6261636b4b457263323044656c656761746f723a3a5f736574496d706c656d656e746174696f6e3a2043616c6c6572206d7573742062652061646d696ea265627a7a7231582055d2e9cde5bc1bc833c43cbec7a58eafdc7ebcca786bc32bb69e6d3b6957587064736f6c63430005100032

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

000000000000000000000000a8d7643324df0f38764f514eb1a99d8f379cc692000000000000000000000000bb7d94a423f4978545ecf73161f0678e8afd1a9200000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000800000000000000000000000017d04113a3651e79e7d40a40e47aae23046f776100000000000000000000000024ff636d8671cb8d35e63d6b36f26893818e57af000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000144b6f6c6c61746572616c697a656420784b494e4500000000000000000000000000000000000000000000000000000000000000000000000000000000000000066b584b494e45000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : underlying_ (address): 0xa8d7643324DF0f38764F514Eb1a99D8f379Cc692
Arg [1] : controller_ (address): 0xbB7D94a423f4978545ecf73161f0678e8AfD1a92
Arg [2] : name_ (string): Kollateralized xKINE
Arg [3] : symbol_ (string): kXKINE
Arg [4] : decimals_ (uint8): 8
Arg [5] : admin_ (address): 0x17D04113a3651e79e7d40a40E47aaE23046f7761
Arg [6] : implementation_ (address): 0x24Ff636d8671CB8d35e63d6B36F26893818e57Af
Arg [7] : becomeImplementationData (bytes): 0x00

-----Encoded View---------------
14 Constructor Arguments found :
Arg [0] : 000000000000000000000000a8d7643324df0f38764f514eb1a99d8f379cc692
Arg [1] : 000000000000000000000000bb7d94a423f4978545ecf73161f0678e8afd1a92
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000100
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000140
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000008
Arg [5] : 00000000000000000000000017d04113a3651e79e7d40a40e47aae23046f7761
Arg [6] : 00000000000000000000000024ff636d8671cb8d35e63d6b36f26893818e57af
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000180
Arg [8] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [9] : 4b6f6c6c61746572616c697a656420784b494e45000000000000000000000000
Arg [10] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [11] : 6b584b494e450000000000000000000000000000000000000000000000000000
Arg [12] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [13] : 0000000000000000000000000000000000000000000000000000000000000000


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.