Pembaruan besar versi 2.x Solana Web3.js, pemisahan fungsi dan optimasi kinerja

robot
Pembuatan abstrak sedang berlangsung

Solana Web3.js Versi 2.x: Pemisahan Fitur dan Optimasi Kinerja

Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, merilis versi 2.x pada bulan November tahun ini. Versi baru ini mengalami perubahan yang signifikan dibandingkan dengan 1.x, artikel ini akan merangkum perubahan utamanya.

Meskipun versi 2.x baru saja dirilis dan penggunaannya masih rendah, banyak pustaka yang banyak digunakan juga belum beralih, tetapi memahami perubahan ini sangat membantu untuk pekerjaan migrasi di masa depan.

Perbandingan Versi

Versi lama relatif lebih sederhana untuk digunakan, hanya dengan satu paket @solana/web3.js yang mencakup semuanya. Ini didasarkan pada desain kelas, membungkus banyak operasi umum. Misalnya, kelas Connection menyediakan puluhan metode, hampir mencakup semua fungsi yang dibutuhkan pengembang.

Namun, desain ini juga membawa beberapa masalah. Bahkan jika pengembang hanya menggunakan sebagian kecil dari fungsinya, seluruh repositori kode akan diunduh ke perangkat pengguna, dan karena jumlah kode dalam pustaka cukup besar, ini mungkin menyebabkan waktu pemuatan yang cukup lama.

Versi 2.x mengambil 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 lain-lain. Sementara itu, versi baru mengabaikan implementasi berbasis kelas dan lebih banyak menggunakan cara 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 dari dokumentasi resmi, DApp yang menggunakan versi baru biasanya dapat mencapai sekitar 30% pengoptimalan ukuran, jika hanya menggunakan sebagian kecil dari fungsionalitas, proporsi pengoptimalan mungkin lebih tinggi.

Perubahan ini juga memberikan tantangan bagi pekerjaan dokumentasi tim Solana, bagaimana agar pengembang dapat dengan cepat menemukan fungsi yang diperlukan menjadi masalah penting. Saat ini, nama paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami secara garis besar kegunaannya, 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 masih sedikit. Versi baru cenderung menggunakan fungsi bawaan runtime (seperti menghasilkan pasangan kunci), tetapi deskripsi tentang bagian-bagian ini dalam dokumentasi masih kurang, yang mungkin membuat pengembang merasa bingung.

Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. Ini mungkin tidak begitu penting bagi banyak pengguna, tetapi melihat serangan rantai pasokan yang terjadi pada awal Desember tahun ini di versi @solana/web3.js 1.95.5 dan 1.95.6, lebih banyak input dan ketergantungan eksternal akan secara signifikan meningkatkan kemungkinan terjadinya insiden keamanan. Dengan peluncuran versi 2.x, tim pengembang Web3.js memutuskan untuk lebih banyak menggunakan fungsi bawaan, menghilangkan ketergantungan eksternal dan pengenalan Polyfills. Meskipun mungkin ada perubahan di masa depan, saat ini versi 2.x telah menghilangkan semua ketergantungan eksternal.

Web3 Pemula Series: Sekarang Upgrade @solana/web3.js 2.x untuk Memulai Pemrograman Fungsional

Titik Perubahan Penting

terhubung

Pada versi 1.x, kelas Connection menyediakan banyak metode. Namun, fungsi utamanya adalah membuat pengirim permintaan dengan mengonfigurasi alamat permintaan RPC, dan kemudian mengirim berbagai permintaan melalui pengirim tersebut.

Versi 2.x mengadopsi pendekatan yang lebih fungsional untuk menerapkan fitur ini. Misalnya, ketika memanggil sendAndConfirmTransaction untuk mengirim transaksi, akan secara otomatis menginisiasi 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 privat juga mengalami perubahan besar. Kelas Keypair dan PublicKey yang umum digunakan dalam versi 1.x tidak lagi ada, digantikan oleh beberapa fungsi.

Misalnya, Anda dapat menggunakan await generateKeyPair() untuk menghasilkan pasangan kunci, alih-alih 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 asli. Banyak metode Web Crypto API bersifat asinkron. Namun, perubahan ini tidak sulit diterima, pada akhir tahun 2024 ini, pengembang JavaScript sudah sangat akrab dengan Promise.

Kirim transaksi

Kelas Transaction dan VersionedTransaction yang ada di versi 1.x tidak lagi ada di versi 2.x.

Metode terkait System Program yang disediakan dalam versi lama juga tidak ada lagi, sehingga semua metode statis di kelas SystemProgram perlu diimpor dari tempat lain. Misalnya, instruksi transfer perlu memanggil fungsi getTransferSolInstruction dari @solana-program/system.

Karena tidak lagi menyediakan kelas, Web3.js menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Pengembang dapat menggunakan fungsi pipe untuk mengimplementasikan fungsi transfer yang sebelumnya ada di versi 1.x.

Perlu dicatat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang ditentukan oleh pengembang untuk menghasilkan fungsi khusus, kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode telah meningkat, tetapi kustomisasi menjadi lebih kuat.

Transaksi dimulai melalui HTTPS RPC, kemudian konfirmasi hasil transaksi dilakukan melalui langganan WSS RPC. Dapat dirasakan bahwa cara baru ini sangat bergantung pada WSS, dan percaya bahwa aplikasi WSS di masa depan akan semakin luas, yang juga menuntut stabilitas layanan dari penyedia RPC yang lebih tinggi.

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 mencerminkan komitmen tim Solana untuk terus berkembang dan memperbaiki. Ini memberikan pengembang cara yang efisien, fleksibel, dan dapat disesuaikan untuk berinteraksi dengan jaringan Solana, yang membantu mendorong adopsi dan perkembangan platform tersebut.

Web3 Pemula Series: Sekarang Upgrade @solana/web3.js 2.x untuk Memulai Pemrograman Fungsional

SOL1.66%
Lihat Asli
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.
  • Hadiah
  • 4
  • Bagikan
Komentar
0/400
SignatureVerifiervip
· 15jam yang lalu
smh... rilis terburu-buru lainnya yang memerlukan audit keamanan yang ekstensif
Lihat AsliBalas0
BearMarketSurvivorvip
· 15jam yang lalu
Semakin optimal kinerja, semakin banyak suckers.
Lihat AsliBalas0
AlwaysAnonvip
· 15jam yang lalu
Oh, akhirnya upgrade!
Lihat AsliBalas0
DefiPlaybookvip
· 15jam yang lalu
Berdasarkan kurva prediksi pertumbuhan TVL, setelah optimasi arsitektur modular 2.x, peningkatan kinerja mencapai 27,8%
Lihat AsliBalas0
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)