ERC1155 _mint in een spelitem-contract, van plan tot test
03
Spelitems
Mints toevoegen aan een spelitem-contract
Je wilt één contract dat zwaarden, potions en sleutels uitgeeft, elk met een eigen token-id, en je wilt weten wie nieuwe tokens mag creëren. De agent schrijft de Solidity, voert je compileer- en testopdrachten uit op een lokale chain of een testnetwerk, en toont elke stap als een kaart met het echte resultaat. Deze gids volgt de mints-functie, omdat wie deze kan aanroepen bepaalt hoeveel tokens er bestaan. Eenmaal gedeplooyd kan een contract niet meer worden gewijzigd, dus alles hier blijft op een lokale chain of een testnetwerk, waarvan de coins geen waarde hebben. Beginners kunnen de vier stappen in volgorde volgen, en ervaren gebruikers kunnen naar de walkthroughs hieronder springen. Dezelfde vier stappen werken voor een ticket-set, waarbij elk tickettype zijn eigen id krijgt en de mints-functie bepaalt hoeveel van elk er bestaan.
01
Open de projectmap
Start WaveClamp, kies de map met je .sol-bestanden en tests als werkmap van de chat, en kies Ask first zodat elke wijziging als een diff aankomt die je accepteert of afwijst. Bestandswerktuigen werken binnen die map, dus houd het project op één plek. Maak een tijdelijke map aan voor de eerste run als je alleen wilt oefenen.
02
Beschrijf het contract
Vraag om een spelitem-contract met drie itemtypen, een mints-functie die alleen een eigenaarsaccount kan aanroepen, en batch-overdrachten, en laat de agent het bestand aanmaken met write_file. Noem het bestand naar het contract zodat latere stappen ernaar kunnen verwijzen. Houd het eerste verzoek klein, omdat een tweede verzoek batch-overdrachten kan toevoegen nadat de eerste diff is geaccepteerd.
03
Compileer en voer tests uit
Laat de agent je compileeropdracht en je testopdracht via Shell uitvoeren, lees dan de exitcode en de namen van eventueel mislukte tests op de uitgebreide kaart. Succes wordt beoordeeld op basis van de echte exitcode, niet op basis van een samenvatting. Als de compileeropdracht faalt, toont de kaart de foutmelding, en kan de agent deze lezen en een oplossing voorstellen als een nieuwe diff.
04
Lees het resultaat
Open de uitgebreide kaarten, lees de diff en de opdrachtuitvoer, accepteer wat goed is, wijs het overige af, en vraag om een oplossing waar een test nog steeds faalt. Herhaal dit totdat de tests slagen, en lees de mints-functie daarna nog eens na. Houd elke geaccepteerde diff klein, zodat een latere fout wijst naar één wijziging en niet naar tien.
Een minimale interface om mee te beginnen
WaveClamp · Schrijf een minimale interface● Ask first
Schrijf MultiTokenMinimal.sol met één gebeurtenis en twee view-functies, en compileer het dan.
write_fileMultiTokenMinimal.solopgeslagen
read_fileMultiTokenMinimal.sol14 regels
grepbalanceOf1 match
Shellyour compile commandexit 0
wacht op jouw goedkeuring voordat de volgende stap wordt uitgevoerdWeigerenAccepteren
Deze read-only interface deklareert de TransferSingle-gebeurtenis en de balanceOf- en uri-functies van de multi-tokenstandaard. Het bevat geen staat, geen mints-logica en geen sleutels, wat het een klein bestand maakt om te lezen voordat je echte logica toevoegt. Voer eerst je compileeropdracht erop uit. Compileer het eerst, en laat de agent het daarna één gecontroleerde diff tegelijk uitbreiden, beginnend met de mints-functie. De bestandsnaam komt overeen met het voorbeeldlabel, zodat je de agent kunt vragen het later te openen.
Walkthroughs: minten, vergelijken, batch en tokens beschrijven
Voeg de mints-functie toe
Open het contract en vraag de agent om de ERC1155 _mint-hulpfunctie te verpakken in een publieke functie die alleen het eigenaarsaccount kan aanroepen. De agent gebruikt read_file om de huidige code te zien en edit_file om de functie in te voegen, en toont de wijziging als een diff. Veel open-source-implementaties stellen interne hulpprogramma's met de namen _mint en _mintBatch bloot, en een interne hulpfunctie heeft geen eigen toegangscontrole, vandaar dat de wrapper belangrijk is. Je kunt een ERC20-token stap voor stap op dezelfde methode maken, maar een spelitem-set heeft ids nodig, dus begin met de multi-tokenindeling. Shell voert vervolgens je compileer- en testopdrachten uit, en elke kaart toont een echte exitcode. Accepteer de diff pas wanneer je de tests hebt gelezen.
Vergelijk met een ERC-721-voorbeeld
Open een ERC721-contractvoorbeeld uit je eigen project, of vraag de agent er een te schrijven met write_file, en plaats het naast je item-set. De agent gebruikt grep om de functies in beide bestanden te lijstten en read_file om te vergelijken hoe eigendom wordt opgeslagen: één eigenaar per token in het unieke-tokenbestand, een saldo per account en id in het multi-tokenbestand. Een standaard voor gedecentraliseerde profielen met soulbound NFT's zou tokens nodig hebben die niet kunnen worden overgedragen, wat een ander ontwerp is dan items die spelers doorgeven. Vraag de agent om de verschillen in een korte tabel te zetten. Je leest de vergelijking in de chat, beslist welke standaard bij je ontwerp past, en vraagt pas daarna om codewijzigingen.
Voeg batch-overdrachten toe
Spelers verplaatsen vaak meerdere itemtypen tegelijk, dus vraag de agent om safeBatchTransferFrom en balanceOfBatch aan het contract toe te voegen. De agent gebruikt edit_file voor de wijziging, glob om de testbestanden te vinden, en Shell om je testopdracht uit te voeren na elke bewerking. Batch-functies verplaatsen meerdere token-ids in één transactie, wat betekent dat één test meerdere saldi kan controleren. ERC4337 gasloze onboarding is een onderwerp op zich, dus houd het buiten het eerste contract en test het apart. Lees de diff in Ask first, voer de tests opnieuw uit, en zoek naar de TransferBatch-gebeurtenis in de uitvoer voordat je de wijziging accepteert.
Controleer de ontvanger en metadata
Een contract dat tokens ontvangt, moet onERC1155Received en onERC1155BatchReceived implementeren en de tokens accepteren, anders wordt de veilige overdracht geweigerd. Vraag de agent om te grep-en naar beide namen en om het ontvangende contract te openen met read_file, en lijst dan op welke ontbreekt. Vraag het daarna om edit_file te gebruiken op de uri(id)-waarde zodat deze {id} bevat, wat clients vervangen door de token-id in kleine hexadecimale letters, opgevuld tot 64 tekens. Gebruik write_file voor één JSON-bestand per id. Voer je compileer- en testopdrachten uit, lees beide exitcodes, en bekijk de definitieve diff voordat je het accepteert.