ERC1155 _mint pada kontrak item game, dari rencana hingga tes
03
Set item game
Tambahkan fungsi mint ke kontrak item game
Anda ingin satu kontrak yang menerbitkan pedang, ramuan, dan kunci, masing-masing dengan token id-nya sendiri, dan ingin tahu siapa yang boleh membuat token baru. Agen menulis kode Solidity, menjalankan perintah kompilasi dan tes Anda di rantai lokal atau jaringan uji, dan menampilkan setiap langkah sebagai kartu dengan hasil nyata. Panduan ini mengikuti fungsi mint, karena siapa pun yang memanggilnya menentukan berapa banyak token yang ada. Kontrak yang sudah dideploy tidak dapat diubah, jadi semua proses ini tetap di rantai lokal atau jaringan uji, di mana koinnya tidak bernilai. Pemula dapat mengikuti empat langkah secara berurutan, dan pembaca berpengalaman dapat melompat ke panduan lebih lanjut di bawah. Empat langkah yang sama juga berlaku untuk set tiket, di mana setiap jenis tiket mendapatkan id-nya sendiri dan fungsi mint menentukan berapa banyak setiap jenis yang ada.
01
Buka folder proyek
Mulai WaveClamp, pilih folder yang berisi file .sol dan tes sebagai folder kerja obrolan, lalu pilih Ask first agar setiap perubahan hadir sebagai diff yang Anda terima atau tolak. Alat file bekerja di dalam folder tersebut, jadi simpan proyek di satu tempat. Buat folder sementara untuk menjalankan pertama kali jika Anda hanya ingin berlatih.
02
Jelaskan kontraknya
Minta kontrak item game dengan tiga jenis item, fungsi mint yang hanya dapat dipanggil oleh satu akun pemilik, dan transfer batch, lalu biarkan agen membuat file tersebut dengan write_file. Beri nama file sesuai dengan nama kontrak agar langkah selanjutnya dapat merujuk ke file tersebut. Jaga permintaan pertama agar tetap sederhana, karena permintaan kedua dapat menambahkan transfer batch setelah diff pertama diterima.
03
Jalankan kompilasi dan tes
Perintahkan agen untuk menjalankan perintah kompilasi dan perintah tes Anda melalui Shell, lalu baca kode keluar dan nama tes yang gagal pada kartu yang diperluas. Keberhasilan dinilai berdasarkan kode keluar yang nyata, bukan berdasarkan ringkasan. Jika perintah kompilasi gagal, kartu akan menampilkan teks kesalahan, dan agen dapat membacanya serta mengusulkan perbaikan sebagai diff baru.
04
Baca hasilnya
Buka kartu yang diperluas, baca diff dan output perintah, terima apa yang benar, tolak sisanya, dan minta perbaikan di mana pun tes masih gagal. Ulangi hingga tes berhasil, lalu baca fungsi mint sekali lagi. Jaga setiap diff yang diterima agar tetap kecil, agar kegagalan di kemudian hari menunjuk pada satu perubahan, bukan sepuluh.
Antarmuka minimal sebagai titik awal
WaveClamp · Tulis antarmuka minimal● Ask first
Tulis MultiTokenMinimal.sol dengan satu event dan dua fungsi view, lalu kompilasi.
write_fileMultiTokenMinimal.soldisimpan
read_fileMultiTokenMinimal.sol14 baris
grepbalanceOf1 kecocokan
Shellyour compile commandexit 0
menunggu persetujuan Anda sebelum melanjutkanTolakTerima
Antarmuka baca-saja ini mendeklarasikan event TransferSingle serta fungsi balanceOf dan uri dari standar multi-token. Antarmuka ini tidak menyimpan status, tidak memiliki logika mint, dan tidak memiliki kunci, sehingga menjadi file kecil untuk dibaca sebelum Anda menambahkan logika nyata. Jalankan perintah kompilasi Anda terlebih dahulu. Kompilasi dulu, lalu biarkan agen memperluasnya satu diff yang ditinjau pada satu waktu, dimulai dengan fungsi mint. Nama file sesuai dengan label contoh, sehingga Anda dapat meminta agen untuk membukanya nanti.
Panduan: mint, bandingkan, batch, dan deskripsikan token
Tambahkan fungsi mint
Buka kontrak dan minta agen untuk membungkus helper ERC1155 _mint dalam fungsi publik yang hanya dapat dipanggil oleh akun pemilik. Agen menggunakan read_file untuk melihat kode saat ini dan edit_file untuk menyisipkan fungsi tersebut, lalu menampilkan perubahan sebagai diff. Implementasi open-source umum mengekspos helper internal bernama _mint dan _mintBatch, dan helper internal tidak memiliki pemeriksaan akses sendiri, itulah sebabnya pembungkus ini penting. Anda dapat membuat token ERC20 langkah demi langkah dengan metode yang sama, tetapi set item game membutuhkan id, jadi mulailah dari tata letak multi-token. Shell kemudian menjalankan perintah kompilasi dan perintah tes Anda, dan setiap kartu menampilkan kode keluar yang nyata. Terima diff hanya setelah Anda membaca tes.
Bandingkan dengan contoh ERC-721
Buka contoh kontrak ERC721 dari proyek Anda sendiri, atau minta agen untuk membuatnya dengan write_file, dan letakkan di samping set item Anda. Agen menggunakan grep untuk mencantumkan fungsi dalam kedua file dan read_file untuk membandingkan cara penyimpanan kepemilikan: satu pemilik per token dalam file token unik, saldo per akun dan id dalam file multi-token. Standar untuk profil terdesentralisasi menggunakan NFT soulbound memerlukan token yang tidak dapat ditransfer, yang merupakan desain berbeda dari item yang dilepas oleh pemain. Minta agen untuk menuliskan perbedaan tersebut dalam tabel singkat. Anda membaca perbandingan dalam obrolan, memutuskan standar mana yang sesuai dengan desain Anda, dan hanya kemudian meminta perubahan kode.
Tambahkan transfer batch
Pemain sering memindahkan beberapa jenis item sekaligus, jadi minta agen untuk menambahkan safeBatchTransferFrom dan balanceOfBatch ke kontrak. Agen menggunakan edit_file untuk perubahan, glob untuk menemukan file tes, dan Shell untuk menjalankan perintah tes Anda setelah setiap edit. Fungsi batch memindahkan beberapa id token dalam satu transaksi, yang berarti satu tes dapat memeriksa beberapa saldo. Memahami onboarding tanpa gas ERC4337 adalah subjek terpisah, jadi jangan masukkan ke kontrak pertama dan uji secara mandiri. Baca diff di Ask first, jalankan tes lagi, dan cari event TransferBatch dalam output sebelum Anda menerima perubahan.
Periksa penerima dan metadata
Kontrak yang menerima token harus mengimplementasikan onERC1155Received dan onERC1155BatchReceived serta menerima token tersebut, jika tidak transfer aman akan ditolak. Minta agen untuk melakukan grep untuk kedua nama tersebut dan membuka kontrak penerima dengan read_file, lalu mencantumkan mana yang hilang. Selanjutnya, minta agen untuk menggunakan edit_file pada nilai uri(id) agar berisi {id}, yang akan diganti oleh klien dengan id token dalam heksadesimal huruf kecil, diisi dengan nol hingga 64 karakter. Gunakan write_file untuk satu file JSON per id. Jalankan perintah kompilasi dan perintah tes Anda, baca kedua kode keluar, dan tinjau diff akhir sebelum menerimanya.