Dasar
Spot
Perdagangkan kripto dengan bebas
Perdagangan Margin
Perbesar keuntungan Anda dengan leverage
Konversi & Investasi Otomatis
0 Fees
Perdagangkan dalam ukuran berapa pun tanpa biaya dan tanpa slippage
ETF
Dapatkan eksposur ke posisi leverage dengan mudah
Perdagangan Pre-Market
Perdagangkan token baru sebelum listing
Futures
Akses ribuan kontrak perpetual
TradFi
Emas
Satu platform aset tradisional global
Opsi
Hot
Perdagangkan Opsi Vanilla ala Eropa
Akun Terpadu
Memaksimalkan efisiensi modal Anda
Perdagangan Demo
Pengantar tentang Perdagangan Futures
Bersiap untuk perdagangan futures Anda
Acara Futures
Gabung acara & dapatkan hadiah
Perdagangan Demo
Gunakan dana virtual untuk merasakan perdagangan bebas risiko
Peluncuran
CandyDrop
Koleksi permen untuk mendapatkan airdrop
Launchpool
Staking cepat, dapatkan token baru yang potensial
HODLer Airdrop
Pegang GT dan dapatkan airdrop besar secara gratis
Launchpad
Jadi yang pertama untuk proyek token besar berikutnya
Poin Alpha
Perdagangkan aset on-chain, raih airdrop
Poin Futures
Dapatkan poin futures dan klaim hadiah airdrop
Investasi
Simple Earn
Dapatkan bunga dengan token yang menganggur
Investasi Otomatis
Investasi otomatis secara teratur
Investasi Ganda
Keuntungan dari volatilitas pasar
Soft Staking
Dapatkan hadiah dengan staking fleksibel
Pinjaman Kripto
0 Fees
Menjaminkan satu kripto untuk meminjam kripto lainnya
Pusat Peminjaman
Hub Peminjaman Terpadu
Seri Pemula Web3: Mengklik MetaMask secara tidak sengaja memunculkan Dompet lain? Status quo penyelesaian konflik Dompet
Kekacauan saat Membuka Dompet
Menghubungkan dompet adalah langkah kunci untuk masuk ke dunia Web3, pengguna Web3 sering perlu terhubung dengan dompet di beberapa situs DApp. Namun, hanya tindakan sederhana ini juga dapat menyebabkan ketidaknyamanan yang serius bagi pengguna.
Menghubungkan Dompet
Bayangkanlah situasi seperti ini: seorang pengguna Web3 pemula (dengan rasa ingin tahu, dia menginstal banyak dompet plugin) mengunjungi sebuah situs DApp dan ingin menggunakan dompet plugin browsernya untuk terhubung. Namun, ketika mereka mengklik tombol “Sambungkan Dompet” yang disediakan oleh situs tersebut, dan memilih dompet tertentu untuk terhubung ke DApp, mereka mungkin menemukan bahwa dompet yang muncul bukanlah pilihannya. Hal ini mungkin membuat mereka panik dan terkejut, mengira komputer mereka terinfeksi virus sehingga melakukan tindakan yang tidak diharapkan.
Dompet Blockchain adalah pintu masuk penting ke blockchain, dan untuk menguasai pintu masuk ini, setiap dompet menggunakan berbagai cara yang mereka bisa pikirkan. Salah satu yang paling membuat pengembang DApp dan pengguna DApp pusing adalah pengubahan variabel global oleh berbagai dompet.
Dalam logika implementasi dompet browser saat ini, semuanya melibatkan menyuntikkan variabel global ke browser untuk mengekspos fungsionalitas yang disediakan oleh dompet (misalnya, dompet platform Ethereum akan menyuntikkan fungsionalitas yang disediakannya ke ‘ethereum’), sehingga DApp dapat memanggil metode yang disediakan oleh dompet untuk berinteraksi dengannya.
Hanya saja, karena banyak dompet akan menyuntikkan diri ke variabel ethereum yang sama, ini menyebabkan dompet yang didaftarkan kemudian akan menimpa dompet yang didaftarkan sebelumnya, sehingga hanya dapat memanggil yang terdaftar terakhir dengan cara ini.
Kadang-kadang pengguna DApp harus menonaktifkan sementara plugin dompet lain atau menginstal hanya satu dompet saja agar dapat menggunakan dompet yang mereka inginkan dengan normal. Hal ini justru bertentangan dengan gagasan awal pengembang dompet. Bahkan dompet baru yang lebih baik pun sulit menarik pengguna yang sudah menggunakan dompet lain.
Mungkin teman-teman bertanya-tanya, mengapa harus disuntikkan ke dalam variabel yang sama? Asumsikan ada dua dompet: A dan B, sebenarnya hanya perlu A menyuntikkan dirinya sendiri ke ‘a’, B menyuntikkan dirinya sendiri ke ‘b’, jika ingin memanggil dompet mana pun, cukup panggil metode yang sesuai dari objek yang terkait, dan tidak akan terjadi masalah memanggil A tetapi malah memanggil B. Ini memang dapat mengatasi masalah persaingan, tetapi masalahnya adalah jika DApp ingin mendukung koneksi beberapa dompet, maka semua nama dompet yang ingin dikompatibilitaskan oleh pengembang harus didefinisikan sebelumnya dalam kode dan ketika pengguna memilih salah satu dompet, panggil metode terkait dari dompet tersebut. Ini membuat pemeliharaan kode terkait menjadi sangat merepotkan. Namun, jika semua dompet disuntikkan ke dalam objek yang sama, maka masalah ini dapat dihindari.
Solusi
Untuk keluar dari dilema yang sulit di atas, ada dua standar yang mirip dalam komunitas.
Solusi Ethereum: EIP-6963
Komunitas Ethereum mengajukan proposal EIP-6963 pada bulan Mei 2023.
Logika dasarnya sangat sederhana, yaitu dengan mengabaikan variabel global dan beralih menggunakan peristiwa yang disepakati, untuk menyelesaikan masalah registrasi dan penemuan dompet.
Secara khusus, setelah dompet plugin berhasil dimuat, akan memicu peristiwa “eip6963:announceProvider” yang seragam, memberi tahu DApp bahwa ada dompet baru yang tersedia. Dan DApp akan mengetahui dompet yang tersedia saat ini melalui mendengarkan peristiwa ini.
Dengan demikian, melalui seperangkat logika pemantauan acara yang abstrak, masalah yang disebabkan oleh penggunaan variabel global langsung dapat dihindari, dan dompet yang tersedia secara otomatis dapat ditemukan dalam lingkungan pengguna saat ini. Dengan begitu, dilema dapat teratasi.
Standar Komunitas: Standar Wallet
EIP-6963 adalah standar ekosistem Ethereum, tetapi bukan hanya Ethereum, platform rantai lain juga akan menghadapi masalah serupa. Misalnya, dompet di jaringan Solana umumnya akan menyuntikkan diri ke variabel “solana”, yang juga akan menyebabkan situasi persaingan.
Lalu bisakah ekosistem Solana juga memenuhi standar ini? Meskipun EIP-6963 hanya untuk mengatasi masalah penemuan dompet di ekosistem Ethereum, namun gagasan yang terkandung di dalamnya sebenarnya dapat diterapkan di semua platform blockchain. Jadi, apakah kita bisa lebih jauh lagi, menyediakan standar umum yang memungkinkan dompet dan DApp di semua platform blockchain untuk mencapai, sehingga pengembang dan pengguna di semua platform blockchain dapat menikmati kemudahan yang ditawarkan oleh EIP-6963? Secara teori, tidak ada masalah sama sekali, dan sudah ada pengembang yang melakukannya, yaitu Wallet Standard.
Pekerjaan inti yang dilakukan oleh Wallet Standard adalah menyediakan dua fungsi: ‘registerWallet’ dan ‘getWallets’, yang pertama digunakan untuk Dompet, dan yang kedua digunakan untuk DApp.
Dompet memanggil ‘registerWallet’, dengan mengirimkan objek dompet, objek ini mengemas fungsi yang disediakan oleh dompet (misalnya metode Connect, yang digunakan untuk menghubungkan dompet). Di dalam fungsi ini, pertama-tama akan memicu acara ‘RegisterWalletEvent’, parameter acara sebenarnya adalah sebuah fungsi panggil balik, yang digunakan untuk DApp memanggil saat mendengar acara ‘RegisterWalletEvent’, dan fungsi panggil balik ini sebenarnya akan meneruskan objek dompet, sehingga DApp bisa mendapatkan referensi objek dompet dan berinteraksi dengan dompet.
Pengembang DApp tidak perlu menulis kode untuk mendengarkan dan menerima objek dompet sendiri, ini sudah diintegrasikan ke dalam “getWallets” oleh Wallet Standard. Namun, getWallets hanya mendengarkan peristiwa, bagaimana peristiwa tersebut ditangani masih perlu dipertimbangkan oleh pengembang. Misalnya, di mana Wallets yang diperoleh akan disimpan? Beberapa dompet mungkin sudah dimuat sebelum DApp dimuat, sedangkan beberapa dompet lainnya mungkin dimuat setelahnya, bagaimana status dompet ini dikelola? Untuk masalah detail ini, Wallet Standard juga menyediakan paket “@wallet-standard/react”, pengembang dapat langsung menggunakan React Hooks yang disediakannya untuk mendapatkan data yang diinginkan, termasuk daftar dompet, dompet yang terhubung saat ini, metode yang disediakan oleh dompet, dan lain-lain.
Fitur Standar Dompet
Selain mendapatkan objek Wallet yang paling dasar, Wallet Standard juga mendefinisikan beberapa format Features.
Sebenarnya, dompet memiliki beberapa fungsi dasar, seperti koneksi, memantau peristiwa dompet, dll. Standar Dompet menyediakan fitur-fitur seperti ‘standard:connect’, ‘standard:events’, dan setelah penyedia dompet mengimplementasikan fitur-fitur ini, DApp dapat langsung menentukan apakah dompet mendukung operasi tertentu berdasarkan nilai-nilai ini.
Seperti yang disebutkan sebelumnya, “standard: \ *” adalah fitur yang didefinisikan secara internal, sebenarnya nilai-nilai mereka tidak memiliki persyaratan yang terlalu kuat, sehingga dapat diperluas dengan bebas. Platform rantai yang berbeda juga akan memiliki fitur uniknya, seperti Solana, yang secara langsung menyetujui “solana: \ *”. Fitur umum Solana platform mencakup “solana:signTransaction”, “solana:signMessage”, dan lain-lain.
Standar Dompet Saat Ini
Saat ini, tidak banyak proyek yang mengimplementasikan standar Wallet Standard, yang layak disebut adalah Solana dan Sui.
Di dalam adapter Solana Ant Design Web3, juga mendukung deteksi otomatis dompet yang kompatibel dengan Wallet Standard, pengembang hanya perlu mengaktifkan “autoAddRegisteredWallets” dan tidak perlu mengkonfigurasi banyak metadata dompet, pengalaman pengembangan dan pengalaman pengguna meningkat secara signifikan.
Logika koneksi dompet ZAN.TOP menghadapi masalah yang sama di awalnya, tetapi sekarang, berkat konfigurasi yang disediakan oleh Ant Design Web3, sangat mudah untuk menyesuaikan dengan standar EIP-6963. Semua orang seharusnya sudah merasakan hal ini saat mengikat alamat _wxdyh.
Implementasi Ekosistem Blockchain di Berbagai Daerah
Saat ini, sikap platform blockchain terhadap standar Wallet (atau EIP-6963) tidak sama, berikut adalah beberapa contohnya:
Bitcoin
Sampai saat ini, sepertinya tidak ada standar yang mirip dengan Bitcoin, ada proyek yang menerapkan standar Wallet Standard, tetapi tidak menarik banyak perhatian, dan sekarang sudah lama tidak ada kode baru yang diajukan.
Saat ini pengembang hanya dapat memelihara status secara manual, atau menggunakan beberapa paket pengembangan untuk membantu pekerjaan. Misalnya, dalam implementasi adaptor Bitcoin di Ant Design Web3, untuk berbagai dompet, akan diambil dari berbagai variabel global, dan disimpan dalam status yang seragam. Sejatinya, ini berarti pengembang pustaka mengambil alih pekerjaan pemeliharaan status yang rumit. Selain itu, ini hanya memecahkan masalah konflik dompet, masalah tidak dapat mendeteksi dompet yang tersedia secara otomatis masih ada.
Ethereum
Platform Ethereum telah memiliki standar EIP-6963, sebagian besar pustaka terkait dan Dompet juga telah mendukung.
Solana
Seperti yang disebutkan sebelumnya, pihak resmi telah menyediakan implementasinya:
Sui
Sui目前已经对Wallet Standard提供了实现,在官方文档上可以找到使用方法:
Dukungan Perpustakaan Pengembangan DApps
wagmi
wagmi menyediakan dukungan untuk EIP-6963 melalui pustaka mipd(), dengan rincian lebih lanjut dapat ditemukan di dokumen wagmi.
RainbowKit
Logika internal RainbowKit didasarkan pada wagmi, sehingga juga sudah memiliki dukungan internal untuk EIP-6963.
Ant Design Web3
Adaptor Ethereum dan Solana dari Ant Design Web3 telah mendukung standar keduanya dengan sangat baik dan sangat mudah bagi pengembang untuk mengaktifkannya.
Bagi pengembang DApp Ethereum, Anda hanya perlu menambahkan konfigurasi eip6963, perhatikan yang terkait dengan EIP-6963 di baris 23-25:
Namun jika Anda adalah pengembang DApp di ekosistem Solana, caranya juga mirip. Ini menyediakan properti autoAddRegisteredWallets:
Kesimpulan
EIP-6963 dan Standar Dompet dapat secara signifikan meningkatkan pengalaman pengguna dalam menghubungkan dompet, serta menurunkan ambang batas akses bagi penyedia dompet baru. Kami berharap di masa depan akan ada lebih banyak platform rantai, pengembang dompet, dan DApp yang dapat menyediakan atau mengimplementasikan standar terkait ini, yang akan mengarah pada perkembangan Web3 yang lebih baik.
Artikel ini ditulis oleh tim ZAN (akun resmi @zan_team) oleh gin-lsl.