Chuyển đến nội dung chính
Bắt đầu đăng ký Preconfirmations — các giao dịch được phân phối trước khi được tập hợp thành entry và chuyển đổi thành shred. Đây là tín hiệu giao dịch có độ trễ thấp nhất mà Helius cung cấp. Một lượt đăng ký truyền phát cả xác nhận trước của Helius, được phát ngay khi leader thực thi giao dịch và kèm theo trạng thái thực thi, lẫn xác nhận trước của BAM, được phát khi validator cam kết thực thi giao dịch. Dùng includeSource để chọn một trong hai nguồn.

Điểm cuối

preconfSubscribe được cung cấp từ điểm cuối Gatekeeper của Helius:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
Tên máy chủ beta đề cập đến quá trình triển khai Gatekeeper, không phải mức độ hoàn thiện của Preconfirmations — đây sẽ trở thành điểm cuối tiêu chuẩn khi lưu lượng được chuyển sang Gatekeeper.
Luồng không liên tục. Phạm vi bao phủ tăng theo tỷ lệ stake mạng chuyển tiếp đến Helius hoặc chạy BAM, vì vậy có thể có các slot không có thông báo — hãy xử lý các khoảng trống này một cách phù hợp. Xem Phạm vi bao phủ.

Xác thực

string
bắt buộc
Khóa API Helius của bạn, được truyền dưới dạng tham số truy vấn api-key. Preconfirmations có trên tất cả các gói trả phí.

Nội dung yêu cầu

array
Không bắt buộc. Bỏ qua params để nhận mọi giao dịch từ cả Helius và BAM. Để thu hẹp luồng, hãy truyền một đối tượng bộ lọc làm phần tử đầu tiên — quá trình lọc diễn ra ở phía máy chủ, nên bạn chỉ trả phí và nhận các giao dịch mình quan tâm.
Nguồn, khóa công khai, chữ ký, bộ lọc lệnh hoặc mã khu vực không hợp lệ sẽ trả về lỗi JSON-RPC -32602 (tham số không hợp lệ). Việc kết hợp includeSource với trường includeBam đã ngừng dùng cũng trả về -32602. Bộ lọc lệnh chỉ kiểm tra các lệnh cấp cao nhất. Chúng không khớp với các lệnh được gọi thông qua lời gọi liên chương trình (CPI). Độ lệch cuối memcmp và dataSize không được vượt quá 4.096 byte. Bộ lọc tài khoản không chỉ khớp với các khóa tài khoản tĩnh của giao dịch — Helius phân giải bảng tra cứu địa chỉ v0 ở phía máy chủ, vì vậy accountInclude, accountExclude và accountRequired cũng khớp với các tài khoản mà giao dịch tải qua ALT.

Mã khu vực

Đối với xác nhận trước của Helius, khu vực là nơi Helius tiếp nhận giao dịch. Đối với xác nhận trước của BAM, đó là điểm cuối BAM theo khu vực đã phát xác nhận trước, không phải nơi Helius tiếp nhận giao dịch. Các điểm cuối Singapore và Dallas của BAM ánh xạ đến sgp và dal.

Phản hồi

integer
ID đăng ký (cần thiết để hủy đăng ký)

Thông báo

Sau thông báo xác nhận JSON, các thông báo được phân phối dưới dạng khung WebSocket nhị phân (không phải JSON). Xác nhận trước của Helius và BAM có cùng bố cục. Mỗi khung là một bố cục byte được đóng gói, chứa một giao dịch duy nhất: Payload không có trường nguồn. Không suy luận giao dịch bắt nguồn từ BAM dựa trên tx_index = 0 vì các nguồn khác cũng có thể báo cáo 0.
Luôn đọc và kiểm tra byte version trước tiên. Hiện byte này là 1. Nếu Helius cần cập nhật định dạng payload, phiên bản sẽ tăng — hãy phân nhánh dựa trên phiên bản để trình giải mã tiếp tục hoạt động qua các thay đổi lược đồ.
Xác nhận trước là một tín hiệu sớm, không phải sự đảm bảo. Giao dịch chưa được ghi nhận onchain và vẫn có thể thất bại hoặc bị loại bỏ. Hãy xác nhận giao dịch đã được ghi nhận thông qua các bước kiểm tra commitment tiêu chuẩn trước khi coi đó là kết quả cuối cùng.

Giải mã giao dịch

Các byte giao dịch được chuyển tiếp chính xác như cách validator tuần tự hóa chúng, theo mã hóa truyền dẫn tiêu chuẩn dành cho phiên bản giao dịch đó. Các giao dịch legacy và v0 sử dụng bố cục chữ ký trước do bincode tạo ra. Giao dịch v1 (SIMD-0385) sử dụng bố cục thông điệp trước với chữ ký ở cuối, vì vậy bincode không xử lý được payload v1. Dùng trình giải mã xử lý được mọi phiên bản. Trong Rust, agave-transaction-view phân tích tại chỗ các giao dịch legacy, v0 và v1, đồng thời là tùy chọn được đề xuất; wincode với một Solana SDK hiện hành VersionedTransaction cũng hoạt động. Trong JavaScript, hãy đảm bảo phiên bản thư viện hỗ trợ giao dịch v1. Xem hướng dẫn để biết ví dụ bằng Rust.

Thông báo trùng lặp

Xác nhận trước của Helius và BAM được loại bỏ trùng lặp riêng theo từng nguồn, không phải giữa các nguồn. Một tỷ lệ nhỏ giao dịch đến Helius qua cả hai nguồn, vì vậy bạn có thể nhận cùng một chữ ký hai lần và hai bản sao có thể báo cáo các slot khác nhau. Hãy loại bỏ trùng lặp theo chữ ký trên máy khách và đảm bảo các hành động do giao dịch kích hoạt có tính lũy đẳng. Xem hướng dẫn.

Giá

Preconfirmations có trên tất cả các gói trả phí: Developer, Business, Professional và Enterprise. Gói miễn phí không đủ điều kiện. Xem Credits để biết chi tiết. Các slot không gửi thông báo nào sẽ không tốn credit, ngay cả khi slot đó nằm trong phạm vi phủ sóng của Preconfirmations. Khi một slot gửi ít nhất một thông báo, mỗi đăng ký preconfSubscribe đang mở sẽ bị tính mức cao hơn giữa 300 credit và 10 credit cho mỗi thông báo được gửi. Các slot không được phủ sóng không tốn credit. Xem Giá để biết điều kiện tính phí theo nguồn và khu vực. Mỗi đăng ký đồng thời được tính phí độc lập khi nhận được ít nhất một thông báo. Đóng các đăng ký bạn không còn cần bằng preconfUnsubscribe. Với includeSource: ["helius"], các slot được phủ sóng chỉ bởi BAM sẽ không bị tính phí. Khi đặt regionInclude, các slot được phủ sóng nằm ngoài những khu vực đã chọn sẽ không tốn credit cho đăng ký đó; các slot phù hợp chỉ bị tính phí khi đăng ký nhận được ít nhất một thông báo. Phí được tính theo từng thông báo, không phải theo từng chữ ký duy nhất. Một giao dịch được cả Helius và BAM gửi sẽ được tính hai lần. Đặt includeSource: ["helius"] nếu bạn chỉ muốn nhận Preconfirmations từ Helius.
Để kiểm soát chi phí, hãy hợp nhất các bộ lọc tài khoản vào một đăng ký khi phù hợp, sử dụng regionInclude để giới hạn việc tính phí ở những khu vực bạn cần, đặt includeSource: ["helius"] khi bạn không cần BAM và theo dõi credit trong Bảng điều khiển Helius.

Liên quan

Preconfirmations Overview

Preconfirmations là gì và nằm ở đâu trong quy trình xử lý của validator.

preconfUnsubscribe

Dừng một lượt đăng ký theo ID của lượt đăng ký đó.