WaveClamp
İş akışları

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

MultiTokenMinimal.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IMultiTokenMinimal {
    event TransferSingle(address indexed operator,
        address indexed from, address indexed to,
        uint256 id, uint256 value);

    function balanceOf(address account, uint256 id)
        external view returns (uint256);

    function uri(uint256 id)
        external view returns (string memory);
}

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.

Windows için WaveClamp

İlk çok tokenli sözleşmenizi başlatın

WaveClamp'ı İndir ↗