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
Creation tx
0x1cbaf9e217…300df5f8bb

Token

Name
LUCUCU
Symbol
LUCUCU
Decimals
18
Holders
416

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