一个小时带你用 Hyperledger Fabric开发一个Demo,看这篇文章写一个fabric的demo应该很快,但是将fabric工程化考虑的因素就比较多了。看一下他的demo源码
进入到startFabric.sh
,不禁要问,如果有6个组织,那么这个脚本岂不是要写6个,再增加组织怎么办呢?实际工程化,就不是demo那么简单了。
#install chaincode on peer0
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode install -n account -v 1.4 -p "$CC_SRC_PATH" -l "$LANGUAGE"
#init chaincode on peer0
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n account -l "$LANGUAGE" -v 1.4 -c '{"Args":[""]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
sleep 5
#install chaincode on peer1
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" -e "CORE_PEER_ADDRESS=peer1.org1.example.com:7051" cli peer chaincode install -n account -v 1.4 -p "$CC_SRC_PATH" -l "$LANGUAGE"
docker exec -e "CORE_PEER_LOCALMSPID=Org1MSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp" cli peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n account -c '{"function":"init","Args":[""]}'
下图摘自《Hyperledger Fabric技术内幕架构设计与实现原理》
1 数据持久化
查阅fabric数据持久化教程,
Hyperledger Fabric 是假区块链!
2 java工程
先得看看fabric-samples
中commercial-paper
中的java代码,使用gradle,如果使用maven的时候,会下载不了
<dependency>
<groupId>com.github.everit-org.json-schema</groupId>
<artifactId>org.everit.json.schema</artifactId>
<version>1.11.1</version>
</dependency>
这个时候需要配置maven的setting.xml,因为可以看到他的Repositories的名称和地址,替换一下就可以了。
<profile>
<id>Mulesoft</id>
<activation>
<jdk>[1.4,1.8]</jdk>
</activation>
<repositories>
<repository>
<id>Mulesoft</id>
<name>Mulesoft</name>
<url>https://repository.mulesoft.org/nexus/content/repositories/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
</profile>