1. Configtx.yaml 파일 요약
Organizations : 채널의 회원이 될 수 있는 조직, 각 조직에는 채널 MSP를 구축하는 사용되는 암호화 자료에 대한 참조있음
Ordering Service : 어떤 노드가 오더링 서비스를 형성할지
Channel Policies : 파일의 여러 섹션이 함께 작동하기위해 조직이 채널과 상호작용하고, 채널 업데이트를 승인해야하는 조직을 제어하는 정책
Channel Profiles : 프로필은 Orderer 시스템 채널에서 Genesis Block 생성과 조직의 사용채널을 만드는데 사용
2. 사전준비
- configtx.yaml 파일 생성
cd fabric-samples/my-network
touch ./configtx/configtx.yaml
3. Configtx.yaml 파일 분석
1. Organizations
- Configtx.yaml의 Organization섹션은 채널의 MSP와 각 구성원에 대한 MSPID를 만드는데 사용됨
- 각 조직은 MSPID와 MSP를 통해서 서로를 식별하게됨
- Test-network에는 Org1, Org2개의 피어조직과 OrdererOrg 1개의 오더러 서비스 관리자로 구성되어 있음
- Name : 조직을 식별하는 이름 지정
- ID : 조직의 MSPID로 고유 식별자 역할을 하고, 채널 Policies에 참조하여 채널에 제출된 트랜잭션에 포함됨
- MSPDir : 조직에서 만든 MSP폴더 경로(configtgen tool을 활용하여 조직생성)
- Policies : 정책섹션은 채널 구성원을 참조하는 서명 정책을 정의하는데 사용함.
- Orderer
################################################################################
#
# Section: Organizations
#
# - This section defines the different organizational identities which will
# be referenced later in the configuration.
#
################################################################################
Organizations:
# Org설정
- &OrdererOrg
Name: OrdererOrg # 조직이름 설정
ID: OrdererMSP # MSPID
MSPDir: ../organizations/ordererOrganizations/example.com/msp #MSP경로
Policies: # 조직의 Policies 정책
Readers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
Writers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
Admins:
Type: Signature
Rule: "OR('OrdererMSP.admin')"
OrdererEndpoints:
- orderer.example.com:7050
- Org1
- &Org1
Name: Org1MSP
ID: Org1MSP
MSPDir: ../organizations/peerOrganizations/org1.example.com/msp
Policies:
Readers:
Type: Signature
Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
Writers:
Type: Signature
Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
Admins:
Type: Signature
Rule: "OR('Org1MSP.admin')"
Endorsement:
Type: Signature
Rule: "OR('Org1MSP.peer')"
- Org2
- &Org2
Name: Org2MSP
ID: Org2MSP
MSPDir: ../organizations/peerOrganizations/org2.example.com/msp
Policies:
Readers:
Type: Signature
Rule: "OR('Org2MSP.admin', 'Org2MSP.peer', 'Org2MSP.client')"
Writers:
Type: Signature
Rule: "OR('Org2MSP.admin', 'Org2MSP.client')"
Admins:
Type: Signature
Rule: "OR('Org2MSP.admin')"
Endorsement:
Type: Signature
Rule: "OR('Org2MSP.peer')"
2. Capabilities
- 다른 버젼의 Hyperledger Fabric을 실행하는 Orderer & Peer에 의해 조인될 수 있기 때문에, Capabilities를 활용해 조직이 특정 기능만 활성화하여 동일한 채널에 참여.
※ Fabric 테스트 네트워크의 피어와 순서 지정 노드 모두 버전 v2.x를 실행하기 때문에 v2.0보다 낮은 버전의 Fabric을 실행하는 노드는 테스트 네트워크에 참여할 수 없음
Capabilities:
Channel: &ChannelCapabilities
V2_0: true
Orderer: &OrdererCapabilities
V2_0: true
Application: &ApplicationCapabilities
V2_0: true
3. Applications
- 애플리케이션은 Peer가 애플리케이션 채널과 상호작용 할 수 있는 방법을 제어하는 정책을 정의
- 이러한 정책은 체인코드 정의를 승인하거나 채널 구성 업데이트 요청에 서명해야 하는 Peer의 조직수를 제어
- Test-network에는 모든 피어 조직이 원장에 데이터를 읽고 쓸 수 있음, 또한 채널 구성원의 대다수가 채널 구성 업데이트에 서명하고 채널 구성원의 대다수가 체인코드를 채널에 배포하기 전에 체인코드 정의를 승인해야함
Application: &ApplicationDefaults
Organizations:
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
LifecycleEndorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Endorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Capabilities:
<<: *ApplicationCapabilities
4. Orderer
- Raft Orderer Service 채널의 합의 메커니즘에 적극적으로 참여하는 주문 노드로
- 각 채널에 순서 지정 오더링 서비스 타입을 지정
Orderer: &OrdererDefaults
OrdererType: etcdraft
Addresses:
- orderer.example.com:7050
EtcdRaft:
Consenters:
- Host: orderer.example.com
Port: 7050
ClientTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
ServerTLSCert: ../organizations/ordererOrganizations/example.com/orderers/orderer.example.com/tls/server.crt
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 99 MB
PreferredMaxBytes: 512 KB
Organizations:
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"
5. Channel
- 채널 구성의 최고레벨의 제어 정책을 정의
- 응용 프로그램 채널의 경우 이러한 정책은 해싱 알고리즘, 새 블록을 만드는 데 사용되는 데이터 해싱 구조 및 채널 기능 수준을 제어
- 시스템 채널에서 이러한 정책은 동료 조직의 컨소시엄 생성 또는 제거에도 적용됩니다.
Channel: &ChannelDefaults
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
Capabilities:
<<: *ChannelCapabilities
6. Profiles
TwoOrgsOrdererGenesis 및 TwoOrgsChannel로 구성되어 있음
TwoOrgsOrdererGenesis : 시스템 채널 생성블록을 만드는데 사용
TwoOrgsChannel : 블록체인 네트워크에 채널을 생성하는데 사용
Profiles:
TwoOrgsOrdererGenesis:
<<: *ChannelDefaults
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TwoOrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
4. configtxgen tool을 활용하여 genesis block 생성
configtxgen 명령어의 하위 옵션을 통해서 Configtx.yaml 파일을 정보를 읽어 제네시스 블록 생성
cd fabric-samples/my-network
configtxgen \
-profile TwoOrgsOrdererGenesis \
-channelID system-channel \
-outputBlock ./system-genesis-block/genesis.block \
-configPath ./configtx
'보안 및 블록체인 > 블록체인' 카테고리의 다른 글
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - #3 Docker-compose.yaml 네트워크 설정 & 채널생성 (0) | 2022.07.13 |
---|---|
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 - #1 Peer 키생성 - Cryptogen (0) | 2022.07.12 |
GO언어 필요한 내용 정리 (0) | 2022.06.27 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 Tutorials - First Application by using Golang (0) | 2022.06.17 |
하이퍼레저 패브릭(Hyperledger Fabric) v2.2 Tutorials - Network.sh 명령어 해석 (0) | 2022.06.08 |