하이퍼레저 패브릭 - Using configtx.yaml to build a Channel Configuration
Jun 29, 2024
Config.yaml
- configtx.yaml 파일과 configtxgen 바이너리를 사용하여 채널을 생성할 수 있다.
- configtx.yaml 파일은 사람이 쉽게 편집하고 읽을 수 있는 형식으로 채널 구성에 필요한 정보들을 포함한다.
- configtxgen는 Fabric과 통신할 수 있게 protobuf 형식으로 configtx.yaml의 정보를 읽고 쓸 수 있도록 도와준다.
샘플 configtx.yaml 의 구성이다.. ( 보기 편하게 JSON으로 변환했다.)

1. Organizations

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

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

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

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

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

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