Fabric 2.2 실습 (3) - Fabric 트렌젝션 및 Genesis block 생성
configtx.yaml 설정 파일 분석
Hyperledger Fabric 네트워크 구축시 필요한 여러가지 트렌젝션(채널 생성, 앵커피어 설정) 들과 genesis.block 을 Fabric에서 제공하는 configtxgen
툴을 사용하여 생성합니다.
실제 configtx.yaml
파일을 작성하기 전에 주로 사용하는 옵션(설정)들을 확인해보겠습니다.
configtx.yaml
파일에서 *변수명
표현은 &변수명
을 참조한다는 의미입니다.
Organizations 설정
Organizations: - &SampleOrg Name: SampleOrg # 조직 이름 ID: SampleOrg # MSPID MSPDir: msp # 조직의 msp 경로 Policies: &SampleOrgPolicies # 조직에 대한 정책 Readers: # 읽기 정책 Type: Signature # 정책 타입 (Signature(서명), ImplicitMeta) Rule: "OR('SampleOrg.member')" Writers: # 쓰기 정책 Type: Signature Rule: "OR('SampleOrg.member')" Admins: # 어드민 정책 Type: Signature Rule: "OR('SampleOrg.admin')" Endorsement: # 보증 정책 Type: Signature Rule: "OR('SampleOrg.member')" OrdererEndpoints: # 정의하는 조직이 오더러일 경우 오더러 주소 - "127.0.0.1:7050" AnchorPeers: # 정의하는 조직이 피어일 경우 앵커피어 주소 - Host: 127.0.0.1 Port: 7051
Capabilities 설정
Capabilities: # 각각 사용하는 버전에 true Channel: &ChannelCapabilities V2_0: true Orderer: &OrdererCapabilities V2_0: true Application: &ApplicationCapabilities V2_0: true
Application 설정
Application: &ApplicationDefaults Policies: &ApplicationDefaultPolicies # Application 정책 설정 LifecycleEndorsement: # 체인코드 Lifecycle 관련 정책 Type: ImplicitMeta # 정책 타입 (Signature(서명), ImplicitMeta) Rule: "MAJORITY Endorsement" Endorsement: # 보증 정책 Type: ImplicitMeta Rule: "MAJORITY Endorsement" Readers: # 읽기 정책 Type: ImplicitMeta Rule: "ANY Readers" Writers: # 쓰기 정책 Type: ImplicitMeta Rule: "ANY Writers" Admins: # 어드민 정책 Type: ImplicitMeta Rule: "MAJORITY Admins" Capabilities: <<: *ApplicationCapabilities
Orderer 설정
Orderer: &OrdererDefaults OrdererType: solo # 오더링 방식(sole, kafka, etcdraft) BatchTimeout: 2s # 배치 타임아웃 설정 BatchSize: MaxMessageCount: 500 # 블록당 최대 트렌젝션 개수 AbsoluteMaxBytes: 10 MB PreferredMaxBytes: 2 MB # 블록 최대 크기 EtcdRaft: # etcdraft 방식 사용시 필요한 설정 Consenters: - Host: raft0.example.com # 오더러 정보 호스트(ip) Port: 7050 # 오더러 포트 ClientTLSCert: path/to/ClientTLSCert0 # 오더러 tls 클라이언트 인증서 ServerTLSCert: path/to/ServerTLSCert0 # 오더러 tls 서버 인증서 Policies: # Orderer 정책 설정 Readers: # 읽기 정책 Type: ImplicitMeta # 정책 타입 (Signature(서명), ImplicitMeta) Rule: "ANY Readers" Writers: # 쓰기 정책 Type: ImplicitMeta Rule: "ANY Writers" Admins: # 어드민 정책 Type: ImplicitMeta Rule: "MAJORITY Admins" BlockValidation: # 블록 보증 관련 정책 Type: ImplicitMeta Rule: "ANY Writers"
Channel 설정
Channel: &ChannelDefaults Policies: # Channel 정책 설정 Readers: # 읽기 정책 Type: ImplicitMeta # 정책 타입 (Signature(서명), ImplicitMeta) Rule: "ANY Readers" Writers: # 쓰기 정책 Type: ImplicitMeta Rule: "ANY Writers" Admins: # 어드민 정책 Type: ImplicitMeta Rule: "MAJORITY Admins" Capabilities: <<: *ChannelCapabilities
configtx.yaml 파일 작성
위에서 분석한 내용을 기반으로 본 포스트에서 구축할 네트워크에 대한 configtx.yaml
작성합니다.
configtx.yaml 파일 작성
sudo vi /home/fabric/infra/configtx.yaml
Organizations: # 조직 설정 - &orderer Name: orderer # 조직 이름(오더러) ID: ordererMSP # 조직 MSP ID # 발급받은 조직 msp 경로 MSPDir: /home/fabric/infra/crypto-config/ordererOrganizations/orgorderer.com/msp Policies: Readers: Type: Signature Rule: "OR('ordererMSP.member')" Writers: Type: Signature Rule: "OR('ordererMSP.member')" Admins: Type: Signature Rule: "OR('ordererMSP.admin')" Endorsement: Type: Signature Rule: "OR('ordererMSP.member')" OrdererEndpoints: # 오더러 주소 - orderer0.orgorderer.com:7050 - orderer1.orgorderer.com:8050 - orderer2.orgorderer.com:9050 - &apeer Name: apeer # 조직 이름(피어) ID: apeerMSP # 조직 MSP ID # 발급받은 조직 msp 경로 MSPDir: /home/fabric/infra/crypto-config/peerOrganizations/orgapeer.com/msp Policies: Readers: Type: Signature Rule: "OR('apeerMSP.member')" Writers: Type: Signature Rule: "OR('apeerMSP.member')" Admins: Type: Signature Rule: "OR('apeerMSP.admin')" Endorsement: Type: Signature Rule: "OR('apeerMSP.member')" AnchorPeers: # 앵커피어 설정 (보통 0번피어를 앵커피어로 지정한다) - Host: peer0.orgapeer.com Port: 7051 Capabilities: Channel: &ChannelCapabilities V2_0: true Orderer: &OrdererCapabilities V2_0: true Application: &ApplicationCapabilities V2_0: true Application: &ApplicationDefaults Organizations: Policies: # Application 정책 설정 Readers: Type: ImplicitMeta Rule: "ANY Readers" Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: Signature Rule: "OR('apeerMSP.admin')" # Application 관련 정책은 apeer조직의 어드인 서명이 필요함 LifecycleEndorsement: Type: ImplicitMeta Rule: "ANY Endorsement" Endorsement: Type: ImplicitMeta Rule: "ANY Endorsement" Capabilities: <<: *ApplicationCapabilities Orderer: &OrdererDefaults OrdererType: etcdraft BatchTimeout: 1s BatchSize: MaxMessageCount: 20 AbsoluteMaxBytes: 80 KB PreferredMaxBytes: 20 KB EtcdRaft: Consenters: - Host: orderer0.orgorderer.com Port: 7050 ClientTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer0.orgorderer.com/tls/server.crt ServerTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer0.orgorderer.com/tls/server.crt - Host: orderer1.orgorderer.com Port: 8050 ClientTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer1.orgorderer.com/tls/server.crt ServerTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer1.orgorderer.com/tls/server.crt - Host: orderer2.orgorderer.com Port: 9050 ClientTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer2.orgorderer.com/tls/server.crt ServerTLSCert: /home/fabric/infra//crypto-config/ordererOrganizations/orgorderer.com/orderers/orderer2.orgorderer.com/tls/server.crt Organizations: - *orderer Policies: Readers: Type: ImplicitMeta Rule: "ANY Readers" Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: Signature Rule: "OR('apeerMSP.admin')" # Orderer 관련 정책은 apeer조직의 어드인 서명이 필요함 BlockValidation: Type: ImplicitMeta Rule: "ANY Writers" Channel: &ChannelDefaults Policies: Readers: Type: ImplicitMeta Rule: "ANY Readers" Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: Signature Rule: "OR('apeerMSP.admin')" # Channel 관련 정책은 apeer조직의 어드인 서명이 필요함 Capabilities: <<: *ChannelCapabilities # 실질적인 트렌젝션, Genesis 블록은 아래 설정을 참조하여 생성된다. # configtx.yaml 파일 윗부분에 작성한 것들을 참조하여 최종 프로파일을 만든다. Profiles: OneOrgChannel: Consortium: SampleConsortium <<: *ChannelDefaults Application: <<: *ApplicationDefaults Organizations: - *apeer EtcdRaftNetwork: <<: *ChannelDefaults Capabilities: <<: *ChannelCapabilities Orderer: <<: *OrdererDefaults Capabilities: <<: *OrdererCapabilities Application: <<: *ApplicationDefaults Organizations: - <<: *orderer Consortiums: SampleConsortium: Organizations: - *apeer
트렌젝션 및 Genesis block 생성
이번 목차에서는 완성된 configtx.yaml
파일과 configtxgen
툴을 활용하여 아래 3개의 파일을 생성하겠습니다.
- 채널 생성 트렌젝션
- 앵커피어(apeer) 설정 트렌젝션
- Genesis 블록
트렌젝션 관련 폴더 생성
mkdir -p /home/fabric/infra/channel-artifacts
채널 생성 트렌젝션 생성 (채널명은 testchannel로 한다)
configtxgen -profile 프로파일명 -outputCreateChannelTx 생성된 트렌젝션 이름 -channelID 채널명
configtxgen -profile OneOrgChannel -outputCreateChannelTx /home/fabric/infra/channel-artifacts/testchannel.tx -channelID testchannel
앵커피어 설정 트렌젝션 생성
configtxgen -profile 프로파일명 -outputAnchorPeersUpdate 생성된 트렌젝션 이름 -channelID 채널명 -asOrg 조직명
configtxgen -profile OneOrgChannel -outputAnchorPeersUpdate /home/fabric/infra/channel-artifacts/apeerMSPanchors.tx -channelID testchannel -asOrg apeer
Genesis block 생성
configtxgen -profile 프로파일명 -outputAnchorPeersUpdate 생성된 트렌젝션 이름 -channelID 채널명 -asOrg 조직명
configtxgen -profile EtcdRaftNetwork -outputBlock /home/fabric/infra/channel-artifacts/genesis.block -channelID testchainid
이로써 hyperleger fabric 구축을 트렌젝션 및 Genesis 블록 생성이 완료되었습니다.
다음 포스트에서는 Peer, Orderer 구축 및 채널 생성을 진행하겠습니다.
Author And Source
이 문제에 관하여(Fabric 2.2 실습 (3) - Fabric 트렌젝션 및 Genesis block 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jaehyuen/Hyperledger-Fabric-2.2-실습-3-Fabric-트렌젝션-및-Genesis-block-생성저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)