Analisis Peningkatan Solana Web3.js 2.0: Desain Modular Meningkatkan Kinerja dan Keamanan

Solana Web3.js Versi 2.x: Penjelasan Peningkatan Perpustakaan JavaScript yang Kaya Fitur

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 banyak perubahan signifikan. Artikel ini akan menganalisis secara ringkas perubahan utama tersebut.

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

Perbandingan Versi

Penggunaan versi 1.x relatif sederhana. Ini hanya mencakup satu paket: @solana/web3.js, semua fungsi terpusat di dalamnya. Desain berbasis kelas membungkus sejumlah besar operasi umum, seperti kelas Connection yang 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, dan karena jumlah kode dalam pustaka yang besar, ini dapat memakan waktu.

Versi 2.x mengambil pendekatan 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. Sementara itu, versi baru ini meninggalkan implementasi berbasis kelas dan lebih banyak menggunakan pendekatan 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 dokumentasi resmi, DApp yang menggunakan versi baru biasanya dapat mencapai optimasi ukuran kode sebesar 30%, dan jika hanya menggunakan sedikit fitur, rasio optimasi mungkin lebih tinggi.

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

Perubahan ini meningkatkan tuntutan kualitas dokumentasi untuk tim Solana. Bagaimana membantu pengembang dengan cepat menemukan fungsi yang diperlukan menjadi masalah kunci. Saat ini, nama paket memiliki semantik yang baik, sehingga dari namanya saja kita dapat memahami secara kasar 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 relatif sedikit. Selain itu, versi baru cenderung menggunakan fitur bawaan runtime (seperti menghasilkan pasangan kunci), tetapi dokumentasi kurang menjelaskan bagian-bagian ini secara rinci, yang menyebabkan beberapa aspek membingungkan bagi pengembang.

Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. Meskipun ini mungkin bukan yang terpenting bagi banyak pengguna, melihat 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 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

menghubungkan

Di versi 1.x, kelas Connection menyediakan banyak metode. Meskipun fungsinya yang utama adalah untuk membuat pengirim permintaan melalui konfigurasi alamat permintaan RPC, kemudian mengirim berbagai permintaan melalui pengirim tersebut.

Versi 2.x menggunakan pendekatan yang lebih fungsional untuk mengimplementasikan fitur ini:

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

const rpc = createSolanaRpc("");

Saat memanggil sendAndConfirmTransaction untuk mengirim transaksi, sistem secara otomatis akan 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 privat juga mengalami perubahan besar. Dua kelas yang biasa digunakan dalam versi 1.x, Keypair dan PublicKey, tidak lagi ada, digantikan oleh beberapa fungsi.

Misalnya, sekarang Anda dapat menggunakan await generateKeyPair() untuk menghasilkan pasangan kunci, bukan Keypair.generate() yang sebelumnya.

Perlu dicatat bahwa generateKeyPair yang baru mengembalikan sebuah Promise, bukan langsung mengembalikan pasangan kunci. Ini karena implementasi baru memanfaatkan Web Crypto API JavaScript sebisa mungkin, menggunakan implementasi Ed25519 asli. Banyak metode di Web Crypto API bersifat asinkron. Namun, perubahan ini tidaklah tidak dapat diterima, pada akhir tahun 2024 ini, para pengembang JavaScript sudah sangat familiar dengan Promise.

kirim transaksi

Pengguna versi 1.x pasti sudah sangat familiar dengan dua kelas Transaction dan VersionedTransaction. Dalam versi 2.x, kedua kelas ini tidak lagi ada.

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

Misalnya, instruksi 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 awalnya ada di 1.x menggunakan fungsi pipe:

javascript import { pipe } from '@solana/functional'; import { generateKeyPair } from '@solana/web3.js'; import { getTransferSolInstruction } from '@solana/system-program'; import { createTransaction } from '@solana/transactions';

const transaction = pipe( createTransaction(), addInstruction(getTransferSolInstruction({ fromPubkey: sender.publicKey, toPubkey: penerima, lamports: jumlah, })), setRecentBlockhash(blockhash), addSigners([sender]) );

const signature = await rpc.sendAndConfirmTransaction(transaction);

Dapat dilihat bahwa transaksi tidak lagi dimulai melalui Connection, melainkan melalui RPC Provider yang kami definisikan untuk menghasilkan fungsi tertentu, lalu 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 melalui langganan WSS RPC untuk hasil transaksi. Dapat dirasakan bahwa cara baru ini sangat bergantung pada WSS, dan saya percaya bahwa penggunaan WSS di masa depan akan semakin luas, yang juga menuntut stabilitas layanan yang lebih tinggi dari penyedia RPC.

React

Menariknya, 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 secara penuh 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 pengembangan platform tersebut. Meskipun saat ini penggunaannya tidak tinggi, seiring berjalannya waktu, diyakini akan ada semakin banyak proyek yang bermigrasi ke versi baru ini.

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

SOL-1.12%
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
BearMarketSurvivorvip
· 14jam yang lalu
Laporan Front: Peningkatan seolah-olah merupakan tembakan pertama yang terdengar di sebuah sarang kosong.
Lihat AsliBalas0
OPsychologyvip
· 14jam yang lalu
Jangan terburu-buru untuk mengganti jika pembaruan belum stabil.
Lihat AsliBalas0
RugResistantvip
· 14jam yang lalu
hmm potensi hotspot keamanan terdeteksi... perlu audit menyeluruh sejujurnya
Lihat AsliBalas0
mev_me_maybevip
· 14jam yang lalu
Ah, Solana juga mulai bermain dengan modularitas.
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)