Solana Web3.js 2.x dirilis: Refactor pemrograman fungsional membawa peningkatan kinerja

robot
Pembuatan abstrak sedang berlangsung

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

Perpustakaan Solana Web3.js resmi merilis versi 2.x pada bulan November tahun ini. Dibandingkan dengan versi 1.x, versi baru ini mengalami perubahan signifikan dalam struktur dan cara penggunaan. Artikel ini akan merangkum perubahan utama ini untuk membantu pengembang mempersiapkan kemungkinan migrasi 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, hanya diperlukan satu paket @solana/web3.js untuk mencakup semua fungsi. Ini didasarkan pada desain kelas, seperti kelas Connection, yang menawarkan puluhan metode, hampir mencakup semua fungsi yang diperlukan oleh pengembang. Namun, desain ini juga membawa beberapa masalah, seperti ukuran kode yang terlalu besar, meskipun pengembang hanya menggunakan sedikit fungsi, seluruh perpustakaan akan diunduh ke perangkat pengguna.

Versi 2.x mengambil pendekatan yang berbeda. Tim resmi membagi repositori kode menjadi beberapa modul kecil, seperti @solana/accounts, @solana/codecs, @solana/rpc, dan lainnya. Versi baru ini meninggalkan implementasi berbasis kelas dan beralih ke penggunaan fungsi tunggal, yang menguntungkan untuk optimasi saat membangun kode JavaScript. Kode yang tidak digunakan akan dihapus dan tidak akan diunduh ke perangkat pengguna. Menurut statistik resmi, DApp yang menggunakan versi baru biasanya dapat mencapai optimasi ukuran hingga 30%, dan jika hanya menggunakan sedikit fungsi, proporsi optimasi bisa lebih tinggi.

Perubahan ini menuntut kualitas dokumentasi yang lebih tinggi dari tim Solana. Bagaimana membantu pengembang dengan cepat menemukan fungsi yang diperlukan menjadi masalah kunci. Saat ini, penamaan setiap paket memiliki semantik yang baik, sehingga dari namanya bisa diperkirakan kegunaannya, yang dalam beberapa hal mengurangi kesulitan migrasi bagi pengembang.

Namun, karena versi 2.x baru saja dirilis, banyak proyek yang belum melakukan migrasi. Contoh tentang versi 2.x di Solana Cookbook juga relatif sedikit. Versi baru cenderung menggunakan fungsi bawaan runtime (seperti menghasilkan pasangan kunci), tetapi dokumentasi tentang hal ini kurang, yang mungkin membingungkan beberapa pengembang.

Fitur penting lainnya dari versi 2.x adalah tanpa ketergantungan. Ini mungkin tidak terlalu penting bagi banyak pengguna, tetapi melihat serangan rantai pasokan yang terjadi pada versi @solana/web3.js 1.95.5 dan 1.95.6 pada awal Desember 2023, lebih banyak input dan ketergantungan eksternal akan secara signifikan meningkatkan kemungkinan terjadinya insiden keamanan. Dengan dirilisnya versi 2.x, tim pengembang memutuskan untuk lebih banyak menggunakan fungsi bawaan, menghilangkan ketergantungan eksternal dan pengenalan Polyfills. Saat ini, versi 2.x telah menghilangkan semua ketergantungan eksternal.

Poin Perubahan Penting

menghubungkan

Pada versi 2.x, implementasi koneksi menggunakan pendekatan yang lebih fungsional:

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

const rpc = createSolanaRpc(');

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

pasangan kunci

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

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

Kirim transaksi

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

Versi baru menyediakan bentuk pipe yang umum digunakan dalam pemrograman fungsional. Berikut adalah contoh penggunaan fungsi pipe untuk mengimplementasikan fitur transfer.

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/programs';

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

const signature = await sendAndConfirmTransaction(rpc, transaction, signers);

Dibandingkan dengan versi 1.x, jumlah kode sedikit meningkat, tetapi menawarkan kustomisasi yang lebih kuat.

Dukungan React

Proyek @solana/web3.js juga mencakup sebuah pustaka bernama @solana/react, yang menyediakan beberapa React Hook, dilengkapi dengan fungsi-fungsi 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 cara yang efisien, fleksibel, dan dapat disesuaikan bagi para pengembang untuk berinteraksi dengan jaringan Solana, yang diharapkan dapat mendorong adopsi dan perkembangan platform tersebut.

Seri Pemula Web3: 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
  • 6
  • Bagikan
Komentar
0/400
OPsychologyvip
· 4jam yang lalu
Cepat sekali menggulung, siapa yang belum menulis beberapa baris kode?
Lihat AsliBalas0
ShibaSunglassesvip
· 15jam yang lalu
Akhirnya dioptimalkan, Kuka lama tidak berfungsi.
Lihat AsliBalas0
MetaverseHobovip
· 15jam yang lalu
Akhirnya wawasan berharga datang
Lihat AsliBalas0
GateUser-00be86fcvip
· 15jam yang lalu
Pembaruan web3.js benar-benar telah tiba
Lihat AsliBalas0
GameFiCriticvip
· 15jam yang lalu
Aku tidak bisa mengikuti kecepatan pengembangan sol.
Lihat AsliBalas0
BlockchainDecodervip
· 15jam yang lalu
Dari segi implementasi fungsional, peningkatan kinerja seharusnya berada di kisaran 15-20%
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)