Thư viện 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ó những thay đổi đáng kể về cấu trúc và cách sử dụng. 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 di chuyển có thể xảy ra trong tương lai.
So sánh phiên bản
Việc sử dụng phiên bản 1.x tương đối đơn giản, chỉ cần một gói @solana/web3.js là đủ để bao quát tất cả các chức năng. Nó dựa trên thiết kế lớp, chẳng hạn như lớp Connection, cung cấp hàng chục phương thức, gần như bao trùm toàn bộ 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 mã nguồn quá lớn, ngay cả khi các nhà phát triển chỉ sử dụng một số chức năng ít ỏi, toàn bộ thư viện vẫn sẽ được tải xuống thiết bị của người dùng.
Phiên bản 2.x đã áp dụng một phương pháp khác. Nhóm chính thức đã chia nhỏ kho mã thành nhiều mô-đun nhỏ, chẳng 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, thay vào đó chuyển sang cách sử dụng hàm đơn, điều 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ê của 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 kích thước 30%, nếu chỉ sử dụng một số ít chức năng, tỷ lệ tối ưu hóa có thể còn 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 cho đội ngũ Solana. 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 đề then chốt. Hiện tại, việc đặt tên cho các gói có tính ngữ nghĩa tốt, từ tên gọi có thể suy ra đại khái công dụng của chúng, điều này đã phần nào giảm bớt độ khó trong việc chuyển đổi của các nhà phát triển.
Tuy nhiên, do phiên bản 2.x vừa 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 tương đối í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 runtime (như tạo cặp khóa), nhưng tài liệu không mô tả về điều này, có thể khiến một số 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ó 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 2023 trên các phiên bản @solana/web3.js 1.95.5 và 1.95.6 cho thấy, càng nhiều đầu vào và phụ thuộc bên ngoài thì khả năng xảy ra sự cố bảo mật sẽ tăng lên đáng kể. Với sự phát hành của phiên bản 2.x, đội ngũ phát triển đã quyết định sử dụng nhiều hơn các tính năng bản địa, loại bỏ sự phụ thuộc bên ngoài và việc giới thiệu Polyfills. 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 2.x, việc triển khai kết nối đã được thực hiện theo cách hàm tính toán hơn.
javascript
import { createSolanaRpc } from '@solana/web3.js';
const rpc = createSolanaRpc(');
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
Trong phiên bản 2.x, các lớp Keypair và PublicKey hiện có đã được một số hàm thay thế. 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.
generateKeyPair mới trả về Promise, điều này là do việc triển khai mới tận dụng tối đa JavaScript Web Crypto API, 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ộ.
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 Hệ thống cũng không còn tồn tại, cần phải đượ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 dạng pipe thường được sử dụng trong lập trình hàm. Dưới đây là ví dụ về việc sử dụng hàm pipe để thực hiện chức năng chuyển khoản:
javascript
import { pipe } from '@solana/functional';
import { getTransferSolInstruction } from '@solana/programs';
So với phiên bản 1.x, khối lượng mã đã tăng nhẹ, nhưng cung cấp tính tùy chỉnh mạnh mẽ hơn.
Hỗ trợ React
Dự án @solana/web3.js còn bao gồm một thư viện có 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 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 hiệu quả, linh hoạt và tùy chỉnh để tương tác với mạng Solana, hứa hẹn sẽ thúc đẩy việc áp dụng và phát triển nền tảng này.
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.
11 thích
Phần thưởng
11
7
Chia sẻ
Bình luận
0/400
GweiObserver
· 22giờ trước
Cải thiện hiệu suất yyds
Xem bản gốcTrả lời0
OPsychology
· 07-06 03:28
Cuốn lại nhanh quá, ai mà chưa viết vài dòng mã đâu.
Xem bản gốcTrả lời0
ShibaSunglasses
· 07-05 16:48
Cuối cùng đã tối ưu hóa được kệ cũ không ổn.
Xem bản gốcTrả lời0
MetaverseHobo
· 07-05 16:46
Cuối cùng thì hiểu biết có giá trị đã đến.
Xem bản gốcTrả lời0
GateUser-00be86fc
· 07-05 16:43
web3.js nâng cấp thật sự đã đến
Xem bản gốcTrả lời0
GameFiCritic
· 07-05 16:40
Ôi, mình không theo kịp tốc độ phát triển của sol rồi.
Xem bản gốcTrả lời0
BlockchainDecoder
· 07-05 16:28
Từ góc độ triển khai hàm, sự cải thiện hiệu suất nên nằm trong khoảng 15-20%.
Solana Web3.js 2.x phát hành: Cải tiến hiệu suất nhờ vào tái cấu trúc lập trình hàm
Solana Web3.js 2.x: Chương mới về lập trình hàm
Thư viện 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ó những thay đổi đáng kể về cấu trúc và cách sử dụng. 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 di chuyển có thể xảy ra trong tương lai.
So sánh phiên bản
Việc sử dụng phiên bản 1.x tương đối đơn giản, chỉ cần một gói @solana/web3.js là đủ để bao quát tất cả các chức năng. Nó dựa trên thiết kế lớp, chẳng hạn như lớp Connection, cung cấp hàng chục phương thức, gần như bao trùm toàn bộ 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 mã nguồn quá lớn, ngay cả khi các nhà phát triển chỉ sử dụng một số chức năng ít ỏi, toàn bộ thư viện vẫn sẽ được tải xuống thiết bị của người dùng.
Phiên bản 2.x đã áp dụng một phương pháp khác. Nhóm chính thức đã chia nhỏ kho mã thành nhiều mô-đun nhỏ, chẳng 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, thay vào đó chuyển sang cách sử dụng hàm đơn, điều 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ê của 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 kích thước 30%, nếu chỉ sử dụng một số ít chức năng, tỷ lệ tối ưu hóa có thể còn 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 cho đội ngũ Solana. 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 đề then chốt. Hiện tại, việc đặt tên cho các gói có tính ngữ nghĩa tốt, từ tên gọi có thể suy ra đại khái công dụng của chúng, điều này đã phần nào giảm bớt độ khó trong việc chuyển đổi của các nhà phát triển.
Tuy nhiên, do phiên bản 2.x vừa 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 tương đối í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 runtime (như tạo cặp khóa), nhưng tài liệu không mô tả về điều này, có thể khiến một số 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ó 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 2023 trên các phiên bản @solana/web3.js 1.95.5 và 1.95.6 cho thấy, càng nhiều đầu vào và phụ thuộc bên ngoài thì khả năng xảy ra sự cố bảo mật sẽ tăng lên đáng kể. Với sự phát hành của phiên bản 2.x, đội ngũ phát triển đã quyết định sử dụng nhiều hơn các tính năng bản địa, loại bỏ sự phụ thuộc bên ngoài và việc giới thiệu Polyfills. 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 2.x, việc triển khai kết nối đã được thực hiện theo cách hàm tính toán hơn.
javascript import { createSolanaRpc } from '@solana/web3.js';
const rpc = createSolanaRpc(');
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
Trong phiên bản 2.x, các lớp Keypair và PublicKey hiện có đã được một số hàm thay thế. 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.
generateKeyPair mới trả về Promise, điều này là do việc triển khai mới tận dụng tối đa JavaScript Web Crypto API, 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ộ.
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 Hệ thống cũng không còn tồn tại, cần phải đượ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 dạng pipe thường được sử dụng trong lập trình hàm. Dưới đây là ví dụ về việc sử dụng hàm pipe để thực hiện chức năng chuyển khoản:
javascript import { pipe } from '@solana/functional'; import { getTransferSolInstruction } from '@solana/programs';
const transaction = pipe( createTransaction({ version: 0 }), addInstruction(getTransferSolInstruction({ từ: senderPublicKey, đến: recipientPublicKey, số lượng: lamports, })) );
const signature = await sendAndConfirmTransaction(rpc, transaction, signers);
So với phiên bản 1.x, khối lượng mã đã tăng nhẹ, nhưng cung cấp tính tùy chỉnh mạnh mẽ hơn.
Hỗ trợ React
Dự án @solana/web3.js còn bao gồm một thư viện có 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 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 hiệu quả, linh hoạt và tùy chỉnh để tương tác với mạng Solana, hứa hẹn sẽ thúc đẩy việc áp dụng và phát triển nền tảng này.