Pembaruan Besar Versi 2.x Solana Web3.js: Pemrograman Fungsional dan Desain Modular
Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi merilis versi 2.x pada bulan November. Versi baru ini mengalami perubahan signifikan dibandingkan dengan 1.x, artikel ini akan merangkum pembaruan utamanya.
Meskipun versi 2.x baru saja dirilis dan tingkat penggunaannya masih rendah, banyak pustaka populer belum beralih, tetapi memahami perubahan ini sangat membantu untuk pekerjaan migrasi di masa depan.
Perbandingan Versi
Versi 1.x relatif mudah digunakan. Ini hanya memiliki satu paket: @solana/web3.js, semua fungsi terpusat di dalamnya. Desain berbasis kelas membungkus banyak operasi umum, seperti kelas Connection yang menyediakan puluhan metode, hampir mencakup semua fungsi yang diperlukan oleh pengembang.
Namun, desain ini juga membawa beberapa masalah: bahkan jika pengembang hanya menggunakan sebagian kecil dari fungsionalitas, seluruh repositori kode akan diunduh ke perangkat pengguna, dan karena jumlah kode dalam repositori cukup besar, ini dapat memakan waktu.
Versi 2.x mengadopsi strategi yang berbeda. Tim resmi membagi kode sumber yang ada menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, dan lainnya. Pada saat yang sama, ia mengabaikan implementasi berbasis kelas, lebih memilih penggunaan fungsi tunggal. Desain ini menguntungkan untuk optimasi saat membangun kode JavaScript, kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna. Menurut statistik resmi, penggunaan versi baru dari DApp biasanya dapat memperoleh optimasi ukuran sebesar 30%, dan jika hanya menggunakan sedikit fitur, proporsi optimasi mungkin lebih tinggi.
Perubahan ini meningkatkan tuntutan terhadap kualitas dokumentasi tim Solana, dan bagaimana membuat pengembang dengan cepat menemukan fungsi yang diperlukan menjadi masalah kunci. Saat ini, penamaan setiap paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami secara garis besar penggunaannya, yang pada tingkat tertentu mengurangi kesulitan migrasi bagi pengembang.
Namun, karena baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh tentang versi 2.x di Solana Cookbook juga relatif sedikit. Selain itu, versi baru cenderung menggunakan fitur bawaan runtime (seperti menghasilkan pasangan kunci), tetapi deskripsi tentang bagian-bagian ini dalam dokumentasi kurang memadai, yang mungkin membuat pengembang merasa bingung.
Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. Fitur ini mungkin tidak terlalu penting bagi banyak pengguna, tetapi mengingat serangan rantai pasokan yang dialami oleh versi @solana/web3.js 1.95.5 dan 1.95.6 pada awal Desember 2023, mengurangi input dan ketergantungan eksternal dapat secara signifikan mengurangi kemungkinan terjadinya insiden keamanan. Dengan peluncuran versi 2.x, tim pengembang Web3.js telah memutuskan untuk lebih banyak menggunakan fitur asli, menghilangkan ketergantungan eksternal dan pengenalan Polyfills. Meskipun mungkin ada perubahan di masa depan, saat ini versi 2.x telah menghilangkan semua ketergantungan eksternal.
Poin Perubahan Penting
terhubung
Pada versi 1.x, kelas Connection menyediakan banyak metode. Sedangkan pada 2.x, diimplementasikan dengan cara yang lebih fungsional:
Saat memanggil "sendAndConfirmTransaction" untuk mengirim transaksi, akan secara otomatis menginisiasi permintaan HTTPS dan membangun koneksi WSS untuk berlangganan status transaksi, dan setelah transaksi dikonfirmasi, akan mengembalikan hash transaksi.
pasangan kunci
Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami banyak perubahan. Kelas Keypair dan PublicKey yang umum digunakan di versi 1.x tidak ada lagi, digantikan oleh beberapa fungsi.
Misalnya, Anda dapat menggunakan "await generateKeyPair()" untuk menghasilkan pasangan kunci, bukan "Keypair.generate()" sebelumnya.
Perlu dicatat bahwa generateKeyPair yang baru mengembalikan Promise, bukan langsung mengembalikan pasangan kunci. Ini karena implementasi baru memanfaatkan API Web Crypto JavaScript sebisa mungkin, menggunakan implementasi Ed25519 asli. Banyak metode dari API Web Crypto bersifat asinkron. Namun, bagi pengembang JavaScript yang akrab dengan Promise, perubahan ini tidak sulit untuk disesuaikan.
kirim transaksi
Dalam versi 2.x, tidak ada lagi dua kelas "Transaction" dan "VersionedTransaction".
Metode terkait Program Sistem yang disediakan dalam versi lama juga tidak ada lagi, metode statis pada kelas "SystemProgram" perlu diimpor dari tempat lain.
Misalnya, instruksi "transfer" perlu memanggil fungsi "getTransferSolInstruction" di "@solana-program/system".
Karena kelas tidak lagi disediakan, Web3.js menawarkan bentuk "pipe" yang umum digunakan dalam pemrograman fungsional. Fungsi transfer yang sebelumnya ada di 1.x dapat diimplementasikan melalui fungsi pipe.
Dapat dilihat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang telah didefinisikan untuk menghasilkan fungsi khusus, kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode meningkat, tetapi kustomisasi menjadi lebih kuat.
Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksinya melalui langganan WSS RPC. Metode baru ini sangat bergantung pada WSS, dan saya percaya aplikasi WSS di masa depan akan semakin luas, yang juga menuntut stabilitas layanan yang lebih tinggi dari penyedia RPC.
React
Perlu dicatat bahwa proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook dengan fitur bawaan seperti signIn.
Ringkasan
Rilis versi 2.x dari @solana/web3.js menunjukkan komitmen tim Solana terhadap perkembangan dan perbaikan yang berkelanjutan. Ini memberikan pengembang cara yang efisien, fleksibel, dan dapat disesuaikan untuk berinteraksi dengan jaringan Solana, yang membantu mendorong adopsi dan perkembangan platform tersebut.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
11 Suka
Hadiah
11
4
Posting ulang
Bagikan
Komentar
0/400
OfflineValidator
· 10jam yang lalu
js telah diperbarui lagi, masih ada yang menggunakan 1.x?
Lihat AsliBalas0
MoonRocketman
· 11jam yang lalu
Optimasi orbit selesai, upgrade mesin berhasil, bersiap untuk peluncuran kedua To da moon.
Lihat AsliBalas0
MissedAirdropAgain
· 11jam yang lalu
爬,急着升跟屁用,先预热下2.0 Airdrop
Lihat AsliBalas0
WalletDivorcer
· 11jam yang lalu
Masih menunggu pelukan 1.x, tidak ingin mengubah kode.
Solana Web3.js versi 2.x mengalami peningkatan besar: desain modular meningkatkan kinerja
Pembaruan Besar Versi 2.x Solana Web3.js: Pemrograman Fungsional dan Desain Modular
Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi merilis versi 2.x pada bulan November. Versi baru ini mengalami perubahan signifikan dibandingkan dengan 1.x, artikel ini akan merangkum pembaruan utamanya.
Meskipun versi 2.x baru saja dirilis dan tingkat penggunaannya masih rendah, banyak pustaka populer belum beralih, tetapi memahami perubahan ini sangat membantu untuk pekerjaan migrasi di masa depan.
Perbandingan Versi
Versi 1.x relatif mudah digunakan. Ini hanya memiliki satu paket: @solana/web3.js, semua fungsi terpusat di dalamnya. Desain berbasis kelas membungkus banyak operasi umum, seperti kelas Connection yang menyediakan puluhan metode, hampir mencakup semua fungsi yang diperlukan oleh pengembang.
Namun, desain ini juga membawa beberapa masalah: bahkan jika pengembang hanya menggunakan sebagian kecil dari fungsionalitas, seluruh repositori kode akan diunduh ke perangkat pengguna, dan karena jumlah kode dalam repositori cukup besar, ini dapat memakan waktu.
Versi 2.x mengadopsi strategi yang berbeda. Tim resmi membagi kode sumber yang ada menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, dan lainnya. Pada saat yang sama, ia mengabaikan implementasi berbasis kelas, lebih memilih penggunaan fungsi tunggal. Desain ini menguntungkan untuk optimasi saat membangun kode JavaScript, kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna. Menurut statistik resmi, penggunaan versi baru dari DApp biasanya dapat memperoleh optimasi ukuran sebesar 30%, dan jika hanya menggunakan sedikit fitur, proporsi optimasi mungkin lebih tinggi.
Perubahan ini meningkatkan tuntutan terhadap kualitas dokumentasi tim Solana, dan bagaimana membuat pengembang dengan cepat menemukan fungsi yang diperlukan menjadi masalah kunci. Saat ini, penamaan setiap paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami secara garis besar penggunaannya, yang pada tingkat tertentu mengurangi kesulitan migrasi bagi pengembang.
Namun, karena baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh tentang versi 2.x di Solana Cookbook juga relatif sedikit. Selain itu, versi baru cenderung menggunakan fitur bawaan runtime (seperti menghasilkan pasangan kunci), tetapi deskripsi tentang bagian-bagian ini dalam dokumentasi kurang memadai, yang mungkin membuat pengembang merasa bingung.
Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. Fitur ini mungkin tidak terlalu penting bagi banyak pengguna, tetapi mengingat serangan rantai pasokan yang dialami oleh versi @solana/web3.js 1.95.5 dan 1.95.6 pada awal Desember 2023, mengurangi input dan ketergantungan eksternal dapat secara signifikan mengurangi kemungkinan terjadinya insiden keamanan. Dengan peluncuran versi 2.x, tim pengembang Web3.js telah memutuskan untuk lebih banyak menggunakan fitur asli, menghilangkan ketergantungan eksternal dan pengenalan Polyfills. Meskipun mungkin ada perubahan di masa depan, saat ini versi 2.x telah menghilangkan semua ketergantungan eksternal.
Poin Perubahan Penting
terhubung
Pada versi 1.x, kelas Connection menyediakan banyak metode. Sedangkan pada 2.x, diimplementasikan dengan cara yang lebih fungsional:
Saat memanggil "sendAndConfirmTransaction" untuk mengirim transaksi, akan secara otomatis menginisiasi permintaan HTTPS dan membangun koneksi WSS untuk berlangganan status transaksi, dan setelah transaksi dikonfirmasi, akan mengembalikan hash transaksi.
pasangan kunci
Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami banyak perubahan. Kelas Keypair dan PublicKey yang umum digunakan di versi 1.x tidak ada lagi, digantikan oleh beberapa fungsi.
Misalnya, Anda dapat menggunakan "await generateKeyPair()" untuk menghasilkan pasangan kunci, bukan "Keypair.generate()" sebelumnya.
Perlu dicatat bahwa generateKeyPair yang baru mengembalikan Promise, bukan langsung mengembalikan pasangan kunci. Ini karena implementasi baru memanfaatkan API Web Crypto JavaScript sebisa mungkin, menggunakan implementasi Ed25519 asli. Banyak metode dari API Web Crypto bersifat asinkron. Namun, bagi pengembang JavaScript yang akrab dengan Promise, perubahan ini tidak sulit untuk disesuaikan.
kirim transaksi
Dalam versi 2.x, tidak ada lagi dua kelas "Transaction" dan "VersionedTransaction".
Metode terkait Program Sistem yang disediakan dalam versi lama juga tidak ada lagi, metode statis pada kelas "SystemProgram" perlu diimpor dari tempat lain.
Misalnya, instruksi "transfer" perlu memanggil fungsi "getTransferSolInstruction" di "@solana-program/system".
Karena kelas tidak lagi disediakan, Web3.js menawarkan bentuk "pipe" yang umum digunakan dalam pemrograman fungsional. Fungsi transfer yang sebelumnya ada di 1.x dapat diimplementasikan melalui fungsi pipe.
Dapat dilihat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang telah didefinisikan untuk menghasilkan fungsi khusus, kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode meningkat, tetapi kustomisasi menjadi lebih kuat.
Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksinya melalui langganan WSS RPC. Metode baru ini sangat bergantung pada WSS, dan saya percaya aplikasi WSS di masa depan akan semakin luas, yang juga menuntut stabilitas layanan yang lebih tinggi dari penyedia RPC.
React
Perlu dicatat bahwa proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook dengan fitur bawaan seperti signIn.
Ringkasan
Rilis versi 2.x dari @solana/web3.js menunjukkan komitmen tim Solana terhadap perkembangan dan perbaikan yang berkelanjutan. Ini memberikan pengembang cara yang efisien, fleksibel, dan dapat disesuaikan untuk berinteraksi dengan jaringan Solana, yang membantu mendorong adopsi dan perkembangan platform tersebut.