Contract Address Details

0x09a9E6D00B07f7C991b98575F75d16811C9c50a4

Token
In Argentum Veritas (IAV)
Creator
0xa2c689–1843a5 at 0xbdce66–2fcaa7
Balance
0 ETC ( )
Tokens
Fetching tokens...
Transactions
44 Transactions
Transfers
0 Transfers
Gas Used
1,825,045
Last Balance Update
17683314
Contract name:
IAV




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




EVM Version
default




Verified at
2022-11-01T21:22:41.820593Z

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":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"delegate","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"delegate","internalType":"address"},{"type":"uint256","name":"numTokens","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"tokenOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"receiver","internalType":"address"},{"type":"uint256","name":"numTokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"buyer","internalType":"address"},{"type":"uint256","name":"numTokens","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","indexed":true},{"type":"address","name":"spender","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","indexed":true},{"type":"address","name":"to","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false}]
            

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce5671461013457806370a082311461015257806395d89b4114610182578063a9059cbb146101a0578063dd62ed3e146101d057610093565b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100e657806323b872dd14610104575b600080fd5b6100a0610200565b6040516100ad9190610b27565b60405180910390f35b6100d060048036038101906100cb9190610a66565b610239565b6040516100dd9190610b0c565b60405180910390f35b6100ee61032b565b6040516100fb9190610b49565b60405180910390f35b61011e60048036038101906101199190610a13565b610335565b60405161012b9190610b0c565b60405180910390f35b61013c61069b565b6040516101499190610b64565b60405180910390f35b61016c600480360381019061016791906109a6565b6106a0565b6040516101799190610b49565b60405180910390f35b61018a6106e8565b6040516101979190610b27565b60405180910390f35b6101ba60048036038101906101b59190610a66565b610721565b6040516101c79190610b0c565b60405180910390f35b6101ea60048036038101906101e591906109d3565b6108f5565b6040516101f79190610b49565b60405180910390f35b6040518060400160405280601381526020017f496e20417267656e74756d20566572697461730000000000000000000000000081525081565b600081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516103199190610b49565b60405180910390a36001905092915050565b6000600254905090565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561038257600080fd5b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561040b57600080fd5b816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546104559190610bf1565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461051f9190610bf1565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105e99190610b9b565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106889190610b49565b60405180910390a3600190509392505050565b600f81565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6040518060400160405280600381526020017f494156000000000000000000000000000000000000000000000000000000000081525081565b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205482111561076e57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107b89190610bf1565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108449190610b9b565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108e39190610b49565b60405180910390a36001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008135905061098b81610cf2565b92915050565b6000813590506109a081610d09565b92915050565b6000602082840312156109bc576109bb610cdc565b5b60006109ca8482850161097c565b91505092915050565b600080604083850312156109ea576109e9610cdc565b5b60006109f88582860161097c565b9250506020610a098582860161097c565b9150509250929050565b600080600060608486031215610a2c57610a2b610cdc565b5b6000610a3a8682870161097c565b9350506020610a4b8682870161097c565b9250506040610a5c86828701610991565b9150509250925092565b60008060408385031215610a7d57610a7c610cdc565b5b6000610a8b8582860161097c565b9250506020610a9c85828601610991565b9150509250929050565b610aaf81610c37565b82525050565b6000610ac082610b7f565b610aca8185610b8a565b9350610ada818560208601610c7a565b610ae381610ce1565b840191505092915050565b610af781610c63565b82525050565b610b0681610c6d565b82525050565b6000602082019050610b216000830184610aa6565b92915050565b60006020820190508181036000830152610b418184610ab5565b905092915050565b6000602082019050610b5e6000830184610aee565b92915050565b6000602082019050610b796000830184610afd565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610ba682610c63565b9150610bb183610c63565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610be657610be5610cad565b5b828201905092915050565b6000610bfc82610c63565b9150610c0783610c63565b925082821015610c1a57610c19610cad565b5b828203905092915050565b6000610c3082610c43565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610c98578082015181840152602081019050610c7d565b83811115610ca7576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b610cfb81610c25565b8114610d0657600080fd5b50565b610d1281610c63565b8114610d1d57600080fd5b5056fea2646970667358221220078c0f8b76ec045033681c383a98cf1d1a3595c87d15686cb77016d24037385664736f6c63430008070033