Feed the
black bull.
$MULETA is The Bull Catalyst — a second token built for one job: make $ANSEM, the Black Bull, run faster. 80% of fees automatically buy $ANSEM on the open market and burn it. 24/7, in the cloud, every transaction live on-chain. No PvP. It doesn't compete with the Bull — it feeds it. 🐂🀄️
THE ENGINE$MULETA
THE BULL$ANSEM
FEES BURNED80% · 24/7
SYNCING…
Total Fees Earned
0.00SOL
all-time · ≈ $0.00
$ANSEM Burned
0.0000ANSEM
to burn address · ≈ $0.00
Burn Transactions
0TXNS
on-chain receipts
$ANSEM Price
$0.00
live market
/ ADDRESSES
THE ENGINE · $MULETA
— NOT LIVE YET —THE BULL · $ANSEM
9cRCn9rGT8V2imeM2BaKs13yhMEais3ruM3rPvTGpumpBURN ADDRESS · SINK
1nc1nerator11111111111111111111111111111111/ THE LOOP
Four moves.
One relentless burn engine.
Ansem already controls around 65% of the supply. The Black Bull has been stuck at 120–150M. So what happens when another slice of the float just… disappears? $MULETA turns 80% of its fees into permanent $ANSEM burns — automatically, forever.
[ 0 ]
Claim
$MULETA creator fees accrue in a vault. The keeper sweeps them the moment they clear the threshold.
[ 1 ]
Buy
80% of fees route through Jupiter and buy $ANSEM on the open market — only fees, never principal.
[ 2 ]
Burn
The entire bought amount is sent to the burn address, where the key is unknowable — gone for good.
[ 3 ]
Prove
Every burn is idempotent and recorded with its tx hash — the loop can never double-spend or hide.
/ BURN LOG
Every burn,
on the record.
Each row is a real $ANSEM buy-and-burn funded by $MULETA fees — deployed to the cloud, running 24/7, every transaction visible live. The cloth is loud. The receipts are louder.
VERIFIABLE
ON-CHAIN
RECEIPTS
ON-CHAIN
RECEIPTS
NO BURNS YET — THE FIRST BUY-AND-BURN WILL APPEAR HERE AUTOMATICALLY.
/ THE ENGINE
Burn logic,
in the open.
// $Muleta creator fees accrue in an on-chain vault — not auto-sent.
// Read what's claimable; only sweep once it clears the threshold.
const { distributable, canDistribute } = await sdk.getDistributableFee(muleta);
if (distributable < CLAIM_THRESHOLD || !canDistribute) return;
const ixs = await sdk.buildDistributeFeeInstructions(muleta);
const sig = await sendAndConfirm(ixs, keeper);
// 80% of the claim funds the buy, 20% is kept for gas + rent.
recordClaim(distributable, BUYBACK_FRACTION);// Spend ONLY the claimed-fee budget — wallet principal is never touched.
const budget = feeBudget() - reserveForGasAndRent();
if (budget <= 0n) return;
const quote = await jupiter.quote({
inputMint: SOL, outputMint: ANSEM,
amount: budget, slippageBps: SLIPPAGE,
});
const tx = await jupiter.swap(quote);
if (tx.feePayer() !== keeper) throw "refusing to sign";
await sendAndConfirm(tx);
// the burn uses the ACTUAL $ANSEM received, not the quote.
const bought = await balanceDelta(ansemAccount);// Send the ENTIRE bought balance to the burn address in one tx.
// The incinerator's key is unknowable — the supply is gone for good.
const amount = await balanceOf(ansem, keeper);
const ix = [
createAtaIfMissing(BURN_ADDRESS),
transferChecked(keeper, BURN_ADDRESS, amount),
];
// idempotent per epoch — a crash or retry never double-burns.
if (ledger.isSent(epoch)) return;
const sig = await sendAndConfirm(ix);
ledger.markBurned(epoch, amount, sig);// Poll forever. Claim → buy → burn, gated by the fee budget.
while (true) {
await reconcilePending(); // settle any in-flight buy first
await claimCreatorFees();
if (feeBudget() < TRIGGER_SOL) continue;
const bought = await buyAnsem(feeBudget());
await burn(await balanceOf(ansem)); // sweep it all
await writeStats(); // refresh the dashboard
}