Oyun öğesi sözleşmesinde ERC1155 _mint: Plandan teste
03
Oyun öğesi seti
Oyun öğesi sözleşmesine mintleme ekleyin
Her biri kendi token kimliğine sahip kılıçlar, iksirler ve anahtarlar üreten bir sözleşme istiyorsunuz ve yeni tokenların kimin tarafından oluşturulabileceğini bilmek istiyorsunuz. Aracı Solidity kodunu yazar, derleme ve test komutlarınızı yerel zincirde veya test ağı üzerinde çalıştırır ve her adımı gerçek sonuçlarla bir kart halinde gösterir. Bu rehber mintleme işlevini takip eder, çünkü bu işlevi çağırabilen kişi token sayısını belirler. Dağıtılmış bir sözleşme değiştirilemez; bu nedenle burada her şey bir yerel zincirde veya değeri olmayan bir test ağı üzerinde kalır. Yeni başlayanlar dört adımı sırayla takip edebilir, deneyimli okuyucular ise aşağıdaki detaylı anlatımlara atlayabilir. Aynı dört adım, her bilet türünün kendi kimliğine sahip olduğu ve mintleme işlevinin her birinden kaç tane oluşturulacağını belirlediği bir bilet seti için de geçerlidir.
01
Proje klasörünü açın
WaveClamp'ı başlatın, .sol dosyalarınızı ve testlerinizi içeren klasörü sohbetin çalışma klasörü olarak seçin ve Ask first (Önce Sor) seçeneğini belirleyin; böylece her değişiklik, kabul edebileceğiniz veya reddedebileceğiniz bir fark olarak gelir. Dosya araçları bu klasör içinde çalışır, bu yüzden projeyi tek bir yerde tutun. Sadece pratik yapmak istiyorsanız ilk çalıştırma için geçici bir klasör oluşturun.
02
Sözleşmeyi tanımlayın
Üç öğe türü olan bir oyun öğesi sözleşmesi, yalnızca bir sahibi olan bir mintleme işlevi ve toplu transferler isteyin ve aracıya write_file ile dosyayı oluşturmasını sağlayın. Dosyayı sözleşme adıyla adlandırın, böylece sonraki adımlar buna atıf yapabilir. İlk isteği küçük tutun; çünkü ikinci istek, ilk fark kabul edildikten sonra toplu transferler ekleyebilir.
03
Derlemeyi ve testleri çalıştırın
Aracıya Shell aracılığıyla derleme komutunuzu ve test komutunuzu çalıştırmasını söyleyin, ardından genişletilmiş kartta çıkış kodunu ve başarısız olan testlerin adlarını okuyun. Başarı, bir özetle değil, gerçek çıkış koduyla değerlendirilir. Derleme komutu başarısız olursa, kart hata metnini gösterir ve aracı bunu okuyabilir ve yeni bir fark olarak bir düzeltme önerebilir.
04
Sonucu okuyun
Genişletilmiş kartları açın, farkı ve komut çıktısını okuyun, doğru olanı kabul edin, geri kalanını reddedin ve bir test hala başarısız olduğu yerde düzeltme isteyin. Testler geçene kadar tekrarlayın, ardından mintleme işlevini bir kez daha okuyun. Kabul edilen her farkı küçük tutun, böylece sonraki bir hata bir değişikliğe işaret etsin, on değişikliğe değil.
Başlangıç için minimal bir arayüz
WaveClamp · Minimal bir arayüz yazın● Ask first
MultiTokenMinimal.sol'u bir olay ve iki view işleviyle yazın, ardından derleyin.
write_fileMultiTokenMinimal.solkaydedildi
read_fileMultiTokenMinimal.sol14 satır
grepbalanceOf1 eşleşme
Shellyour compile commandexit 0
bir sonraki adımdan önce onayınızı bekliyorReddetKabul Et
Bu salt okunur arayüz, çok tokenli standartın TransferSingle olayını ve balanceOf ile uri işlevlerini bildirir. Hiçbir durumu, mintleme mantığını veya anahtarı barındırmaz; bu da gerçek mantığı eklemeden önce okunması için küçük bir dosya yapar. Önce derleme komutunuzu bunun üzerinde çalıştırın. Önce derleyin, ardından aracıya mintleme işlevinden başlayarak her gözden geçirilmiş farkı tek tek genişletmesini sağlayın. Dosya adı örnek etiketiyle eşleşir, böylece aracıya daha sonra açmasını isteyebilirsiniz.
Detaylı anlatımlar: Mint, karşılaştır, toplu transfer ve token tanımlama
Mintleme işlevini ekleyin
Sözleşmeyi açın ve aracıdan ERC1155 _mint yardımcı işlevini yalnızca sahibi olan bir hesap tarafından çağrılabilen public bir işleve sarmasını isteyin. Aracı, mevcut kodu görmek için read_file kullanır ve işlevi eklemek için edit_file kullanır; değişikliği bir fark olarak gösterir. Yaygın açık kaynak uygulamalar, _mint ve _mintBatch adlı iç yardımcı işlevleri ortaya çıkarır ve bir iç yardımcı işlevin kendi erişim denetimi yoktur; bu da sarmalayıcının neden önemli olduğunu açıklar. ERC20 tokeni aynı yöntemle adım adım oluşturabilirsiniz, ancak bir oyun öğesi seti kimlikler gerektirir, bu yüzden çok tokenli taslağından başlayın. Shell ardından derleme komutunuzu ve test komutunuzu çalıştırır ve her kart gerçek bir çıkış kodu gösterir. Testleri okuduğunuzda farkı kabul edin.
Bir ERC-721 örneğiyle karşılaştırın
Kendi projenizden bir ERC721 sözleşme örneği açın veya aracıya write_file ile bir tane yazmasını isteyin ve öğe setinizin yanına yerleştirin. Aracı, grep'i her iki dosyadaki işlevleri listelemek ve read_file'i sahipliğin nasıl depolandığını karşılaştırmak için kullanır: benzersiz token dosyasında token başına bir sahibi, çok token dosyasında hesap ve kimlik başına bir bakiye. Ruhbağı NFT'ler kullanan merkeziyetsiz profiller için bir standart, transfer edilemeyen tokenler gerektirir; bu, oyuncuların aktardığı öğelerden farklı bir tasarımdır. Aracıya farkları kısa bir tabloda göstermesini isteyin. Karşılaştırmayı sohbette okuyun, tasarımınıza hangi standardın uygun olduğuna karar verin ve ardından kod değişikliklerini isteyin.
Toplu transferler ekleyin
Oyuncular genellikle birden fazla öğe türünü aynı anda taşır, bu yüzden aracıdan sözleşmeye safeBatchTransferFrom ve balanceOfBatch eklemesini isteyin. Aracı, değişiklik için edit_file kullanır, test dosyalarını bulmak için glob kullanır ve her düzenlemeden sonra test komutunuzu çalıştırmak için Shell kullanır. Toplu işlevler bir işlemde birden fazla token kimliğini taşır; bu da bir testin birden fazla bakiyeyi kontrol edebileceği anlamına gelir. ERC4337 gasless onboarding ayrı bir konudur, bu yüzden ilk sözleşmeye dahil etmeyin ve kendi başına test edin. Ask first'te farkı okuyun, testleri tekrar çalıştırın ve değişikliği kabul etmeden önce çıktıda TransferBatch olayını arayın.
Alıcıyı ve meta verileri kontrol edin
Token alan bir sözleşme, onERC1155Received ve onERC1155BatchReceived'i uygulamalı ve tokenları kabul etmelidir; aksi halde güvenli transfer reddedilir. Aracıya her iki adı için grep yapmasını ve alan sözleşmeyi read_file ile açmasını isteyin, ardından eksik olanı listeleyin. Ardından, uri(id) değeri için edit_file kullanmasını isteyin; böylece {id} içersin. Bu, istemciler tarafından token kimliğinin küçük harfli onaltılık formatına, 64 karaktere tamamlanmış şekilde değiştirilir. Her id için bir JSON dosyası oluşturmak için write_file kullanın. Derleme komutunuzu ve test komutunuzu çalıştırın, her iki çıkış kodunu okuyun ve kabul etmeden önce son farkı gözden geçirin.