Cải tiến lớn cho phiên bản 2.x của Solana Web3.js: Tách chức năng và tối ưu hóa hiệu suất

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

Solana Web3.js phiên bản 2.x: Phân tách chức năng và tối ưu hóa hiệu suất

Thư viện JavaScript phong phú tính năng Solana Web3.js đã phát hành phiên bản 2.x vào tháng 11 năm nay. Phiên bản mới có nhiều thay đổi 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 được phát hành không lâu, mức sử dụng vẫn chưa cao, nhiều thư viện phổ biến vẫn chưa chuyển sang, 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.

So sánh phiên bản

Phiên bản cũ sử dụng tương đối đơn giản, chỉ cần một gói @solana/web3.js là đủ để bao gồm tất cả nội dung. Nó dựa trên thiết kế lớp, bao bọc 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 trùm 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 nhỏ trong số các chức năng, toàn bộ mã nguồn cũng sẽ được tải xuống thiết bị của người dùng, do khối lượng mã của thư viện khá lớn, có thể dẫn đến thời gian tải nhất định.

Phiên bản 2.x đã áp dụng một chiến lược khác. Đội ngũ chính thức đã tách mã nguồn ban đầu 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, thay vào đó là sử dụng nhiều hơn các hàm đơn lẻ. Thiết kế này thuận 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 khoảng 30% tối ưu hóa kích thước, nếu chỉ sử dụng một phần rất nhỏ các tính năng, tỷ lệ tối ưu hóa có thể cao hơn.

Sự thay đổi này cũng đã mang đến những thách thức cho công việc tài liệu của đội ngũ Solana, việc làm thế nào để 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 đề quan trọng. Hiện tại, tên gói có tính ngữ nghĩa tốt, từ tên có thể hình dung đại khái về công dụng của chúng, điều này đã giảm bớt độ khó trong việc di chuyển 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, 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 còn ít. 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 mô tả về những phần này còn thiếu, có thể khiến cho 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ần 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 cho thấy, nhiều đầu vào và phụ thuộc bên ngoài sẽ làm tăng khả năng xảy ra các sự cố an ninh. 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 nội tại, loại bỏ việc sử dụng phụ thuộc bên ngoài và 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.

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

Đ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. Nhưng chức năng chính 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 áp dụng cách tiếp cận hàm nhiều hơn để thực hiện chức năng này. Chẳng hạn, khi gọi sendAndConfirmTransaction để gửi giao dịch, nó sẽ tự động thực hiện yêu cầu HTTPS và thiết lập một kết nối WSS, đăng ký trạng thái giao dịch, và trả về hash giao dịch sau khi giao dịch được xác nhận.

cặp khóa

Phần liên quan đến khóa công khai và khóa riêng cũng có sự thay đổi lớn. 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ạ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à, hàm generateKeyPair mới trả về một Promise, thay vì trả về cặp khóa trực tiếp. Điều này là do việc triển khai mới đã tận dụng tối đa API Crypto Web của JavaScript, sử dụng triển khai Ed25519 gốc. Nhiều phương thức của API Crypto Web là bất đồng bộ. Tuy nhiên, sự thay đổi này không khó 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 trong phiên bản 1.x 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ũ 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 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. 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 mà phiên bản 1.x đã có.

Cần lưu ý rằng giao dịch không còn được khởi động thông qua Connection, mà là thông qua RPC Provider được định nghĩa bởi nhà phát triển để tạo ra một hàm đặc biệt, sau đó gọi hàm đó để khởi động giao dịch. So với phiên bản 1.x, mã code đã tăng lên, nhưng tính tùy biến 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 qua việc đăng ký WSS RPC. Có thể cảm nhận rằng phương thức mới này rất dựa vào WSS, tin rằng trong tương lai ứ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ề độ ổ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 sự phát triển và cải tiến không ngừng. Nó cung cấp cho các nhà phát triển một cách thức tương tác hiệu quả, linh hoạt và tùy chỉnh với mạng Solana, 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 bắt đầu: Bây giờ nâng cấp @solana/web3.js 2.x để mở khóa lập trình hàm

SOL2.41%
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
  • Chia sẻ
Bình luận
0/400
SignatureVerifiervip
· 19giờ trước
smh... một bản phát hành vội vàng khác cần phải kiểm toán bảo mật kỹ lưỡng
Xem bản gốcTrả lời0
BearMarketSurvivorvip
· 20giờ trước
Hiệu suất càng tối ưu thì đồ ngốc càng nhiều
Xem bản gốcTrả lời0
AlwaysAnonvip
· 20giờ trước
Ôi, cuối cùng cũng đã nâng cấp!
Xem bản gốcTrả lời0
DefiPlaybookvip
· 20giờ trước
Dựa trên dự đoán từ đường cong tăng lên TVL, hiệu suất sau khi tối ưu hóa kiến trúc mô-đun 2.x tăng lên 27.8%
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)