CleanToken
0xbd046c377a8d7aedc31fb919d5fdd08c85c1b1d3
Verification
Verified
v0.8.20+commit.a1b79de6
Type
Contract
1,755 bytes
ABI entries
19
7 read · 3 write
License
mit
Contract information
- Address
- 0xbd046c377a8d7aedc31fb919d5fdd08c85c1b1d3
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.20+commit.a1b79de6
- Optimization
- Enabled
- Creator
- 0xECa0358DD4…773667ea36
- Creation tx
- 0x1cbaf9e217…300df5f8bb
Token
- Name
- LUCUCU
- Symbol
- LUCUCU
- Decimals
- 18
- Holders
- 416
- Market
- View token page →
Read contract (7)
BUILD_ID() → bytes32
allowance(address, address) → uint256
balanceOf(address) → uint256
decimals() → uint8
name() → string
symbol() → string
totalSupply() → uint256
Events (2)
ApprovalTransfer
ABI
[
{
"inputs": [
{
"internalType": "string",
"name": "name_",
"type": "string"
},
{
"internalType": "string",
"name": "symbol_",
"type": "string"
},
{
"internalType": "uint256",
"name": "angebotGanz",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "allowance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientAllowance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "needed",
"type": "uint256"
}
],
"name": "ERC20InsufficientBalance",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "approver",
"type": "address"
}
],
"name": "ERC20InvalidApprover",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "receiver",
"type": "address"
}
],
"name": "ERC20InvalidReceiver",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "ERC20InvalidSender",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "ERC20InvalidSpender",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "BUILD_ID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
// ─────────────────────────────────────────────────────────────────────────────
// CleanToken — Standard-ERC20 nach OpenZeppelin v5 (flatten), ULTRA-CLEAN.
// KEIN Eigentuemer · KEINE Praegung (fixes Angebot) · KEINE Steuer · KEINE schwarze Liste ·
// KEINE Pause/Handels-Umschaltung · KEIN maxTx/maxWallet · KEIN Proxy.
// -> jeder Honeypot/Audit-Scanner zeigt GRUEN. Deployer haelt 100% des Angebots, fuegt
// Liquiditaet selbst ueber Uniswap hinzu/entfernt sie (keine Contract-Rechte noetig).
// ─────────────────────────────────────────────────────────────────────────────
interface IERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() external view returns (uint256);
function balanceOf(address account) external view returns (uint256);
function transfer(address to, uint256 value) external returns (bool);
function allowance(address owner, address spender) external view returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transferFrom(address from, address to, uint256 value) external returns (bool);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
interface IERC20Errors {
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
}
abstract contract Kontext {
function _nachrichtSender() internal view virtual returns (address) { return msg.sender; }
function _nachrichtDaten() internal view virtual returns (bytes calldata) { return msg.data; }
}
abstract contract ERC20 is Kontext, IERC20, IERC20Metadata, IERC20Errors {
mapping(address => uint256) private _guthaben;
mapping(address => mapping(address => uint256)) private _freigaben;
uint256 private _gesamtangebot;
string private _bezeichnung;
string private _kuerzel;
constructor(string memory name_, string memory symbol_) {
_bezeichnung = name_;
_kuerzel = symbol_;
}
function name() public view virtual returns (string memory) { return _bezeichnung; }
function symbol() public view virtual returns (string memory) { return _kuerzel; }
function decimals() public view virtual returns (uint8) { return 18; }
function totalSupply() public view virtual returns (uint256) { return _gesamtangebot; }
function balanceOf(address account) public view virtual returns (uint256) { return _guthaben[account]; }
function transfer(address to, uint256 value) public virtual returns (bool) {
_uebertragen(_nachrichtSender(), to, value);
return true;
}
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _freigaben[owner][spender];
}
function approve(address spender, uint256 value) public virtual returns (bool) {
_genehmigen(_nachrichtSender(), spender, value);
return true;
}
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
_freigabeVerbrauchen(from, _nachrichtSender(), value);
_uebertragen(from, to, value);
return true;
}
function _uebertragen(address from, address to, uint256 value) internal {
if (from == address(0)) revert ERC20InvalidSender(address(0));
if (to == address(0)) revert ERC20InvalidReceiver(address(0));
_aktualisieren(from, to, value);
}
function _aktualisieren(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
_gesamtangebot += value;
} else {
uint256 guthabenVonAbsender = _guthaben[from];
if (guthabenVonAbsender < value) revert ERC20InsufficientBalance(from, guthabenVonAbsender, value);
unchecked { _guthaben[from] = guthabenVonAbsender - value; }
}
if (to == address(0)) {
unchecked { _gesamtangebot -= value; }
} else {
unchecked { _guthaben[to] += value; }
}
emit Transfer(from, to, value);
}
function _praegen(address konto, uint256 value) internal {
if (konto == address(0)) revert ERC20InvalidReceiver(address(0));
_aktualisieren(address(0), konto, value);
}
function _genehmigen(address owner, address spender, uint256 value) internal {
_genehmigen(owner, spender, value, true);
}
function _genehmigen(address owner, address spender, uint256 value, bool ereignisAusloesen) internal virtual {
if (owner == address(0)) revert ERC20InvalidApprover(address(0));
if (spender == address(0)) revert ERC20InvalidSpender(address(0));
_freigaben[owner][spender] = value;
if (ereignisAusloesen) emit Approval(owner, spender, value);
}
function _freigabeVerbrauchen(address owner, address spender, uint256 value) internal virtual {
uint256 aktuelleFreigabe = allowance(owner, spender);
if (aktuelleFreigabe != type(uint256).max) {
if (aktuelleFreigabe < value) revert ERC20InsufficientAllowance(spender, aktuelleFreigabe, value);
unchecked { _genehmigen(owner, spender, aktuelleFreigabe - value, false); }
}
}
}
/// @notice Ausgegebener Token: fixes Angebot, 100% an Deployer bei Erstellung geprägt. Keine Sonderrechte-Funktionen.
contract CleanToken is ERC20 {
bytes32 public constant BUILD_ID = 0x0cde7b3163c39f22d0c9bbbf364c4b7946b547cebeb2a727fb6dac281d27b3c9;
constructor(string memory name_, string memory symbol_, uint256 angebotGanz)
ERC20(name_, symbol_)
{
_praegen(msg.sender, angebotGanz * 10 ** decimals());
}
}
Chain explorer2250msChain node81ms