Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0x02aFfe1f30f3D93B2C459e382f8265819B3649Cb
Balance 0 ETH
Nonce 1
Code Size 9452 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

9452 bytes
0x608060405260043610610184575f3560e01c806370a08231116100d0578063bd7bcef111610089578063dd644f7211610063578063dd644f721461058c578063e47d6060146105b6578063e4997dc5146105f2578063f2fde38b1461061a576101c4565b8063bd7bcef1146104fe578063c415b95c14610526578063dd62ed3e14610550576101c4565b806370a08231146103f45780638456cb59146104305780638da5cb5b1461044657806395d89b4114610470578063a42dce801461049a578063a9059cbb146104c2576101c4565b806323b872dd1161013d578063353907141161011757806335390714146103625780633f4ba83a1461038c5780635c975abb146103a25780635fdf2be0146103cc576101c4565b806323b872dd146102d257806326976e3f1461030e578063313ce56714610338576101c4565b806306fdde03146101c85780630900f010146101f2578063095ea7b31461021a5780630e136b19146102565780630ecb93c01461028057806318160ddd146102a8576101c4565b366101c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101bb90611d89565b60405180910390fd5b5f5ffd5b3480156101d3575f5ffd5b506101dc610642565b6040516101e99190611e07565b60405180910390f35b3480156101fd575f5ffd5b5061021860048036038101906102139190611e85565b6106cd565b005b348015610225575f5ffd5b50610240600480360381019061023b9190611ee3565b6107fd565b60405161024d9190611f3b565b60405180910390f35b348015610261575f5ffd5b5061026a610908565b6040516102779190611f3b565b60405180910390f35b34801561028b575f5ffd5b506102a660048036038101906102a19190611e85565b61091b565b005b3480156102b3575f5ffd5b506102bc610b03565b6040516102c99190611f63565b60405180910390f35b3480156102dd575f5ffd5b506102f860048036038101906102f39190611f7c565b610b0c565b6040516103059190611f3b565b60405180910390f35b348015610319575f5ffd5b50610322611050565b60405161032f9190611fdb565b60405180910390f35b348015610343575f5ffd5b5061034c611075565b604051610359919061200f565b60405180910390f35b34801561036d575f5ffd5b5061037661107a565b6040516103839190611f63565b60405180910390f35b348015610397575f5ffd5b506103a0611080565b005b3480156103ad575f5ffd5b506103b6611156565b6040516103c39190611f3b565b60405180910390f35b3480156103d7575f5ffd5b506103f260048036038101906103ed9190612028565b611168565b005b3480156103ff575f5ffd5b5061041a60048036038101906104159190611e85565b611201565b6040516104279190611f63565b60405180910390f35b34801561043b575f5ffd5b50610444611247565b005b348015610451575f5ffd5b5061045a61131e565b6040516104679190611fdb565b60405180910390f35b34801561047b575f5ffd5b50610484611343565b6040516104919190611e07565b60405180910390f35b3480156104a5575f5ffd5b506104c060048036038101906104bb9190611e85565b6113cf565b005b3480156104cd575f5ffd5b506104e860048036038101906104e39190611ee3565b6114a1565b6040516104f59190611f3b565b60405180910390f35b348015610509575f5ffd5b50610524600480360381019061051f9190612028565b6118a6565b005b348015610531575f5ffd5b5061053a61193f565b6040516105479190611fdb565b60405180910390f35b34801561055b575f5ffd5b5061057660048036038101906105719190612053565b611964565b6040516105839190611f63565b60405180910390f35b348015610597575f5ffd5b506105a06119e6565b6040516105ad9190611f63565b60405180910390f35b3480156105c1575f5ffd5b506105dc60048036038101906105d79190611e85565b6119ec565b6040516105e99190611f3b565b60405180910390f35b3480156105fd575f5ffd5b5061061860048036038101906106139190611e85565b611a09565b005b348015610625575f5ffd5b50610640600480360381019061063b9190611e85565b611b32565b005b5f805461064e906120be565b80601f016020809104026020016040519081016040528092919081815260200182805461067a906120be565b80156106c55780601f1061069c576101008083540402835291602001916106c5565b820191905f5260205f20905b8154815290600101906020018083116106a857829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075390612138565b60405180910390fd5b6001600b60146101000a81548160ff02191690831515021790555080600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b5f604060048161080d9190612183565b5f369050101561081b575f5ffd5b8260045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516108f59190611f63565b60405180910390a3600191505092915050565b600b60149054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a190612138565b60405180910390fd5b600160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f610a0982611201565b90505f811115610abc575f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508060025f828254610a6691906121b6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff167f61e6e66b0d6339b2980aecc6ccc0039736791f0ccde9ed512e789a7fbdd698c682604051610ab39190611f63565b60405180910390a25b8173ffffffffffffffffffffffffffffffffffffffff167f42e160154868087d6bfdc0ca23d96a1c1cfa32f1b72ba9ba27b69b98a0d819dc60405160405180910390a25050565b5f600254905090565b5f60075f9054906101000a900460ff1615610b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5390612233565b60405180910390fd5b6060600481610b6b9190612183565b5f3690501015610b79575f5ffd5b60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610c17575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d9061229b565b60405180910390fd5b5f60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905083811015610d15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0c90612303565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610dcb578360045f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610dc391906121b6565b925050819055505b5f5f610dd686611ced565b915091508560035f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e2691906121b6565b925050819055508060035f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610e799190612183565b925050819055505f821115610efd578160035f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ef59190612183565b925050819055505b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f5a9190611f63565b60405180910390a35f821115611041578773ffffffffffffffffffffffffffffffffffffffff167f108516ddcf5ba43cea6bb2cd5ff6d59ac196c1c86ccb9178332b9dd72d1ca5618383604051610fb2929190612321565b60405180910390a2600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516110389190611f63565b60405180910390a35b60019450505050509392505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600681565b60065481565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110690612138565b60405180910390fd5b5f60075f6101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b60075f9054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612138565b60405180910390fd5b8060058190555050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cd90612138565b60405180910390fd5b600160075f6101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054611350906120be565b80601f016020809104026020016040519081016040528092919081815260200182805461137c906120be565b80156113c75780601f1061139e576101008083540402835291602001916113c7565b820191905f5260205f20905b8154815290600101906020018083116113aa57829003601f168201915b505050505081565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461145e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145590612138565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60075f9054906101000a900460ff16156114f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e890612233565b60405180910390fd5b60406004816115009190612183565b5f369050101561150e575f5ffd5b60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115ac575060085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156115e457505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b611623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161a90612392565b60405180910390fd5b5f5f61162e85611ced565b915091508460035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461167e91906121b6565b925050819055508060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546116d19190612183565b925050819055505f821115611755578160035f600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461174d9190612183565b925050819055505b8573ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516117b29190611f63565b60405180910390a35f821115611899573373ffffffffffffffffffffffffffffffffffffffff167f108516ddcf5ba43cea6bb2cd5ff6d59ac196c1c86ccb9178332b9dd72d1ca561838360405161180a929190612321565b60405180910390a2600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118909190611f63565b60405180910390a35b6001935050505092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192c90612138565b60405180910390fd5b8060068190555050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055481565b6008602052805f5260405f205f915054906101000a900460ff1681565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8f90612138565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fd7e9ec6e6ecd65492dce6bf513cd6867560d49544421d0783ddf06e76c24470c60405160405180910390a250565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890612138565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c26906123fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f5f61271060055484611d009190612418565b611d0a9190612486565b9150600654821115611d1c5760065491505b8183611d2891906121b6565b9050915091565b5f82825260208201905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f611d73600683611d2f565b9150611d7e82611d3f565b602082019050919050565b5f6020820190508181035f830152611da081611d67565b9050919050565b5f81519050919050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611dd982611da7565b611de38185611d2f565b9350611df3818560208601611db1565b611dfc81611dbf565b840191505092915050565b5f6020820190508181035f830152611e1f8184611dcf565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611e5482611e2b565b9050919050565b611e6481611e4a565b8114611e6e575f5ffd5b50565b5f81359050611e7f81611e5b565b92915050565b5f60208284031215611e9a57611e99611e27565b5b5f611ea784828501611e71565b91505092915050565b5f819050919050565b611ec281611eb0565b8114611ecc575f5ffd5b50565b5f81359050611edd81611eb9565b92915050565b5f5f60408385031215611ef957611ef8611e27565b5b5f611f0685828601611e71565b9250506020611f1785828601611ecf565b9150509250929050565b5f8115159050919050565b611f3581611f21565b82525050565b5f602082019050611f4e5f830184611f2c565b92915050565b611f5d81611eb0565b82525050565b5f602082019050611f765f830184611f54565b92915050565b5f5f5f60608486031215611f9357611f92611e27565b5b5f611fa086828701611e71565b9350506020611fb186828701611e71565b9250506040611fc286828701611ecf565b9150509250925092565b611fd581611e4a565b82525050565b5f602082019050611fee5f830184611fcc565b92915050565b5f60ff82169050919050565b61200981611ff4565b82525050565b5f6020820190506120225f830184612000565b92915050565b5f6020828403121561203d5761203c611e27565b5b5f61204a84828501611ecf565b91505092915050565b5f5f6040838503121561206957612068611e27565b5b5f61207685828601611e71565b925050602061208785828601611e71565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806120d557607f821691505b6020821081036120e8576120e7612091565b5b50919050565b7f4e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f612122600983611d2f565b915061212d826120ee565b602082019050919050565b5f6020820190508181035f83015261214f81612116565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61218d82611eb0565b915061219883611eb0565b92508282019050808211156121b0576121af612156565b5b92915050565b5f6121c082611eb0565b91506121cb83611eb0565b92508282039050818111156121e3576121e2612156565b5b92915050565b7f50617573656400000000000000000000000000000000000000000000000000005f82015250565b5f61221d600683611d2f565b9150612228826121e9565b602082019050919050565b5f6020820190508181035f83015261224a81612211565b9050919050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612285600b83611d2f565b915061229082612251565b602082019050919050565b5f6020820190508181035f8301526122b281612279565b9050919050565b7f496e73756666696369656e7420616c6c6f77616e6365000000000000000000005f82015250565b5f6122ed601683611d2f565b91506122f8826122b9565b602082019050919050565b5f6020820190508181035f83015261231a816122e1565b9050919050565b5f6040820190506123345f830185611f54565b6123416020830184611f54565b9392505050565b7f496e76616c6964207472616e73666572000000000000000000000000000000005f82015250565b5f61237c601083611d2f565b915061238782612348565b602082019050919050565b5f6020820190508181035f8301526123a981612370565b9050919050565b7f5a65726f206164647265737300000000000000000000000000000000000000005f82015250565b5f6123e4600c83611d2f565b91506123ef826123b0565b602082019050919050565b5f6020820190508181035f830152612411816123d8565b9050919050565b5f61242282611eb0565b915061242d83611eb0565b925082820261243b81611eb0565b9150828204841483151761245257612451612156565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61249082611eb0565b915061249b83611eb0565b9250826124ab576124aa612459565b5b82820490509291505056fea26469706673582212204d8794bb2ebfa6ae4c7e5f0de9a5918c5dce0ee1fb224a55799655f38bb26f4a64736f6c63430008210033

Verified Source Code Full Match

Compiler: v0.8.33+commit.64118f21 EVM: osaka Optimization: No
TetherToken.sol 135 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract TetherToken {
    string public name = "Tether USD";
    string public symbol = "USDT";
    uint8 public constant decimals = 6;
    uint256 private _totalSupply;
    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    
    uint256 public basisPointsRate = 0;
    uint256 public maximumFee = 0;
    bool public paused = false;
    mapping(address => bool) public isBlackListed;
    
    address public owner;
    address public feeCollector;
    address public upgradedAddress;
    bool public deprecated;
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Pause();
    event Unpause();
    event AddedBlackList(address indexed user);
    event RemovedBlackList(address indexed user);
    event DestroyedBlackFunds(address indexed blackListedUser, uint256 balance);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event FeeCollected(address indexed from, uint256 fee, uint256 netAmount);
    event Upgraded(address indexed newAddress);

    modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _; }
    modifier whenNotPaused() { require(!paused, "Paused"); _; }
    modifier onlyPayloadSize(uint256 size) { require(msg.data.length >= size + 4); _; }

    constructor(uint256 initialSupply) {
        owner = msg.sender;
        feeCollector = msg.sender;
        _totalSupply = initialSupply * 10**uint256(decimals);
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function totalSupply() public view returns (uint256) { return _totalSupply; }
    function balanceOf(address account) public view returns (uint256) { return _balances[account]; }

    function _calculateFee(uint256 amount) internal view returns (uint256 fee, uint256 netAmount) {
        fee = (amount * basisPointsRate) / 10000;
        if (fee > maximumFee) fee = maximumFee;
        netAmount = amount - fee;
    }

    function transfer(address to, uint256 amount) public whenNotPaused onlyPayloadSize(2 * 32) returns (bool) {
        require(!isBlackListed[msg.sender] && !isBlackListed[to] && to != address(0), "Invalid transfer");
        (uint256 fee, uint256 netAmount) = _calculateFee(amount);
        _balances[msg.sender] -= amount;
        _balances[to] += netAmount;
        if (fee > 0) _balances[feeCollector] += fee;
        emit Transfer(msg.sender, to, netAmount);
        if (fee > 0) {
            emit FeeCollected(msg.sender, fee, netAmount);
            emit Transfer(msg.sender, feeCollector, fee);
        }
        return true;
    }

    function allowance(address tokenOwner, address spender) public view returns (uint256) {
        return _allowances[tokenOwner][spender];
    }

    function approve(address spender, uint256 amount) public onlyPayloadSize(2 * 32) returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address from, address to, uint256 amount) 
        public whenNotPaused onlyPayloadSize(3 * 32) returns (bool) {
        require(!isBlackListed[from] && !isBlackListed[to], "Blacklisted");
        uint256 currAllowance = _allowances[from][msg.sender];
        require(currAllowance >= amount, "Insufficient allowance");
        if (currAllowance != type(uint256).max) _allowances[from][msg.sender] -= amount;
        
        (uint256 fee, uint256 netAmount) = _calculateFee(amount);
        _balances[from] -= amount;
        _balances[to] += netAmount;
        if (fee > 0) _balances[feeCollector] += fee;
        
        emit Transfer(from, to, netAmount);
        if (fee > 0) {
            emit FeeCollected(from, fee, netAmount);
            emit Transfer(from, feeCollector, fee);
        }
        return true;
    }

    function pause() external onlyOwner { paused = true; emit Pause(); }
    function unpause() external onlyOwner { paused = false; emit Unpause(); }

    function addBlackList(address evilUser) external onlyOwner {
        isBlackListed[evilUser] = true;
        uint256 dirtyFunds = balanceOf(evilUser);
        if (dirtyFunds > 0) {
            _balances[evilUser] = 0;
            _totalSupply -= dirtyFunds;
            emit DestroyedBlackFunds(evilUser, dirtyFunds);
        }
        emit AddedBlackList(evilUser);
    }

    function removeBlackList(address clearedUser) external onlyOwner {
        isBlackListed[clearedUser] = false;
        emit RemovedBlackList(clearedUser);
    }

    function setBasisPointsRate(uint256 newRate) external onlyOwner { basisPointsRate = newRate; }
    function setMaximumFee(uint256 newMaxFee) external onlyOwner { maximumFee = newMaxFee; }
    function setFeeCollector(address newCollector) external onlyOwner { feeCollector = newCollector; }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Zero address");
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    function upgrade(address newAddress) external onlyOwner {
        deprecated = true;
        upgradedAddress = newAddress;
        emit Upgraded(newAddress);
    }

    receive() external payable { revert("No ETH"); }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
basisPointsRate 0xdd644f72 → uint256
decimals 0x313ce567 → uint8
deprecated 0x0e136b19 → bool
feeCollector 0xc415b95c → address
isBlackListed 0xe47d6060 → bool
maximumFee 0x35390714 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
paused 0x5c975abb → bool
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
upgradedAddress 0x26976e3f → address

Write Contract 12 functions

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

addBlackList 0x0ecb93c0
address evilUser
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
pause 0x8456cb59
No parameters
removeBlackList 0xe4997dc5
address clearedUser
setBasisPointsRate 0x5fdf2be0
uint256 newRate
setFeeCollector 0xa42dce80
address newCollector
setMaximumFee 0xbd7bcef1
uint256 newMaxFee
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
unpause 0x3f4ba83a
No parameters
upgrade 0x0900f010
address newAddress

Recent Transactions

No transactions found for this address