Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0x003Bf166abc25d72D2999398927befd34fA33e89
Balance 0 ETH
Nonce 1
Code Size 3327 bytes
Indexed Transactions 0 (1 on-chain, 0.8% indexed)
External Etherscan · Sourcify

Contract Bytecode

3327 bytes
0x6080604052600436106100a05760003560e01c8063b2c7a37711610064578063b2c7a3771461016a578063c158910d1461017f578063d0202d3b1461019f578063d4f6b7a1146101bf578063e086e5ec146101df578063e1d0eaf4146101f457600080fd5b80630f0f3c41146100ac5780635fc1fd01146100ce5780636daf390b146100ee5780638da5cb5b1461012a57806394b918de1461014a57600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c7366004610bcf565b610209565b005b3480156100da57600080fd5b506100cc6100e9366004610bff565b6102b4565b3480156100fa57600080fd5b5060015461010e906001600160a01b031681565b6040516001600160a01b03909116815260200160405180910390f35b34801561013657600080fd5b5060005461010e906001600160a01b031681565b34801561015657600080fd5b506100cc610165366004610bff565b6103d4565b34801561017657600080fd5b506100cc610609565b34801561018b57600080fd5b506100cc61019a366004610bcf565b6107da565b3480156101ab57600080fd5b5060025461010e906001600160a01b031681565b3480156101cb57600080fd5b506100cc6101da366004610bff565b61087c565b3480156101eb57600080fd5b506100cc610998565b34801561020057600080fd5b506100cc6109ff565b6000546001600160a01b0316331461023c5760405162461bcd60e51b815260040161023390610c18565b60405180910390fd5b6001600160a01b0381166102925760405162461bcd60e51b815260206004820152601b60248201527f496e76616c6964206164647265737320666f7220746f6b656e496e00000000006044820152606401610233565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146102de5760405162461bcd60e51b815260040161023390610c18565b6002546001600160a01b03166103065760405162461bcd60e51b815260040161023390610c3b565b6002546000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529192169063a9059cbb906044016020604051808303816000875af115801561035d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103819190610c65565b9050806103d05760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f20776974686472617720746f6b656e4f757400000000006044820152606401610233565b5050565b6001546001600160a01b03166103fc5760405162461bcd60e51b815260040161023390610c87565b6002546001600160a01b03166104245760405162461bcd60e51b815260040161023390610c3b565b600081116104745760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610233565b6001546040516323b872dd60e01b8152336004820152306024820152604481018390526000916001600160a01b0316906323b872dd906064016020604051808303816000875af11580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610c65565b90508061053f5760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f207472616e7366657220746f6b656e496e0000000000006044820152606401610233565b60025460405163a9059cbb60e01b8152336004820152602481018490526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b59190610c65565b9050806106045760405162461bcd60e51b815260206004820152601b60248201527f4661696c656420746f207472616e7366657220746f6b656e4f757400000000006044820152606401610233565b505050565b6000546001600160a01b031633146106335760405162461bcd60e51b815260040161023390610c18565b6002546001600160a01b031661065b5760405162461bcd60e51b815260040161023390610c3b565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156106a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c89190610cb0565b9050600081116107105760405162461bcd60e51b81526020600482015260136024820152724e6f20746f6b656e4f75742062616c616e636560681b6044820152606401610233565b6002546000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529192169063a9059cbb906044016020604051808303816000875af1158015610767573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078b9190610c65565b9050806103d05760405162461bcd60e51b815260206004820152601f60248201527f4661696c656420746f20776974686472617720616c6c20746f6b656e4f7574006044820152606401610233565b6000546001600160a01b031633146108045760405162461bcd60e51b815260040161023390610c18565b6001600160a01b03811661085a5760405162461bcd60e51b815260206004820152601c60248201527f496e76616c6964206164647265737320666f7220746f6b656e4f7574000000006044820152606401610233565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108a65760405162461bcd60e51b815260040161023390610c18565b6001546001600160a01b03166108ce5760405162461bcd60e51b815260040161023390610c87565b6001546000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529192169063a9059cbb906044016020604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190610c65565b9050806103d05760405162461bcd60e51b815260206004820152601a60248201527f4661696c656420746f20776974686472617720746f6b656e496e0000000000006044820152606401610233565b6000546001600160a01b031633146109c25760405162461bcd60e51b815260040161023390610c18565b600080546040516001600160a01b03909116914780156108fc02929091818181858888f193505050501580156109fc573d6000803e3d6000fd5b50565b6000546001600160a01b03163314610a295760405162461bcd60e51b815260040161023390610c18565b6001546001600160a01b0316610a515760405162461bcd60e51b815260040161023390610c87565b6001546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe9190610cb0565b905060008111610b055760405162461bcd60e51b81526020600482015260126024820152714e6f20746f6b656e496e2062616c616e636560701b6044820152606401610233565b6001546000805460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018590529192169063a9059cbb906044016020604051808303816000875af1158015610b5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b809190610c65565b9050806103d05760405162461bcd60e51b815260206004820152601e60248201527f4661696c656420746f20776974686472617720616c6c20746f6b656e496e00006044820152606401610233565b600060208284031215610be157600080fd5b81356001600160a01b0381168114610bf857600080fd5b9392505050565b600060208284031215610c1157600080fd5b5035919050565b6020808252600990820152682737ba1037bbb732b960b91b604082015260600190565b60208082526010908201526f1d1bdad95b93dd5d081b9bdd081cd95d60821b604082015260600190565b600060208284031215610c7757600080fd5b81518015158114610bf857600080fd5b6020808252600f908201526e1d1bdad95b925b881b9bdd081cd95d608a1b604082015260600190565b600060208284031215610cc257600080fd5b505191905056fea26469706673582212203cb372128e456a2478ed8c91b281a66b1610cc31def042ddbd26cacab01161a964736f6c634300081a0033

Verified Source Code Full Match

Compiler: v0.8.26+commit.8a97fa7a EVM: paris Optimization: Yes (200 runs)
TokenSwap.sol 81 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    function transfer(address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

contract TokenSwap {
    address public owner;

    IERC20 public tokenIn;
    IERC20 public tokenOut;

    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

    constructor() {
        owner = msg.sender;
    }

    function setTokenIn(address _tokenIn) external onlyOwner {
        require(_tokenIn != address(0), "Invalid address for tokenIn");
        tokenIn = IERC20(_tokenIn);
    }

    function setTokenOut(address _tokenOut) external onlyOwner {
        require(_tokenOut != address(0), "Invalid address for tokenOut");
        tokenOut = IERC20(_tokenOut);
    }

    function swap(uint256 amount) external {
        require(address(tokenIn) != address(0), "tokenIn not set");
        require(address(tokenOut) != address(0), "tokenOut not set");
        require(amount > 0, "Amount must be greater than 0");

        bool successIn = tokenIn.transferFrom(msg.sender, address(this), amount);
        require(successIn, "Failed to transfer tokenIn");

        bool successOut = tokenOut.transfer(msg.sender, amount);
        require(successOut, "Failed to transfer tokenOut");
    }

    function withdrawETH() external onlyOwner {
        payable(owner).transfer(address(this).balance);
    }

    function withdrawTokenIn(uint256 amount) external onlyOwner {
        require(address(tokenIn) != address(0), "tokenIn not set");
        bool success = tokenIn.transfer(owner, amount);
        require(success, "Failed to withdraw tokenIn");
    }

    function withdrawTokenOut(uint256 amount) external onlyOwner {
        require(address(tokenOut) != address(0), "tokenOut not set");
        bool success = tokenOut.transfer(owner, amount);
        require(success, "Failed to withdraw tokenOut");
    }

    function withdrawAllTokenIn() external onlyOwner {
        require(address(tokenIn) != address(0), "tokenIn not set");
        uint256 balance = tokenIn.balanceOf(address(this));
        require(balance > 0, "No tokenIn balance");
        bool success = tokenIn.transfer(owner, balance);
        require(success, "Failed to withdraw all tokenIn");
    }

    function withdrawAllTokenOut() external onlyOwner {
        require(address(tokenOut) != address(0), "tokenOut not set");
        uint256 balance = tokenOut.balanceOf(address(this));
        require(balance > 0, "No tokenOut balance");
        bool success = tokenOut.transfer(owner, balance);
        require(success, "Failed to withdraw all tokenOut");
    }

    receive() external payable {}
}

Read Contract

owner 0x8da5cb5b → address
tokenIn 0x6daf390b → address
tokenOut 0xd0202d3b → address

Write Contract 8 functions

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

setTokenIn 0x0f0f3c41
address _tokenIn
setTokenOut 0xc158910d
address _tokenOut
swap 0x94b918de
uint256 amount
withdrawAllTokenIn 0xe1d0eaf4
No parameters
withdrawAllTokenOut 0xb2c7a377
No parameters
withdrawETH 0xe086e5ec
No parameters
withdrawTokenIn 0xd4f6b7a1
uint256 amount
withdrawTokenOut 0x5fc1fd01
uint256 amount

Recent Transactions

This address has 1 on-chain transactions, but only 0.8% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →