getTransactionsForAddress độc quyền của Helius và truyền phát trực tiếp hoạt động mới qua transactionSubscribe. Trước tiên, bạn sẽ dùng thử dưới dạng bản demo nhúng, sau đó xây dựng thành một ứng dụng Next.js hoàn chỉnh.
Dùng thử trực tiếp
Dán khóa API và địa chỉ ví bất kỳ để xem ba phần hoạt động cùng nhau: danh mục đầu tư, lịch sử và nguồn cấp dữ liệu trực tiếp. Đây chính là dữ liệu mà ứng dụng của bạn sẽ hiển thị.Xây dựng dưới dạng ứng dụng Next.js
Grab the full app on GitHub
Sao chép toàn bộ dự án khởi đầu — ứng dụng Next.js hoàn chỉnh từ hướng dẫn này, sẵn sàng để
npm install && npm run dev.Điều kiện tiên quyết: Node.js 18+ và một khóa API Helius.
1
Scaffold the project
ws cho nguồn cấp WebSocket trực tiếp.Thêm khóa của bạn vào .env.local:.env.local
2
Proxy RPC calls through a route handler
Cách này giữ khóa API của bạn ở phía máy chủ. Máy khách gửi một phương thức và các tham số đến đây, sau đó trình xử lý chạy chúng thông qua Helius SDK. SDK sẽ đính kèm khóa và tạo yêu cầu cho bạn.
app/api/helius/route.ts
3
Relay the live feed over Server-Sent Events
Trình duyệt không thể mở WebSocket Helius nếu không có khóa. Thay vào đó, hãy mở WebSocket trên máy chủ và truyền phát các chữ ký đến máy khách bằng SSE.
app/api/stream/route.ts
4
Render the dashboard
Trang tải danh mục đầu tư và lịch sử thông qua proxy, sau đó đăng ký nguồn cấp SSE để nhận các bản cập nhật trực tiếp.
app/page.tsx
5
Run it
Cơ chế hoạt động
Một lệnh gọi DAS cho toàn bộ danh mục đầu tư
getAssetsByOwner với showFungible: true và showNativeBalance: true trả về token có thể thay thế, NFT (cả loại tiêu chuẩn và nén) cùng số dư SOL gốc trong một phản hồi duy nhất, vì vậy bạn không cần thực hiện các lệnh gọi getBalance hoặc getTokenAccountsByOwner riêng biệt. Phân tách items theo interface để nhóm token và NFT riêng biệt.
Mỗi mục chứa siêu dữ liệu riêng, vì vậy cùng một lệnh gọi có thể cung cấp dữ liệu cho cả hai danh sách. Sử dụng content.metadata.name cho tên và content.links.image cho biểu trưng hoặc hình minh họa. Token có thể thay thế cũng bao gồm một đối tượng token_info với balance thô, decimals và symbol — chia balance cho 10 ** decimals để nhận số lượng ở dạng con người có thể đọc được. Không phải token nào cũng có tên hoặc biểu trưng, vì vậy hãy xử lý dự phòng phù hợp khi thiếu các dữ liệu này.
Toàn bộ lịch sử trong một yêu cầu
getTransactionsForAddress trả về lịch sử giao dịch của ví. Khi dùng cùng filters.tokenAccounts: "balanceChanged", nó cũng bao gồm các giao dịch chuyển trên những tài khoản token liên kết của ví, tức hoạt động mà getSignaturesForAddress thông thường sẽ bỏ sót. Sử dụng transactionDetails: "full" để nhận dữ liệu giao dịch đầy đủ thay vì chỉ có chữ ký.
Cập nhật theo thời gian thực mà không cần thăm dò
transactionSubscribe gửi một thông báo mỗi khi có giao dịch liên quan đến ví, vì vậy bạn không bao giờ phải thăm dò. Việc thêm tokenAccounts: "balanceChanged" vào bộ lọc cũng sẽ khớp với các tài khoản token của ví, nhờ đó các giao dịch chuyển SPL đến sẽ xuất hiện trong nguồn cấp dữ liệu — chính là hoạt động được tính trong lệnh gọi lịch sử. Chuyển tiếp đăng ký thông qua trình xử lý tuyến phía máy chủ giúp khóa API không bị gửi đến máy khách.
Các bước tiếp theo
getAssetsByOwner
Tất cả tùy chọn hiển thị, phân trang và cấu trúc phản hồi tài sản đầy đủ.
getTransactionsForAddress
Bộ lọc nâng cao theo thời gian, slot, token, hướng và số lượng.
transactionSubscribe
Các tùy chọn bộ lọc và cấu trúc payload cho nguồn cấp WebSocket trực tiếp.
Deploy your own program
Hướng tiếp theo: triển khai một chương trình Solana lên devnet thông qua Helius.