TacoBurn
0x9e5e02f5c9ea48931d4e8f488089103e93f925ff
Verification
Verified
v0.8.24+commit.e11b9ed9
Type
Contract
2,221 bytes
ABI entries
21
10 read · 5 write
License
none
Contract information
- Address
- 0x9e5e02f5c9ea48931d4e8f488089103e93f925ff
- Chain
- Robinhood Chain (4663)
- Compiler
- v0.8.24+commit.e11b9ed9
- Optimization
- Enabled
- Creator
- 0x87A79E7e58…4c797411d7
- Creation tx
- 0x2692184e63…0fc48013c0
Token
- Name
- TrumpAlwaysChickensOut
- Symbol
- TACO
- Decimals
- 18
- Holders
- 1,095
- Market
- View token page →
Read contract (10)
SELL_BURN_BPS() → uint256
allowance(address, address) → uint256
balanceOf(address) → uint256
decimals() → uint8
isPair(address) → bool
name() → string
owner() → address
symbol() → string
totalBurned() → uint256
totalSupply() → uint256
Events (5)
ApprovalOwnershipRenouncedPairSetTacoedTransfer
ABI
[
{
"inputs": [
{
"internalType": "address",
"name": "founder",
"type": "address"
},
{
"internalType": "uint256",
"name": "founderBps",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"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": [],
"name": "OwnershipRenounced",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "isAmm",
"type": "bool"
}
],
"name": "PairSet",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "seller",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "sold",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "burned",
"type": "uint256"
}
],
"name": "Tacoed",
"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": "SELL_BURN_BPS",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "s",
"type": "address"
},
{
"internalType": "uint256",
"name": "v",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"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": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "isPair",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "pair",
"type": "address"
},
{
"internalType": "bool",
"name": "isAmm",
"type": "bool"
}
],
"name": "setPair",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalBurned",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"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": "v",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "f",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "v",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]Source code
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
/**
* $TACO — a deflationary meme token for Robinhood Chain.
*
* THESIS: selling is chickening out. Every time a holder "tacos" (sells into an
* AMM pair), a fixed slice of that sell is burned forever. Paper hands fuel the
* scarcity; diamond hands benefit. Buys and plain wallet-to-wallet transfers are
* untaxed, so entering and moving the token is frictionless.
*
* DESIGN CHOICES THAT MAKE THIS AN HONEST TAX TOKEN (not a honeypot):
* - 100% of the tax is BURNED. Nothing routes to a team wallet. Ever.
* - The burn rate is a compile-time constant. There is NO setter, so the owner
* can never crank it up to trap sellers (the classic honeypot move).
* - The founder allocation is a single, visible wallet (no laundering across a
* cluster) and it is NOT exempt from the sell burn — the founder pays the same
* tax as everyone when selling.
* - The only owner power is registering AMM pair addresses so the contract knows
* what counts as a "sell"; owner should renounce after LP is set.
*
* Runs on a Uniswap V2 style AMM (RH Chain has several), whose
* ...SupportingFeeOnTransferTokens swap functions handle fee-on-transfer tokens.
* It is NOT compatible with a naive Uniswap V3 pool.
*
* UNAUDITED DRAFT. Do not deploy with real value before an audit.
*/
contract TacoBurn {
// ----------------------------------------------------------------- ERC20
string public constant name = "TrumpAlwaysChickensOut";
string public constant symbol = "TACO";
uint8 public constant decimals = 18;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
// ----------------------------------------------------------------- taco config
// 4% of every sell is burned. IMMUTABLE — no function can change this.
uint256 public constant SELL_BURN_BPS = 400;
uint256 public totalBurned;
address public owner; // only registers pairs, then renounces
mapping(address => bool) public isPair; // selling INTO these burns; buying FROM them does not
event PairSet(address indexed pair, bool isAmm);
event Tacoed(address indexed seller, uint256 sold, uint256 burned); // a sell + its burn
event OwnershipRenounced();
modifier onlyOwner() { require(msg.sender == owner, "not owner"); _; }
/**
* @param founder wallet that receives the founder allocation (single, visible)
* @param founderBps founder cut in bps (e.g. 300 = 3%); the rest mints to the
* deployer to seed the LP. Keep this modest and disclosed.
*/
constructor(address founder, uint256 founderBps) {
require(founder != address(0), "founder=0"); // don't mint the founder cut into the void
require(founderBps <= 1000, "founder cut too high"); // hard cap 10% as a guardrail
owner = msg.sender;
totalSupply = 1_000_000_000 * 1e18; // 1B
uint256 founderCut = (totalSupply * founderBps) / 10_000;
uint256 lpAlloc = totalSupply - founderCut; // deployer seeds the pool with this
balanceOf[founder] = founderCut;
balanceOf[msg.sender] = lpAlloc;
emit Transfer(address(0), founder, founderCut);
emit Transfer(address(0), msg.sender, lpAlloc);
}
// ----------------------------------------------------------------- owner (minimal, temporary)
/// Register (or unregister) an AMM pair so the contract knows a transfer INTO
/// it is a sell. Call once after creating the LP, then renounce.
function setPair(address pair, bool isAmm) external onlyOwner {
isPair[pair] = isAmm;
emit PairSet(pair, isAmm);
}
/// Drop all owner power. After this, pairs are frozen and nothing is upgradeable.
function renounceOwnership() external onlyOwner {
owner = address(0);
emit OwnershipRenounced();
}
// ----------------------------------------------------------------- ERC20 core
function transfer(address to, uint256 v) external returns (bool) { _xfer(msg.sender, to, v); return true; }
function approve(address s, uint256 v) external returns (bool) {
allowance[msg.sender][s] = v; emit Approval(msg.sender, s, v); return true;
}
function transferFrom(address f, address to, uint256 v) external returns (bool) {
uint256 a = allowance[f][msg.sender];
if (a != type(uint256).max) { require(a >= v, "allowance"); allowance[f][msg.sender] = a - v; }
_xfer(f, to, v); return true;
}
/**
* Core transfer. A SELL is a transfer INTO a registered pair from a non-pair
* sender. Only sells are taxed; buys (from a pair) and normal transfers pass
* through untouched. The taxed amount is truly burned (totalSupply shrinks).
*/
function _xfer(address f, address to, uint256 v) internal {
require(balanceOf[f] >= v, "balance");
unchecked { balanceOf[f] -= v; }
uint256 burnAmt = 0;
if (isPair[to] && !isPair[f]) { // this is a sell
burnAmt = (v * SELL_BURN_BPS) / 10_000;
}
if (burnAmt > 0) {
unchecked { totalSupply -= burnAmt; totalBurned += burnAmt; }
emit Transfer(f, address(0), burnAmt); // canonical burn event
emit Tacoed(f, v, burnAmt);
}
uint256 rest = v - burnAmt;
unchecked { balanceOf[to] += rest; }
emit Transfer(f, to, rest);
}
}
Chain explorer3066msChain node83ms