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>
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.-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.
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 dobincode 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.
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ý đó.