Solana Web3.js versi 2.x: Peningkatan besar dalam desain modular dan pemrograman fungsional

robot
Pembuatan abstrak sedang berlangsung

Solana Web3.js 2.x versi: Pengalaman pemrograman fungsional yang sepenuhnya baru

Solana Web3.js sebagai pustaka JavaScript yang kaya fitur, secara resmi merilis versi 2.x pada bulan November tahun ini. Dibandingkan dengan 1.x, versi baru ini membawa serangkaian perubahan besar, artikel ini akan merangkum perubahan utamanya.

Meskipun versi 2.x baru saja dirilis dan penggunaan masih belum umum, banyak pustaka yang banyak digunakan juga belum bermigrasi. Namun, memahami perubahan ini di awal akan sangat bermanfaat untuk pekerjaan migrasi di masa depan.

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

Perbandingan Versi

Tidak dapat disangkal, versi lama lebih sederhana dan langsung digunakan. Versi 1.x hanya terdiri dari satu paket @solana/web3.js, semua fungsi terpusat di dalamnya. Ini didasarkan pada desain kelas, membungkus banyak operasi yang umum digunakan. Misalnya, kelas Connection menyediakan puluhan metode yang hampir mencakup semua fungsi yang dibutuhkan pengembang. Selain itu, contoh kode yang kaya dalam buku masak Solana juga memberikan kemudahan besar bagi pengembang.

Namun, desain ini juga membawa beberapa masalah: meskipun fungsi yang sebenarnya digunakan oleh pengembang mungkin hanya sebagian kecil, seluruh pustaka kode akan diunduh ke perangkat pengguna, dan karena jumlah kode pustaka yang besar, ini dapat menyebabkan waktu pemuatan yang cukup 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 lainnya. Sementara itu, versi baru meninggalkan implementasi berbasis kelas dan beralih ke penggunaan fungsi tunggal, yang sangat membantu dalam mengoptimalkan pembangunan 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 umumnya dapat mencapai optimasi ukuran sebesar 30%, dan jika hanya menggunakan sedikit fitur, rasio optimasi bisa lebih tinggi.

Perubahan ini juga meningkatkan tuntutan terhadap kualitas dokumentasi tim Solana. Bagaimana cara membuat pengembang dengan cepat menemukan fungsi yang dibutuhkan menjadi masalah kunci. Saat ini, tampaknya penamaan setiap paket memiliki semantik yang baik, sehingga dari namanya saja dapat diperkirakan kegunaannya, yang pada gilirannya mengurangi kesulitan migrasi bagi pengembang.

Namun, karena versi baru baru saja dirilis, banyak proyek yang belum menyelesaikan migrasi. Contoh tentang versi 2.x di Solana Cookbook juga relatif terbatas. Selain itu, versi baru cenderung menggunakan fungsi bawaan runtime (seperti menghasilkan pasangan kunci), tetapi deskripsi tentang bagian-bagian ini dalam dokumentasi tidak cukup rinci, yang dapat membuat pengembang merasa bingung.

Fitur penting lainnya dari versi 2.x adalah ketergantungan nol. Hal ini mungkin tidak terlalu berdampak pada pengguna biasa, tetapi melihat serangan rantai pasokan yang terjadi pada awal Desember tahun ini di versi @solana/web3.js 1.95.5 dan 1.95.6, terlalu banyak input dan ketergantungan eksternal dapat secara signifikan meningkatkan risiko kejadian keamanan. Dengan rilis versi 2.x, tim pengembang Web3.js memutuskan untuk lebih memanfaatkan fitur bawaan, mengurangi 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, kelas Connection menyediakan banyak metode. Namun, fungsi intinya tetap untuk membuat pengirim permintaan dengan mengonfigurasi alamat permintaan RPC, dan kemudian mengirim berbagai permintaan melalui pengirim tersebut.

Versi 2.x menggunakan cara yang lebih fungsional untuk mengimplementasikan fungsi ini:

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

const rpc = createSolanaRpc("");

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

pasangan kunci

Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami perubahan besar. Kelas Keypair dan PublicKey yang biasa digunakan dalam versi 1.x tidak lagi ada, 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 asli. Banyak metode dari Web Crypto API bersifat asinkron. Namun, bagi pengembang JavaScript yang akrab dengan Promise, perubahan ini seharusnya tidak sulit untuk diadaptasi.

kirim transaksi

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

Metode terkait Program Sistem yang disediakan dalam versi lama juga tidak ada lagi, 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 penerapan fungsi pipe untuk mengimplementasikan fungsi transfer yang sebelumnya ada di 1.x:

javascript import { pipe } from "@solana/web3.js"; import { getTransferSolInstruction } from "@solana/system-program";

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ fromPubkey: pengirim, toPubkey: penerima, lamports: jumlah })) );

const signature = await sendAndConfirmTransaction(rpc, transaction, [senderKeypair]);

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 kustomisasi 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 percaya bahwa aplikasi WSS di masa depan akan semakin luas, yang juga menuntut stabilitas layanan dari penyedia RPC.

Dukungan React

Perlu dicatat bahwa dalam proyek @solana/web3.js juga terdapat sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook dengan fungsi bawaan seperti signIn.

Ringkasan

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

Web3 Pemula Series: 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
  • 5
  • Bagikan
Komentar
0/400
RugPullSurvivorvip
· 16jam yang lalu
Mengubah sama saja dengan tidak mengubah... lebih baik menulis ulang semuanya.
Lihat AsliBalas0
Degen4Breakfastvip
· 16jam yang lalu
Akhirnya mulai bergerak
Lihat AsliBalas0
digital_archaeologistvip
· 16jam yang lalu
Drop ketergantungan pada ulasan baik
Lihat AsliBalas0
AirdropHunterWangvip
· 16jam yang lalu
Cuma ini? Fungsinya masih kurang baik?
Lihat AsliBalas0
metaverse_hermitvip
· 16jam yang lalu
Ah, migrasi ini benar-benar membuat pusing.
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)