전처리된 트랜잭션이 라이프사이클에서 차지하는 위치
Solana의 아키텍처에서 트랜잭션은 완전히 처리되기 전에 여러 단계를 거칩니다:- Shred 수신 → 밸리데이터가 트랜잭션 shreds (데이터 조각)를 수신합니다. ← Helius의 **raw shreds (UDP)**가 여기에서 제공됩니다.
- Shred 해독 → Shreds가 원시 트랜잭션으로 해독됩니다. ← 여기에서 전처리된 트랜잭션을 사용할 수 있습니다.
- 트랜잭션 실행 → 런타임에서 트랜잭션이 실행됩니다.
- 메타데이터 생성 → 사전/사후 잔액, 로그, 오류 정보가 계산됩니다.
- 커밋 → 트랜잭션이 처리/확인/최종 상태에 도달합니다. ← LaserStream gRPC 및 **LaserStream WebSocket**이 여기에서 제공됩니다.
최선의 노력 전달 보장
전처리된 트랜잭션 전송은 최대한 노력하지만 보장되지는 않습니다. 우리는 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 함수를 제공합니다:
Rust
Rust SDK는 네이티브 성능을 제공합니다:Go
Go SDK는 Go 인터페이스를 제공합니다:구독 구조 및 필터링
요청 구조
전처리된 구독 요청은 표준 구독과 유사한 구조를 따르지만, 집중된 필터 세트가 포함됩니다:응답 구조
업데이트는 전체 트랜잭션 메시지와 기본 메타데이터와 함께 도착합니다:transaction.transaction 필드에는 다음이 포함된 전체 Solana 트랜잭션 구조가 포함됩니다:
- 메시지 - 계정 키, 명령어, 최근 블록해시
- 서명 - 모든 트랜잭션 서명
- 주소 테이블 조회 - 버전화된 트랜잭션을 위한 것
meta 필드가 없습니다.