XRP Wiki
REF · 03.03 / 기술 및 프로토콜

레저 구조와 클로즈 프로세스

XRP 레저가 상태와 이력을 연속적이고 불변하는 레저 버전들로 어떻게 구성하는지 설명합니다.

레저 버전

XRPL의 이력은 번호가 매겨진 일련의 레저 버전으로 구성되며, 각 버전은 특정 시점의 계정 잔액과 객체 상태의 완전한 스냅샷과, 이전 버전으로부터 그것을 생성하기 위해 적용된 거래 목록을 나타냅니다. 새로운 레저 버전은 컨센서스 과정을 통해 대략 3~5초마다 생성됩니다.

레저 버전 안에 들어 있는 것

클로즈된 각 레저 버전에는 다음이 포함됩니다.

  • 레저 헤더 — 시퀀스 번호, 이전 레저를 가리키는 해시, 타임스탬프를 포함합니다.
  • 상태 트리 — 모든 계정, 그 잔액, 계정이 소유한 객체(트러스트라인, 오퍼, 에스크로 등)를 포함하며, 상태의 어떤 부분이든 암호학적으로 증명할 수 있도록 머클 트리와 유사한 구조로 인코딩됩니다.
  • 거래 트리 — 해당 레저 버전에 적용된 모든 거래를 나열하며, 역시 머클 트리와 유사한 구조입니다.

클로즈 프로세스

레저를 "클로즈"한다는 것은 네트워크가 다음 버전에 대해 컨센서스에 도달하고 이를 확정하는 행위입니다. 클로즈되고 나면:

  • 해당 레저 내 거래 순서는 고정되며 변경할 수 없습니다.
  • 결과로 나온 계정 잔액과 상태는 최종 확정됩니다.
  • 다음 레저 버전이 그 위에 쌓이기 시작합니다.

파이널리티가 이후 여러 블록에 걸쳐 확률적으로 발생하는 것이 아니라 레저 클로즈 시점에 발생하기 때문에, 비트코인처럼 "컨펌"을 기다리는 것에 해당하는 과정이 없습니다 — 클로즈된 레저에 포함된 거래는 그것으로 끝입니다.

시퀀스 번호와 "last ledger sequence" 안전장치

모든 계정에는 제출하는 각 거래마다 증가하는 시퀀스 번호가 있어, 해당 계정 자신의 거래가 재전송되거나 순서가 뒤바뀌는 것을 방지합니다. 거래에는 LastLedgerSequence 값을 지정할 수도 있는데, 이 값을 넘어서면 자동으로 만료된 것으로 간주되어 절대 적용되지 않습니다 — 이를 통해 거래가 어중간한 상태로 남아 있지 않고 성공했거나 확정적으로 실패했음을 확실히 알 수 있습니다.

전체 이력 대 현재 상태

전체 이력을 갖춘 XRPL 서버를 운영하려면 제네시스까지 거슬러 올라가는 모든 레저 버전을 저장해야 하며, 이는 데이터 집약적입니다. 특별히 전체 이력 노드로 설정되지 않는 한, 대부분의 검증자와 API 제공 노드는 최근의 일정 기간에 해당하는 레저 이력(과 현재 상태)만 유지하며, 과거 조회를 위해서는 전용 전체 이력 서버와 제3자 아카이브를 이용할 수 있습니다.