Solana Web3.js 2.x versi: Pembaruan besar untuk pustaka JavaScript yang kuat
Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi merilis versi 2.x pada bulan November tahun ini. Dibandingkan dengan versi 1.x, versi baru ini membawa perubahan yang signifikan. Artikel ini akan memberikan gambaran umum tentang perubahan utamanya.
Meskipun versi 2.x baru saja diluncurkan dan penggunaannya belum meluas, banyak pustaka yang umum digunakan juga belum bermigrasi, tetapi memahami perubahan ini di muka tentu bermanfaat untuk persiapan upgrade di masa depan.
Perbandingan Versi
Tidak dapat disangkal, versi lama lebih sederhana dan langsung digunakan. Versi 1.x hanya memerlukan satu paket @solana/web3.js yang mencakup semua fungsionalitas, dengan desain berbasis kelas yang membungkus banyak operasi umum. Misalnya, kelas Connection menyediakan puluhan metode, hampir mencakup semua fungsionalitas yang dibutuhkan oleh pengembang.
Namun, desain ini juga membawa beberapa masalah. Meskipun fungsi yang sebenarnya digunakan oleh pengembang mungkin hanya sebagian kecil, seluruh kode sumber akan diunduh ke perangkat pengguna, yang dapat menyebabkan waktu muat yang lebih lama.
Sebagai perbandingan, versi 2.x mengadopsi pendekatan desain modular. Tim resmi membagi repositori kode yang ada menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, dan sebagainya. Sementara itu, versi baru meninggalkan implementasi berbasis kelas dan beralih ke pendekatan fungsi tunggal, yang membantu dalam optimasi saat membangun kode JavaScript. Kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna.
Menurut statistik dari dokumen resmi, menggunakan versi baru DApp biasanya dapat mencapai sekitar 30% optimasi ukuran kode. Jika hanya menggunakan sedikit fitur, rasio optimasi mungkin lebih tinggi.
Perubahan ini mengharuskan tim Solana untuk meningkatkan kualitas dokumentasi. Bagaimana membantu pengembang dengan cepat menemukan fungsi yang dibutuhkan menjadi masalah kunci. Saat ini, nama paket memiliki makna yang cukup baik, sehingga dari namanya saja kita bisa memahami kegunaannya, yang pada gilirannya mengurangi kesulitan migrasi bagi pengembang.
Namun, karena versi baru baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh-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 dokumen kurang menggambarkan hal ini, yang mungkin membuat beberapa pengembang merasa bingung.
Fitur penting lainnya dari versi 2.x adalah ketergantungan nol. Ini mungkin tidak penting bagi banyak pengguna, tetapi berdasarkan serangan rantai pasokan yang terjadi pada versi @solana/web3.js 1.95.5 dan 1.95.6 awal bulan Desember tahun ini, lebih banyak input dan ketergantungan eksternal akan secara signifikan meningkatkan kemungkinan terjadinya insiden keamanan. Dengan dirilisnya versi 2.x, tim pengembang Web3.js 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
menghubungkan
Dalam versi 1.x, Connection menyediakan banyak metode. Namun, fungsi inti adalah dengan mengonfigurasi alamat permintaan RPC untuk membuat pengirim permintaan, dan kemudian mengirim berbagai permintaan melalui pengirim tersebut.
Versi 2.x menggunakan pendekatan yang lebih fungsional untuk mencapai fungsi ini:
javascript
import { createSolanaRpcApi, createSolanaRpcSubscriptionsApi } from '@solana/web3.js';
Dalam kode ini, ketika kita memanggil sendAndConfirmTransaction untuk mengirim transaksi, secara otomatis akan memulai permintaan HTTPS, dan membangun koneksi WSS, berlangganan status transaksi, dan mengembalikan hash transaksi setelah transaksi dikonfirmasi.
pasangan kunci
Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami perubahan signifikan. 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 Web Crypto API JavaScript sebisa mungkin, menggunakan implementasi Ed25519 yang asli. Banyak metode di Web Crypto API bersifat asinkron. Namun, perubahan ini tidak sulit diterima, pada akhir tahun 2023 ini, para pengembang JavaScript sudah sangat akrab dengan Promise.
Kirim transaksi
Pengguna versi 1.x harus sangat familiar dengan dua kelas, Transaction dan VersionedTransaction. Dalam versi 2.x, kedua kelas ini tidak lagi ada.
Metode terkait Program Sistem yang disediakan dalam versi lama juga tidak ada lagi, jadi semua metode statis pada kelas SystemProgram perlu diimpor dari tempat lain.
Misalnya, perintah transfer sekarang perlu memanggil fungsi getTransferSolInstruction di @solana-program/system.
Karena tidak lagi menyediakan kelas, Web3.js menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah contoh implementasi fungsi transfer yang sebelumnya ada di versi 1.x menggunakan fungsi pipe:
javascript
import { pipe } from '@solana/functional';
import { getTransferSolInstruction } from '@solana/system-program';
import {
addSignatureToTransaction,
createTransaction,
getBase58SignerFromPrivateKey,
getSignatureFromSignedTransaction,
getTransactionMessage,
signTransaction,
] dari '@solana/transactions';
Dapat dilihat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang kami definisikan untuk menghasilkan fungsi tertentu, dan kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode telah meningkat, tetapi kustomisasinya menjadi lebih kuat.
Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksinya melalui langganan WSS RPC. Kita dapat merasakan bahwa cara baru ini sangat bergantung pada WSS, dan saya percaya aplikasi WSS di masa depan akan semakin luas, yang memang menuntut stabilitas layanan dari penyedia RPC.
React
Perlu dicatat bahwa proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook dengan fungsi bawaan seperti signIn.
Ringkasan
Rilis versi 2.x dari @solana/web3.js sepenuhnya mencerminkan komitmen tim Solana terhadap perkembangan dan perbaikan yang berkelanjutan. Ini memberikan kepada 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.
12 Suka
Hadiah
12
8
Bagikan
Komentar
0/400
SchrodingerWallet
· 10jam yang lalu
Biarkan para pro terlebih dahulu menjajal.
Lihat AsliBalas0
AirdropFatigue
· 20jam yang lalu
Hah, tidak ada pengaruh besar apakah pindah atau tidak.
Lihat AsliBalas0
DegenGambler
· 08-06 03:11
Akhirnya naik ke 2.0~hanya menonton pertunjukan
Lihat AsliBalas0
ser_we_are_ngmi
· 08-06 01:10
Apa bagusnya upgrade, 1.x sudah cukup.
Lihat AsliBalas0
LayerHopper
· 08-06 01:10
Seharusnya sudah diperbarui.
Lihat AsliBalas0
PumpAnalyst
· 08-06 00:55
Secara teknis, pembaruan versi ini ada yang aneh. Suckers yang lama tidak disarankan untuk terburu-buru melakukan upgrade.
Peluncuran besar versi 2.x dari Solana Web3.js dengan desain modular yang secara signifikan meningkatkan kinerja
Solana Web3.js 2.x versi: Pembaruan besar untuk pustaka JavaScript yang kuat
Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi merilis versi 2.x pada bulan November tahun ini. Dibandingkan dengan versi 1.x, versi baru ini membawa perubahan yang signifikan. Artikel ini akan memberikan gambaran umum tentang perubahan utamanya.
Meskipun versi 2.x baru saja diluncurkan dan penggunaannya belum meluas, banyak pustaka yang umum digunakan juga belum bermigrasi, tetapi memahami perubahan ini di muka tentu bermanfaat untuk persiapan upgrade di masa depan.
Perbandingan Versi
Tidak dapat disangkal, versi lama lebih sederhana dan langsung digunakan. Versi 1.x hanya memerlukan satu paket @solana/web3.js yang mencakup semua fungsionalitas, dengan desain berbasis kelas yang membungkus banyak operasi umum. Misalnya, kelas Connection menyediakan puluhan metode, hampir mencakup semua fungsionalitas yang dibutuhkan oleh pengembang.
Namun, desain ini juga membawa beberapa masalah. Meskipun fungsi yang sebenarnya digunakan oleh pengembang mungkin hanya sebagian kecil, seluruh kode sumber akan diunduh ke perangkat pengguna, yang dapat menyebabkan waktu muat yang lebih lama.
Sebagai perbandingan, versi 2.x mengadopsi pendekatan desain modular. Tim resmi membagi repositori kode yang ada menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, dan sebagainya. Sementara itu, versi baru meninggalkan implementasi berbasis kelas dan beralih ke pendekatan fungsi tunggal, yang membantu dalam optimasi saat membangun kode JavaScript. Kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna.
Menurut statistik dari dokumen resmi, menggunakan versi baru DApp biasanya dapat mencapai sekitar 30% optimasi ukuran kode. Jika hanya menggunakan sedikit fitur, rasio optimasi mungkin lebih tinggi.
Perubahan ini mengharuskan tim Solana untuk meningkatkan kualitas dokumentasi. Bagaimana membantu pengembang dengan cepat menemukan fungsi yang dibutuhkan menjadi masalah kunci. Saat ini, nama paket memiliki makna yang cukup baik, sehingga dari namanya saja kita bisa memahami kegunaannya, yang pada gilirannya mengurangi kesulitan migrasi bagi pengembang.
Namun, karena versi baru baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh-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 dokumen kurang menggambarkan hal ini, yang mungkin membuat beberapa pengembang merasa bingung.
Fitur penting lainnya dari versi 2.x adalah ketergantungan nol. Ini mungkin tidak penting bagi banyak pengguna, tetapi berdasarkan serangan rantai pasokan yang terjadi pada versi @solana/web3.js 1.95.5 dan 1.95.6 awal bulan Desember tahun ini, lebih banyak input dan ketergantungan eksternal akan secara signifikan meningkatkan kemungkinan terjadinya insiden keamanan. Dengan dirilisnya versi 2.x, tim pengembang Web3.js 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
menghubungkan
Dalam versi 1.x, Connection menyediakan banyak metode. Namun, fungsi inti adalah dengan mengonfigurasi alamat permintaan RPC untuk membuat pengirim permintaan, dan kemudian mengirim berbagai permintaan melalui pengirim tersebut.
Versi 2.x menggunakan pendekatan yang lebih fungsional untuk mencapai fungsi ini:
javascript import { createSolanaRpcApi, createSolanaRpcSubscriptionsApi } from '@solana/web3.js';
const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });
const { sendAndConfirmTransaction } = rpc;
Dalam kode ini, ketika kita memanggil sendAndConfirmTransaction untuk mengirim transaksi, secara otomatis akan memulai permintaan HTTPS, dan membangun koneksi WSS, berlangganan status transaksi, dan mengembalikan hash transaksi setelah transaksi dikonfirmasi.
pasangan kunci
Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami perubahan signifikan. 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 Web Crypto API JavaScript sebisa mungkin, menggunakan implementasi Ed25519 yang asli. Banyak metode di Web Crypto API bersifat asinkron. Namun, perubahan ini tidak sulit diterima, pada akhir tahun 2023 ini, para pengembang JavaScript sudah sangat akrab dengan Promise.
Kirim transaksi
Pengguna versi 1.x harus sangat familiar dengan dua kelas, Transaction dan VersionedTransaction. Dalam versi 2.x, kedua kelas ini tidak lagi ada.
Metode terkait Program Sistem yang disediakan dalam versi lama juga tidak ada lagi, jadi semua metode statis pada kelas SystemProgram perlu diimpor dari tempat lain.
Misalnya, perintah transfer sekarang perlu memanggil fungsi getTransferSolInstruction di @solana-program/system.
Karena tidak lagi menyediakan kelas, Web3.js menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah contoh implementasi fungsi transfer yang sebelumnya ada di versi 1.x menggunakan fungsi pipe:
javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { addSignatureToTransaction, createTransaction, getBase58SignerFromPrivateKey, getSignatureFromSignedTransaction, getTransactionMessage, signTransaction, ] dari '@solana/transactions';
const transaction = pipe( createTransaction(), addSignatureToTransaction(getTransferSolInstruction({})), );
const signedTransaction = signTransaction(transaction, [signer]); const signature = getSignatureFromSignedTransaction(signedTransaction); const message = getTransactionMessage(signedTransaction);
const txid = await sendAndConfirmTransaction({ signedTransaction });
Dapat dilihat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang kami definisikan untuk menghasilkan fungsi tertentu, dan kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode telah meningkat, tetapi kustomisasinya menjadi lebih kuat.
Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksinya melalui langganan WSS RPC. Kita dapat merasakan bahwa cara baru ini sangat bergantung pada WSS, dan saya percaya aplikasi WSS di masa depan akan semakin luas, yang memang menuntut stabilitas layanan dari penyedia RPC.
React
Perlu dicatat bahwa proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook dengan fungsi bawaan seperti signIn.
Ringkasan
Rilis versi 2.x dari @solana/web3.js sepenuhnya mencerminkan komitmen tim Solana terhadap perkembangan dan perbaikan yang berkelanjutan. Ini memberikan kepada pengembang cara yang efisien, fleksibel, dan dapat disesuaikan untuk berinteraksi dengan jaringan Solana, yang membantu mendorong adopsi dan perkembangan platform tersebut.