本节分享有关拆超级账本的概念以及体验部署过程。
是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。由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/bash
peer chaincode install -n mycc -v v0 -p github.com/chaincode_example02
peer 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_profile
export PATH=<上一步下载的路径>/bin:$PATH
source ~/.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 container
docker ps -a
列出所有运行中的容器docker ps -qa | xargs docker rm
docker-compose -f docker-compose.yaml up -d
curl -sSL http://bit.ly/2ysbOFE | bash -s 1.3.0
export 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.pem
peer channel join -b mychannel.block
peer 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.yaml
cd crypto-config
export FABRIC_CFG_PATH=$PWD
cd fabric-samples/first-network
./byfn.sh generate
./byfn.sh up
如果想用node生态使用./byfn.sh up -l node
../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
export CHANNEL_NAME=superchannel && ../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID $CHANNEL_NAME
docker-compose -f docker-compose-cli.yaml up -d
docker exec -it cli bash
docker logs -f ca.example.com
node enrollAdmin.js
-END-
原文:https://www.cnblogs.com/efish/p/hyperledger-fabric.html