Address Contract Partially Verified
Address
0xfB4a8CD3Ed9C2B942312711f23EaA5e6B5970c3c
Balance
0 ETH
Nonce
1
Code Size
10329 bytes
Creator
0x4c0D8cb0...6De0 at tx 0xaa8cb275...1c053f
Indexed Transactions
0
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