fast / snap / full sync

Younghwan Cha·2022년 11월 23일
0

blockchain

목록 보기
11/18

syncing

syncing, 동기화란,
블록을 다운로드하고,
PoS 의 경우, PoW 에 비해서 합의 과정이 더욱 복잡하기 때문에

실시간 consensus gossip protocol 을 돌리는 것보다
블록을 다운받아서 validator 의 merkle tree 를 확인하는 편이 더 빠르다.

Full sync

Full Sync Mode는 모든 블록 데이터(headers, transactions, receipts)를 다운받아 모든 트랜잭션을 재실행하며, 검증하고 직접 모든 블럭의 State를 만들어 나가는 전략입니다. 하지만 제네시스 블록부터 모든 트랜잭션을 재실행해나가는 것은 엄청나게 오랜 시간이 소요됩니다. (현재 매우 강력한 시스템에 7~8일이 소요됩니다)

Fast sync

Fasy sync 를 통해서 실제 real-time consensus process 를 따르는 것보다 몇 백배는 빠른 속도로 동기화를 진행 할 수 있다. 최신 블록을 따라잡은 후에는(caught up), fast sync 모드를 해제하고 normal consensus mode 로 변경한다.
caught up 상태가 되려면, 최소 한개 이상의 peer 를 가져야하고 동기화된 노드의 height 가 최소한 max reported peer height 를 만족해야한다.

Fast Sync Mode는 Full Sync처럼 모든 블록 데이터(headers, transactions, receipts)를 다운받습니다. 하지만 트랜잭션을 직접 실행하지 않고 PoW 검증(블록 헤더 검증)을 할 뿐입니다.

트랜잭션을 직접 실행하지 않으면 어떻게 State를 만들까요? 답은 간단합니다.

최신 State(Head - 64, pivot point )를 다른 노드에게 직접 다운로드 받습니다 (동기화 과정을, 다른 노드에 거의 의존하지 않는 Full Sync에 비해 불안전합니다)

State sync

state sync 는 개별 블록이나 consensus round 대신 더 큰 chunk of application state 를 단위로 동기화를 진행한다.

state sync 를 시작하면, 만나는 모든 peer 들에게 사용 가능한 snapshot 이 있는지 묻는다.

https://github.com/tendermint/tendermint/blob/v0.34.x/spec/p2p/messages/state-sync.md

Quick sync

snapshot 을 통해서 동기화를 진행한다.

fast/snap sync

fast/snap sync 의 경우, 네트워크의 "현재"상태가 다운로드되게 된다.
따라서, 이전의 상태( not block, just the state ) 는 지원되지 않는다.

[ref]
https://github.com/ethereum/go-ethereum/issues/24413
https://docs.tendermint.com/v0.34/tendermint-core/fast-sync.html

profile
개발 기록

0개의 댓글