하이퍼레저 패브릭 - Using configtx.yaml to build a Channel Configuration

choko's avatar
Jun 29, 2024
하이퍼레저 패브릭 - Using configtx.yaml to build a Channel Configuration
 

Config.yaml

  • configtx.yaml 파일과 configtxgen 바이너리를 사용하여 채널을 생성할 수 있다.
  • configtx.yaml 파일은 사람이 쉽게 편집하고 읽을 수 있는 형식으로 채널 구성에 필요한 정보들을 포함한다.
  • configtxgen는 Fabric과 통신할 수 있게 protobuf 형식으로 configtx.yaml의 정보를 읽고 쓸 수 있도록 도와준다.
 
샘플 configtx.yaml 의 구성이다.. ( 보기 편하게 JSON으로 변환했다.)
notion image
 

1. Organizations

notion image
👉
Name : 조직을 식별하는 비공식적인 이름
ID : 조직의 MSP ID, Org의 고유 식별자 역할을 한다.
MSPDIR : Org에 의해 만들어진 MSP 폴더의 경로, channel MSP를 만들기 위해, configtxgen이 이 MSP 폴더를 사용함. 이 MSP 폴더는 다음 정보들이 포함되어야 함.
  1. CA 루트 인증서(채널 구성원에 속하는지 확인)
  1. peer/orderer의 TLS 인증을 위한 TLS 루트 인증서
  1. Node OU가 활성화되어 있는 경우, MSP 폴더는 admin, nodes, client를 식별하기 위해 X509 기반의 config.yaml를 포함해야 함.
  1. Node OU가 비활성화되어 있는 경우, MSP 폴더에는 Org 관리자의 서명 인증서가 포함된 admincerts 폴더가 필요함.
 
Polices : 채널 구성원을 참조하는 일련의 서명 정책을 정의하는데 사용됨.
  • 각 조직은 MSP ID와 Channel ID로 식별됨
  • channel MSP는 Org의 노드, 애플리케이션 및 관리자를 식별하는데 사용되는 인증서를 포함함
  • OrdererOrg는 Ordering Service의 관리자임
 
 

2. Capabilities

notion image
👉
Channel : peer, orderer를 실행할 수 있는 fabric의 최소 버전 설정 Orderer : Raft 합의 알고리즘 같은 Orderer 노드에서 사용하는 기능을 제어하는 등 Orderer에서 실행할 수 있는 fabric 바이너리의 최소 버전 설정 Application : lifeycycle과 같은 Peer 노드에서 사용하는 기능을 제어하고 채널에 연결된 Peer가 실행할 수 있는 fabric 바이너리의 최소 버전
  • Fabric 채널은 다른 버전의 Hyperledger fabric PEER/ORDERER들이 JOIN할 수 있다.
  • Capabilities를 사용하면 다른 Fabric 바이너리를 실행하는 조직이 특정 기능만 활성화하여 동일한 채널에 참여할 수 있다.
  • (1.4 버전과 2.2 버전을 동시에 Running 시키려면, 1.4 버전 이하의 채널에서만 Join할 수 있다)
 

3. Application

notion image
  • Peer 조직이 Application channel과 상호작용할 수 있는 방법을 제어하는 정책을 정의함.
  • 체인코드 정의를 승인하거나 채널 구성 업데이트 요청에 서명해야 하는 Peer 조직 수를 제어함.
 

4.. Orderer

notion image
👉
OrdererType : 합의 유형 선택(solo, etcdraft ..) → etcdraft의 경우 합의 프로세스에 참여할 수 있는 Orderer들을 정의해야 함( Host/Port/ClientTLSCert/ServerTLSCert) BatchTimeout/BatchSize : 각 블록의 최대 크기 및 새 블록이 생성되는 빈도를 변경하여 채널의 대기시간과 처리량을 조절할 수 있음. Policies : 채널 동의자 집합을 제어하는 정책을 만든다.
 
 

5. Channel

notion image
Channel 섹션은 채널 구성의 최고 수준을 제어하는 Policies를 정의한다.
 

6. Profiles

notion image
configtxgen의 Profiles 섹션에서 채널 profiles를 읽어 채널 구성을 빌드한다.
# ex) configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block
 
TwoOrgsOrdererGenesis(예시)
TwoOrgsOrdererGenesis: <<: *ChannelDefaults Orderer: <<: *OrdererDefaults Organizations: - *OrdererOrg Capabilities: <<: *OrdererCapabilities Consortiums: SampleConsortium: Organizations: - *Org1 - *Org2
Share article

Tom의 TIL 정리방