Solana Web3.js phiên bản 2.x nâng cấp mạnh mẽ: Thiết kế mô-đun nâng cao hiệu suất

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

Cập nhật lớn phiên bản 2.x của Solana Web3.js: Lập trình hàm và thiết kế mô-đun

Solana Web3.js là một thư viện JavaScript phong phú về tính năng, đã 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 có sự thay đổi đáng kể so với 1.x, bài viết này sẽ tóm tắt những cập nhật chính của nó.

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

So sánh phiên bản

Phiên bản 1.x sử dụng khá đơn giản. Nó chỉ có một gói: @solana/web3.js, tất cả các chức năng đều tập trung trong đó. Thiết kế dựa trên lớp bao gồm rất nhiều thao tác thường dùng, chẳng hạn như lớp Connection cung cấp hàng chục phương thức, gần như bao quát 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 đề: ngay cả khi các nhà phát triển chỉ sử dụng một phần rất nhỏ của chức năng, toàn bộ kho mã cũng sẽ được tải xuống thiết bị của người dùng, và do lượng mã trong thư viện khá lớn, điều này có thể tốn một khoảng thời gian nhất định.

Phiên bản 2.x đã áp dụng một chiến lược khác. Nhóm chính thức đã tách rời kho mã nguồn ban đầu thành một số mô-đun nhỏ, chẳng hạn như @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, v.v. Đồng thời, họ đã từ bỏ việc triển khai dựa trên lớp, mà thay vào đó sử dụng nhiều hàm đơn. Thiết kế 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 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ê 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 lên đến 30%, nếu chỉ sử dụng một số ít chức năng, tỷ lệ tối ưu hóa có thể cao hơn.

Web3 người mới series: Bây giờ nâng cấp @solana/web3.js 2.x mở chức năng lập trình

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

Tuy nhiên, do mới được phát hành không lâu, nhiều dự án vẫn chưa thực hiện việc di chuyển. Các ví dụ về phiên bản 2.x trên Solana Cookbook cũng tương đối ít. Hơn nữa, phiên bản mới có xu hướng sử dụng các chức năng tích hợp sẵn trong runtime (như tạo cặp khóa), nhưng tài liệu mô tả về các phần này không đủ, có thể khiến các 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. Đặc điểm này có thể không quá quan trọng đối với nhiều người dùng, nhưng khi xem xét cuộc tấn công chuỗi cung ứng mà phiên bản @solana/web3.js 1.95.5 và 1.95.6 gặp phải vào đầu tháng 12 năm 2023, việc giảm thiểu đầu vào và 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 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 gốc, loại bỏ việc 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 nhiều phương pháp. Còn trong 2.x, đã áp dụng cách tiếp cận hàm hơn.

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, sau khi giao dịch được xác nhận sẽ trả về hash giao dịch.

cặp khóa

Phần liên quan đến khóa công khai và khóa riêng tư cũng đã có sự thay đổi lớn. 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ì "Keypair.generate()" trước đây.

Cần lưu ý rằng, generateKeyPair mới trả về Promise, thay vì trả trực tiếp cặp khóa. Đ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ộ. Tuy nhiên, đối với các nhà phát triển JavaScript quen thuộc với Promise, sự thay đổi này không khó để thích nghi.

gửi giao dịch

Trong phiên bản 2.x, không còn hai lớp "Transaction" và "VersionedTransaction".

Các phương pháp liên quan đến System Program được cung cấp trong phiên bản cũ sẽ không còn tồn tại, các phương thức tĩnh trên lớp "SystemProgram" 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".

Do không còn cung cấp lớp, Web3.js đã cung cấp hình thức "pipe" thường được sử dụng trong lập trình hàm. Bạn có thể 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.

Có thể thấy, giao dịch không còn được khởi xướng qua Connection, mà thay vào đó thông qua một nhà cung cấp RPC được định nghĩa để tạo ra một hàm đặc biệt, sau đó gọi hàm đó để khởi xướng giao dịch. So với phiên bản 1.x, lượng mã đã tăng lên, nhưng tính tùy chỉnh thì mạnh mẽ hơn.

Giao dịch được khởi xướng thông qua HTTPS RPC, sau đó xác nhận kết quả giao dịch thông qua việc đăng ký WSS RPC. Cách thức mới này rất phụ thuộc vào WSS, tin rằng trong tương lai, ứng dụng WSS sẽ trở nên phổ biến hơn, điều này cũng đặt ra yêu cầu cao hơn về độ ổn định dịch vụ của nhà cung cấp RPC.

React

Đáng chú ý là trong dự án @solana/web3.js còn có một thư viện 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 cam kết của đội ngũ Solana đối với việc phát triển và cải tiến liên tục. Nó cung cấp cho các nhà phát triển một cách hiệu quả, linh hoạt và có thể tùy chỉnh để tương tác với mạng Solana, góp phần thúc đẩy sự chấp nhận và phát triển của nền tảng này.

Chuỗi Web3 cho người mới: Nâng cấp @solana/web3.js 2.x để bắt đầu lập trình hàm

SOL2.26%
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
  • 4
  • Đăng lại
  • Chia sẻ
Bình luận
0/400
OfflineValidatorvip
· 19giờ trước
js đã được nâng cấp, còn ai đang sử dụng 1.x?
Xem bản gốcTrả lời0
MoonRocketmanvip
· 19giờ trước
Tối ưu quỹ đạo hoàn tất Nâng cấp động cơ thành công Chuẩn bị cho lần phóng thứ hai To da moon
Xem bản gốcTrả lời0
MissedAirdropAgainvip
· 19giờ trước
Leo, vội vàng lên chẳng có ích gì, trước hết hãy khởi động airdrop 2.0.
Xem bản gốcTrả lời0
WalletDivorcervip
· 19giờ trước
Còn đang chờ đợi vòng tay 1.x không muốn sửa mã
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)