Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x95dFDC8161832e4fF7816aC4B6367CE201538253
Balance 0 ETH
Nonce 1
Code Size 3416 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

3416 bytes
0x608060405234801561001057600080fd5b50600436106101585760003560e01c806366d16cc3116100c3578063a0712d681161007c578063a0712d6814610309578063a9059cbb1461031c578063cfad57a21461032f578063d0e30db014610342578063dd62ed3e1461034a578063f94e4e801461038357600080fd5b806366d16cc31461029a5780636a42b8f8146102a257806370a08231146102ac5780637bc6729b146102d55780638da876c9146102dd57806395d89b41146102e557600080fd5b80631f782287116101155780631f782287146102155780632196bcd71461023c57806323b872dd146102455780632e1a7d4d14610258578063313ce5671461026d57806342966c681461028757600080fd5b806306fdde031461015d578063095ea7b31461019f57806312d43a51146101c257806318160ddd146101ed5780631a686502146102045780631a7c25261461020d575b600080fd5b6101896040518060400160405280600d81526020016c49726f6e2042616e6b204b525760981b81525081565b6040516101969190610c47565b60405180910390f35b6101b26101ad366004610beb565b610396565b6040519015158152602001610196565b6000546101d5906001600160a01b031681565b6040516001600160a01b039091168152602001610196565b6101f660045481565b604051908152602001610196565b6101f660035481565b6101f6610402565b6101d57f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c08010181565b6101f660025481565b6101b2610253366004610baf565b6104a1565b61026b610266366004610c15565b610568565b005b610275601281565b60405160ff9091168152602001610196565b61026b610295366004610c15565b6105ac565b61026b6105c3565b6101f66201518081565b6101f66102ba366004610b5a565b6001600160a01b031660009081526006602052604090205490565b61026b6105fd565b6101f6610645565b6101896040518060400160405280600581526020016469624b525760d81b81525081565b61026b610317366004610c15565b610714565b6101b261032a366004610beb565b6107a2565b61026b61033d366004610b5a565b6107b8565b61026b6107fd565b6101f6610358366004610b7c565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b6001546101d5906001600160a01b031681565b3360008181526005602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103f19086815260200190565b60405180910390a350600192915050565b6040516370a0823160e01b81523060048201526000907f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c0801016001600160a01b0316906370a082319060240160206040518083038186803b15801561046457600080fd5b505afa158015610478573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049c9190610c2e565b905090565b6001600160a01b0383166000818152600560209081526040808320338085529252822054919290919082148015906104db57506000198114155b156105515760006104ec8583610cf5565b6001600160a01b038881166000818152600560209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b61055c868686610943565b50600195945050505050565b6000546001600160a01b0316331461057f57600080fd5b80600360008282546105919190610cf5565b909155506105a09050816109f1565b6105a981610ace565b50565b6000546001600160a01b031633146105a057600080fd5b60006003546105d0610645565b6105da9190610cf5565b90506105e5816109f1565b6000546105a99030906001600160a01b031683610943565b6001546001600160a01b031633148015610618575042600254105b61062157600080fd5b600154600080546001600160a01b0319166001600160a01b03909216919091179055565b600080610650610402565b9050801561070c57670de0b6b3a76400007f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c0801016001600160a01b031663182df0f56040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ba57600080fd5b505afa1580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190610c2e565b6106fc9083610cd6565b6107069190610cb4565b91505090565b600091505090565b6000546001600160a01b0316331461072b57600080fd5b806004600082825461073d9190610c9c565b90915550503060009081526006602052604081208054839290610761908490610c9c565b909155505060405181815230906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a350565b60006107af338484610943565b50600192915050565b6000546001600160a01b031633146107cf57600080fd5b600180546001600160a01b0319166001600160a01b0383161790556107f76201518042610c9c565b60025550565b30600090815260066020908152604080832054600583528184207f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c0801016001600160a01b031685529092528220819055600380549192839261085e908490610c9c565b909155505060405163140e25ad60e31b8152600481018290527f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c0801016001600160a01b03169063a0712d6890602401602060405180830381600087803b1580156108c557600080fd5b505af11580156108d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fd9190610c2e565b156105a95760405162461bcd60e51b81526020600482015260116024820152701a588e881cdd5c1c1b1e4819985a5b1959607a1b60448201526064015b60405180910390fd5b6001600160a01b0383166000908152600660205260408120805483929061096b908490610cf5565b90915550506001600160a01b03821660009081526006602052604081208054839290610998908490610c9c565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516109e491815260200190565b60405180910390a3505050565b60405163852a12e360e01b8152600481018290527f0000000000000000000000003c9f5385c288ce438ed55620938a4b967c0801016001600160a01b03169063852a12e390602401602060405180830381600087803b158015610a5357600080fd5b505af1158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b9190610c2e565b156105a95760405162461bcd60e51b81526020600482015260136024820152721a588e881dda5d1a191c985dc819985a5b1959606a1b604482015260640161093a565b8060046000828254610ae09190610cf5565b90915550503060009081526006602052604081208054839290610b04908490610cf5565b909155505060405181815260009030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610797565b80356001600160a01b0381168114610b5557600080fd5b919050565b600060208284031215610b6c57600080fd5b610b7582610b3e565b9392505050565b60008060408385031215610b8f57600080fd5b610b9883610b3e565b9150610ba660208401610b3e565b90509250929050565b600080600060608486031215610bc457600080fd5b610bcd84610b3e565b9250610bdb60208501610b3e565b9150604084013590509250925092565b60008060408385031215610bfe57600080fd5b610c0783610b3e565b946020939093013593505050565b600060208284031215610c2757600080fd5b5035919050565b600060208284031215610c4057600080fd5b5051919050565b600060208083528351808285015260005b81811015610c7457858101830151858201604001528201610c58565b81811115610c86576000604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610caf57610caf610d0c565b500190565b600082610cd157634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610cf057610cf0610d0c565b500290565b600082821015610d0757610d07610d0c565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220b331c94f48af231195da159c4401cd50f3b5025ad9e83f6259898fe26030f1aa64736f6c63430008060033

Verified Source Code Partial Match

Compiler: v0.8.6+commit.11564f7e EVM: berlin Optimization: Yes (200 runs)
FixedForex.sol 149 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.6;

interface ibToken {
    function mint(uint) external returns (uint);
    function redeemUnderlying(uint) external returns (uint);
    function exchangeRateStored() external view returns (uint);
    function balanceOf(address) external view returns (uint);
}

contract FixedForex {
    string public constant name = "Iron Bank KRW";
    string public constant symbol = "ibKRW";
    uint8 public constant decimals = 18;
    
    ibToken public immutable ib;
    address public gov;
    address public nextgov;
    uint public commitgov;
    uint public constant delay = 1 days;
    
    uint public liquidity;
    
    constructor(ibToken _ib) {
        ib = _ib;
        gov = msg.sender;
    }
    
    modifier g() {
        require(msg.sender == gov);
        _;
    }
    
    function setGov(address _gov) external g {
        nextgov = _gov;
        commitgov = block.timestamp + delay;
    }
    
    function acceptGov() external {
        require(msg.sender == nextgov && commitgov < block.timestamp);
        gov = nextgov;
    }
    
    function balanceIB() public view returns (uint) {
        return ib.balanceOf(address(this));
    }
    
    function balanceUnderlying() public view returns (uint) {
        uint256 _b = balanceIB();
        if (_b > 0) {
            return _b * ib.exchangeRateStored() / 1e18;
        }
        return 0;
    }
    
    function _redeem(uint amount) internal {
        require(ib.redeemUnderlying(amount) == 0, "ib: withdraw failed");
    }
    
    function profit() external {
        uint _profit = balanceUnderlying() - liquidity;
        _redeem(_profit);
        _transferTokens(address(this), gov, _profit);
    }
    
    function withdraw(uint amount) external g {
        liquidity -= amount;
        _redeem(amount);
        _burn(amount);
    }
    
    function deposit() external {
        uint _amount = balances[address(this)];
        allowances[address(this)][address(ib)] = _amount;
        liquidity += _amount;
        require(ib.mint(_amount) == 0, "ib: supply failed");
    }
    
    /// @notice Total number of tokens in circulation
    uint public totalSupply = 0;
    
    mapping(address => mapping (address => uint)) internal allowances;
    mapping(address => uint) internal balances;
    
    event Transfer(address indexed from, address indexed to, uint amount);
    event Approval(address indexed owner, address indexed spender, uint amount);
    
    function mint(uint amount) external g {
        // mint the amount
        totalSupply += amount;
        // transfer the amount to the recipient
        balances[address(this)] += amount;
        emit Transfer(address(0), address(this), amount);
    }
    
    function burn(uint amount) external g {
        _burn(amount);
    }
    
    function _burn(uint amount) internal {
        // burn the amount
        totalSupply -= amount;
        // transfer the amount from the recipient
        balances[address(this)] -= amount;
        emit Transfer(address(this), address(0), amount);
    }
    
    function allowance(address account, address spender) external view returns (uint) {
        return allowances[account][spender];
    }

    function approve(address spender, uint amount) external returns (bool) {
        allowances[msg.sender][spender] = amount;

        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function balanceOf(address account) external view returns (uint) {
        return balances[account];
    }

    function transfer(address dst, uint amount) external returns (bool) {
        _transferTokens(msg.sender, dst, amount);
        return true;
    }

    function transferFrom(address src, address dst, uint amount) external returns (bool) {
        address spender = msg.sender;
        uint spenderAllowance = allowances[src][spender];

        if (spender != src && spenderAllowance != type(uint).max) {
            uint newAllowance = spenderAllowance - amount;
            allowances[src][spender] = newAllowance;

            emit Approval(src, spender, newAllowance);
        }

        _transferTokens(src, dst, amount);
        return true;
    }

    function _transferTokens(address src, address dst, uint amount) internal {
        balances[src] -= amount;
        balances[dst] += amount;
        
        emit Transfer(src, dst, amount);
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceIB 0x1a7c2526 → uint256
balanceOf 0x70a08231 → uint256
balanceUnderlying 0x8da876c9 → uint256
commitgov 0x2196bcd7 → uint256
decimals 0x313ce567 → uint8
delay 0x6a42b8f8 → uint256
gov 0x12d43a51 → address
ib 0x1f782287 → address
liquidity 0x1a686502 → uint256
name 0x06fdde03 → string
nextgov 0xf94e4e80 → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 10 functions

These functions modify contract state and require a wallet transaction to execute.

acceptGov 0x7bc6729b
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
deposit 0xd0e30db0
No parameters
mint 0xa0712d68
uint256 amount
profit 0x66d16cc3
No parameters
setGov 0xcfad57a2
address _gov
transfer 0xa9059cbb
address dst
uint256 amount
returns: bool
transferFrom 0x23b872dd
address src
address dst
uint256 amount
returns: bool
withdraw 0x2e1a7d4d
uint256 amount

Recent Transactions

No transactions found for this address