Contract Address Details

0x1180B6C9581057ffb5f764974AD40105Bc23D7F4

Contract Name
Swap
Creator
0xa2c689–1843a5 at 0xf2b0e1–de19d1
Balance
9.723982331188318868 ETC ( )
Tokens
Fetching tokens...
Transactions
43 Transactions
Transfers
37 Transfers
Gas Used
1,988,439
Last Balance Update
17683551
Contract name:
Swap




Optimization enabled
false
Compiler version
v0.8.7+commit.e28d00a7




EVM Version
default




Verified at
2022-11-01T21:20:22.560441Z

Constructor Arguments

0x00000000000000000000000009a9e6d00b07f7c991b98575f75d16811c9c50a4

Arg [0] (address) : 0x09a9e6d00b07f7c991b98575f75d16811c9c50a4

              

swap.sol

pragma solidity ^0.8.0;



interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);

    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);


    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract IAV is IERC20 {

    string public constant name = "In Argentum Veritas";
    string public constant symbol = "IAV";
    uint8 public constant decimals = 15;


    mapping(address => uint256) balances;

    mapping(address => mapping (address => uint256)) allowed;

    uint256 totalSupply_ = 2000 ether;


   constructor() {
               totalSupply_ = 2000 ether;
    balances[msg.sender] = totalSupply_;
    }

    function totalSupply() public override view returns (uint256) {
    return totalSupply_;
    }

    function balanceOf(address tokenOwner) public override view returns (uint256) {
        return balances[tokenOwner];
    }

    function transfer(address receiver, uint256 numTokens) public override returns (bool) {
        require(numTokens <= balances[msg.sender]);
        balances[msg.sender] = balances[msg.sender]-numTokens;
        balances[receiver] = balances[receiver]+numTokens;
        emit Transfer(msg.sender, receiver, numTokens);
        return true;
    }

    function approve(address delegate, uint256 numTokens) public override returns (bool) {
        allowed[msg.sender][delegate] = numTokens;
        emit Approval(msg.sender, delegate, numTokens);
        return true;
    }

    function allowance(address owner, address delegate) public override view returns (uint) {
        return allowed[owner][delegate];
    }

    function transferFrom(address owner, address buyer, uint256 numTokens) public override returns (bool) {
        require(numTokens <= balances[owner]);
        require(numTokens <= allowed[owner][msg.sender]);

        balances[owner] = balances[owner]-numTokens;
        allowed[owner][msg.sender] = allowed[owner][msg.sender]-numTokens;
        balances[buyer] = balances[buyer]+numTokens;
        emit Transfer(owner, buyer, numTokens);
        return true;
    }

}


contract Swap {

    event Bought(uint256 amount);
    event Sold(uint256 amount);
    IERC20 _token;
    address owner;
   
 


    constructor(address token) {
        _token = IERC20(token);
        owner = msg.sender;
    }
     modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function buy() payable public {
        uint256 amountTobuy = msg.value;
        uint256 dexBalance = _token.balanceOf(address(this));
        require(amountTobuy > 0, "You need to send some ether");
        require(amountTobuy <= dexBalance, "Not enough tokens in the reserve");
        _token.transfer(msg.sender, amountTobuy);
        emit Bought(amountTobuy);
    }

    function sell(uint256 amount) public {
        require(amount > 0, "You need to sell at least some tokens");
        uint256 allowance = _token.allowance(msg.sender, address(this));
        require(allowance >= amount, "Check the token allowance");
        _token.transferFrom(msg.sender, address(this), amount);
        payable(msg.sender).transfer(amount);
        emit Sold(amount);
    }



    function withdrawToken(address _tokenContract, uint256 _amount) external onlyOwner {
        IERC20 tokenContract = IERC20(_tokenContract);
        
        // transfer the token from address of this contract
        // to address of the user (executing the withdrawToken() function)
        tokenContract.transfer(msg.sender, _amount);
    }

    function _SendEth(uint256 amount) public payable onlyOwner {
     payable(msg.sender).transfer(amount);
}







     receive() external payable {
        uint256 amountTobuy = msg.value;
         _token.transfer(msg.sender, amountTobuy);
        emit Bought(msg.value);
    }

    fallback() external payable {
        
           uint256 amountTobuy = msg.value;
         _token.transfer(msg.sender, amountTobuy);
        emit Bought(msg.value);
    }

    

}



 




        

Contract ABI

[{"type":"constructor","inputs":[{"type":"address","name":"token","internalType":"address"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"_SendEth","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"payable","outputs":[],"name":"buy","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"sell","inputs":[{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"withdrawToken","inputs":[{"type":"address","name":"_tokenContract","internalType":"address"},{"type":"uint256","name":"_amount","internalType":"uint256"}]},{"type":"event","name":"Bought","inputs":[{"type":"uint256","name":"amount","indexed":false}],"anonymous":false},{"type":"event","name":"Sold","inputs":[{"type":"uint256","name":"amount","indexed":false}],"anonymous":false},{"type":"receive"},{"type":"fallback"}]
            

Deployed ByteCode

0x6080604052600436106100435760003560e01c80639e281a9814610222578063a6f2ae3a1461024b578063c19c4cc414610255578063e4849b321461027157610135565b3661013557600034905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016100a8929190610afa565b602060405180830381600087803b1580156100c257600080fd5b505af11580156100d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fa919061094e565b507f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef13460405161012a9190610ba3565b60405180910390a150005b600034905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610195929190610afa565b602060405180830381600087803b1580156101af57600080fd5b505af11580156101c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e7919061094e565b507f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef1346040516102179190610ba3565b60405180910390a150005b34801561022e57600080fd5b506102496004803603810190610244919061090e565b61029a565b005b61025361038c565b005b61026f600480360381019061026a919061097b565b6105ae565b005b34801561027d57600080fd5b506102986004803603810190610293919061097b565b610652565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102f457600080fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610334929190610afa565b602060405180830381600087803b15801561034e57600080fd5b505af1158015610362573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610386919061094e565b50505050565b600034905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103ed9190610a7f565b60206040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d91906109a8565b905060008211610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161047990610b83565b60405180910390fd5b808211156104c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104bc90610b63565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610520929190610afa565b602060405180830381600087803b15801561053a57600080fd5b505af115801561054e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610572919061094e565b507f4e08ba899977cf7d4c2964bce71c6b9a7ef76ee5166a4c1249a1e08016e33ef1826040516105a29190610ba3565b60405180910390a15050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461060857600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561064e573d6000803e3d6000fd5b5050565b60008111610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068c90610b23565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016106f3929190610a9a565b60206040518083038186803b15801561070b57600080fd5b505afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074391906109a8565b905081811015610788576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161077f90610b43565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016107e593929190610ac3565b602060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610837919061094e565b503373ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015801561087e573d6000803e3d6000fd5b507f92f64ca637d023f354075a4be751b169c1a8a9ccb6d33cdd0cb3520543995727826040516108ae9190610ba3565b60405180910390a15050565b6000813590506108c981610ce6565b92915050565b6000815190506108de81610cfd565b92915050565b6000813590506108f381610d14565b92915050565b60008151905061090881610d14565b92915050565b6000806040838503121561092557610924610c17565b5b6000610933858286016108ba565b9250506020610944858286016108e4565b9150509250929050565b60006020828403121561096457610963610c17565b5b6000610972848285016108cf565b91505092915050565b60006020828403121561099157610990610c17565b5b600061099f848285016108e4565b91505092915050565b6000602082840312156109be576109bd610c17565b5b60006109cc848285016108f9565b91505092915050565b6109de81610bcf565b82525050565b60006109f1602583610bbe565b91506109fc82610c1c565b604082019050919050565b6000610a14601983610bbe565b9150610a1f82610c6b565b602082019050919050565b6000610a37602083610bbe565b9150610a4282610c94565b602082019050919050565b6000610a5a601b83610bbe565b9150610a6582610cbd565b602082019050919050565b610a7981610c0d565b82525050565b6000602082019050610a9460008301846109d5565b92915050565b6000604082019050610aaf60008301856109d5565b610abc60208301846109d5565b9392505050565b6000606082019050610ad860008301866109d5565b610ae560208301856109d5565b610af26040830184610a70565b949350505050565b6000604082019050610b0f60008301856109d5565b610b1c6020830184610a70565b9392505050565b60006020820190508181036000830152610b3c816109e4565b9050919050565b60006020820190508181036000830152610b5c81610a07565b9050919050565b60006020820190508181036000830152610b7c81610a2a565b9050919050565b60006020820190508181036000830152610b9c81610a4d565b9050919050565b6000602082019050610bb86000830184610a70565b92915050565b600082825260208201905092915050565b6000610bda82610bed565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b7f596f75206e65656420746f2073656c6c206174206c6561737420736f6d65207460008201527f6f6b656e73000000000000000000000000000000000000000000000000000000602082015250565b7f436865636b2074686520746f6b656e20616c6c6f77616e636500000000000000600082015250565b7f4e6f7420656e6f75676820746f6b656e7320696e207468652072657365727665600082015250565b7f596f75206e65656420746f2073656e6420736f6d652065746865720000000000600082015250565b610cef81610bcf565b8114610cfa57600080fd5b50565b610d0681610be1565b8114610d1157600080fd5b50565b610d1d81610c0d565b8114610d2857600080fd5b5056fea26469706673582212201aaac7ac7298184a981e68dd065b5a5e6d8a15508b81ccf7d9b2ad2a92e9877964736f6c63430008070033