997- BSV log

노드가 블록 하나를 처리하고 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 노드 프로세스는 블록을 처리할 때 대략 이렇게 동작해:

  1. 디스크에서 블록 읽기 (Load block from disk)
  2. 블록 헤더 & 트랜잭션 무결성 검사 (Sanity checks)
  3. 체인포크 확인 (Fork checks)
  4. 블록 연결 (Connect block)
  5. 메모리풀 트랜잭션 정리 (Purging transactions from mempool)
  6. 체인 최상단(Tip) 업데이트 (UpdateTip)
  7. 체인 상태 디스크 기록 (Flush, Writing chainstate)
  8. LevelDB 최적화 (leveldb: Compacting)
  9. 오래된 LevelDB 파일 삭제 (Delete type=2)
  10. 마이너 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%)까지 가면 완전히 싱크 완료!

💬

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다