MỚI: Helius mua lại Light Protocol
thông báo ra mắt sản phẩm Solana Parsed Events API và Parsed Streams
Blog/Cập nhật

Giới thiệu Parsed Events API và Parsed Streams

Sản phẩm @ HeliusKiryl Miranovich trên XKiryl Miranovich trên LinkedIn
Đọc trong 5 phút

Parsed Streams và Parsed Events API là hai sản phẩm dữ liệu đã phân tích cú pháp mới của Helius, trả về các giao dịch Solana được giải mã đầy đủ cho hơn 3.600 chương trình dựa trên IDL onchain của chúng:

  • Các tài khoản có tên
  • Các đối số lệnh có tên
  • Nội dung tóm tắt bằng ngôn ngữ tự nhiên
  • Mọi giao dịch chuyển SOL và token

Parsed Streams gửi các giao dịch phù hợp đến bạn qua WebSocket ngay khi chúng được xác nhận.

Parsed Events API trả về cùng một mô hình đã giải mã theo yêu cầu qua REST và GraphQL, cho bất kỳ chữ ký nào hoặc toàn bộ lịch sử của bất kỳ địa chỉ nào.

Cả hai hiện đều ở giai đoạn beta mở và khả dụng trên mọi gói trả phí.

Vì sao việc đọc giao dịch Solana lại khó?

Khi truy vấn các node RPC tiêu chuẩn để biết điều gì đã xảy ra trong một giao dịch, bạn nhận được một danh sách địa chỉ tài khoản không có tên và dữ liệu lệnh dưới dạng một khối base58 không rõ nội dung.

Theo cách truyền thống, để chuyển dữ liệu đó thành "ví này đã hoán đổi 1.500 SOL lấy PUMP trên Jupiter", bạn phải:

  1. Tìm nạp giao dịch và xác định mọi chương trình mà giao dịch đã tương tác
  2. Tìm IDL của từng chương trình (giao diện được công bố), nếu có
  3. Giải mã dữ liệu lệnh (thường là Borsh) dựa trên IDL đó
  4. Ánh xạ các tài khoản theo vị trí với vai trò của chúng: địa chỉ thứ ba là bên có thẩm quyền hay đích nhận? Chỉ giao diện của chương trình mới biết
  5. Đệ quy vào các lệnh bên trong (CPI), nơi diễn ra phần lớn hoạt động thực tế, chẳng hạn như việc dịch chuyển token bên trong một giao dịch hoán đổi
  6. Lặp lại cho mọi chương trình bạn quan tâm và luôn cập nhật các bộ giải mã khi chương trình phát hành phiên bản mới

Bạn phải bỏ ra nhiều tuần làm việc kỹ thuật trước khi trả lời được dù chỉ một câu hỏi. Đây cũng là một trong những trở ngại lớn nhất khi bắt đầu với Solana. Dữ liệu của chuỗi là công khai nhưng không dễ đọc.

Chúng tôi đã xây dựng một lớp giải mã phía máy chủ để bạn không phải tự làm việc đó.

Phản hồi của Parsed Events bao gồm những gì?

Mọi giao dịch trả về đều được giải mã thông qua danh mục IDL của Helius. 

Dưới đây là một giao dịch hoán đổi thực tế trên Jupiter, được rút gọn để chỉ giữ lại những điểm chính:

Mã
{
  "summary": {
    "type": "swap",
    "description": "GV6UUm… swapped 1500 SOL for 64672839.26195 PUMP via Jupiter",
    "parsedData": {
      "protocol": "jupiter",
      "in_amount": "1500000000000",
      "actual_out_amount": "64672839261950",
      "input_mint": "So11111111111111111111111111111111111111112",
      "output_mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn"
    }
  },
  "instructions": [
    {
      "programName": "jupiter",
      "instructionName": "shared_accounts_route_v2",
      "decoded": {
        "args": { "in_amount": "1500000000000", "slippage_bps": 2200 },
        "accounts": [
          { "name": "user_transfer_authority", "pubkey": "GV6UUm…", "isSigner": true },
          { "name": "source_mint", "pubkey": "So1111…" }
        ]
      }
    }
  ]
}

Thay vì đoán địa chỉ thứ ba trong danh sách tài khoản có ý nghĩa gì, bạn chỉ cần đọc "name": "user_transfer_authority". 

Các đối số cũng được giải mã khi trả về: "slippage_bps": 2200 thay vì byte thô.

Và summary ở cấp giao dịch có thể được hiển thị nguyên văn cho người dùng.

Mỗi kết quả cũng bao gồm phí và tài khoản trả phí, các giao dịch chuyển SOL gốc, giao dịch chuyển SPL và Token-2022, cũng như lỗi chương trình tùy chỉnh đã giải mã khi có siêu dữ liệu. 

Đối với các chương trình không có trong danh mục, lệnh sẽ dùng dữ liệu thô và tài khoản thô làm phương án dự phòng, vì vậy bạn luôn có dữ liệu để xử lý.

Parsed Streams: Gửi trực tiếp các giao dịch đã giải mã đến bạn

Parsed Streams là một dịch vụ WebSocket theo dõi mọi giao dịch đã xác nhận, giải mã chúng rồi gửi đến bạn những giao dịch khớp với bộ lọc ở cấp lệnh ngay từ phía máy chủ.

Bạn không bao giờ phải xử lý luồng dữ liệu thô khổng lồ hay duy trì bộ giải mã.

Một bộ lọc được tạo từ năm trường:

  1. programs
  2. instructionNames
  3. accounts (theo điều kiện có chứa hoặc theo vai trò có tên)
  4. includeCpi
  5. includeFailed

Ví dụ, "mọi lệnh định tuyến Jupiter có tương tác với ví này" sẽ là:

Mã
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "parsedTransactionSubscribe",
  "params": [
    {
      "programs": ["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"],
      "instructionNames": ["route", "shared_accounts_route"]
    }
  ]
}

Mỗi thông báo chứa toàn bộ giao dịch đã giải mã, cùng với matchedIndexes trỏ đến các lệnh khớp với bộ lọc của bạn.

Làm thế nào để lấy tên lệnh của các chương trình Solana?

Đoán tên lệnh là nguyên nhân phổ biến nhất khiến bộ lọc âm thầm không khớp với dữ liệu nào. Để lấy tên lệnh của các chương trình Solana, hãy gọi describeProgram với địa chỉ của bất kỳ chương trình nào. Phương thức này sẽ trả về các lệnh, sự kiện và vai trò tài khoản mà trình đối sánh dùng để so sánh:

Mã
{
  "id": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
  "name": "jupiter",
  "instructions": ["route", "shared_accounts_route", "exact_out_route"],
  "events": ["SwapEvent"],
  "roles": ["user_transfer_authority", "destination_token_account"]
}

Tra cứu chương trình, thêm các tên vào bộ lọc rồi đăng ký nhận dữ liệu. 

Hướng dẫn theo dõi các giao dịch hoán đổi trên Jupiter trình bày toàn bộ quy trình này từ đầu đến cuối.

Parsed Events API: Giải mã giao dịch theo yêu cầu

Đối với nhu cầu tra cứu thay vì dữ liệu trực tiếp, Parsed Events API áp dụng cùng cơ chế giải mã bằng danh mục IDL theo yêu cầu.

Phân tích cú pháp giao dịch nhận các chữ ký và trả về chúng dưới dạng đã giải mã.

Lịch sử giao dịch đã phân tích cú pháp phân trang toàn bộ lịch sử đã giải mã của một địa chỉ và trả về các giao dịch mới nhất trước.

Mã
curl -X POST "https://mainnet.helius-rpc.com/v1/parsed-events/transactions?api-key=YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"transactions": ["5xSKzM8bvpudE521jikHqASzMr23Ms4X4ieY3K8oFPFrJWCSSgYocJmHznrR8b12voDxKDH8ykdCLXSRrx6duVLH"]}'

Cả hai phương thức cũng khả dụng qua GraphQL, vì vậy bạn chỉ cần chọn các trường đã phân tích cú pháp mà ứng dụng của mình cần.

Parsed Events so với Enhanced Transaction API

Parsed Events là sản phẩm kế nhiệm Enhanced Transactions API. 

Trong khi Enhanced Transactions phân loại giao dịch vào một danh sách cố định các loại sự kiện, Parsed Events giải mã từng lệnh thông qua danh mục IDL và sử dụng dữ liệu thô làm phương án dự phòng thay vì UNKNOWN đối với các chương trình không nhận dạng được.

Nếu hiện đang sử dụng Enhanced Transactions API, hướng dẫn di chuyển sẽ ánh xạ mọi endpoint, tham số và trường phản hồi, đồng thời cung cấp một câu lệnh để agent của bạn có thể tự chạy và hoàn tất quá trình di chuyển.

Công cụ phân tích cú pháp nào phù hợp với tôi?

Bạn muốnSử dụng
Nhận giao dịch đã giải mã theo thời gian thực, với bộ lọc phía máy chủParsed Streams
Giải mã một chữ ký cụ thể hoặc phân trang lịch sử của một địa chỉParsed Events API
Luồng dữ liệu thô đầy đủ với khả năng kiểm soát phía máy khách và độ trễ thấp nhất cho các giao dịch đã xử lýLaserStream
Lịch sử giao dịch thô và bổ sung dữ liệu cũ ở quy mô lớngetTransactionsForAddress
Các đối tượng giao dịch chuyển token và SOL gốc dễ đọc cho một địa chỉ vígetTransfersByAddress

Hai sản phẩm mới dùng chung một công cụ giải mã, nên giao dịch có cùng định dạng dù được nhận qua luồng hay lệnh gọi REST. Quan trọng hơn, bạn có thể tạo nguyên mẫu dựa trên dữ liệu lịch sử bằng Parsed Events rồi chuyển sang dữ liệu trực tiếp với Parsed Streams mà không cần thay đổi mã phân tích cú pháp.

Bắt đầu

Parsed Streams và Parsed Events API đang ở giai đoạn beta mở và khả dụng trên mọi gói trả phí. Lấy khóa API từ Bảng điều khiển Helius.

Để kết nối, hãy sử dụng các endpoint sau:

Parsed Streams: 

wss://fs-beta.helius-rpc.com/?api-key=YOUR_API_KEY

Parsed Events API: 

https://mainnet.helius-rpc.com/v1/parsed-events/...?api-key=YOUR_API_KEY

Hướng dẫn

Hướng dẫn bắt đầu nhanh với Parsed Streams giúp bạn nhận thông báo đã giải mã đầu tiên chỉ trong vài phút, còn Hướng dẫn bắt đầu nhanh với Parsed Events cũng giúp bạn làm điều tương tự với chữ ký được phân tích cú pháp đầu tiên. 

Nếu có câu hỏi, vui lòng liên hệ với chúng tôi trên Telegram hoặc Discord.

Đăng ký nhận tin từ Helius

Luôn cập nhật những thông tin mới nhất về phát triển Solana và nhận thông báo khi chúng tôi đăng bài