Upgrades
Every implementation that's ever been wired into the proxy at 0x8aD4E547d4d23eA64a7887896467236f1ce6DF23. The proxy address never changes. Only what it delegates to.
V1.1
LIVE2026-05-21 (block 25,147,504)V1 was leaking the TTT FeeSplitter 30% holder share. The proxy had no code path to claim it, so accrued rewards transferred to NFT buyers on every sale. V1.1 captures it. Plus six smaller operational fixes.
Initial design, Option B pivot after re-reading TTT whitepaper §8, inventory audit, post-deploy verification. Final verdict: bytecode matches reviewed source, all V1 state preserved across upgrade, inventory storage coherent, no surprise drains.
what shipped
- claimHolderRewards(): permissionless FeeSplitter claimAnyone can call claimHolderRewards(tokenIds). Caller gets min(received × 1%, syncReward) as a bounty; the remainder routes to ethToTwap (the buyback bucket). Fixes V1's active reward leak.
- pendingHolderRewards(): total pending across held NFTsFree RPC read. Iterates every TTT NFT the proxy holds and sums FeeSplitter.pending(tokenId). Surfaces the leak that V1 made invisible.
- Held-inventory trackingContract maintains its own held-tokenIds array since TTT collection doesn't implement ERC721Enumerable. New view: heldTokenIds(), heldTokenCount(). Owner-only addHeldInventory() reconciles in case anyone donates an NFT via plain transferFrom (bypasses onERC721Received).
- buyTargetNFT + createSeaportListing restrictedBoth now require owner/manager. Closes the PNKSTR-class griefing vector where a random caller could drain currentFees into a predatorily-priced or compromised marketplace. Optional bounded keeperRefund (≤ 0.0005 ETH per call) self-funds the keeper.
- renounceOwnership disabledOverridden to revert. Removes the irreversible-footgun ability to permanently lose owner control. Multisig + freezeUpgrades remains the path to immutability.
- Tighter burn invariantssetBurnConfig + setBurnReward + buyAndBurn now enforce minBurnThreshold > burnReward AND minBurnThreshold ≤ burnIncrement AND burnAmount > 0. Prevents zero-amount no-op forwards.
- setEnsName(string): proxy ENS reverse-resolutionOwner-only call to ENS reverse registrar. Lets the proxy reverse-resolve to a human-readable name (e.g. burntoken.eth) on Etherscan and wallet UIs.
V1
ARCHIVED2026-05-20 (block 25,140,159)Initial launch. Strategy contract burned TTT NFT #9099, became the launcher of $BURN, started receiving 50% of $BURN swap fees as ETH. Buy-and-burn flywheel proven end-to-end same day.
what shipped
- Burn-to-launchburnTTTAndLaunch() burned the seed TTT NFT and activated $BURN. The proxy is recorded as the launcher in $BURN's bytecode permanently.
- buyTargetNFT: acquire TTT NFTs from marketplacesWas permissionless in V1 (later restricted in V1.1). Buys whitelisted-marketplace TTT NFTs using currentFees ETH, lists them on Seaport at a markup.
- buyAndBurn: TTT-native lock-as-burn (whitepaper §8)Permissionless. Forwards ETH to the $BURN contract's buyback reservoir. The TTT-native $BURN.buyback() then handles the V4 swap and locks the purchased $BURN at the $BURN contract address. 'Structurally inert, never distributed, never released' per whitepaper §8.
- syncOrderStatus + createSeaportListing: Seaport plumbingPermissionless settlement detection (paid syncReward bounty on success). Auto-list on Seaport when an NFT is acquired.
- Upgrade governanceUUPS proxy. 90-day upgrade window, owner-only _authorizeUpgrade, freezeUpgrades() one-way switch, extendUpgradeDeadline() bounded extension. Designed so the operator can ship fixes early but the door closes hard.
Upgrade governance: 90-day window after each deploy, owner can freeze permanently at any time via freezeUpgrades(). Rollback is always available within the window if a newly-activated implementation misbehaves.
Don't trust this page. Every claim above is verifiable on chain via the proxy address.