하이퍼레저 네트워크에서 각 참여 노드는 원장(Ledger)을 소유하고 합의 알고리즘을 통해 원장을 획일화
genesis.block != 채널 제네시스 블록
cd fabric-samples/first-network
./byfn.sh up
블록 높이 확인
docker exec -it cli peer channel getinfo -c mychannel
0번 ~ 4번 블록 가져오기
docker exec -it cli peer channel fetch 0 -c mychannel
docker exec -it cli peer channel fetch 1 -c mychannel
docker exec -it cli peer channel fetch 2 -c mychannel
docker exec -it cli peer channel fetch 3 -c mychannel
docker exec -it cli peer channel fetch 4 -c mychannel
docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel_0.block .
docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel_1.block .
docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel_2.block .
docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel_3.block .
docker cp cli:/opt/gopath/src/github.com/hyperledger/fabric/peer/mychannel_4.block .
../bin/configtxgen -inspectBlock mychannel_0.block > mychannel_0.json
../bin/configtxgen -inspectBlock mychannel_1.block > mychannel_1.json
../bin/configtxgen -inspectBlock mychannel_2.block > mychannel_2.json
../bin/configtxgen -inspectBlock mychannel_3.block > mychannel_3.json
../bin/configtxgen -inspectBlock mychannel_4.block > mychannel_4.json
채널 제네시스 블록
1. Header : 이전 블록 해쉬가 NULL(genesis block이기 때문이다)
2. Data : 트랜잭션이 저장되는 곳이다. 설정 트랜잭션이 저장되어 있다.
3. MetaData : 이 블록에 대한 정보가 저장되어 있다.
Org1 앵커피어 업데이트
1. Header : 블록 0 의 해쉬
2. Data : 트랜잭션이 저장되는 곳이다. 설정 트랜잭션이 저장되어 있다.
3. MetaData : 이 블록에 대한 정보가 저장되어 있다.
Org2 앵커피어 업데이트
1. Header : 블록 1 의 해쉬
2. Data : 트랜잭션이 저장되는 곳이다. 설정 트랜잭션이 저장되어 있다.
3. MetaData : 이 블록에 대한 정보가 저장되어 있다.
체인코드 초기화
1. Header : 블록 2 의 해쉬
2. Data : Transaction Proposal, Endorsements, Proposal Response 가 저장되어 있다
3. MetaData : 이 블록에 대한 정보가 저장되어 있다.
체인코드 invoke(값 변경)
1. Header : 블록 3 의 해쉬
2. Data : Transaction Proposal, Endorsements, Proposal Response 가 저장되어 있다
3. MetaData : 이 블록에 대한 정보가 저장되어 있다.
<< endorser 인증서 + 공개키>>