Skip to main content
폐기 예정 공지. gRPC를 통한 전처리된 트랜잭션은 폐기됩니다. preprocessedSubscribe WebSocket 메서드로 전환하세요 — 이 방법은 동일한 실행 전 트랜잭션 데이터를 더 낮은 지연 시간으로 제공합니다.
전처리된 트랜잭션은 gRPC를 통해 Solana 트랜잭션을 수신하는 가장 빠른 방법입니다. Helius는 밸리데이터에 도착하는 즉시 shreds를 해독하고 결과 트랜잭션을 배송하여, 실행 후 구독보다 수 밀리초 먼저 트랜잭션 데이터에 액세스할 수 있게 해줍니다 — 평균적으로 커밋 수준을 약 8ms 앞서는 속도입니다. 이 가이드는 전처리된 트랜잭션을 언제 사용해야 하는지, 어떤 데이터가 제공되는지, 그리고 LaserStream SDK를 사용하여 구독하는 방법을 설명합니다 (동일한 gRPC 연결을 통해 전처리된 트랜잭션도 서비스됩니다).

전처리된 트랜잭션이 라이프사이클에서 차지하는 위치

Solana의 아키텍처에서 트랜잭션은 완전히 처리되기 전에 여러 단계를 거칩니다:
  1. Shred 수신 → 밸리데이터가 트랜잭션 shreds (데이터 조각)를 수신합니다. ← Helius의 **raw shreds (UDP)**가 여기에서 제공됩니다.
  2. Shred 해독 → Shreds가 원시 트랜잭션으로 해독됩니다. ← 여기에서 전처리된 트랜잭션을 사용할 수 있습니다.
  3. 트랜잭션 실행 → 런타임에서 트랜잭션이 실행됩니다.
  4. 메타데이터 생성 → 사전/사후 잔액, 로그, 오류 정보가 계산됩니다.
  5. 커밋 → 트랜잭션이 처리/확인/최종 상태에 도달합니다. ← LaserStream gRPC 및 **LaserStream WebSocket**이 여기에서 제공됩니다.
실행 후 구독은 전체 실행 및 메타데이터 생성 후인 단계 5에서 데이터를 제공합니다. 전처리 구독은 해독된 직후인 단계 2에서 제공합니다 — 실행이 완료되기 전에. 트레이드오프: 실행 메타데이터 없이도 수 밀리초 빠르게 트랜잭션 데이터를 받을 수 있지만, 잔액 변경, 로그 또는 오류 정보는 포함되지 않습니다.
이것은 트랜잭션 전용 스트림입니다. 계정 및 프로그램 상태 업데이트는 런타임에서 트랜잭션이 실행될 때까지 존재하지 않습니다 (단계 4). 실시간 계정 또는 프로그램 업데이트 — 토큰 잔액, 본딩 커브 상태, 프로그램 계정, 원시 트랜잭션이 아닌 것들을 원하시면 LaserStream gRPC에서 processed 커밋을 사용하세요, 이는 계정/프로그램 변화를 수신하는 가장 빠른 방법입니다.
더 빠른 트랜잭션 신호가 필요하신가요? 사전 확인을 시도하여 예약된 트랜잭션을 스트리밍하고 원시 Shreds (UDP)를 사용하여 처리되지 않은 트랜잭션 데이터를 확보하세요.

최선의 노력 전달 보장

전처리된 트랜잭션 전송은 최대한 노력하지만 보장되지는 않습니다. 우리는 99.99% 전송률을 목표로 하지만, 다음과 같은 동안 일부 트랜잭션이 손실될 수 있습니다:
  • 인프라 업데이트 및 재배포
  • 네트워크 문제 또는 밸리데이터 연결 문제
  • Shred 해독 또는 처리의 특수한 경우
전송이 보장되어야 하는 중요한 애플리케이션에는 표준 트랜잭션 구독을 사용하세요.

어떤 데이터가 제공되나요?

전처리된 트랜잭션에는 전체 트랜잭션 메시지가 포함되지만 실행 메타데이터는 없습니다:

제공되는 데이터

  • 트랜잭션 서명 - 고유한 트랜잭션 식별자
  • 계정 키 - 트랜잭션이 참조하는 모든 계정
  • 명령어 - 전체 명령어 데이터 및 프로그램 호출
  • 최근 블록해시 - 트랜잭션 만료 참조
  • 서명들 - 모든 트랜잭션 서명
  • 투표 트랜잭션 여부 - 투표 트랜잭션인지 여부
  • 슬롯 번호 - 이 트랜잭션이 포함된 슬롯

누락된 데이터

  • 트랜잭션 메타데이터 - 토큰 잔액 변경, 사전/사후 잔액, 트랜잭션 상태
  • 트랜잭션 오류 - 트랜잭션이 실패했는지 여부를 알 수 없음
  • 내부 명령어 - 프로그램 간 호출 (CPIs)은 포함되지 않음
  • 로그 메시지 - 프로그램 로그는 실행 중에 생성됨
  • 소비된 컴퓨트 유닛 - 실행 메트릭 없음
전처리된 트랜잭션은 “제안”을 받는 것과 같습니다. 사용자가 시도한 것을 볼 수 있지만 실제로 무슨 일이 일어났는지는 알 수 없습니다.

SDK 지원 및 버전 요구 사항

전처리된 트랜잭션 구독은 모든 LaserStream SDK에서 지원됩니다:

JavaScript/TypeScript

버전 0.2.8 이상

Rust

버전 0.1.5 이상

Go

버전 0.1.0 이상

구현 예시

JavaScript/TypeScript

JavaScript SDK는 자동 재연결이 가능한 전용 subscribePreprocessed 함수를 제공합니다:
전체 예시: preprocessed-transaction-sub.ts

Rust

Rust SDK는 네이티브 성능을 제공합니다:
전체 예시: preprocessed_transaction_sub.rs

Go

Go SDK는 Go 인터페이스를 제공합니다:
전체 예시: preprocessed-transaction-sub.go

구독 구조 및 필터링

요청 구조

전처리된 구독 요청은 표준 구독과 유사한 구조를 따르지만, 집중된 필터 세트가 포함됩니다:

응답 구조

업데이트는 전체 트랜잭션 메시지와 기본 메타데이터와 함께 도착합니다:
transaction.transaction 필드에는 다음이 포함된 전체 Solana 트랜잭션 구조가 포함됩니다:
  • 메시지 - 계정 키, 명령어, 최근 블록해시
  • 서명 - 모든 트랜잭션 서명
  • 주소 테이블 조회 - 버전화된 트랜잭션을 위한 것
이는 표준 구독의 트랜잭션 구조와 동일하지만, 실행 결과를 포함하는 meta 필드가 없습니다.