이 보장은 표준 구독 (트랜잭션, 계정, 슬롯, 블록)에 적용됩니다. 전처리된 트랜잭션 (Shred Delivery의 일부)은 별도의 최선의 노력 기반 전송 보장을 따릅니다.
정확히 한 번만 전송
LaserStream은 정확히 한 번만 전송을 보장합니다. 각 메시지는 스트림에 정확히 한 번씩 전달되며, 중복 메시지를 받거나 메시지가 누락되지 않습니다. LaserStream은 여러 Solana 노드에 동시에 연결하고, 들어오는 데이터를 중복 제거한 후 스트림으로 전달하여 이를 구현합니다. 이 다중 노드 아키텍처는 단일 실패 지점을 제거하여 전송 정확도를 희생하지 않고 최대 가동 시간을 보장합니다.커밋 수준에 따른 메시지 순서
전송 순서는 메시지의 커밋 수준에 따라 달라집니다.확인됨 및 확정됨
모든 확인된 및 확정된 메시지는 순서대로 전달됩니다. 이러한 커밋 수준은 온체인 상태의 일관되고 순차적인 보기를 제공합니다.처리됨
모든 처리된 메시지는 포크가 없는 경우 오름차순 슬롯 순서로 전송됩니다. 포크가 발생하면, 네트워크가 기준 체인으로 재조직되는 동안 슬롯 순서가 일시적으로 변동될 수 있습니다. 포크가 해결되면, 오름차순 순서가 재개됩니다.슬롯 내에서의 순서
단일 슬롯 내에서 LaserStream은 계정 업데이트 및 트랜잭션을 다음의 보장으로 제공합니다.트랜잭션 전 계정 업데이트
각 트랜잭션에 대해 야기된 계정 업데이터는 해당 트랜잭션 자체 전에 전달됩니다.트랜잭션 간 순서
LaserStream은 Agave의 Geyser 플러그인과 동일한 순서를 유지합니다. 다른 트랜잭션의 업데이트가 결정론적 순서로 도착하는지는 쓰기 잠금에 따라 달라집니다.- 동일한 쓰기 잠금 (예: 동일한 Raydium 풀에서의 세 가지 거래): 항상 결정적입니다. Agave는 동일한 계정에 쓰는 경우 이들을 순차적으로 실행합니다.
- 다른 쓰기 잠금 (예: 두 개의 관련 없는 트랜잭션): 반드시 결정적이지는 않습니다. Agave는 이를 병렬로 실행할 수 있으며, 스트림 내에서의 업데이트가 섞일 수 있습니다.
쓰기 버전 표준화
LaserStream은 다중 노드 아키텍처 전반에서 쓰기 버전을 표준화합니다. 로컬 노드마다 쓰기 버전이 다를 수 있는 원시 Geyser나 Yellowstone과 달리, LaserStream은 처리 수준의 계정 업데이트에 대한 순서를 제공하는 일관된 쓰기 버전을 제공합니다.일시적 예외: 크기가 512KB를 초과하는 계정은 성능상의 이유로 Geyser 플러그인에서 현재 버퍼링되어 있으며, 해당 계정의 결정적 순서에 영향을 미칠 수 있습니다. 이 제한은 곧 제거될 예정입니다.