Solana Web3.js 2.x: Thời đại mới của lập trình hàm
Solana Web3.js đã phát hành phiên bản 2.x vào tháng 11 năm 2023, so với phiên bản 1.x, phiên bản mới mang lại những thay đổi đáng kể. Bài viết này sẽ tóm tắt những cải tiến chính của nó.
Mặc dù phiên bản 2.x vừa mới được phát hành và tỷ lệ sử dụng vẫn chưa cao, nhiều thư viện phổ biến vẫn chưa được chuyển đổi, nhưng việc hiểu những thay đổi này sẽ giúp chuẩn bị cho các bản nâng cấp trong tương lai.
So sánh phiên bản
Phiên bản 1.x sử dụng khá đơn giản, chỉ bao gồm một gói @solana/web3.js, được đóng gói dựa trên thiết kế lớp với 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 đề. Mặc dù các chức năng mà nhà phát triển thực sự sử dụng có thể rất ít, nhưng toàn bộ mã nguồn sẽ được tải xuống thiết bị của người dùng, 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 đã tách rời kho mã gốc thành nhiều mô-đun nhỏ hơn, 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 và thay vào đó sử dụng nhiều hàm đơn lẻ, điều này có lợi cho việc tối ưu hóa khi xây dựng mã JavaScript. Mã không sử dụng sẽ bị xóa và sẽ không được tải xuống thiết bị của người dùng. Theo dữ liệu chính thức, việc sử dụng DApp phiên bản mới thường có thể đạt được tối ưu hóa kích thước 30%, đối với các ứng dụng có chức năng ít hơn, tỷ lệ tối ưu hóa có thể cao hơn.
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 đội ngũ 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, tính nghĩa của tên gói khá tốt, từ cái tên có thể hiểu đại khái về công dụng của nó, điều này phần nào giảm bớt khó khăn trong việc di chuyển của các nhà phát triển.
Tuy nhiên, do mới được phát hành không lâu, nhiều dự án vẫn chưa di chuyển. Một số ví dụ và mô tả tài liệu cũng chưa hoàn thiện, có thể gây ra một số nhầm lẫn cho các nhà phát triể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. Điều này cực kỳ quan trọng để nâng cao tính bảo mật, đặc biệt là sau khi @solana/web3.js phiên bản 1.95.5 và 1.95.6 bị tấn công chuỗi cung ứng vào đầu tháng 12 năm 2023. Phiên bản mới sử dụng nhiều chức năng gốc hơn, loại bỏ việc sử dụng phụ thuộc bên ngoài và Polyfills, từ đó giảm thiểu rủi ro an ninh.
Thay đổi chính
cách 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à tạo bộ gửi yêu cầu thông qua cấu hình địa chỉ yêu cầu RPC. Ví dụ, khi gửi giao dịch, sẽ tự động khởi độ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à trả về mã băm giao dịch sau khi giao dịch được xác nhận.
Quản lý cặp khóa
Các thao tác liên quan đến khóa công khai và khóa riêng tư đã 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, thay vào đó là một loạt các 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.
Việc triển khai mới đã sử dụng Web Crypto API của JavaScript và sử dụng triển khai Ed25519 gốc. Điều này đã biến một số thao tác thành bất đồng bộ, nhưng đối với các nhà phát triển JavaScript hiện đại quen thuộc với Promise, đây không phải là một vấn đề lớn.
Xử lý giao dịch
Trong phiên bản 2.x, không còn các lớp Transaction và VersionedTransaction. Các phương pháp liên quan đến System Program cũng cần được nhập từ nơi khác. Ví dụ, lệnh chuyển tiền 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 dùng trong lập trình hàm. Giao dịch không còn được khởi xướng qua Connection nữa, mà được khởi xướng thông qua việc định nghĩa Provider RPC để tạo ra các hàm cụ thể. Cách này mặc dù làm tăng một chút mã nguồn, nhưng 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.
Kết luận
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 với mạng Solana hiệu quả, linh hoạt và tùy chỉnh, hứa hẹn thúc đẩy sự phát triển và ứng dụng hơn nữa của nền tảng.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Phiên bản 2.x của Solana Web3.js đã được phát hành: Lập trình hàm tái tạo trải nghiệm phát triển
Solana Web3.js 2.x: Thời đại mới của lập trình hàm
Solana Web3.js đã phát hành phiên bản 2.x vào tháng 11 năm 2023, so với phiên bản 1.x, phiên bản mới mang lại những thay đổi đáng kể. Bài viết này sẽ tóm tắt những cải tiến chính của nó.
Mặc dù phiên bản 2.x vừa mới được phát hành và tỷ lệ sử dụng vẫn chưa cao, nhiều thư viện phổ biến vẫn chưa được chuyển đổi, nhưng việc hiểu những thay đổi này sẽ giúp chuẩn bị cho các bản nâng cấp trong tương lai.
So sánh phiên bản
Phiên bản 1.x sử dụng khá đơn giản, chỉ bao gồm một gói @solana/web3.js, được đóng gói dựa trên thiết kế lớp với 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 đề. Mặc dù các chức năng mà nhà phát triển thực sự sử dụng có thể rất ít, nhưng toàn bộ mã nguồn sẽ được tải xuống thiết bị của người dùng, 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 đã tách rời kho mã gốc thành nhiều mô-đun nhỏ hơn, 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 và thay vào đó sử dụng nhiều hàm đơn lẻ, điều này có lợi cho việc tối ưu hóa khi xây dựng mã JavaScript. Mã không sử dụng sẽ bị xóa và sẽ không được tải xuống thiết bị của người dùng. Theo dữ liệu chính thức, việc sử dụng DApp phiên bản mới thường có thể đạt được tối ưu hóa kích thước 30%, đối với các ứng dụng có chức năng ít hơn, tỷ lệ tối ưu hóa có thể cao hơn.
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 đội ngũ 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, tính nghĩa của tên gói khá tốt, từ cái tên có thể hiểu đại khái về công dụng của nó, điều này phần nào giảm bớt khó khăn trong việc di chuyển của các nhà phát triển.
Tuy nhiên, do mới được phát hành không lâu, nhiều dự án vẫn chưa di chuyển. Một số ví dụ và mô tả tài liệu cũng chưa hoàn thiện, có thể gây ra một số nhầm lẫn cho các nhà phát triể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. Điều này cực kỳ quan trọng để nâng cao tính bảo mật, đặc biệt là sau khi @solana/web3.js phiên bản 1.95.5 và 1.95.6 bị tấn công chuỗi cung ứng vào đầu tháng 12 năm 2023. Phiên bản mới sử dụng nhiều chức năng gốc hơn, loại bỏ việc sử dụng phụ thuộc bên ngoài và Polyfills, từ đó giảm thiểu rủi ro an ninh.
Thay đổi chính
cách 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à tạo bộ gửi yêu cầu thông qua cấu hình địa chỉ yêu cầu RPC. Ví dụ, khi gửi giao dịch, sẽ tự động khởi độ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à trả về mã băm giao dịch sau khi giao dịch được xác nhận.
Quản lý cặp khóa
Các thao tác liên quan đến khóa công khai và khóa riêng tư đã 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, thay vào đó là một loạt các 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.
Việc triển khai mới đã sử dụng Web Crypto API của JavaScript và sử dụng triển khai Ed25519 gốc. Điều này đã biến một số thao tác thành bất đồng bộ, nhưng đối với các nhà phát triển JavaScript hiện đại quen thuộc với Promise, đây không phải là một vấn đề lớn.
Xử lý giao dịch
Trong phiên bản 2.x, không còn các lớp Transaction và VersionedTransaction. Các phương pháp liên quan đến System Program cũng cần được nhập từ nơi khác. Ví dụ, lệnh chuyển tiền 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 dùng trong lập trình hàm. Giao dịch không còn được khởi xướng qua Connection nữa, mà được khởi xướng thông qua việc định nghĩa Provider RPC để tạo ra các hàm cụ thể. Cách này mặc dù làm tăng một chút mã nguồn, nhưng 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.
Kết luận
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 với mạng Solana hiệu quả, linh hoạt và tùy chỉnh, hứa hẹn thúc đẩy sự phát triển và ứng dụng hơn nữa của nền tảng.