Apa Itu Enumerable Extension?
Enumerable Extension adalah bagian opsional dari standar non-fungible token ERC-721 yang memungkinkan smart contract dan aplikasi kripto menemukan ID token NFT melalui kueri indeks on-chain.Fitur ini umumnya dikenal dengan nama antarmuka
Spesifikasi ERC-721 resmi mendefinisikan extension ini sebagai cara bagi kontrak untuk memublikasikan daftar lengkap NFT yang valid serta ID token yang dimiliki setiap alamat.
Extension ini menambahkan tiga fungsi bernama
Fungsi-fungsi tersebut tidak menggantikan fungsi seperti
Mengapa Disebut Enumerable?
Enumerasi koleksi berarti mengidentifikasi anggotanya satu per satu menggunakan indeks atau metode terstruktur lainnya.Antarmuka inti ERC-721 dapat memberi tahu aplikasi siapa pemilik ID token yang sudah diketahui.Antarmuka ini juga dapat memberi tahu aplikasi jumlah NFT yang dimiliki suatu alamat.Namun, antarmuka inti tidak menyediakan fungsi on-chain langsung untuk menemukan setiap ID token yang ada atau setiap ID token yang dimiliki pemilik tertentu.Enumerable Extension mengisi celah ini dengan menambahkan akses berbasis indeks ke koleksi global dan kepemilikan setiap pemilik.Aplikasi dapat memulai dari indeks nol, lalu terus meminta indeks yang lebih tinggi hingga mencapai suplai atau saldo pemilik yang relevan.Apa Itu ID Antarmuka Enumerable Extension?
ID antarmuka ERC-165 untuk ERC-721 Enumerable Extension adalah
Kontrak yang kompatibel seharusnya mengembalikan
Standar deteksi antarmuka ERC-165 memungkinkan aplikasi menanyakan antarmuka mana yang diklaim diimplementasikan oleh smart contract.
Antarmuka inti ERC-721 memiliki ID antarmuka tersendiri, sehingga aplikasi dapat menguji dukungan inti dan enumerable secara terpisah.Kontrak yang mengimplementasikan Enumerable Extension juga harus mengimplementasikan antarmuka inti ERC-721.Respons positif dari deteksi antarmuka meningkatkan kemudahan pemeriksaan kompatibilitas, tetapi tidak membuktikan bahwa implementasinya benar, aman, atau jujur.Fungsi yang Ditambahkan Enumerable Extension
Enumerable Extension hanya menambahkan tiga fungsi kueri publik.Fungsi
Fungsi
Fungsi
Fungsi totalSupply
Fungsi
Artinya,
Fungsi tokenByIndex
Fungsi
Indeks yang valid harus lebih kecil daripada nilai yang dikembalikan oleh
Fungsi tokenOfOwnerByIndex
Fungsi
Indeks dimulai dari nol dan harus lebih kecil daripada hasil
Cara Kerja Ketiga Fungsi
Aplikasi dapat memanggil
Kemudian, aplikasi dapat memanggil
Untuk setiap ID token yang dikembalikan, aplikasi dapat memanggil
Untuk mencantumkan kepemilikan suatu alamat, aplikasi dapat memanggil
Urutan Enumerasi Tidak Dijamin
Spesifikasi ERC-721 tidak menetapkan urutan pengurutan yang wajib untuk
Enumerasi Swap-and-Pop
Implementasi umum menggunakan teknik bernama swap and pop untuk menghapus ID token dari array secara efisien.Saat token dihapus, implementasi menempatkan token terakhir pada posisi array yang sebelumnya ditempati token yang dihapus.Kemudian, implementasi menghapus entri terakhir dalam array.Metode ini menghindari pergeseran semua token setelahnya dan menjaga kompleksitas penghapusan tetap relatif rendah.Namun, urutan ID token yang tersisa akan berubah.Implementasi OpenZeppelin ERC721Enumerable saat ini menggunakan metode ini untuk indeks global maupun indeks khusus pemilik.
Karena itu, aplikasi sebaiknya memulai ulang atau merekonsiliasi pagination dengan cermat jika kepemilikan berubah selama proses enumerasi yang berlangsung lama.Contoh Enumerasi Seluruh Koleksi
Misalkan sebuah kontrak ERC-721 melaporkan total suplai empat.Aplikasi memanggil
Aplikasi dapat memanggil
Contoh Enumerasi Pemilik
Misalkan Alice memiliki ID token 9, 30, dan 88 dalam kontrak NFT enumerable.Fungsi
Aplikasi meminta indeks pemilik nol, satu, dan dua melalui
Enumerable Extension vs. ERC-721 Inti
Standar inti ERC-721 menyediakan kepemilikan, transfer, approval, event, dan pemeriksaan penerima yang aman.Standar ini dapat menjawab apakah ID token yang diketahui ada dan siapa pemiliknya.Namun, standar ini tidak menyediakan daftar on-chain terstandardisasi untuk semua ID token.Enumerable Extension menambahkan lapisan penemuan tersebut.Koleksi tanpa enumerasi tetap dapat mentransfer NFT secara normal dan berfungsi dengan wallet yang kompatibel dengan ERC-721.Tidak adanya enumerasi tidak membuat NFT menjadi tidak valid atau tidak patuh standar.Aplikasi harus mendukung koleksi enumerable maupun non-enumerable jika ingin memiliki kompatibilitas ERC-721 yang luas.Enumerable Extension vs. Metadata Extension
Enumerable Extension mengidentifikasi ID token yang ada dan kepemilikan setiap pemilik.Metadata Extension menyediakan nama koleksi, simbol, dan token URI.Enumerasi tidak menjelaskan gambar, atribut, judul, atau konten eksternal yang terkait dengan NFT.Dukungan metadata tidak menyediakan daftar token lengkap.Kontrak dapat mengimplementasikan salah satu extension, keduanya, atau tidak satu pun, sambil tetap menerapkan perilaku inti ERC-721.Aplikasi sebaiknya memeriksa setiap antarmuka secara terpisah.Enumerable Extension vs. totalSupply Saja
Beberapa kontrak NFT menambahkan fungsi
Nama fungsi yang familier tidak membuktikan dukungan terhadap
Mengapa Enumerable Extension Membutuhkan Lebih Banyak Gas
Enumerasi mengharuskan kontrak memelihara struktur penyimpanan tambahan.Implementasi umum menyimpan array semua ID token yang ada.Implementasi juga menyimpan daftar token berindeks untuk setiap pemilik dan mapping yang mencatat posisi token.Minting harus menambahkan token baru ke daftar global dan daftar pemilik.Transfer harus menghapus token dari daftar pemilik sebelumnya dan menambahkannya ke daftar pemilik baru.Burning harus menghapus token dari daftar pemilik dan daftar global.Penulisan storage tambahan ini meningkatkan biaya gas transaksi yang mengubah state.Panduan implementasi ERC-721 saat ini dari OpenZeppelin mencatat bahwa extension ini sering tidak disertakan karena menimbulkan overhead gas yang cukup besar.
Apakah Kueri Enumerasi Gratis?
Pengguna dapat memanggil fungsi view melalui endpoint RPC tanpa mengirim transaksi blockchain.Dalam situasi tersebut, tidak ada biaya gas on-chain yang dibayar karena node menyimulasikan pembacaan secara lokal.Namun, node tetap melakukan komputasi dan dapat menerapkan batas laju atau pembatasan permintaan.Jika smart contract lain memanggil fungsi enumerasi selama transaksi, komputasinya menggunakan gas transaksi.Loop yang meminta ratusan atau ribuan indeks token secara on-chain mungkin terlalu mahal untuk diselesaikan.Developer tidak boleh menyamakan pembacaan off-chain tanpa gas dengan komputasi on-chain tanpa batas.Loop dan Batas Gas Blok
Smart contract sebaiknya menghindari fungsi yang mengubah state dan melakukan loop pada setiap NFT dalam koleksi atau setiap NFT yang dimiliki alamat tanpa batasan.Jumlah iterasi dapat terus bertambah hingga transaksi melampaui batas gas blok.Dokumentasi keamanan Solidity memperingatkan bahwa loop yang bergantung pada storage pada akhirnya dapat membuat operasi kontrak tidak bisa diselesaikan.
Fungsi view yang dipanggil secara off-chain tidak menimbulkan biaya transaksi serupa, tetapi tetap dapat membebani penyedia RPC.Aplikasi sebaiknya menggunakan halaman dengan batas tertentu, kueri indeks satu per satu, atau pengindeksan off-chain untuk dataset besar.Pengindeksan Event Off-Chain sebagai Alternatif
Setiap kontrak ERC-721 yang patuh standar memancarkan event
Enumerable Extension vs. Pengindeksan Event
Enumerasi on-chain memberi smart contract akses terstandardisasi langsung ke indeks token.Pengindeksan event menyediakan penemuan off-chain yang lebih kaya dan skalabel.Enumerasi berguna ketika smart contract lain perlu memverifikasi atau memilih ID token tanpa mengandalkan database eksternal.Pengindeksan event biasanya lebih praktis untuk antarmuka wallet, halaman koleksi, analitik, dan pencarian historis.Proyek dapat mendukung kedua metode.Pilihan terbaik bergantung pada apakah kemudahan penemuan on-chain sepadan dengan gas tambahan yang dibayar pada setiap mint, transfer, dan burn.Apakah Enumerasi Menyediakan Pagination?
Extension ini tidak mendefinisikan fungsi yang mengembalikan satu halaman berisi ID token.Extension ini menyediakan satu ID token untuk setiap kueri indeks.Aplikasi off-chain dapat membuat pagination dengan meminta rentang indeks terbatas.Contohnya, halaman pertama dapat meminta indeks nol hingga 49, sedangkan halaman kedua meminta indeks 50 hingga 99.Aplikasi harus memperhitungkan perubahan suplai dan urutan saat berpindah halaman.Transfer atau burn dapat memindahkan token antarindeks sehingga proses pagination yang berlangsung lama dapat melewatkan atau mengulang ID.Menggunakan data dari satu tinggi blok tetap dapat memberikan snapshot yang lebih konsisten jika sistem RPC mendukung panggilan historis.Apakah Enumerasi Mencantumkan Semua Pemilik?
Extension ini mencantumkan ID token secara global dan ID token yang dimiliki pemilik tertentu.Extension ini tidak menyediakan fungsi yang mengembalikan semua alamat pemilik unik.Aplikasi dapat memperoleh daftar pemilik dengan memanggil
Apakah Enumerasi Membuktikan Keaslian Token?
Tidak. Enumerasi hanya melaporkan ID token yang tercatat oleh smart contract tertentu.Siapa pun dapat men-deploy kontrak ERC-721 enumerable dengan nama, gambar, simbol, atau metadata salinan.Jaringan blockchain dan alamat kontrak lengkap tetap menjadi bagian penting dari identitas NFT.Antarmuka enumerable yang benar tidak membuktikan bahwa penerbit memiliki karya seni, mengendalikan aset yang diklaim, atau berniat jujur.Pengguna sebaiknya memverifikasi kontrak melalui informasi proyek yang berwenang dan memeriksa izinnya secara mandiri.Apakah totalSupply Membuktikan Kelangkaan?
Jumlah suplai saat ini tidak menetapkan suplai maksimum permanen.Kontrak mungkin memiliki fungsi mint publik, peran minting administrator, sistem minting bridge, atau wewenang upgrade.ID token yang saat ini tidak memiliki pemilik juga mungkin dapat di-mint di kemudian hari.Kontrak yang dapat di-upgrade bisa mengubah aturan suplainya setelah deployment.Pengguna sebaiknya memeriksa kode dan model kontrol akses sebelum mengandalkan klaim kelangkaan.Enumerasi mempermudah kueri suplai saat ini, tetapi tidak menegakkan janji ekonomi.Minting dan Enumerasi
Saat NFT baru di-mint, implementasi enumerable harus menambahkan ID token ke indeks global dan indeks pemilik pertama.Total suplai kemudian bertambah satu.ID token dapat muncul pada indeks global valid mana pun yang diizinkan oleh implementasi.Kebijakan mint berurutan tidak mengharuskan indeks enumerasi selalu sama dengan ID token.Logika mint khusus harus memperbarui semua struktur enumerasi yang diperlukan secara konsisten.Pembaruan yang tidak lengkap dapat menyebabkan saldo, catatan kepemilikan, total suplai, dan hasil enumerasi tidak sesuai.Transfer dan Enumerasi
Transfer biasanya tidak mengubah total suplai.Transfer menghapus ID token dari enumerasi pemilik sebelumnya dan menambahkannya ke enumerasi penerima.Daftar token global biasanya tetap memuat ID token yang sama.Posisi indeks khusus pemilik dapat berubah selama proses penghapusan.Transfer ke alamat sendiri memerlukan implementasi yang cermat karena pengirim dan penerima adalah alamat yang sama.Implementasi yang telah ditinjau menangani kondisi ini tanpa keliru menghapus atau menggandakan token.Burning dan Enumerasi
Burning menghapus token dari kepemilikan ERC-721 yang valid.Implementasi enumerable menghapus ID token yang dibakar dari daftar pemilik dan daftar token global.Total suplai berkurang.Indeks global dan indeks pemilik token sebelumnya tidak boleh lagi digunakan.Token lain dapat berpindah ke posisi tersebut melalui penghapusan swap-and-pop.Aplikasi historis sebaiknya menggunakan event, bukan enumerasi saat ini, jika memerlukan catatan NFT yang dibakar.Kompatibilitas Batch Minting
Beberapa implementasi ERC-721 mendukung batch minting berurutan atau terkompresi saat konstruksi kontrak.Sistem tersebut mungkin menghitung kepemilikan tanpa mencatat setiap token melalui logika pembaruan enumerasi biasa.Implementasi OpenZeppelin saat ini memperingatkan bahwa extension consecutive-mint-nya berbenturan dengan
Enumerasi dan Kontrak yang Dapat Di-upgrade
Kontrak NFT yang dapat di-upgrade bisa menambahkan atau mengubah logika setelah deployment jika sistem governance-nya mengizinkan.Menambahkan enumerasi setelah banyak NFT sudah ada memerlukan perhatian khusus.Storage enumerasi baru mungkin masih kosong meskipun kontrak inti sudah mencatat ribuan token.Proses migrasi mungkin diperlukan untuk mengisi indeks global dan indeks khusus pemilik.Loop migrasi on-chain yang besar dapat melampaui batas gas.Kesalahan tata letak storage juga dapat merusak data kepemilikan atau approval yang sudah ada.Administrator upgrade sebaiknya menggunakan prosedur migrasi yang telah diuji, transaksi dengan batas tertentu, dan peninjauan keamanan independen.Enumerasi dan Logika balanceOf Khusus
Enumerasi pemilik bergantung pada informasi saldo ERC-721 yang akurat.Extension yang menghitung
Risiko Keamanan bagi Aplikasi yang Mengintegrasikan
Aplikasi sebaiknya memverifikasi dukungan enumerable sebelum memanggil fungsi extension.Aplikasi harus menangani error indeks di luar batas, bukan berasumsi bahwa indeks yang sebelumnya diamati tetap valid.Aplikasi tidak boleh mengandalkan urutan enumerasi untuk kelangkaan, prioritas, atau perhitungan finansial.Aplikasi harus mencegah hasil duplikat atau hilang ketika state berubah selama pagination.Aplikasi juga harus memastikan setiap ID token yang dikembalikan berasal dari kontrak dan jaringan yang diharapkan.Untuk keputusan bernilai tinggi, aplikasi mungkin memerlukan snapshot blok yang konsisten dan tingkat finalitas yang sesuai.Konsistensi RPC dan Data
Endpoint RPC dapat mengembalikan data enumerasi dari blok terbaru, aman, final, atau historis, bergantung pada jaringan dan konfigurasi permintaan.Dua panggilan pada tinggi blok berbeda dapat menghasilkan daftar suplai atau pemilik yang berbeda.NFT yang baru saja ditransfer mungkin tercatat pada pemilik berbeda di beberapa sumber data yang belum tersinkronisasi.Aplikasi sebaiknya mencatat nomor blok yang digunakan untuk enumerasi multi-panggilan jika konsistensi penting.Sistem kritis dapat membandingkan beberapa node atau mengoperasikan node yang diverifikasi secara mandiri.Enumerasi mengurangi ketergantungan pada API khusus koleksi, tetapi tidak menghilangkan semua pertimbangan kepercayaan RPC.Manfaat Enumerable Extension
Extension ini menyediakan cara terstandardisasi untuk menemukan semua ID token saat ini.Extension ini memungkinkan smart contract lain meminta daftar kepemilikan NFT seorang pemilik tanpa indexer eksternal.Extension ini menyediakan fungsi suplai saat ini yang terstandardisasi.Extension ini dapat menyederhanakan koleksi kecil, game on-chain, sistem keanggotaan, dan aplikasi yang memerlukan pemilihan token secara langsung.Extension ini juga membuat kueri inventaris NFT dasar tersedia meskipun situs web atau database privat proyek tidak lagi tersedia.Keterbatasan Enumerable Extension
Extension ini meningkatkan biaya gas untuk mint, transfer, dan burn.Extension ini tidak menjamin urutan token yang stabil.Extension ini tidak menyediakan pagination, pengurutan, pemfilteran, atau enumerasi holder bawaan.Extension ini melaporkan token saat ini, bukan catatan historis lengkap.Extension ini mungkin tidak kompatibel dengan sistem batch minting terkompresi atau sistem saldo khusus.Loop on-chain yang besar tetap dibatasi oleh gas transaksi.Extension ini juga tidak menjamin metadata, royalti, harga, keaslian, atau batas suplai.Kapan Proyek Sebaiknya Menggunakan Enumerasi?
Proyek dapat memperoleh manfaat dari enumerasi ketika smart contract perlu menemukan ID token secara langsung on-chain.Enumerasi juga dapat menjadi pilihan yang wajar untuk koleksi kecil yang dapat menerima biaya transfer tambahan.Game dapat menggunakannya ketika logika kontrak perlu memilih salah satu NFT pemain berdasarkan indeks.Kontrak keanggotaan dapat menggunakannya ketika proses on-chain perlu memeriksa token keanggotaan terkini milik holder.Proyek tetap sebaiknya membatasi loop dan mempertimbangkan apakah mapping yang lebih sederhana atau indeks khusus aplikasi akan lebih efisien.Kapan Proyek Sebaiknya Menghindari Enumerasi?
Koleksi NFT besar dapat menghindari enumerasi untuk mengurangi biaya setiap mint, transfer, dan burn.Proyek juga dapat menghindarinya jika semua fungsi penemuan dan pencarian sudah bergantung pada indexer event off-chain.Sistem batch minting terkompresi dapat menggunakan model kepemilikan yang tidak efisien jika dipasangkan dengan storage enumerasi standar.Proyek yang tidak pernah memerlukan pencantuman token on-chain mungkin hanya mendapat sedikit manfaat dari membayar indeks on-chain permanen.Keputusan sebaiknya didasarkan pada kebutuhan aplikasi yang sebenarnya, bukan anggapan bahwa setiap extension opsional diperlukan.Cara Developer Mengimplementasikan Extension
Developer sebaiknya memulai dengan implementasi ERC-721 enumerable yang aktif dipelihara dan telah ditinjau.Pastikan
Pengujian invarian sebaiknya memastikan bahwa
Pengujian juga harus memastikan jumlah token enumerable setiap pemilik sama dengan
Cara Pengguna Memeriksa Dukungan Enumerable
Langkah pertama adalah memverifikasi alamat kontrak NFT dan jaringan blockchain.Langkah kedua adalah memanggil
Langkah keempat adalah membandingkan
Langkah kelima adalah membandingkan hasil
Kesalahan Umum Enumerable Extension
Kesalahan umum pertama adalah menganggap setiap kontrak ERC-721 mendukung enumerasi.Kesalahan kedua adalah menganggap indeks enumerasi sebagai ID token permanen.Kesalahan ketiga adalah menganggap ID token muncul dalam urutan numerik atau urutan mint.Kesalahan keempat adalah menganggap
Kesalahan ketujuh adalah menganggap fungsi
FAQ
Apa arti Enumerable Extension dalam kripto?
Istilah ini biasanya merujuk pada extension ERC-721 opsional yang memungkinkan aplikasi mencantumkan semua ID token NFT saat ini dan ID token yang dimiliki alamat tertentu.Apakah Enumerable Extension diwajibkan dalam ERC-721?
Tidak. Kontrak NFT dapat mematuhi ERC-721 inti tanpa mendukung enumerasi.Apa ID antarmuka Enumerable Extension?
ID antarmuka ERC-165-nya adalah
Fungsi apa yang ditambahkan extension ini?
Extension ini menambahkan
Apa yang dikembalikan totalSupply?
Fungsi ini mengembalikan jumlah NFT valid yang saat ini tercatat dalam kontrak.Apakah totalSupply menunjukkan suplai maksimum yang mungkin?
Tidak. Fungsi ini melaporkan suplai saat ini dan tidak membuktikan bahwa minting di masa depan mustahil dilakukan.Apa yang dikembalikan tokenByIndex?
Fungsi ini mengembalikan ID token yang tersimpan pada indeks enumerasi global tertentu.Apa yang dikembalikan tokenOfOwnerByIndex?
Fungsi ini mengembalikan satu ID token yang dimiliki alamat tertentu pada indeks pemilik tertentu.Apakah indeks enumerasi dimulai dari nol?
Ya. Indeks valid dimulai dari nol dan berakhir satu posisi di bawah suplai atau saldo yang relevan.Apakah indeks enumerasi sama dengan ID token?
Tidak. Indeks adalah posisi sementara dalam daftar, sedangkan ID token mengidentifikasi NFT dalam kontrak.Apakah ID token dikembalikan dalam urutan numerik?
Tidak. Standar ini tidak mewajibkan urutan enumerasi tertentu.Dapatkah urutan enumerasi berubah?
Ya. Transfer dan burn dapat mengubah posisi indeks, terutama pada implementasi yang menggunakan penghapusan swap-and-pop.Apakah burning NFT mengurangi totalSupply?
Ya. Kontrak enumerable yang diimplementasikan dengan benar menghapus NFT yang dibakar dan mengurangi total suplai saat ini.Apakah transfer NFT mengubah totalSupply?
Tidak. Transfer normal mengubah enumerasi pemilik, tetapi tidak mengubah jumlah NFT yang ada.Mengapa extension ini mahal?
Extension ini memerlukan penulisan storage tambahan untuk memelihara indeks token global dan khusus pemilik selama mint, transfer, dan burn.Apakah panggilan enumerasi gratis?
Pembacaan RPC off-chain tidak memerlukan pembayaran gas on-chain, tetapi panggilan smart contract yang dilakukan dalam transaksi menggunakan gas.Dapatkah kontrak melakukan loop atas setiap NFT enumerable?
Kontrak dapat mencoba melakukannya, tetapi loop on-chain tanpa batas pada akhirnya dapat melampaui batas gas blok.Apakah extension ini menyediakan pagination?
Tidak. Aplikasi membuat pagination dengan meminta rentang indeks tertentu.Apakah extension ini mencantumkan setiap holder NFT?
Tidak. Extension ini mencantumkan ID token secara global dan untuk pemilik tertentu, tetapi tidak mengembalikan daftar unik semua alamat pemilik.Dapatkah pengindeksan event menggantikan enumerasi?
Ya. Indexer off-chain dapat merekonstruksi suplai dan kepemilikan token dari event Transfer ERC-721.Apakah enumerasi mencakup metadata NFT?
Tidak. Metadata disediakan melalui extension ERC-721 opsional yang terpisah.Apakah enumerasi membuktikan keaslian NFT?
Tidak. Siapa pun dapat men-deploy kontrak enumerable, sehingga pengguna harus memverifikasi jaringan, alamat kontrak, penerbit, dan izinnya.Dapatkah enumerasi ditambahkan setelah deployment?
Kontrak yang dapat di-upgrade mungkin dapat menambahkannya, tetapi token yang sudah ada harus dimigrasikan dengan aman ke struktur indeks baru.Apakah ERC721Enumerable kompatibel dengan setiap extension ERC-721?
Tidak. Batch minting terkompresi dan implementasi saldo khusus dapat berbenturan dengan storage enumerable standar.Kapan Enumerable Extension paling berguna?
Extension ini paling berguna ketika kontrak atau aplikasi memerlukan akses on-chain terstandardisasi ke daftar token saat ini atau ID token milik pemilik tertentu.Kesimpulan
Enumerable Extension adalah fitur ERC-721 opsional yang memungkinkan ID token NFT ditemukan melalui kueri on-chain terstandardisasi.ID antarmukanya adalah
Extension ini menambahkan
Anda Mungkin Juga Menyukai
ZK-Rollup
ZK-Rollup-as-a-Service
zk-SNARK
POPULER
Mata uang kripto yang sedang tren saat ini dan menarik perhatian pasar yang signifikan
Volume TERATAS
Mata uang kripto dengan volume trading tertinggi
Baru Ditambahkan
Mata uang kripto yang baru saja masuk listing dan tersedia untuk trading

