Ledger 마감 시간(Ledger Close Times)

Ledger 버전이 마감된 시간은 Ledger Header의 close_time 필드에 기록됩니다. 네트워크가 정확한 마감 시간에 대한 합의에 쉽게 도달할 수 있도록, 이 값은 마감 시간 분해능에 따라 초 단위로 반올림됩니다(현재 10초). 반올림하면 Ledger의 마감 시간이 The parent ledger Close Time과 같거나 더 빨라지는 경우, 자식 원장의 마감 시간은 The parent ledger Close Time에 1을 더한 값으로 설정됩니다. 이렇게 하면 검증된 원장의 마감 시간이 엄격하게 증가하도록 보장합니다. 새 원장 버전은 보통 약 3~5초마다 닫히기 때문에, 이러한 규칙은 원장의 마감 시간이 :00, :01, :02, :10, :11, :20, :21 등으로 끝나는 느슨한 패턴을 초래합니다. 2로 끝나는 시간은 덜 흔하고 3으로 끝나는 시간은 매우 드물지만, 두 경우 모두 10초 이내에 더 많은 원장이 무작위로 닫힐 때 무작위로 발생합니다.

일반적으로 Ledger은 마감 시간 분해보다 더 정밀한 시간 기반 측정을 할 수 없습니다. 예를 들어, 개체가 만료일을 지났는지 확인하려면 The parent ledger Close Time과 비교하는 것이 규칙입니다. (Ledger Close Times은 트랜잭션을 실행하여 해당 Ledger으로 이동할 때 아직 알 수 없습니다.) 즉, 예를 들어 에스크로 객체에 지정된 시간 기반 만료보다 최대 약 10초 늦은 실제 시간에 에스크로가 성공적으로 종료될 수 있습니다.

Example

다음 예는 마감 시간이 12:00:00인 Ledger에 대한 예제 검증자의 관점에서 Ledger Close Times의 반올림 동작을 보여줍니다:

Current consensus round

  1. 검증자는 Ledger가 마감되고 합의에 진입한 시간이 12:00:03임을 기록합니다. 검증자는 이 마감 시간을 제안에 포함합니다.

  2. 검증자는 대부분의 다른 검증자(UNL)가 12:00:02의 마감 시간을 제안했고, 다른 한 검증자는 12:00:03의 마감 시간을 제안한 것을 관찰합니다. 이 검증자는 합의된 마감 시간인 12:00:02에 맞춰 제안한 마감 시간을 변경합니다.

  3. 검증자는 이 값을 가장 가까운 마감 시간 간격으로 반올림하여 12:00:00이 됩니다.

  4. 12:00:00은 이전 원장의 마감 시간보다 크지 않으므로, 검증자는 이전 원장의 마감 시간으로부터 정확히 1초 후가 되도록 마감 시간을 조정합니다. 그 결과 조정된 마감 시간은 12:00:01입니다.

  5. 검증자는 이러한 세부 정보로 원장을 만들고, 결과 해시를 계산한 다음, 검증 단계에서 다른 사람들도 동일한 작업을 수행했는지 확인합니다.

비검증 서버는 기록된 마감 시간을 나머지 네트워크에 제안하지 않는다는 점을 제외하면 모든 단계를 동일하게 수행합니다.

Next consensus round

  1. 대부분의 검증자에 따르면 다음 Ledger는 12:00:04에 합의에 들어갑니다.

  2. 이는 다시 반올림되어 12:00:00의 마감 시간이 됩니다.

  3. 이는 이전 원장의 마감 시간인 12:00:01보다 크지 않으므로 조정된 마감 시간은 12:00:02가 됩니다.

Next consensus round after that

  1. 그 후 Ledger는 대부분의 검증자에 따라 12:00:05에 합의에 들어갑니다.

  2. 이는 close time resolution에 따라 12:00:10으로 반올림됩니다.

  3. 이 값은 이전 원장의 마감 시간보다 크므로 조정할 필요가 없습니다. 12:00:10이 공식 마감 시간이 됩니다.

Last updated