노드가 블록 하나를 처리하고 LevelDB 컴팩션을 한 과정
🔥 전체 흐름 요약
- 새로운 블록 하나를 디스크에서 읽고
- 검증하고
- 트랜잭션 정리하고
- 체인 상태를 업데이트하고
- LevelDB(체인 저장소)를 최적화(Compaction) 하는 과정이야.
📝 세부 분석
1. 블록 처리
Connect total: 292.91ms
➔ 블록을 네트워크에서 연결하고 준비하는 데 약 0.3초 걸림.Flush
,Writing chainstate
➔ 메모리에 있던 체인 상태를 디스크에 아주 짧게 기록함. (3ms 수준)Purging 2684 transactions
➔ 블록에 포함된 트랜잭션 2684개를 메모리풀(mempool)에서 삭제함. (이미 블록에 들어갔으니까)Remove transactions from the mempool: 0.74ms
➔ 메모리풀 정리하는 시간. 굉장히 빠름.UpdateTip: new best=00000000... height=696236
➔ 새로운 블록(높이 696236)로 체인 최상단(=Tip) 업데이트 완료!
➔ 블록 생성 날짜는'2021-07-17 01:29:36'
➔progress=0.625394
→ 아직 전체 블록 검증 62.5% 진행.Connect block: 317.59ms
➔ 블록 전체를 연결(검증)하는 데 걸린 시간.Load block from disk: 40.12ms
➔ 블록 파일을 디스크에서 읽어오는 데 걸린 시간.Sanity checks
,Fork checks
➔ 블록이 이상 없고 포크(체인 갈라짐) 여부도 체크.Group 2621 transactions into 4 groups of sizes [...]
➔ 블록 안 트랜잭션 2621개를 처리하기 위해 그룹핑. 최적화 작업.
2. LevelDB 컴팩션
leveldb: Compacting 1@3 + 11@4 files
➔ LevelDB 저장소 최적화를 시작. 3레벨에 1개 파일, 4레벨에 11개 파일을 합치는 중.Generated table [...]
➔ 새로 최적화된 테이블(데이터 파일) 생성됨. 각각 수만 개 키(key) 저장.Compacted 1@3 + 11@4 files => 21845492 bytes
➔ 최적화 결과 21.8MB짜리 데이터로 정리 완료.compacted to: files[ 0 0 10 368 1192 0 0 ]
➔ 최적화 후 Level별 파일 개수 현황.Delete type=2 #...
➔ 컴팩션 끝난 후, 사용하지 않는 오래된 LevelDB 파일 삭제.
3. 마이너 ID 동기화
Miner ID found in block ...
➔ 특정 블록에서 마이너(Miner) 식별자 정보 발견.
➔ Miner UUID 갱신 완료.
4. 최종 블록 추가 작업
Fold Shards: 0.65ms
,Validate 2621 transactions: 179.25ms
➔ 블록 트랜잭션 최종 검증 및 정리 완료.
📊 전체 느낌
항목 | 상태 |
---|---|
블록 처리 속도 | 굉장히 빠름 (수백 ms) |
DB 최적화(Compaction) | 정상적으로 잘 진행 |
블록 연결 후 Tip 갱신 | 정상 완료 |
메모리풀, 체인 상태 관리 | 문제 없음 |
마이너 ID | 업데이트 성공 |
🚀 결론
정상 동작 중이야.
- 블록 로딩, 검증, 디스크 기록, DB 최적화까지 모두 정상적으로 진행.
- 속도도 굉장히 준수한 편. (특히 I/O 병목 없음)
- 네 노드가 매우 안정적으로 싱크하고 있다는 뜻.
블록 처리 전체 과정 BitcoinSV
BitcoinSV 노드 프로세스는 블록을 처리할 때 대략 이렇게 동작해:
- 디스크에서 블록 읽기 (
Load block from disk
) - 블록 헤더 & 트랜잭션 무결성 검사 (
Sanity checks
) - 체인포크 확인 (
Fork checks
) - 블록 연결 (
Connect block
) - 메모리풀 트랜잭션 정리 (
Purging transactions from mempool
) - 체인 최상단(Tip) 업데이트 (
UpdateTip
) - 체인 상태 디스크 기록 (
Flush
,Writing chainstate
) - LevelDB 최적화 (
leveldb: Compacting
) - 오래된 LevelDB 파일 삭제 (
Delete type=2
) - 마이너 ID 갱신 (
mineridsync
)
네 로그에서는 이 1~10 전부 다 나타나 있어.
🎯 추가로, BitcoinSV라서 특징적인 부분이 있다
mineridsync
:
➔ BSV는 “Miner ID”라는 메커니즘을 도입했잖아?
(블록을 채굴한 채굴자가 자발적으로 본인을 인증하는 시스템)
➔ 여기서 “UUID”로 Miner ID 정보를 찾고, 업데이트하는 게 들어가 있어.
→ BTC, BCH에는 없는 BSV 특화 로직.Fold Shards
,Group transactions into groups
:
➔ 이건 BitcoinSV의 대형 블록 최적화 처리 부분이야.
(BSV는 2GB짜리 초대형 블록도 처리 가능해야 하니까, 트랜잭션을 여러 그룹으로 나눠서 처리함)leveldb
compacting:
➔ 메인 체인 상태를 관리하는 LevelDB를 주기적으로 압축(compact)해서 디스크 공간을 최적화하고 있음.
📊 전체 진단 (요약)
항목 | 상태 | 비고 |
---|---|---|
블록 로딩/검증/연결 | 정상 | 모든 프로세스 시간 정상 범위 |
트랜잭션 정리 | 정상 | Purging 처리됨 |
체인 상태 기록 | 정상 | Flush 완료 |
LevelDB 최적화 | 정상 | Compaction 완료 |
Miner ID 처리 | 정상 | UUID 업데이트 완료 |
블록 최종 적용 | 정상 | UpdateTip 완료 |
👉 한 블록 처리 사이클 100% 정상 완료된 로그다.
🚀 결론
- 최종적으로
verificationprogress
가 1.0 (100%)까지 가면 완전히 싱크 완료!
답글 남기기