Solana Web3.js phiên bản 2.x: Tách chức năng và tối ưu hóa hiệu suất
Thư viện JavaScript phong phú Solana Web3.js đã 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, phiên bản mới có sự thay đổi đáng kể về cấu trúc và phương pháp thực hiện. Bài viết này sẽ tóm tắt những thay đổi chính để giúp các nhà phát triển chuẩn bị cho việc chuyển đổi trong tương lai.
So sánh phiên bản
Các đặc điểm chính của phiên bản 1.x là đơn giản và dễ sử dụng. Nó chỉ bao gồm một gói @solana/web3.js, sử dụng thiết kế dựa trên lớp và đóng gói 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 đề, chẳng hạn như kích thước thư viện mã lớn, thiết bị của người dùng cần tải xuống một lượng lớn mã có thể không cần thiết.
Phiên bản 2.x đã áp dụng một chiến lược khác. Nhóm phát triển đã chia nhỏ mã nguồn thành nhiều mô-đun nhỏ như @solana/accounts, @solana/codecs, @solana/rpc, v.v. Phiên bản mới đã từ bỏ việc triển khai dựa trên lớp, chuyển sang sử dụng các hàm đơn lẻ, điều này giúp tối ưu hóa trong quá trình 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ê chính thức, các DApp sử dụng phiên bản mới thường có thể đạt được tối ưu hóa dung lượng 30%, nếu chỉ sử dụng một số chức năng ít ỏi, tỷ lệ tối ưu hóa có thể cao hơn.
Một đặc điểm quan trọng khác của phiên bản 2.x là không có phụ thuộc. Xét đến các cuộc tấn công chuỗi cung ứng gần đây xảy ra trên các phiên bản 1.95.5 và 1.95.6, việc giảm phụ thuộc bên ngoài có thể giảm đáng kể rủi ro an ninh. Phiên bản mới sử dụng nhiều chức năng gốc hơn, loại bỏ việc phụ thuộc bên ngoài và Polyfills.
Điểm thay đổi quan trọng
kết nối
Phiên bản 2.x đã áp dụng phương pháp hàm nhiều hơn để xử lý kết nối. Không còn sử dụng lớp Connection nữa, mà thay vào đó là cấu hình địa chỉ yêu cầu RPC để tạo ra bộ gửi yêu cầu. Ví dụ, khi gửi giao dịch, sẽ tự động khởi xướ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.
cặp khóa
Xử lý liên quan đến khóa công và khóa riêng cũng đã thay đổi. Các lớp Keypair và PublicKey thường được sử dụng trong phiên bản 1.x đã được thay thế bằng một số hàm. Ví dụ, bây giờ sử dụng await generateKeyPair() để tạo cặp khóa, thay vì Keypair.generate() như trước đây. Triển khai mới tận dụng Web Crypto API của JavaScript, sử dụng triển khai Ed25519 gốc, điều này dẫn đến một số phương thức trở thành bất đồng bộ.
gửi giao dịch
Phiên bản 2.x không còn sử dụng các lớp Transaction và VersionedTransaction. Các phương thức liên quan đến System Program cũng cần được nhập từ nơi khác. Ví dụ, lệnh transfer hiện cần gọi hàm getTransferSolInstruction trong @solana-program/system.
Phiên bản mới 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 vốn có của phiên bản 1.x. Mặc dù khối lượng mã đã tăng lên, nhưng nó cung cấp khả năng tùy chỉnh mạnh mẽ hơn.
Hỗ trợ React
Cần lưu ý 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 cam kết của đội ngũ phát triển đối với việc cải tiến liên tục. Phiên bản mới cung cấp cho các nhà phát triển một cách tương tác với mạng Solana hiệu quả hơn, linh hoạt hơn và có thể tùy chỉnh hơn, hứa hẹn sẽ thúc đẩy sự phát triển và ứng dụng hơn nữa của nền tảng này. Mặc dù hiện tại nhiều dự án vẫn chưa chuyển sang phiên bản mới, nhưng việc hiểu rõ những thay đổi này sẽ giúp các nhà phát triển chuẩn bị cho việc chuyển đổi trong tương lai.
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.
11 thích
Phần thưởng
11
5
Chia sẻ
Bình luận
0/400
StablecoinArbitrageur
· 07-30 14:36
*điều chỉnh kính* hmm... dựa trên phân tích chỉ số hiệu suất của tôi, việc chia thành các mô-đun sẽ giảm trễ khoảng ~47 điểm cơ bản
Xem bản gốcTrả lời0
MissingSats
· 07-30 14:34
Cuối cùng cũng chờ đến được nâng cấp rồi, đã chờ một năm.
Xem bản gốcTrả lời0
LucidSleepwalker
· 07-30 14:34
2.x đã đến, không học nổi nữa.
Xem bản gốcTrả lời0
DuckFluff
· 07-30 14:27
Hả, còn đang dùng phiên bản 1.x, nhanh chóng nâng cấp đi.
Xem bản gốcTrả lời0
BrokenYield
· 07-30 14:15
cuối cùng cũng có quản lý rủi ro trong sol... mất quá lâu để làm điều đó smh
Solana Web3.js 2.x: Tái cấu trúc mô-đun và nâng cao hiệu suất
Solana Web3.js phiên bản 2.x: Tách chức năng và tối ưu hóa hiệu suất
Thư viện JavaScript phong phú Solana Web3.js đã 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, phiên bản mới có sự thay đổi đáng kể về cấu trúc và phương pháp thực hiện. Bài viết này sẽ tóm tắt những thay đổi chính để giúp các nhà phát triển chuẩn bị cho việc chuyển đổi trong tương lai.
So sánh phiên bản
Các đặc điểm chính của phiên bản 1.x là đơn giản và dễ sử dụng. Nó chỉ bao gồm một gói @solana/web3.js, sử dụng thiết kế dựa trên lớp và đóng gói 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 đề, chẳng hạn như kích thước thư viện mã lớn, thiết bị của người dùng cần tải xuống một lượng lớn mã có thể không cần thiết.
Phiên bản 2.x đã áp dụng một chiến lược khác. Nhóm phát triển đã chia nhỏ mã nguồn thành nhiều mô-đun nhỏ như @solana/accounts, @solana/codecs, @solana/rpc, v.v. Phiên bản mới đã từ bỏ việc triển khai dựa trên lớp, chuyển sang sử dụng các hàm đơn lẻ, điều này giúp tối ưu hóa trong quá trình 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ê chính thức, các DApp sử dụng phiên bản mới thường có thể đạt được tối ưu hóa dung lượng 30%, nếu chỉ sử dụng một số chức năng ít ỏi, tỷ lệ tối ưu hóa có thể cao hơn.
Một đặc điểm quan trọng khác của phiên bản 2.x là không có phụ thuộc. Xét đến các cuộc tấn công chuỗi cung ứng gần đây xảy ra trên các phiên bản 1.95.5 và 1.95.6, việc giảm phụ thuộc bên ngoài có thể giảm đáng kể rủi ro an ninh. Phiên bản mới sử dụng nhiều chức năng gốc hơn, loại bỏ việc phụ thuộc bên ngoài và Polyfills.
Điểm thay đổi quan trọng
kết nối
Phiên bản 2.x đã áp dụng phương pháp hàm nhiều hơn để xử lý kết nối. Không còn sử dụng lớp Connection nữa, mà thay vào đó là cấu hình địa chỉ yêu cầu RPC để tạo ra bộ gửi yêu cầu. Ví dụ, khi gửi giao dịch, sẽ tự động khởi xướ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.
cặp khóa
Xử lý liên quan đến khóa công và khóa riêng cũng đã thay đổi. Các lớp Keypair và PublicKey thường được sử dụng trong phiên bản 1.x đã được thay thế bằng một số hàm. Ví dụ, bây giờ sử dụng await generateKeyPair() để tạo cặp khóa, thay vì Keypair.generate() như trước đây. Triển khai mới tận dụng Web Crypto API của JavaScript, sử dụng triển khai Ed25519 gốc, điều này dẫn đến một số phương thức trở thành bất đồng bộ.
gửi giao dịch
Phiên bản 2.x không còn sử dụng các lớp Transaction và VersionedTransaction. Các phương thức liên quan đến System Program cũng cần được nhập từ nơi khác. Ví dụ, lệnh transfer hiện cần gọi hàm getTransferSolInstruction trong @solana-program/system.
Phiên bản mới 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 vốn có của phiên bản 1.x. Mặc dù khối lượng mã đã tăng lên, nhưng nó cung cấp khả năng tùy chỉnh mạnh mẽ hơn.
Hỗ trợ React
Cần lưu ý 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 cam kết của đội ngũ phát triển đối với việc cải tiến liên tục. Phiên bản mới cung cấp cho các nhà phát triển một cách tương tác với mạng Solana hiệu quả hơn, linh hoạt hơn và có thể tùy chỉnh hơn, hứa hẹn sẽ thúc đẩy sự phát triển và ứng dụng hơn nữa của nền tảng này. Mặc dù hiện tại nhiều dự án vẫn chưa chuyển sang phiên bản mới, nhưng việc hiểu rõ những thay đổi này sẽ giúp các nhà phát triển chuẩn bị cho việc chuyển đổi trong tương lai.