home

블록과 트랜잭션의 관계

트랜잭션과 블록의 관계

  • 하이퍼레저 패브릭에서의 블록 생성 과정은 다음과 같다.
    • 트랜잭션 수집
      • Ordering Service가 일정 기간 동안 트랜잭션을 수집
    • 다음 조건 중 하나가 충족되면 블록이 하나 생성된다.
      • 최대 트랜잭션 수에 도달
      • 최대 블록 크기에 도달
      • 블록 생성 타임아웃 발생
  • 블록의 구조
    • 하나의 블록은 여러 트랜잭션을 포함
    • 각 블록은 헤더, 트랜잭션 목록, 메타데이터로 구성
  • 블록은 orderer 노드에 의해 생성되고 속한 채널의 모든 피어 노드에게 전파된다.

블록 생성 매개변수 예시

Orderer:
  BatchTimeout: 2s
  BatchSize:
    MaxMessageCount: 500
    AbsoluteMaxBytes: 10 MB
    PreferredMaxBytes: 2 MB
  • 최대 500개의 트랜잭션 or
  • 최대 10MB의 블록 크기 or
  • 2초의 타임아웃
  • 여기서 하나의 조건이 먼저 충족되면 새로운 블록이 생성

생성 주기에 따른 트레이드 오프

  • 위의 매개변수는 네트워크 상황이나 요구사항에 따라서 적절하게 짜야한다.
  • 블록 생성 주기를 짧게하면 트랜잭션이 저장되기 까지의 대기 시간은 줄어들지만 처리량이 줄어든다.
  • 높은 처리량이 필요하면 블록 크기나 트랜잭션 수 제한을 높게 설정해서 배치성으로 한번에 많은 트랜잭션이 하나의 블록으로 생성되게 설정
  • 낮은 지연 시간이 더 중요하다면 타임아웃을 짧게 설정

그래서 블록체인 왜 씀?

  • 블록체인 네트워크 구축하면서 그냥 여러 노드에 분산 저장되는 키:값 형태의 견고한 데이터베이스라는 인상을 지울 수가 없었다.
  • 쓰이는 곳은 모든 활동이 기록되어야 하고, 투명한 기록 유지, 혹은 절대로 변경돼서는 안되는 트랜잭션을 저장시킬 필요가 있을 때 인 것 같다. (즉 기업에서 쓰이는 듯)
  • 또 허가형 블록체인이면(하이퍼 레저라면) 특정 인원만 접근이 가능하고, 심지어 여기서 채널을 나눠서 소수의 인원만 공유 가능하니 매우매우 무결성과 불변성이 짙은 분산형 데이터 저장 도구인 것 같다.