Solana Web3.js 2.x dirilis: peningkatan besar dalam pemrograman fungsional dan optimasi kinerja

Solana Web3.js 2.x versi: Bab Baru Pemrograman Fungsional

Solana Web3.js sebagai sebuah pustaka JavaScript yang kaya fitur, secara resmi meluncurkan versi 2.x pada bulan November tahun ini. Dibandingkan dengan 1.x, versi baru ini membawa perubahan yang signifikan, artikel ini akan memberikan ringkasan tentang pembaruan utamanya.

Meskipun versi 2.x baru saja dirilis dan penggunaannya masih rendah, banyak pustaka yang banyak digunakan juga belum bermigrasi, tetapi memahami perubahan ini akan sangat bermanfaat untuk peningkatan proyek di masa depan.

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

Perbandingan Versi

Penggunaan versi 1.x relatif sederhana. Ini hanya mencakup satu paket utama: @solana/web3.js, yang mengintegrasikan semua fungsionalitas di dalamnya. Versi ini didasarkan pada desain kelas, membungkus banyak operasi yang umum digunakan. Misalnya, kelas Connection menyediakan puluhan metode yang hampir mencakup semua fungsi yang dibutuhkan oleh pengembang.

Namun, desain ini juga membawa beberapa masalah. Meskipun fungsi yang sebenarnya digunakan oleh pengembang mungkin hanya sebagian kecil dari keseluruhan, seluruh kode pustaka akan diunduh ke perangkat pengguna, yang dapat menyebabkan waktu pemuatan yang lebih lama.

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 lain-lain. Versi baru ini meninggalkan implementasi berbasis kelas dan beralih ke metode fungsi tunggal, yang menguntungkan untuk optimasi saat membangun kode JavaScript. Kode yang tidak digunakan akan dihapus dan sebenarnya tidak akan diunduh ke perangkat pengguna. Menurut statistik dari dokumentasi resmi, DApp yang menggunakan versi baru biasanya dapat mencapai optimasi ukuran hingga 30%, dan jika hanya menggunakan sedikit fitur, proporsi optimasinya bisa lebih tinggi.

Perubahan ini telah meningkatkan tuntutan kualitas dokumentasi bagi tim Solana. Bagaimana cara membantu pengembang dengan cepat menemukan fungsi yang dibutuhkan menjadi masalah kunci. Saat ini, sepertinya semantik nama paket cukup baik, sehingga dari namanya saja kita bisa memahami kegunaannya secara umum, yang pada gilirannya mengurangi kesulitan bagi pengembang untuk berpindah.

Karena baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh tentang versi 2.x di Solana Cookbook juga masih sedikit. Selain itu, versi baru cenderung menggunakan fungsi bawaan runtime (seperti menghasilkan pasangan kunci), tetapi dokumentasi tentang bagian-bagian ini kurang memadai, sehingga di beberapa tempat pengembang mungkin merasa bingung.

Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. 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 awal Desember tahun ini, mengurangi input dan 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. Namun, fungsi intinya adalah membuat pengirim permintaan melalui pengaturan alamat permintaan RPC, lalu menggunakannya untuk mengirim berbagai permintaan.

Versi 2.x menggunakan pendekatan yang lebih fungsional:

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

const rpc = createSolanaRpc(');

// Menggunakan rpc untuk mengirim transaksi const signature = await rpc.sendAndConfirmTransaction(transaction);

Dalam versi baru ini, ketika 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, akan mengembalikan hash transaksi.

pasangan kunci

Bagian yang terkait dengan kunci publik dan kunci pribadi juga mengalami perubahan signifikan. Kelas Keypair dan PublicKey yang umum digunakan dalam versi 1.x tidak ada lagi, digantikan oleh beberapa fungsi.

Misalnya, sekarang 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 sebanyak mungkin, menggunakan implementasi Ed25519 bawaan. Banyak metode di Web Crypto API bersifat asinkron. Namun, perubahan ini tidaklah tidak dapat diterima; pada akhir tahun 2024 ini, pengembang JavaScript sudah sangat akrab dengan Promise.

kirim transaksi

Pengguna versi 1.x seharusnya sudah sangat familiar dengan dua kelas yaitu Transaction dan VersionedTransaction, hubungan di antara keduanya sering membuat banyak pengembang merasa bingung.

Pada versi 2.x, kedua kelas ini tidak lagi ada.

Metode terkait System Program yang disediakan dalam versi lama tidak ada lagi, sehingga 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 menawarkan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah contoh implementasi fungsi transfer yang berasal dari versi 1.x menggunakan fungsi pipe:

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

const rpc = createSolanaRpc(');

const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ dari: senderPublicKey, ke: recipientPublicKey, jumlah: transferAmount, })) );

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, kemudian memanggil fungsi tersebut untuk memulai transaksi. Dibandingkan dengan versi 1.x, jumlah kode meningkat, tetapi keuntungannya adalah kustomisasi yang lebih kuat.

Transaksi dimulai melalui HTTPS RPC, kemudian dikonfirmasi hasil transaksi melalui langganan WSS RPC. Kita dapat merasakan bahwa metode baru ini sangat bergantung pada WSS, dan saya percaya bahwa aplikasi WSS akan semakin luas di masa depan, yang juga meningkatkan tuntutan terhadap stabilitas layanan penyedia RPC.

React mendukung

Menariknya, proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook, dengan fungsi-fungsi bawaan seperti signIn.

Ringkasan

Peluncuran versi 2.x dari @solana/web3.js sepenuhnya mencerminkan komitmen tim Solana untuk terus berkembang dan memperbaiki. Ini memberikan kepada pengembang cara yang efisien, fleksibel, dan dapat disesuaikan untuk berinteraksi dengan jaringan Solana, yang membantu mendorong adopsi dan perkembangan platform tersebut.

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

SOL0.76%
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
  • 7
  • Posting ulang
  • Bagikan
Komentar
0/400
ProposalManiacvip
· 7jam yang lalu
Ada kemajuan, tetapi masih belum cukup radikal
Lihat AsliBalas0
GhostChainLoyalistvip
· 23jam yang lalu
2.0 masih lambat Kapan kita akan belajar untuk terus memantau pembaruan versi
Lihat AsliBalas0
PanicSeller69vip
· 08-07 19:20
Apa gunanya upgrade, kan masih harus ganti database.
Lihat AsliBalas0
MemeCoinSavantvip
· 08-07 07:47
berbasis af, solana membuktikan signifikansi statistik dalam evolusi web3 sejujurnya
Lihat AsliBalas0
FarmHoppervip
· 08-07 07:46
Masih menggunakan 1.x, ya?
Lihat AsliBalas0
ThreeHornBlastsvip
· 08-07 07:45
Pengembang partai mana yang masih menunggu
Lihat AsliBalas0
ZkProofPuddingvip
· 08-07 07:43
Sungguh enak~ Terlambat setengah tahun baru diperbarui.
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)