Phiên bản 2.x của Solana Web3.js được phát hành: Tái cấu trúc lập trình hàm mang lại tối ưu hóa đáng kể

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

Solana Web3.js phiên bản 2.x: Trải nghiệm lập trình hàm hoàn toàn mới

Solana Web3.js với tư cách là một thư viện JavaScript đa chức năng, đã chính thức phát hành phiên bản 2.x vào tháng 11 năm nay. So với phiên bản 1.x trước đó, phiên bản mới đã có những thay đổi đáng kể. 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 được phát hành, mức sử dụng vẫn chưa phổ biến, nhiều thư viện được sử dụng rộng rãi vẫn chưa chuyển đổi, nhưng việc hiểu những thay đổi này sẽ mang lại lợi ích lớn 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

Không thể phủ nhận rằng phiên bản cũ dễ sử dụng hơn và trực quan hơn. Phiên bản 1.x chỉ bao gồm một gói @solana/web3.js, tất cả các chức năng đều tập trung trong đó. Nó được thiết kế dựa trên lớp, bao bọc rất nhiều thao tác thông dụng. Ví dụ, 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à các 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 chức năng mà nhà phát triển thực sự sử dụng có thể chỉ chiếm một phần rất nhỏ, nhưng toàn bộ mã nguồn sẽ được tải về thiết bị của người dùng. Do khối lượng mã của thư viện rất lớn, điều này có thể tiêu tốn một khoảng thời gian nhất định.

So với trước đây, phiên bản 2.x đã tách mã nguồn thành nhiều mô-đun nhỏ, như @solana/accounts, @solana/codecs, @solana/rpc, @solana/signers, @solana/transactions, v.v. Đồng thời, phiên bản mới đã từ bỏ việc triển khai dựa trên lớp và thay vào đó sử dụng nhiều hàm đơn, điều này rất hữu ích cho việc tối ưu hóa khi xây dựng mã JavaScript. 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, các DApp sử dụng phiên bản mới cơ bản 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 lượng chức năng nhỏ, tỷ lệ tối ưu hóa có thể còn cao hơn.

Điều này đã đặt ra yêu cầu cao hơn về chất lượng tài liệu cho đội ngũ Solana, và cách để 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 đề quan trọng. 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 sơ qua về mục đích sử dụng của nó, điều này phần nào giảm bớt độ khó cho việc di chuyển của các nhà phát triển.

Do vì mới được phát hành không lâu, nhiều dự án vẫn chưa thực hiện chuyển đổi. Số lượng 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 thời gian chạy (như tạo cặp khóa), nhưng tài liệu lại thiếu mô tả về những chức năng này, dẫn đến việc một số khía cạnh 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 có sự phụ thuộc. Điều này có thể không quan trọng đối với nhiều người dùng, nhưng từ 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 có nhiều đầu vào và phụ thuộc bên ngoài sẽ làm tăng đáng kể khả năng xảy ra các sự kiện an ninh. Với việc 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ỏ sự phụ thuộc bên ngoài và việc đưa vào Polyfills. Có thể sẽ có sự thay đổi trong tương lai, nhưng ít nhất 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 thức. Nhưng chức năng cốt lõi của nó là tạo một bộ gửi yêu cầu thông qua việc cấu hình địa chỉ yêu cầu RPC, sau đó gửi các yêu cầu khác nhau thông qua nó.

Phiên bản 2.x sử dụng cách tiếp cận hàm nhiều hơn để thực hiện chức năng này. Ví dụ, 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 cũng đã xảy ra sự thay đổi đáng kể. Hai 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ây giờ bạn có thể sử dụng await generateKeyPair() để tạo cặp khóa, thay vì Keypair.generate() như trước đây. Đáng chú ý là, generateKeyPair mới trả về Promise, điều này là do 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, sự thay đổi này không phải là không thể chấp nhận, vào cuối năm 2024, các nhà phát triển JavaScript đã rất quen thuộc với Promise.

Gửi giao dịch

Hai lớp Transaction và VersionedTransaction mà người dùng phiên bản 1.x quen thuộc không còn tồn tại trong phiên bản 2.x.

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 nữa, vì vậy tất cả 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 vì không còn cung cấp class, Web3.js đã cung cấp hình thức pipe thường dùng trong lập trình hàm. Các nhà phát triển có thể sử dụng hàm pipe để thực hiện chức năng chuyển tiền giống như trong phiên bản 1.x.

Cần lưu ý rằng giao dịch không còn được khởi động thông qua Connection nữa, mà được tạo ra thông qua một hàm đặc thù được định nghĩa bởi RPC Provider, và sau đó gọi hàm đó để khởi động giao dịch. So với phiên bản 1.x, số lượng mã đã tăng lên, nhưng tính tùy biến cũng mạnh mẽ hơn.

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

React

Đáng chú ý rằng, 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 rõ 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 thức tương tác với mạng Solana hiệu quả, linh hoạt và có thể tùy chỉnh, giúp 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

SOL2.92%
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
CoffeeNFTradervip
· 07-18 21:26
Tối ưu hiệu suất? Đi thôi đi thôi
Xem bản gốcTrả lời0
ShamedApeSellervip
· 07-18 19:03
Nhìn gì vậy, tôi vẫn đang sử dụng v1 nè.
Xem bản gốcTrả lời0
MemeCoinSavantvip
· 07-15 21:50
theo các mô hình thống kê của tôi, sự chuyển mình này dựa trên af ngl
Xem bản gốcTrả lời0
MEVHunterZhangvip
· 07-15 21:45
Cuối cùng cũng đợi được tái cấu trúc, đã chờ lâu rồi.
Xem bản gốcTrả lời0
OnlyOnMainnetvip
· 07-15 21:39
Ông chủ sol hành động nhanh quá đi.
Xem bản gốcTrả lời0
LiquidityNinjavip
· 07-15 21:35
Đáng tin cậy~ Cuối cùng cũng sử dụng được lập trình hàm rồi
Xem bản gốcTrả lời0
  • Ghim
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)