Address Contract Verified
Address
0xAd5E27bFC472c9ebAAE8ee1c1E54779C6d55DC7e
Balance
0 ETH
Nonce
1
Code Size
3644 bytes
Creator
0x5e35af2c...237d at tx 0x35cd5824...b8711c
Indexed Transactions
0
Contract Bytecode
3644 bytes
0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063418c157c11610093578063993d77af11610063578063993d77af14610209578063a457c2d714610211578063a9059cbb14610224578063f9eb1fdd14610237575f80fd5b8063418c157c146101bc57806370a08231146101d15780638be6b6b4146101f957806395d89b4114610201575f80fd5b806323b872dd116100ce57806323b872dd1461014c5780632f48ab7d1461015f578063313ce5671461018a57806339509351146101a9575f80fd5b806306fdde03146100f4578063095ea7b31461011257806318160ddd14610135575b5f80fd5b6100fc61024a565b6040516101099190610b75565b60405180910390f35b610125610120366004610bdb565b6102d5565b6040519015158152602001610109565b61013e60035481565b604051908152602001610109565b61012561015a366004610c03565b6102eb565b600754610172906001600160a01b031681565b6040516001600160a01b039091168152602001610109565b6002546101979060ff1681565b60405160ff9091168152602001610109565b6101256101b7366004610bdb565b61033b565b6101cf6101ca366004610c3c565b610371565b005b61013e6101df366004610c53565b6001600160a01b03165f9081526004602052604090205490565b61013e610486565b6100fc6104a9565b6100fc6104b6565b61012561021f366004610bdb565b610546565b610125610232366004610bdb565b61057c565b6101cf610245366004610c3c565b610588565b5f805461025690610c73565b80601f016020809104026020016040519081016040528092919081815260200182805461028290610c73565b80156102cd5780601f106102a4576101008083540402835291602001916102cd565b820191905f5260205f20905b8154815290600101906020018083116102b057829003601f168201915b505050505081565b5f6102e1338484610648565b5060015b92915050565b5f6102f784848461076c565b6001600160a01b0384165f9081526005602090815260408083203380855292529091205461033191869161032c908690610cbf565b610648565b5060019392505050565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916102e191859061032c908690610cd2565b335f908152600460205260409020548111156103c95760405162461bcd60e51b815260206004820152601260248201527153616c646f20696e737566696369656e746560701b60448201526064015b60405180910390fd5b6103d33382610947565b60075460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af1158015610421573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104459190610ce5565b6104835760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103c0565b50565b6002545f906104999060ff16600a610de4565b6104a4906001610def565b905090565b6001805461025690610c73565b6060600680546104c590610c73565b80601f01602080910402602001604051908101604052809291908181526020018280546104f190610c73565b801561053c5780601f106105135761010080835404028352916020019161053c565b820191905f5260205f20905b81548152906001019060200180831161051f57829003601f168201915b5050505050905090565b335f8181526005602090815260408083206001600160a01b038716845290915281205490916102e191859061032c908690610cbf565b5f6102e133848461076c565b6007546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156105dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106009190610ce5565b61063e5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016103c0565b6104833382610aa0565b6001600160a01b0383166106aa5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c0565b6001600160a01b03821661070b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c0565b6001600160a01b038381165f8181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166107d05760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c0565b6001600160a01b0382166108325760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c0565b6001600160a01b0383165f908152600460205260409020548111156108a85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c0565b6001600160a01b0383165f90815260046020526040812080548392906108cf908490610cbf565b90915550506001600160a01b0382165f90815260046020526040812080548392906108fb908490610cd2565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161075f91815260200190565b6001600160a01b0382166109a75760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103c0565b6001600160a01b0382165f90815260046020526040902054811115610a195760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103c0565b8060035f828254610a2a9190610cbf565b90915550506001600160a01b0382165f9081526004602052604081208054839290610a56908490610cbf565b90915550506040518181525f906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b6001600160a01b038216610af65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103c0565b8060035f828254610b079190610cd2565b90915550506001600160a01b0382165f9081526004602052604081208054839290610b33908490610cd2565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610a94565b5f6020808352835180828501525f5b81811015610ba057858101830151858201604001528201610b84565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610bd6575f80fd5b919050565b5f8060408385031215610bec575f80fd5b610bf583610bc0565b946020939093013593505050565b5f805f60608486031215610c15575f80fd5b610c1e84610bc0565b9250610c2c60208501610bc0565b9150604084013590509250925092565b5f60208284031215610c4c575f80fd5b5035919050565b5f60208284031215610c63575f80fd5b610c6c82610bc0565b9392505050565b600181811c90821680610c8757607f821691505b602082108103610ca557634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156102e5576102e5610cab565b808201808211156102e5576102e5610cab565b5f60208284031215610cf5575f80fd5b81518015158114610c6c575f80fd5b600181815b80851115610d3e57815f1904821115610d2457610d24610cab565b80851615610d3157918102915b93841c9390800290610d09565b509250929050565b5f82610d54575060016102e5565b81610d6057505f6102e5565b8160018114610d765760028114610d8057610d9c565b60019150506102e5565b60ff841115610d9157610d91610cab565b50506001821b6102e5565b5060208310610133831016604e8410600b8410161715610dbf575081810a6102e5565b610dc98383610d04565b805f1904821115610ddc57610ddc610cab565b029392505050565b5f610c6c8383610d46565b80820281158282048414176102e5576102e5610cab56fea26469706673582212201d83a35696b2ddcbcd38bd10615af1f98755b4a55602b4fee572c7dd57d324c764736f6c63430008140033
Verified Source Code Full Match
Compiler: v0.8.20+commit.a1b79de6
EVM: shanghai
Optimization: Yes (200 runs)
SimulatedUSDTToken.sol 135 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
contract SimulatedUSDTToken {
string public name = "Tether USD";
string public symbol = "USDT";
uint8 public decimals = 6; // USDT tem 6 casas decimais
uint256 public totalSupply;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
string private _logoUrl;
address public usdt;
constructor(address _usdtAddress) {
usdt = _usdtAddress;
_logoUrl = "https://cryptologos.cc/logos/tether-usdt-logo.png"; // URL do logo do USDT
// Emitir 50 milhões de tokens para o criador do contrato
_mint(msg.sender, 10_000_000 * (10 ** uint256(decimals)));
}
// Função de saldo
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
// Função para transferir tokens
function transfer(address recipient, uint256 amount) public returns (bool) {
_transfer(msg.sender, recipient, amount);
return true;
}
// Função para aprovar uma conta a gastar em nome do titular
function approve(address spender, uint256 amount) public returns (bool) {
_approve(msg.sender, spender, amount);
return true;
}
// Função para transferir tokens de uma conta para outra, com permissão
function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
_transfer(sender, recipient, amount);
_approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
return true;
}
// Função de aumento de allowance
function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
return true;
}
// Função de diminuição de allowance
function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
_approve(msg.sender, spender, _allowances[msg.sender][spender] - subtractedValue);
return true;
}
// Função para consultar o logo
function logoUrl() public view returns (string memory) {
return _logoUrl;
}
// Função para trocar USDT por tokens simulados
function exchangeUSDTForSimulated(uint256 amount) public {
require(IERC20(usdt).transferFrom(msg.sender, address(this), amount), "Transfer failed");
_mint(msg.sender, amount); // Emite o mesmo valor em tokens simulados
}
// Função para trocar tokens simulados por USDT
function exchangeSimulatedForUSDT(uint256 amount) public {
require(balanceOf(msg.sender) >= amount, "Saldo insuficiente");
_burn(msg.sender, amount); // Queima os tokens simulados
require(IERC20(usdt).transfer(msg.sender, amount), "Transfer failed"); // Transfere o USDT de volta
}
// Função para obter o preço dos tokens simulados
function getSimulatedPrice() public view returns (uint256) {
return 1 * 10 ** uint256(decimals); // Representa o valor de 1 USDT (considerando 6 casas decimais)
}
// Função para realizar a transferência interna
function _transfer(address sender, address recipient, uint256 amount) internal {
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");
_balances[sender] -= amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
// Função para aprovar gastos de tokens
function _approve(address owner, address spender, uint256 amount) internal {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
// Função para criar novos tokens
function _mint(address account, uint256 amount) internal {
require(account != address(0), "ERC20: mint to the zero address");
totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
// Função para queimar tokens
function _burn(address account, uint256 amount) internal {
require(account != address(0), "ERC20: burn from the zero address");
require(_balances[account] >= amount, "ERC20: burn amount exceeds balance");
totalSupply -= amount;
_balances[account] -= amount;
emit Transfer(account, address(0), amount);
}
// Eventos do contrato
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
// Interface do contrato IERC20, sem importar
interface IERC20 {
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
function transfer(address recipient, uint256 amount) external returns (bool);
}
Read Contract
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getSimulatedPrice 0x8be6b6b4 → uint256
logoUrl 0x993d77af → string
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
usdt 0x2f48ab7d → address
Write Contract 7 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
exchangeSimulatedForUSDT 0x418c157c
uint256 amount
exchangeUSDTForSimulated 0xf9eb1fdd
uint256 amount
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
Recent Transactions
No transactions found for this address