Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0xfB4a8CD3Ed9C2B942312711f23EaA5e6B5970c3c
Balance 0 ETH
Nonce 1
Code Size 10329 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

10329 bytes
0x608060405234801561000f575f5ffd5b5060043610610114575f3560e01c8063735de9f7116100a0578063d004f0f71161006f578063d004f0f7146102f4578063dd62ed3e14610310578063f2fde38b14610340578063f4b5f9fe1461035c578063f851a4401461036657610114565b8063735de9f71461026a5780638da5cb5b1461028857806395d89b41146102a6578063a9059cbb146102c457610114565b806323b872dd116100e757806323b872dd146101b4578063313ce567146101e457806340c10f191461020257806342966c681461021e57806370a082311461023a57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631e89d54514610184575b5f5ffd5b610120610384565b60405161012d9190611a19565b60405180910390f35b610150600480360381019061014b9190611ad7565b6103bd565b60405161015d9190611b2f565b60405180910390f35b61016e6104aa565b60405161017b9190611b57565b60405180910390f35b61019e60048036038101906101999190611d70565b6104b3565b6040516101ab9190611b2f565b60405180910390f35b6101ce60048036038101906101c99190611de6565b61055d565b6040516101db9190611b2f565b60405180910390f35b6101ec610a0e565b6040516101f99190611e51565b60405180910390f35b61021c60048036038101906102179190611ad7565b610a13565b005b61023860048036038101906102339190611e6a565b610ccc565b005b610254600480360381019061024f9190611e95565b610eae565b6040516102619190611b57565b60405180910390f35b610272610ef4565b60405161027f9190611f1b565b60405180910390f35b610290610f19565b60405161029d9190611f43565b60405180910390f35b6102ae610f40565b6040516102bb9190611a19565b60405180910390f35b6102de60048036038101906102d99190611ad7565b610f79565b6040516102eb9190611b2f565b60405180910390f35b61030e60048036038101906103099190611ad7565b6111f9565b005b61032a60048036038101906103259190611f5c565b611641565b6040516103379190611b57565b60405180910390f35b61035a60048036038101906103559190611e95565b6116c3565b005b610364611862565b005b61036e61195a565b60405161037b9190611f43565b60405180910390f35b6040518060400160405280600681526020017f555344547634000000000000000000000000000000000000000000000000000081525081565b5f8160065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104989190611b57565b60405180910390a36001905092915050565b5f600254905090565b5f81518351146104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ef90611fe4565b60405180910390fd5b5f5f90505b83518110156105525761054484828151811061051c5761051b612002565b5b602002602001015184838151811061053757610536612002565b5b6020026020010151610f79565b5080806001019150506104fd565b506001905092915050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036105cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c390612079565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361063a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610631906120e1565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b190612149565b60405180910390fd5b8160065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076c906121b1565b60405180910390fd5b6107c58260055f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461197f90919063ffffffff16565b60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506108568260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461199490919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506109228260065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461197f90919063ffffffff16565b60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516109fb9190611b57565b60405180910390a3600190509392505050565b600681565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a999061223f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b07906122a7565b60405180910390fd5b600354610b288260025461199490919063ffffffff16565b1115610b69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b609061230f565b60405180910390fd5b610b7e8160025461199490919063ffffffff16565b600281905550610bd48160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461199490919063ffffffff16565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688582604051610c5b9190611b57565b60405180910390a28173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cc09190611b57565b60405180910390a35050565b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610d4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4390612149565b60405180910390fd5b610d618160025461197f90919063ffffffff16565b600281905550610db78160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461197f90919063ffffffff16565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca582604051610e3e9190611b57565b60405180910390a25f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ea39190611b57565b60405180910390a350565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600681526020017f555344547634000000000000000000000000000000000000000000000000000081525081565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fe8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdf906120e1565b60405180910390fd5b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105f90612149565b60405180910390fd5b6110b88260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461197f90919063ffffffff16565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506111498260055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461199490919063ffffffff16565b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111e79190611b57565b60405180910390a36001905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611267576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125e9061239d565b60405180910390fd5b5f81116112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a090612405565b60405180910390fd5b8060055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015611329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132090612149565b60405180910390fd5b5f600267ffffffffffffffff81111561134557611344611b74565b5b6040519080825280602002602001820160405280156113735781602001602082028036833780820191505090505b50905030815f8151811061138a57611389612002565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561142e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114529190612437565b8160018151811061146657611465612002565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114f08260055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461197f90919063ffffffff16565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea368a40e9570069bb8e6511d668293ad2e1f03b0d982431fd223de9f3b70ca68460405161158e9190611b57565b60405180910390a360015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318cbafe5835f8487426040518663ffffffff1660e01b81526004016115f8959493929190612552565b5f604051808303815f875af1158015611613573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061163b9190612653565b50505050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166116e2610f19565b73ffffffffffffffffffffffffffffffffffffffff1614611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f906126e4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179d90612772565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60025403611958576004546002819055506118c660045460055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461199490919063ffffffff16565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688560045460405161194f9190611b57565b60405180910390a25b565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f818361198c91906127bd565b905092915050565b5f81836119a191906127f0565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6119eb826119a9565b6119f581856119b3565b9350611a058185602086016119c3565b611a0e816119d1565b840191505092915050565b5f6020820190508181035f830152611a3181846119e1565b905092915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611a7382611a4a565b9050919050565b611a8381611a69565b8114611a8d575f5ffd5b50565b5f81359050611a9e81611a7a565b92915050565b5f819050919050565b611ab681611aa4565b8114611ac0575f5ffd5b50565b5f81359050611ad181611aad565b92915050565b5f5f60408385031215611aed57611aec611a42565b5b5f611afa85828601611a90565b9250506020611b0b85828601611ac3565b9150509250929050565b5f8115159050919050565b611b2981611b15565b82525050565b5f602082019050611b425f830184611b20565b92915050565b611b5181611aa4565b82525050565b5f602082019050611b6a5f830184611b48565b92915050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b611baa826119d1565b810181811067ffffffffffffffff82111715611bc957611bc8611b74565b5b80604052505050565b5f611bdb611a39565b9050611be78282611ba1565b919050565b5f67ffffffffffffffff821115611c0657611c05611b74565b5b602082029050602081019050919050565b5f5ffd5b5f611c2d611c2884611bec565b611bd2565b90508083825260208201905060208402830185811115611c5057611c4f611c17565b5b835b81811015611c795780611c658882611a90565b845260208401935050602081019050611c52565b5050509392505050565b5f82601f830112611c9757611c96611b70565b5b8135611ca7848260208601611c1b565b91505092915050565b5f67ffffffffffffffff821115611cca57611cc9611b74565b5b602082029050602081019050919050565b5f611ced611ce884611cb0565b611bd2565b90508083825260208201905060208402830185811115611d1057611d0f611c17565b5b835b81811015611d395780611d258882611ac3565b845260208401935050602081019050611d12565b5050509392505050565b5f82601f830112611d5757611d56611b70565b5b8135611d67848260208601611cdb565b91505092915050565b5f5f60408385031215611d8657611d85611a42565b5b5f83013567ffffffffffffffff811115611da357611da2611a46565b5b611daf85828601611c83565b925050602083013567ffffffffffffffff811115611dd057611dcf611a46565b5b611ddc85828601611d43565b9150509250929050565b5f5f5f60608486031215611dfd57611dfc611a42565b5b5f611e0a86828701611a90565b9350506020611e1b86828701611a90565b9250506040611e2c86828701611ac3565b9150509250925092565b5f60ff82169050919050565b611e4b81611e36565b82525050565b5f602082019050611e645f830184611e42565b92915050565b5f60208284031215611e7f57611e7e611a42565b5b5f611e8c84828501611ac3565b91505092915050565b5f60208284031215611eaa57611ea9611a42565b5b5f611eb784828501611a90565b91505092915050565b5f819050919050565b5f611ee3611ede611ed984611a4a565b611ec0565b611a4a565b9050919050565b5f611ef482611ec9565b9050919050565b5f611f0582611eea565b9050919050565b611f1581611efb565b82525050565b5f602082019050611f2e5f830184611f0c565b92915050565b611f3d81611a69565b82525050565b5f602082019050611f565f830184611f34565b92915050565b5f5f60408385031215611f7257611f71611a42565b5b5f611f7f85828601611a90565b9250506020611f9085828601611a90565b9150509250929050565b7f4d69736d617463686564206172726179730000000000000000000000000000005f82015250565b5f611fce6011836119b3565b9150611fd982611f9a565b602082019050919050565b5f6020820190508181035f830152611ffb81611fc2565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f496e76616c69642073656e6465720000000000000000000000000000000000005f82015250565b5f612063600e836119b3565b915061206e8261202f565b602082019050919050565b5f6020820190508181035f83015261209081612057565b9050919050565b7f496e76616c696420726563697069656e740000000000000000000000000000005f82015250565b5f6120cb6011836119b3565b91506120d682612097565b602082019050919050565b5f6020820190508181035f8301526120f8816120bf565b9050919050565b7f496e73756666696369656e742062616c616e63650000000000000000000000005f82015250565b5f6121336014836119b3565b915061213e826120ff565b602082019050919050565b5f6020820190508181035f83015261216081612127565b9050919050565b7f416c6c6f77616e636520657863656564656400000000000000000000000000005f82015250565b5f61219b6012836119b3565b91506121a682612167565b602082019050919050565b5f6020820190508181035f8301526121c88161218f565b9050919050565b7f5553445476343a204f6e6c792061646d696e2063616e20706572666f726d20745f8201527f68697320616374696f6e00000000000000000000000000000000000000000000602082015250565b5f612229602a836119b3565b9150612234826121cf565b604082019050919050565b5f6020820190508181035f8301526122568161221d565b9050919050565b7f496e76616c6964206164647265737300000000000000000000000000000000005f82015250565b5f612291600f836119b3565b915061229c8261225d565b602082019050919050565b5f6020820190508181035f8301526122be81612285565b9050919050565b7f4d617820737570706c79207265616368656400000000000000000000000000005f82015250565b5f6122f96012836119b3565b9150612304826122c5565b602082019050919050565b5f6020820190508181035f830152612326816122ed565b9050919050565b7f54617267657420616464726573732063616e6e6f74206265207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6123876025836119b3565b91506123928261232d565b604082019050919050565b5f6020820190508181035f8301526123b48161237b565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f6123ef6020836119b3565b91506123fa826123bb565b602082019050919050565b5f6020820190508181035f83015261241c816123e3565b9050919050565b5f8151905061243181611a7a565b92915050565b5f6020828403121561244c5761244b611a42565b5b5f61245984828501612423565b91505092915050565b5f819050919050565b5f61248561248061247b84612462565b611ec0565b611aa4565b9050919050565b6124958161246b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124cd81611a69565b82525050565b5f6124de83836124c4565b60208301905092915050565b5f602082019050919050565b5f6125008261249b565b61250a81856124a5565b9350612515836124b5565b805f5b8381101561254557815161252c88826124d3565b9750612537836124ea565b925050600181019050612518565b5085935050505092915050565b5f60a0820190506125655f830188611b48565b612572602083018761248c565b818103604083015261258481866124f6565b90506125936060830185611f34565b6125a06080830184611b48565b9695505050505050565b5f815190506125b881611aad565b92915050565b5f6125d06125cb84611cb0565b611bd2565b905080838252602082019050602084028301858111156125f3576125f2611c17565b5b835b8181101561261c578061260888826125aa565b8452602084019350506020810190506125f5565b5050509392505050565b5f82601f83011261263a57612639611b70565b5b815161264a8482602086016125be565b91505092915050565b5f6020828403121561266857612667611a42565b5b5f82015167ffffffffffffffff81111561268557612684611a46565b5b61269184828501612626565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126ce6020836119b3565b91506126d98261269a565b602082019050919050565b5f6020820190508181035f8301526126fb816126c2565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61275c6026836119b3565b915061276782612702565b604082019050919050565b5f6020820190508181035f83015261278981612750565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6127c782611aa4565b91506127d283611aa4565b92508282039050818111156127ea576127e9612790565b5b92915050565b5f6127fa82611aa4565b915061280583611aa4565b925082820190508082111561281d5761281c612790565b5b9291505056fea2646970667358221220d3b68437c2e1c658288b0ad0a309a5786fe6e8b7453d05b6af5153dc0f29b15564736f6c634300081c0033

Verified Source Code Partial Match

Compiler: v0.8.28+commit.7893614a EVM: cancun Optimization: No
USDTv4.sol 624 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;



/*
    Rafael Baena Alvarez  
    Founder  
    FFOLLOWME OÜ (16785919)  
    Harju maakond, Tallinn, Lasnamäe linnaosa, Lõõtsa tn 5 // Sepapaja tn 4, 11415  
    Tallinn (Estonia)  
    LinkedIn: https://www.linkedin.com/in/rafael-baena-828b06181/  
    Email: [email protected]  
    GitHub: https://github.com/followme-dot  
*/



// File: contracts/IERC20.sol


pragma solidity ^0.8.28;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    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);
}

// File: contracts/ERC20Pausable.sol


pragma solidity ^0.8.28;


abstract contract ERC20Pausable is IERC20 {
    bool private _paused;
    uint256 private _totalSupply;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    event Paused();
    event Unpaused();

     constructor(uint256 initialSupply) {
        _totalSupply = initialSupply;
        _balances[msg.sender] = initialSupply;  // Asigna el suministro total al creador del contrato
        emit Transfer(address(0), msg.sender, initialSupply);
    }

    modifier whenNotPaused() {
        require(!_paused, "Pausable: paused");
        _;
    }

    modifier whenPaused() {
        require(_paused, "Pausable: not paused");
        _;
    }

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

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

    function transfer(address recipient, uint256 amount) public override whenNotPaused returns (bool) {
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[msg.sender] >= amount, "ERC20: transfer amount exceeds balance");

        _balances[msg.sender] -= amount;
        _balances[recipient] += amount;

        emit Transfer(msg.sender, recipient, amount);
        return true;
    }

    function approve(address spender, uint256 amount) public override whenNotPaused returns (bool) {
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override whenNotPaused returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");
        require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance");

        _balances[sender] -= amount;
        _balances[recipient] += amount;
        _allowances[sender][msg.sender] -= amount;

        emit Transfer(sender, recipient, amount);
        return true;
    }

    // Implementación de la función `allowance` que es parte de la interfaz IERC20
    function allowance(address owner, address spender) external view override returns (uint256) {
        return _allowances[owner][spender];
    }

    // Funciones de pausa
    function pause() public whenNotPaused {
        _paused = true;
        emit Paused();
    }

    function unpause() public whenPaused {
        _paused = false;
        emit Unpaused();
    }
}

// File: contracts/Ownable.sol


pragma solidity ^0.8.28;

contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    modifier onlyOwner() {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: contracts/ERC20Permit.sol


pragma solidity ^0.8.28;


interface ERC20Permit is IERC20 {
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;
}

// File: @openzeppelin/contracts/utils/math/SafeMath.sol


// OpenZeppelin Contracts (last updated v4.9.0) (utils/math/SafeMath.sol)

pragma solidity ^0.8.28;

// CAUTION
// This version of SafeMath should only be used with Solidity 0.8 or later,
// because it relies on the compiler's built in overflow checks.

/**
 * @dev Wrappers over Solidity's arithmetic operations.
 *
 * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler
 * now has built in overflow checking.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

// File: contracts/IUniswapV2Router02.sol


pragma solidity ^0.8.28;

interface IUniswapV2Router02 {
    // Intercambia una cantidad exacta de tokens por tokens de salida
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    // Obtiene las cantidades de salida para un intercambio
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    // Obtiene las cantidades de entrada necesarias para recibir una cantidad de salida
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

    // Añadir liquidez a un par de tokens
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    // Eliminar liquidez de un par de tokens
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    
    // Swap de Tokens Exactos por ETH (WETH)
    function swapExactTokensForETH(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    // Obtener la cantidad de salida para un swap de tokens a ETH
    function getAmountsOutForETH(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    // Añadir liquidez para tokens y ETH (WETH)
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    // Eliminar liquidez de un par de tokens y ETH (WETH)
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    // Función para obtener la dirección WETH
    function WETH() external pure returns (address);
}

// File: contracts/USDTv4.sol


pragma solidity ^0.8.28;






// Asegúrate de importar la interfaz de Uniswap


contract USDTv4 is IERC20, Ownable {
    using SafeMath for uint256;

    // Solo se declara una vez
    IUniswapV2Router02 public uniswapRouter;
    
    string public constant name = "USDTv4";
    string public constant symbol = "USDTv4";
    uint8 public constant decimals = 6;
    uint256 private _totalSupply = 10_000_000 * 10**6; // 10 millones de USDT con 6 decimales
    uint256 private _maxSupply = 10_000_000 * 10**6; // 10 millones de USDT con 6 decimales
    uint256 private _autoregenSupply = 10_000_000 * 10**6;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    event Mint(address indexed to, uint256 amount);
    event Burn(address indexed from, uint256 amount);
    event Swap(address indexed from, address indexed to, uint256 amount);

    address public admin; // Dirección del admin

    // Constructor: solo toma la dirección del router
    constructor(address _routerAddress) {
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        admin = msg.sender; // Establece al creador como administrador
        uniswapRouter = IUniswapV2Router02(_routerAddress); // Configura el router de Uniswap
    }

    // Modificador soloAdmin: solo el admin puede realizar ciertas acciones
    modifier onlyAdmin() {
        require(msg.sender == admin, "USDTv4: Only admin can perform this action");
        _;
    }

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(recipient != address(0), "Invalid recipient");
        require(_balances[msg.sender] >= amount, "Insufficient balance");

        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);

        emit Transfer(msg.sender, recipient, amount);
        return true;
    }

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(sender != address(0), "Invalid sender");
        require(recipient != address(0), "Invalid recipient");
        require(_balances[sender] >= amount, "Insufficient balance");
        require(_allowances[sender][msg.sender] >= amount, "Allowance exceeded");

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount);

        emit Transfer(sender, recipient, amount);
        return true;
    }

    // Función de mint, solo admin puede emitir nuevos tokens
    function mint(address to, uint256 amount) public onlyAdmin {
        require(to != address(0), "Invalid address");
        require(_totalSupply.add(amount) <= _maxSupply, "Max supply reached");

        _totalSupply = _totalSupply.add(amount);
        _balances[to] = _balances[to].add(amount);

        emit Mint(to, amount);
        emit Transfer(address(0), to, amount);
    }

    // Función de burn
    function burn(uint256 amount) public {
        require(_balances[msg.sender] >= amount, "Insufficient balance");

        _totalSupply = _totalSupply.sub(amount);
        _balances[msg.sender] = _balances[msg.sender].sub(amount);

        emit Burn(msg.sender, amount);
        emit Transfer(msg.sender, address(0), amount);
    }

    // Función para múltiples transferencias
    function multiTransfer(address[] memory recipients, uint256[] memory amounts) public returns (bool) {
        require(recipients.length == amounts.length, "Mismatched arrays");

        for (uint256 i = 0; i < recipients.length; i++) {
            transfer(recipients[i], amounts[i]);
        }
        return true;
    }

    // Función de swap con Uniswap
    function swap(address to, uint256 amount) external {
        require(to != address(0), "Target address cannot be zero address");
        require(amount > 0, "Amount must be greater than zero");
        require(_balances[msg.sender] >= amount, "Insufficient balance");

        // Interacción con Uniswap para el swap (básico, intercambia la cantidad de tokens por ETH o cualquier otro token)
        address[] memory path = new address[](2);
        path[0] = address(this); // El token actual (USDTv4)
        path[1] = uniswapRouter.WETH(); // ETH como ejemplo

        _balances[msg.sender] = _balances[msg.sender].sub(amount);
        emit Swap(msg.sender, to, amount);

        uniswapRouter.swapExactTokensForETH(amount, 0, path, to, block.timestamp);
    }

    // Función para regenerar tokens cuando el supply llegue a cero
    function checkAndRegenerate() public {
        if (_totalSupply == 0) {
            _totalSupply = _autoregenSupply;
            _balances[msg.sender] = _balances[msg.sender].add(_autoregenSupply);
            emit Mint(msg.sender, _autoregenSupply);
        }
    }
}

Read Contract

admin 0xf851a440 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapRouter 0x735de9f7 → address

Write Contract 9 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
burn 0x42966c68
uint256 amount
checkAndRegenerate 0xf4b5f9fe
No parameters
mint 0x40c10f19
address to
uint256 amount
multiTransfer 0x1e89d545
address[] recipients
uint256[] amounts
returns: bool
swap 0xd004f0f7
address to
uint256 amount
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

No transactions found for this address