本节分享有关拆超级账本的概念以及体验部署过程。
是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。由Linux 基金会的开源项目,全称是Hyperledger Fabric)是区块链的商用平台。开源地址:https://github.com/hyperledger。
Fabric依赖docker容器, 因此需要先安装和配置docker.(请参考docker的章节)
下载超级账本源代码
1.如果没有安装git则执行
sudo apt install git
2.通过git安装
git clone https://github.com/hyperledger/fabric.git
部署调用
localhost: basic- network clarity$ docker ps CONTAINER ID IMAGE NAMES efddfbf4fc0a hyperledger/ fabric- peer: x86_ 64- 1. 0. 0 peer0. org1. example. com 606d13c1e7a2 hyperledger/ fabric- couchdb: x86_ 64- 1. 0. 0 couchdb d8c870db8634 hyperledger/ fabric- ca: x86_ 64- 1. 0. 0 ca. example. com c6f25a5e6fd6 hyperledger/ fabric- tools: x86_ 64- 1. 0. 0 cli a5f6331c5bc5 hyperledger/ fabric- orderer: x86_docker exec -it cli/bin/bashpeer chaincode install -n mycc -v v0 -p github.com/chaincode_example02peer chaincode instantiate -o orderer. example. com: 7050 -C mychannel -n mycc -v v0 -c ‘{"Args":["init","a","100","b","200"]}‘peer chaincode query -C mychannel -n mycc -v v0 -c ‘{"Args":["query","a"]}‘peer chaincode invoke -C mychannel -n mycc -v v0 -c ‘{"Args":["invoke","a", "b"," 10"]}‘peer chaincode query -C mychannel -n mycc -v v0 -c ‘{"Args":[" query"," a"]}‘ peer chaincode query -C mychannel -n mycc -v v0 -c ‘{"Args":[" query"," b"]}‘~/.bash_profileexport PATH=<上一步下载的路径>/bin:$PATHsource ~/.bash_profile让配置生效ERROR: for orderer.example.com Cannot create container for service orderer.example.com: b‘Conflict. The container name "/orderer.example.com" is already in use by containerdocker ps -a列出所有运行中的容器docker ps -qa | xargs docker rmdocker-compose -f docker-compose.yaml up -d

curl -sSL http://bit.ly/2ysbOFE | bash -s 1.3.0export CHANNEL_NAME=superchannel peer channel create -o orderer.example.com:7050 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pempeer channel join -b mychannel.blockpeer chaincode install -n mycc -v 1.0 -p github.com/chaincode/chaincode_example02/go/peer chaincode install -n mycc -v 1.0 -l node -p /opt/gopath/src/github.com/chaincode/chaincode_example02/node/peer chaincode install -n mycc -v 1.0 -l java -p /opt/gopath/src/github.com/chaincode/chaincode_example02/java/peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -v 1.0 -c ‘{"Args":["init","a", "100", "b","200"]}‘ -P "AND (‘Org1MSP.peer‘,‘Org2MSP.peer‘)"peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -l node -v 1.0 -c ‘{"Args":["init","a", "100", "b","200"]}‘ -P "AND (‘Org1MSP.peer‘,‘Org2MSP.peer‘)"peer chaincode instantiate -o orderer.example.com:7050 --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc -l java -v 1.0 -c ‘{"Args":["init","a", "100", "b","200"]}‘ -P "AND (‘Org1MSP.peer‘,‘Org2MSP.peer‘)"peer chaincode query -C $CHANNEL_NAME -n mycc -c ‘{"Args":["query","a"]}‘peer chaincode invoke -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C $CHANNEL_NAME -n mycc --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c ‘{"Args":["invoke","a","b","10"]}‘peer chaincode query -C $CHANNEL_NAME -n mycc -c ‘{"Args":["query","a"]}‘../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP../bin/configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org2MSP../bin/cryptogen generate --config=./crypto-config.yamlcd crypto-configexport FABRIC_CFG_PATH=$PWDcd fabric-samples/first-network./byfn.sh generate./byfn.sh up如果想用node生态使用./byfn.sh up -l node../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.blockexport CHANNEL_NAME=superchannel && ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAMEdocker-compose -f docker-compose-cli.yaml up -ddocker exec -it cli bashdocker logs -f ca.example.comnode enrollAdmin.js

-END-
原文:https://www.cnblogs.com/efish/p/hyperledger-fabric.html