Solana Web3.js 2.x phát hành: Thiết kế mô-đun tối ưu hiệu suất và nâng cao an ninh

robot
Đang tạo bản tóm tắt

Phiên bản Solana Web3.js 2.x: Cập nhật lớn cho thư viện JavaScript đầy đủ tính năng

Thư viện JavaScript mạnh mẽ Solana Web3.js đã chính thức phát hành phiên bản 2.x vào tháng 11. Phiên bản mới này có sự thay đổi đáng kể so với phiên bản 1.x, bài viết này sẽ tóm tắt những thay đổi chính.

Mặc dù phiên bản 2.x vừa mới ra mắt và tỷ lệ sử dụng chưa phổ biến, nhiều thư viện có mức sử dụng cao vẫn chưa chuyển đổi. Nhưng việc hiểu những thay đổi này rất hữu ích cho công việc di chuyển trong tương lai.

Web3 người mới Series: Bây giờ nâng cấp @solana/web3.js 2.x mở khóa lập trình hàm

So sánh phiên bản

Phiên bản 1.x sử dụng tương đối đơn giản, chỉ cần nhập gói @solana/web3.js duy nhất là đủ. Nó dựa trên thiết kế lớp, đóng gói nhiều thao tác phổ biến. Ví dụ, lớp Connection cung cấp hàng chục phương pháp, gần như bao phủ tất cả các chức năng mà nhà phát triển cần.

Tuy nhiên, thiết kế này cũng mang lại một số vấn đề. Mặc dù các nhà phát triển thường chỉ sử dụng một phần nhỏ các tính năng, nhưng toàn bộ mã nguồn sẽ được tải xuống thiết bị của người dùng, có thể dẫn đến thời gian tải lâu hơn.

Phiên bản 2.x đã áp dụng một phương pháp khác. Đội ngũ chính thức đã chia nhỏ mã nguồn hiện có thành nhiều mô-đun nhỏ, chẳng hạn như @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, v.v. Đồng thời, đã từ bỏ cách tiếp cận dựa trên lớp và chuyển sang sử dụng các hàm đơn lẻ. Sự thay đổi này có lợi cho việc tối ưu hóa mã JavaScript trong quá trình xây dựng, mã không được sử dụng sẽ bị xóa và không được tải xuống thiết bị của người dùng.

Theo thống kê từ tài liệu chính thức, việc sử dụng phiên bản mới của DApp thường có thể đạt được tối ưu hóa kích thước 30%. Nếu chỉ sử dụng một lượng nhỏ chức năng, tỷ lệ tối ưu hóa có thể cao hơn.

Sự thay đổi này đã đặt ra thách thức mới cho việc viết tài liệu của đội ngũ Solana, làm thế nào để giúp các nhà phát triển nhanh chóng tìm thấy chức năng cần thiết trở thành một vấn đề then chốt. Hiện tại, tên gói có tính ngữ nghĩa tốt, từ tên gọi có thể hiểu đại khái mục đích của nó, điều này phần nào giảm bớt khó khăn cho các nhà phát triển trong việc chuyển đổi.

Do bởi phiên bản mới vừa được phát hành không lâu, nhiều dự án vẫn chưa thực hiện việc chuyển đổi. Hiện tại, các ví dụ về phiên bản 2.x còn tương đối ít. Hơn nữa, do phiên bản mới có xu hướng sử dụng các tính năng tích hợp sẵn trong thời gian chạy (như tạo cặp khóa), tài liệu thiếu mô tả liên quan, có thể khiến một số nhà phát triển cảm thấy bối rối.

Một đặc điểm quan trọng khác của phiên bản 2.x là không phụ thuộc. Điều này có thể không quan trọng với nhiều người dùng, nhưng với cuộc tấn công chuỗi cung ứng xảy ra vào đầu tháng 12 năm nay trên các phiên bản @solana/web3.js 1.95.5 và 1.95.6, việc giảm thiểu phụ thuộc bên ngoài có thể giảm đáng kể khả năng xảy ra sự cố bảo mật. Với sự phát hành của phiên bản 2.x, nhóm phát triển Web3.js đã quyết định sử dụng nhiều hơn các chức năng bản địa, loại bỏ sự phụ thuộc bên ngoài và việc giới thiệu Polyfills. Mặc dù có thể sẽ có sự thay đổi trong tương lai, nhưng hiện tại phiên bản 2.x đã loại bỏ tất cả các phụ thuộc bên ngoài.

Điểm thay đổi quan trọng

kết nối

Trong phiên bản 1.x, lớp Connection cung cấp rất nhiều phương thức. Còn trong 2.x, đã áp dụng phương pháp hàm nhiều hơn để thực hiện:

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

const rpc = createSolanaRpcApi({ httpEndpoint: ' wsEndpoint: 'wss://api.mainnet-beta.solana.com', });

// Sử dụng rpc gửi giao dịch const sendAndConfirmTransaction = rpc.sendAndConfirmTransaction(/* ... */);

Khi gọi sendAndConfirmTransaction để gửi giao dịch, sẽ tự động phát động yêu cầu HTTPS và thiết lập kết nối WSS để đăng ký trạng thái giao dịch, và sau khi giao dịch được xác nhận, sẽ trả về hash giao dịch.

cặp khóa

Trong phiên bản 2.x, các lớp Keypair và PublicKey thường được sử dụng trong phiên bản 1.x không còn tồn tại, mà được thay thế bằng một số hàm. Ví dụ, bạn có thể sử dụng await generateKeyPair() để tạo cặp khóa, thay vì sử dụng Keypair.generate() như trước.

generateKeyPair mới trả về Promise, điều này là do việc triển khai mới tận dụng tối đa Web Crypto API của JavaScript, sử dụng triển khai Ed25519 gốc. Nhiều phương thức của Web Crypto API là bất đồng bộ.

gửi giao dịch

Trong phiên bản 2.x không còn lớp Transaction và VersionedTransaction. Các phương thức liên quan đến System Program cũng không còn tồn tại, cần được nhập từ nơi khác. Ví dụ, lệnh transfer cần gọi hàm getTransferSolInstruction trong @solana-program/system.

Phiên bản mới cung cấp dạng pipe thường dùng trong lập trình hàm. Dưới đây là việc sử dụng hàm pipe để thực hiện chức năng chuyển tiền của phiên bản 1.x:

javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/system-program'; import { addSignatureToTransaction, tạoGiaoDịch, sendAndConfirmTransaction, ] từ '@solana/web3.js';

const transferSol = pipe( // Tạo giao dịch (ix) => createTransaction({ instructions: [ix] }), // Thêm chữ ký (tx) => addSignatureToTransaction(tx, signer), // Gửi và xác nhận giao dịch (signedTx) => sendAndConfirmTransaction(rpc, signedTx) );

const signature = await transferSol( getTransferSolInstruction({ từ: người gửi, đến: người nhận, số lượng, }) );

So với phiên bản 1.x, khối lượng mã đã tăng lên, nhưng khả năng tùy chỉnh thì mạnh mẽ hơn. Giao dịch được khởi động qua HTTPS RPC, sau đó xác nhận kết quả giao dịch qua việc đăng ký WSS RPC.

Hỗ trợ React

Dự án @solana/web3.js còn bao gồm một thư viện có tên là @solana/react, cung cấp một số React Hook, tích hợp các chức năng như signIn.

Tóm tắt

Việc phát hành phiên bản 2.x của @solana/web3.js thể hiện quyết tâm cải tiến liên tục của đội ngũ Solana. Phiên bản mới cung cấp cho các nhà phát triển một cách thức tương tác mạng Solana hiệu quả, linh hoạt và có thể tùy chỉnh, có khả năng thúc đẩy việc áp dụng và phát triển nền tảng này.

Web3 người mới series: Bây giờ nâng cấp @solana/web3.js 2.x để bắt đầu lập trình hàm

SOL10.21%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • 6
  • Chia sẻ
Bình luận
0/400
LiquidityHuntervip
· 2giờ trước
Tối ưu hóa mô-đun... nhưng nút thắt hiệu suất vẫn ở ngưỡng 85%
Xem bản gốcTrả lời0
OnchainFortuneTellervip
· 20giờ trước
Nhìn mặt của BTC chính là lừa đảo.
Xem bản gốcTrả lời0
NoodlesOrTokensvip
· 20giờ trước
Cuối cùng cũng đã cập nhật, chậm chạp.
Xem bản gốcTrả lời0
SandwichTradervip
· 20giờ trước
Chạy nhanh như vậy để làm gì? Cấu trúc lại hoảng rồi sao?
Xem bản gốcTrả lời0
staking_grampsvip
· 20giờ trước
Wow, một chút muốn học.
Xem bản gốcTrả lời0
AirdropHunter007vip
· 20giờ trước
Lại đến muộn nữa rồi! Xin airdrop...
Xem bản gốcTrả lời0
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)