Peluncuran versi 2.x Solana Web3.js: Pemisahan fungsi dan optimasi kinerja

Solana Web3.js versi 2.x: Pemisahan Fitur dan Optimasi Performa

Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi meluncurkan versi 2.x pada bulan November. Dibandingkan dengan versi 1.x, versi baru ini mengalami perubahan yang cukup besar. Artikel ini akan merangkum perubahan utamanya.

Meskipun versi 2.x baru saja dirilis dan penggunaannya belum umum, banyak pustaka yang banyak digunakan juga belum melakukan migrasi, tetapi memahami perubahan ini akan membantu dalam pekerjaan migrasi di masa depan.

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

Perbandingan Versi

Versi lama relatif mudah digunakan, hanya mencakup satu paket @solana/web3.js, semua fungsionalitas terpusat di dalamnya. Ini didasarkan pada desain kelas, membungkus banyak operasi umum. Misalnya, kelas Connection menyediakan puluhan metode yang hampir mencakup semua fungsionalitas yang diperlukan pengembang. Selain itu, banyak kode contoh yang disediakan dalam buku masak Solana juga memberikan kemudahan bagi pengembang.

Namun, desain ini juga membawa beberapa masalah. Meskipun fitur yang sebenarnya digunakan oleh pengembang mungkin hanya merupakan sebagian kecil, seluruh kode sumber akan diunduh ke perangkat pengguna, dan karena jumlah kode dalam pustaka cukup besar, ini dapat memakan waktu tertentu.

Versi 2.x mengadopsi strategi yang berbeda. Tim resmi membagi repositori kode asli menjadi beberapa modul yang lebih 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 lebih banyak menggunakan pendekatan fungsi tunggal. Perubahan ini menguntungkan 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 dapat memperoleh optimasi ukuran sekitar 30%, dan jika hanya menggunakan sedikit fitur, rasio optimasi mungkin lebih tinggi.

Perubahan ini menuntut kualitas dokumentasi yang lebih tinggi dari tim Solana, dan bagaimana membuat pengembang cepat menemukan fungsi yang diperlukan menjadi topik yang penting. Saat ini, nama paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami secara umum kegunaannya, yang dalam beberapa hal mengurangi tingkat kesulitan migrasi bagi pengembang.

Karena versi baru 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 ini dalam dokumentasi kurang, menyebabkan developer mungkin merasa bingung di beberapa tempat.

Fitur penting lainnya dari versi 2.x adalah ketergantungan nol. Meskipun ini mungkin tidak terlalu penting bagi banyak pengguna, mengingat 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 eksternal dan ketergantungan akan secara signifikan meningkatkan kemungkinan terjadinya insiden keamanan. Dengan dirilisnya versi 2.x, tim pengembang Web3.js memutuskan untuk lebih banyak menggunakan fitur bawaan, menghilangkan ketergantungan eksternal dan pengenalan Polyfills. Meskipun mungkin akan 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. Fungsi utamanya adalah untuk membuat pengirim permintaan dengan mengonfigurasi alamat permintaan RPC, lalu mengirim berbagai permintaan melalui pengirim tersebut.

Versi 2.x menggunakan pendekatan yang lebih fungsional untuk implementasi:

javascript import { createSolanaRpc } from "@solana/web3.js";

const rpc = createSolanaRpc("");

Saat memanggil sendAndConfirmTransaction untuk mengirim transaksi, akan secara otomatis menginisiasi permintaan HTTPS dan membuat 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 perubahan yang cukup besar. 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.

generateKeyPair yang baru mengembalikan Promise, ini karena implementasi baru memanfaatkan Web Crypto API JavaScript sebisa mungkin, menggunakan implementasi Ed25519 native. Banyak metode Web Crypto API bersifat asinkron. Namun, perubahan ini seharusnya tidak terlalu menyulitkan bagi pengembang JavaScript yang sudah familiar dengan Promise.

Kirim transaksi

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

Metode terkait System Program yang disediakan dalam versi lama juga tidak lagi ada, metode statis pada kelas SystemProgram perlu diimpor dari tempat lain.

Misalnya, instruksi transfer perlu memanggil fungsi getTransferSolInstruction dari @solana-program/system.

Karena tidak lagi menyediakan class, Web3.js menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah contoh penggunaan fungsi pipe untuk mengimplementasikan fungsi transfer yang sebelumnya ada di versi 1.x:

javascript import { pipe } from "@solana/functional"; import { getTransferSolInstruction } from "@solana/system"; import { createSolanaRpc, kirimTransaksi, setTransactionFeePayer, createTransaction, appendTransactionInstruction, } dari "@solana/web3.js";

const rpc = createSolanaRpc("");

const transaction = pipe( createTransaction(), setTransactionFeePayer(payer.address), appendTransactionInstruction( getTransferSolInstruction({ fromAddress: payer.address, toAddress: recipient, jumlah, }) ) );

const signature = await sendTransaction(rpc, transaction, [payer]);

Dibandingkan dengan versi 1.x, jumlah kode telah meningkat, tetapi kustomisasi lebih kuat.

Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi melalui langganan WSS RPC untuk hasil transaksi. Metode baru ini memiliki ketergantungan yang lebih tinggi pada WSS, yang juga menuntut stabilitas layanan dari penyedia RPC yang lebih tinggi.

React

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 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.

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

Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Hadiah
  • 7
  • Bagikan
Komentar
0/400
BlindBoxVictimvip
· 07-10 20:02
Kapan selesai proyek pertama baru bicara... sudah capek melihatnya
Lihat AsliBalas0
ForeverBuyingDipsvip
· 07-10 17:13
Sekarang harus pindah batu lagi ya
Lihat AsliBalas0
airdrop_huntressvip
· 07-10 07:51
Pembaruan cepat, tetapi apakah bug ini bisa diperbaiki?
Lihat AsliBalas0
DefiEngineerJackvip
· 07-10 07:47
*sebenarnya* modulasi itu tidak sepele... peningkatan kinerja terlihat menjanjikan tetapi tampilkan saya benchmarknya ser
Lihat AsliBalas0
GateUser-75ee51e7vip
· 07-10 07:44
sol saudara ini akan mendapatkan peningkatan besar lagi ya
Lihat AsliBalas0
SelfCustodyIssuesvip
· 07-10 07:41
Apa optimisasi yang rusak ini, harus menulis ulang kode lagi.
Lihat AsliBalas0
GlueGuyvip
· 07-10 07:28
Ah, sudah diperbarui, baiklah. Mari kita lihat apakah banyak celah.
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)