home
블록과 트랜잭션의 관계
트랜잭션과 블록의 관계
- 하이퍼레저 패브릭에서의 블록 생성 과정은 다음과 같다.
- 트랜잭션 수집
- Ordering Service가 일정 기간 동안 트랜잭션을 수집
- 다음 조건 중 하나가 충족되면 블록이 하나 생성된다.
- 최대 트랜잭션 수에 도달
- 최대 블록 크기에 도달
- 블록 생성 타임아웃 발생
- 트랜잭션 수집
- 블록의 구조
- 하나의 블록은 여러 트랜잭션을 포함
- 각 블록은 헤더, 트랜잭션 목록, 메타데이터로 구성
- 블록은 orderer 노드에 의해 생성되고 속한 채널의 모든 피어 노드에게 전파된다.
블록 생성 매개변수 예시
Orderer:
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 500
AbsoluteMaxBytes: 10 MB
PreferredMaxBytes: 2 MB
- 최대 500개의 트랜잭션 or
- 최대 10MB의 블록 크기 or
- 2초의 타임아웃
- 여기서 하나의 조건이 먼저 충족되면 새로운 블록이 생성
생성 주기에 따른 트레이드 오프
- 위의 매개변수는 네트워크 상황이나 요구사항에 따라서 적절하게 짜야한다.
- 블록 생성 주기를 짧게하면 트랜잭션이 저장되기 까지의 대기 시간은 줄어들지만 처리량이 줄어든다.
- 높은 처리량이 필요하면 블록 크기나 트랜잭션 수 제한을 높게 설정해서 배치성으로 한번에 많은 트랜잭션이 하나의 블록으로 생성되게 설정
- 낮은 지연 시간이 더 중요하다면 타임아웃을 짧게 설정
그래서 블록체인 왜 씀?
- 블록체인 네트워크 구축하면서 그냥 여러 노드에 분산 저장되는 키:값 형태의 견고한 데이터베이스라는 인상을 지울 수가 없었다.
- 쓰이는 곳은 모든 활동이 기록되어야 하고, 투명한 기록 유지, 혹은 절대로 변경돼서는 안되는 트랜잭션을 저장시킬 필요가 있을 때 인 것 같다. (즉 기업에서 쓰이는 듯)
- 또 허가형 블록체인이면(하이퍼 레저라면) 특정 인원만 접근이 가능하고, 심지어 여기서 채널을 나눠서 소수의 인원만 공유 가능하니 매우매우 무결성과 불변성이 짙은 분산형 데이터 저장 도구인 것 같다.