Playbook
BareToken: NFT (Non-Fungible Token)-gated Emissionen und Missbrauch (Baretoken Nft Gated Emissionen Und Missbrauch)
Hashmasks-artige NFT-gated Claims: ~10e18/Tag, INITIAL_ALLOTMENT, 10-Jahres-emissionEnd — plus offene Mint-Flaeche und Missbrauchsszenarien.
Bare Crypto Solidity Marketplace-Protokoll
Teil 5 von 5
BareNFT, Reserve-Escrow, englische Auktion und NFT-gated BareToken-Emissionen in Remix IDE mit OpenZeppelin-v4.1-GitHub-Imports — ohne Hardhat/Foundry — inkl. ADRs, schwacher RNG und Notfall-Trade-offs.
NFT (Non-Fungible Token) halten, taegliche Emission claimen — aber sind die Tueren zu?
BareToken ist eine Hashmasks-artige ERC20-Emissions-Engine: emissionPerDay etwa 10 * 10^18, INITIAL_ALLOTMENT 1830e18, emissionEnd = start + 10 Jahre. claim(tokenIndices) mintet akkumulierte Salden nur an BareNFT-Owner; _lastClaim trackt jede tokenId. Doch oeffentliches mint(address, value), verworrene Spender/Burner-Rollen und ein burn auf address(this) oeffnen die Oekonomie fuer Missbrauch.
BareNFT ownerOf(tokenId) == msg.sender
|
accumulated(tokenId)
lastClaim → now * emissionPerDay / day
+ INITIAL_ALLOTMENT (first claim)
|
claim([ids]) → _mint ERC20
|
abuse doors: public mint(), role confusion, burn quirk
Dieser Teil fixiert den NFT-gated-Emissions-ADR, den 10-Jahres-Horizont und Missbrauchsszenarien.
Begriffe, dort definiert, wo sie zuerst auftauchen
📦 NFT-gated Emission
ERC20-Claim-Rechte an ERC721-Besitz binden.
📦 INITIAL_ALLOTMENT
Fester Bonus beim ersten Claim (1830e18), optional per Pre-Reveal skaliert.
📦 emissionEnd
start + 86400*365*10 — zehnjaehriger Emissionshorizont.
📦 Per-Token lastClaim
Jeder NFT-Index traegt seine eigene Emissionsuhr.
Ein Hashmasks-Modell haengt Cashflow an das NFT; oeffentliches Mint oder falsche Rolle zerbricht die Oekonomie in einer Transaktion.
ADR: Hashmasks-artige 10-Jahres-Emission
Entscheidung: BareToken akkumuliert etwa 10e18 pro Tag fuer NFT-Holder, mintet bei Claim, addiert INITIAL_ALLOTMENT beim ersten Claim und endet nach 10 Jahren. Begruendung: Holding-Anreiz und lange Supply-Kurve. Kosten: enge Bindung an BareNFT-Adresse (setBareAddress einmal) und Ownership-Checks; IBareToken.isMintedBeforeReveal wird auf der Collection-Seite erwartet.
Claim-Buchhaltung und Diagramm
accumulated multipliziert Sekunden zwischen lastClaim (oder emissionStart) und jetzt mit emissionPerDay / SECONDS_IN_A_DAY; nach emissionEnd null. Erster Claim addiert INITIAL_ALLOTMENT (+ PRE_REVEAL_MULTIPLIER). claim prueft Duplikate und ownerOf, aktualisiert _lastClaim und mintet die Summe.
emissionStart ──10y──> emissionEnd
per NFT:
lastClaim[i]
|
v
qty = dt * 10e18 / 86400
+ (first ? 1830e18 : 0)
claim(ids) → mint to holder
Missbrauchs- und Performance-Szenarien
Oeffentliches mint(to, value) kann Supply ohne Rollenpruefung aufblaehen — Emissionsmodell sofort kaputt. isSpender liest MINTER_ROLE, _addSpender schreibt BURNER_ROLE — verworrene Semantik. burn setzt account auf address(this) — verbrennt nicht die Caller-Balance wie erwartet. Missbrauch: Flash-Acquire-Claim-Sell im selben Block kann akkumulierten Wert abschoepfen oder UI-Annahmen zu lastClaim brechen. Performance: grosse tokenIndices plus O(n^2)-Duplikatchecks bloehen Claim-Gas; Whale-Batch-Claims naehern sich Block-Limits.
Die am häufigsten verwechselten Zuordnungen
❌ NFT-gated Claim bedeutet sichere Supply
✓ Bei oeffentlichem Mint oder falschen Rollen rettet Gating die Oekonomie nicht
❌ INITIAL_ALLOTMENT kommt bei jedem Claim
✓ Nur einmal, wenn lastClaim gleich emissionStart ist
❌ burn verbrennt immer msg.sender-Balance
✓ Hier wird account auf address(this) umgebogen — quirky und gefaehrlich
Checkliste zur Prüfung des eigenen Systems
- Wer darf mint(address, value) aufrufen, gibt es eine Rolle?
- Ist setBareAddress einmalig gesperrt oder aenderbar?
- Wie zeigt die UI INITIAL_ALLOTMENT beim ersten Claim?
- Wie beeinflusst Buy-Claim-Sell im selben Block lastClaim?
- Was kostet die Duplikatpruefung bei grossen tokenIndices-Claims an Gas?
Was aus diesem Teil bleiben sollte
- BareToken ist ein Hashmasks-artiger NFT-gated Tagesemissions-ADR mit 10-Jahres-Horizont.
- Oeffentliches Mint und Rollen/Burn-Quirks bedeuten: Gating allein sichert die Oekonomie nicht.
- Claim-Gas und Flash-Ownership-Missbrauch gehoeren in die Emissions-Design-Tests.
Gated Emissionen sind eine Geschichte; eine offene Mint-Tuer beendet sie in einer Transaktion.
FAQ
Häufige Fragen
Was ist NFT-gated Emission?
ERC20-Claim-Rechte an ERC721-Besitz binden.
Was ist INITIAL_ALLOTMENT?
Fester Bonus beim ersten Claim (1830e18), optional per Pre-Reveal skaliert.
Stimmt es, dass „NFT-gated Claim bedeutet sichere Supply“?
Bei oeffentlichem Mint oder falschen Rollen rettet Gating die Oekonomie nicht
Was legt dieser Teil fest?
Dieser Teil fixiert den NFT-gated-Emissions-ADR, den 10-Jahres-Horizont und Missbrauchsszenarien. BareToken ist eine Hashmasks-artige ERC20-Emissions-Engine: emissionPerDay etwa 10 * 10^18, INITIAL_ALLOTMENT 1830e18, emissionEnd = start + 10 Jahre. claim(tokenIndices) mintet akkumulierte Salden nur an BareNFT-Owner; _lastClaim trackt jede tokenId. Doch oeffentliches mint(address, value), verworrene Spender/Burner-Rollen und ein burn auf address(this) oeffnen die Oekonomie fuer Missbrauch.
Gelernte Engineering-Prinzipien
- NFT-gated-Emissions-ADR muss Mint/Burn/Rollen im selben Bedrohungsmodell abdecken.
- Initial Allotment und Tagesrate muessen in UI und On-Chain-Buchhaltung dieselbe Formel nutzen.
- Claim-Batch-Groesse und Ownership-Flash-Szenarien als Performance- und Missbrauchstests schreiben.
Weiterlesen
Weiterlesen
Nachster Teil der Serie
BareNFTAuction: Claim, Rueckerstattung und Notfallrechte
Englische Auktion: Bid, Claim, Cancel, Reserve-Unterschreitung und Owner-Emergency transferNft/transferFunds Trade-offs.
Aus derselben Serie
BareNFTReserve: Escrow, RandomBuy und schwache RNG
Owner-only createNewListing, buy und randomBuy mit keccak256(revealNonce, block.difficulty, msg.sender) % 3 — schwache RNG, Owner-Marketplace-ADR…
Aus derselben Serie
BareNFT: Rollen, Pausable und Token-URI
BareNFT kombiniert ERC721 Enumerable/Burnable/Pausable mit AccessControl und role-gated mint(to, id, uri). Trade-offs von Per-Token-URI und Pause.