본문 바로가기

Lecture

0307 ICT 블록체인

하이퍼레저 패브릭 > 네트워크를 킴 (peer가 켜짐)

peer1, 2가 참가할 수 있는 채널을 개설한다. (채널에 입장은 peer 스스로 해야한다.)

organization에 추가되어있는 peer들은 채널에 들어갈 수 있는 권한이 생김

[createchannel]

infoln ⇒ console같은거

configtxgen?

  • genesis 블럭 생성

블록에 관여하기 위해서는 transaction이라는 형태로 요청해야한다.

  • 블록의 request = transaction

즉 configtxgen의 결과물은 트랜잭션이다.

configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/${CHANNEL_NAME}.tx -channelID $CHANNEL_NAME

위의 코드는 새로운 채널을 만드는 transaction을 요청하는 명령어이다.

-outputCreateChannelTx ⇒ channel 생성하는 transaction

-profile TwoOrgsChnnel ⇒ 여기에 profile을 저장하는 파일은? configtx.yaml

configtx.yaml

TwoOrgsChannel:
        Consortium: SampleConsortium
        <<: *ChannelDefaults
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Org1
                - *Org2
            Capabilities:
                <<: *ApplicationCapabilities

TwoOrgsChannel이라는 곳에서 Organizations가 이 채널에 들어올 수 있는 peer의 organization을 정해주는 부분이다.

[createchannel.sh]

peer툴?

peer에 접속하기 위한 툴.

peer에 접속하려면 channel에 속해있는 organization에 위치한 peer의 인증서(private)를 가지고 있어야한다.

peer channel create -o localhost:7050 -c $CHANNEL_NAME --ordererTLSHostnameOverride orderer.example.com -f ./channel-artifacts/${CHANNEL_NAME}.tx --outputBlock ./channel-artifacts/${CHANNEL_NAME}.block --tls --cafile $ORDERER_CA >&log.txt

7050이라는 로컬에 접속하고 있다 (orderer에게 전달)

peer가 아닌 orderer가 결정해야할 문제이기 때문에 orderer에게 정보를 보내준다.

channel생성 트랜잭션을 포함시켜서 작동시킨다.

그러면 channel의 genesis 블럭이 생성된다. (channel이 생성될때)

생성하고자하는 channel이름이 맞는지, 생성하고자 하는 트랜잭션이 맞는지, 실행위치가 맞는지 체크한다.

요청 권한 = org가 가지고 있다.

이 요청을 검사하고 요청을 실행시켜주는 곳 = orderer

peer툴을 사용한다고 peer가 채널을 만드는게 아니라 peer툴을 이용해서 orderer에게 채널을 만들어달라고 요청하는 것이다.

orderer입장에서는 이미 만들어진 채널에 조인하는 거니까 내가 peer라는 것만 증명하면됨

채널이 만들어지고 peer가

peer channel join -b ./channel-artifacts/${CHANNEL_NAME}.block >&log.txt

여기서 -b 뒤로는? 채널의 초기블럭

채널의 이름을 주지 않고 채널의 genesis 블럭을 넣는 이유는?

  • 채널블럭이 메타데이터들이 전부 들어가 있기 때문에 (이름포함)

피어이름 = 피어.오가니제이션.com

system channel ⇒ channelID