메인 콘텐츠로 건너뛰기
Preconfirmations 구독을 시작합니다. Preconfirmations는 트랜잭션이 엔트리로 수집되고 shred로 변환되기 전에 전달됩니다. 이는 Helius가 제공하는 지연 시간이 가장 짧은 트랜잭션 신호입니다. 하나의 구독으로 Helius preconfirmation과 BAM preconfirmation을 모두 스트리밍합니다. Helius preconfirmation은 리더가 트랜잭션을 실행하는 즉시 생성되며 실행 상태를 포함합니다. BAM preconfirmation은 검증자가 트랜잭션 실행을 확약할 때 생성됩니다. includeSource을 사용하여 소스를 선택하세요.

엔드포인트

preconfSubscribe는 Helius Gatekeeper 엔드포인트에서 제공됩니다:
  • wss://beta.helius-rpc.com/?api-key=<API_KEY>
beta 호스트 이름은 Preconfirmations의 성숙도가 아닌 Gatekeeper 출시를 나타냅니다 — 트래픽이 Gatekeeper로 이동됨에 따라 표준 엔드포인트가 될 것입니다.
스트림은 연속적이지 않습니다. 커버리지는 Helius에 전달하거나 BAM을 실행 중인 네트워크 스테이크의 비율에 따라 확장되므로 메시지가 없는 슬롯을 예상하십시오 — 이러한 빈틈을 우아하게 처리하십시오. 커버리지를 참조하십시오.

권한

string
필수
api-key 쿼리 매개변수로 전달하는 Helius API 키입니다. Preconfirmations는 모든 유료 플랜에서 사용할 수 있습니다.

본문

array
선택 사항입니다. params를 생략하면 Helius와 BAM의 모든 거래를 받을 수 있습니다. 스트림을 좁히려면 첫 번째 요소로 필터 객체를 전달하세요 — 필터링은 서버 측에서 이루어지므로 원하고 필요한 거래에만 비용이 청구됩니다.
잘못된 소스, 공개 키, 서명, 명령어 필터 또는 리전 코드는 JSON-RPC 오류 -32602(잘못된 매개변수)을 반환합니다. includeSource을 지원 중단된 includeBam 필드와 함께 사용해도 -32602이 반환됩니다. 명령어 필터는 최상위 명령어만 검사합니다. 프로그램 간 호출(CPI)을 통해 호출된 명령어와는 일치하지 않습니다. memcmp 종료 오프셋과 dataSize은 4,096바이트를 초과할 수 없습니다. 계정 필터는 트랜잭션의 정적 계정 키 이외의 항목도 일치시킵니다. Helius가 서버 측에서 v0 주소 조회 테이블을 확인하므로 accountInclude, accountExclude 및 accountRequired은 트랜잭션이 ALT를 통해 로드하는 계정과도 일치합니다.

리전 코드

Helius preconfirmation의 리전은 Helius가 트랜잭션을 수집한 위치입니다. BAM preconfirmation의 경우 Helius가 트랜잭션을 수집한 위치가 아니라 preconfirmation을 생성한 리전 BAM 엔드포인트입니다. BAM의 싱가포르 및 댈러스 엔드포인트는 sgp 및 dal에 매핑됩니다.

응답

integer
구독 ID(구독 취소에 필요)

알림

JSON 확인 응답 후 알림은 JSON이 아닌 바이너리 WebSocket 프레임으로 전달됩니다. Helius와 BAM preconfirmation은 동일한 레이아웃을 사용합니다. 각 프레임은 단일 트랜잭션을 포함하는 압축된 바이트 레이아웃입니다. 페이로드에는 소스 필드가 없습니다. 다른 소스도 0을 보고할 수 있으므로 tx_index = 0에서 BAM 소스라고 추론하지 마세요.
항상 version 바이트를 먼저 읽고 확인하세요. 현재 값은 1입니다. Helius가 페이로드 형식을 업데이트해야 하면 버전이 증가합니다. 스키마가 변경되어도 디코더가 계속 작동하도록 버전에 따라 분기하세요.
preconfirmation은 초기 신호일 뿐 보장하지는 않습니다. 트랜잭션은 아직 온체인에 기록되지 않았으며 실패하거나 삭제될 수 있습니다. 최종 결과로 처리하기 전에 표준 커밋먼트 검사를 통해 기록 여부를 확인하세요.

트랜잭션 디코딩

트랜잭션 바이트는 검증자가 직렬화한 그대로 트랜잭션 버전의 표준 와이어 인코딩으로 전달됩니다. 레거시 및 v0 트랜잭션은 bincode이 생성하는 서명 우선 레이아웃을 사용합니다. 트랜잭션 v1(SIMD-0385)은 서명이 끝에 있는 메시지 우선 레이아웃을 사용하므로 bincode은 v1 페이로드에서 실패합니다. 모든 버전을 처리할 수 있는 디코더를 사용하세요. Rust에서는 agave-transaction-view가 레거시, v0 및 v1 트랜잭션을 제자리에서 파싱하며 권장 옵션입니다. 최신 Solana SDK VersionedTransaction과 함께 wincode을 사용해도 됩니다. JavaScript에서는 라이브러리 버전이 트랜잭션 v1을 지원하는지 확인하세요. Rust 예시는 가이드를 참조하세요.

중복 알림

Helius 및 BAM preconfirmation은 소스별로 중복 제거되며 소스 간에는 중복 제거되지 않습니다. 일부 트랜잭션은 두 경로를 통해 Helius에 도달하므로 동일한 서명을 두 번 수신할 수 있으며, 두 사본이 서로 다른 슬롯을 보고할 수도 있습니다. 클라이언트에서 서명을 기준으로 중복을 제거하고 트랜잭션으로 트리거되는 작업을 멱등성 있게 만드세요. 가이드를 참조하세요.

요금

Preconfirmations는 Developer, Business, Professional, Enterprise 등 모든 유료 플랜에서 사용할 수 있습니다. 무료 플랜은 사용할 수 없습니다. 자세한 내용은 크레딧을 참조하세요. 전달된 메시지가 0개인 슬롯은 사전 확인 지원 범위에 포함되더라도 크레딧이 청구되지 않습니다. 슬롯에서 하나 이상의 메시지가 전달되면 열려 있는 각 preconfSubscribe 구독에 300크레딧과 전달된 메시지당 10크레딧 중 더 큰 금액이 청구됩니다. 지원 범위에 포함되지 않는 슬롯에는 크레딧이 청구되지 않습니다. 소스 및 리전별 청구 대상에 대한 자세한 내용은 요금을 참조하세요. 동시 구독은 하나 이상의 메시지를 수신하면 각각 독립적으로 청구됩니다. 더 이상 필요하지 않은 구독은 preconfUnsubscribe를 사용하여 종료하세요. includeSource: ["helius"]를 사용하면 BAM만 지원하는 슬롯은 청구 대상에서 제외됩니다. regionInclude를 설정하면 선택한 리전 외부의 지원 슬롯은 해당 구독에 대해 크레딧이 청구되지 않습니다. 조건과 일치하는 슬롯은 구독에서 하나 이상의 메시지를 수신한 경우에만 청구됩니다. 고유 서명별이 아니라 메시지별로 청구됩니다. Helius와 BAM에서 모두 전달된 트랜잭션은 두 번 계산됩니다. Helius Preconfirmations만 원하는 경우 includeSource: ["helius"]를 설정하세요.
비용을 관리하려면 가능한 경우 계정 필터를 하나의 구독으로 통합하고, regionInclude를 사용하여 필요한 리전으로 청구 범위를 제한하세요. BAM이 필요하지 않으면 includeSource: ["helius"]를 설정하고, Helius Dashboard에서 크레딧을 모니터링하세요.

관련 항목

Preconfirmations Overview

Preconfirmations의 정의와 검증자 파이프라인에서의 위치를 설명합니다.

preconfUnsubscribe

ID를 사용하여 구독을 중지합니다.