Solana Web3.js 2.x dirilis: Desain modular mengoptimalkan kinerja dan meningkatkan keamanan

robot
Pembuatan abstrak sedang berlangsung

Solana Web3.js Versi 2.x: Pembaruan Besar untuk Perpustakaan JavaScript yang Kaya Fitur

Solana Web3.js sebagai pustaka JavaScript yang kuat, secara resmi merilis versi 2.x pada bulan November. Versi baru ini memiliki perubahan signifikan dibandingkan dengan 1.x, artikel ini akan memberikan gambaran mengenai perubahan utamanya.

Meskipun versi 2.x baru saja diluncurkan dan tingkat penggunaannya belum merata, banyak pustaka dengan penggunaan tinggi juga belum beralih. Namun, memahami perubahan ini sangat membantu untuk pekerjaan migrasi di masa depan.

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

Perbandingan Versi

Versi 1.x relatif mudah digunakan, hanya perlu mengimpor paket tunggal @solana/web3.js. Ini didasarkan pada desain berbasis kelas, mengemas banyak operasi yang umum digunakan. Misalnya, kelas Connection menyediakan puluhan metode, hampir mencakup semua fungsi yang dibutuhkan oleh pengembang.

Namun, desain ini juga membawa beberapa masalah. Meskipun pengembang biasanya hanya menggunakan sebagian kecil dari fungsionalitas tersebut, seluruh kode sumber akan diunduh ke perangkat pengguna, yang dapat menyebabkan waktu muat yang lebih lama.

Versi 2.x mengambil pendekatan yang berbeda. Tim resmi memecah kode sumber yang ada menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, dan lain-lain. Pada saat yang sama, mereka meninggalkan implementasi berbasis kelas dan beralih ke penggunaan fungsi tunggal. Perubahan ini menguntungkan untuk optimasi saat membangun kode JavaScript, kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna.

Menurut statistik dari dokumen resmi, penggunaan versi baru dari DApp biasanya dapat mencapai optimasi ukuran sebesar 30%. Jika hanya menggunakan sedikit fungsi, rasio optimasi mungkin lebih tinggi.

Perubahan ini memberikan tantangan baru bagi tim Solana dalam penulisan dokumentasi, bagaimana cara agar pengembang dapat dengan cepat menemukan fungsi yang dibutuhkan menjadi masalah kunci. Saat ini, nama paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami kegunaannya secara umum, yang pada tingkat tertentu mengurangi kesulitan migrasi bagi pengembang.

Karena versi baru baru saja dirilis, banyak proyek belum melakukan migrasi. Saat ini, contoh versi 2.x relatif sedikit. Selain itu, karena versi baru cenderung menggunakan fungsi bawaan runtime (seperti menghasilkan pasangan kunci), dokumentasi kurang deskripsi terkait, yang mungkin membuat beberapa pengembang merasa bingung.

Fitur penting lainnya dari versi 2.x adalah ketergantungan nol. Ini mungkin tidak terlalu penting bagi banyak pengguna, tetapi mengingat serangan rantai pasokan yang terjadi pada versi @solana/web3.js 1.95.5 dan 1.95.6 pada awal bulan Desember tahun ini, mengurangi ketergantungan eksternal dapat secara signifikan mengurangi kemungkinan terjadinya insiden keamanan. Dengan dirilisnya 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.

Poin Perubahan Penting

terhubung

Pada versi 1.x, kelas Connection menyediakan banyak metode. Sedangkan di 2.x, pendekatan yang lebih fungsional diadopsi untuk implementasinya:

javascript import { createSolanaRpcApi } from '@solana/web3.js';

const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

// Mengirim transaksi menggunakan rpc const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);

Saat memanggil sendAndConfirmTransaction untuk mengirim transaksi, secara otomatis akan menginisiasi permintaan HTTPS dan membangun koneksi WSS untuk berlangganan status transaksi, dan setelah transaksi dikonfirmasi, akan mengembalikan hash transaksi.

pasangan kunci

Dalam versi 2.x, kelas Keypair dan PublicKey yang umum digunakan di versi 1.x tidak ada lagi, dan digantikan oleh beberapa fungsi. Misalnya, Anda dapat menggunakan await generateKeyPair() untuk menghasilkan pasangan kunci, bukan Keypair.generate() yang sebelumnya.

generateKeyPair yang baru mengembalikan Promise, ini karena implementasi baru memanfaatkan API Web Crypto JavaScript sebanyak mungkin, menggunakan implementasi Ed25519 asli. Banyak metode dari API Web Crypto bersifat asinkron.

Kirim transaksi

Dalam versi 2.x, kelas Transaction dan VersionedTransaction tidak ada lagi. Metode terkait System Program juga tidak ada, dan perlu diimpor dari tempat lain. Misalnya, instruksi transfer perlu memanggil fungsi getTransferSolInstruction di @solana-program/system.

Versi baru menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah implementasi fungsi transfer yang sebelumnya ada di 1.x menggunakan fungsi pipe:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { addSignatureToTransaction, createTransaction, sendAndConfirmTransaction, } dari '@solana/web3.js';

const transferSol = pipe( // Buat transaksi (ix) => createTransaction({ instructions: [ix] }), // Tambahkan tanda tangan (tx) => addSignatureToTransaction(tx, signer), // Kirim dan konfirmasi transaksi (signedTx) => sendAndConfirmTransaction(rpc, signedTx) );

const signature = await transferSol( getTransferSolInstruction({ dari: pengirim, kepada: penerima, jumlah, }) );

Dibandingkan dengan versi 1.x, jumlah kode telah meningkat, tetapi kustomisasi menjadi lebih kuat. Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksinya melalui langganan WSS RPC.

Dukungan React

Proyek @solana/web3.js juga mencakup perpustakaan bernama @solana/react, yang menyediakan beberapa React Hook, dengan fungsi bawaan seperti signIn.

Ringkasan

Peluncuran versi 2.x dari @solana/web3.js menunjukkan tekad tim Solana untuk terus melakukan perbaikan. Versi baru ini memberikan pengembang cara interaksi dengan jaringan Solana yang efisien, fleksibel, dan dapat disesuaikan, yang diharapkan dapat mendorong adopsi dan pengembangan platform tersebut.

Web3 pemula seri: sekarang upgrade @solana/web3.js 2.x untuk memulai pemrograman fungsional

SOL7.79%
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
  • 6
  • Bagikan
Komentar
0/400
LiquidityHuntervip
· 2jam yang lalu
Optimasi modul... tetapi hambatan kinerja masih di ambang 85%
Lihat AsliBalas0
OnchainFortuneTellervip
· 19jam yang lalu
Melihat wajah BTC adalah penipuan.
Lihat AsliBalas0
NoodlesOrTokensvip
· 19jam yang lalu
Akhirnya diperbarui, bertele-tele.
Lihat AsliBalas0
SandwichTradervip
· 19jam yang lalu
Kenapa berlari begitu cepat? Apakah arsitekturnya panik?
Lihat AsliBalas0
staking_grampsvip
· 19jam yang lalu
Wow, sedikit sekali ingin belajar
Lihat AsliBalas0
AirdropHunter007vip
· 20jam yang lalu
Datang terlambat lagi! Minta Airdrop...
Lihat AsliBalas0
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)