中文网址:https://hyperledger-fabric.readthedocs.io/zh_CN/latest
英文网址:https://hyperledger-fabric.readthedocs.io/en/latest
一般情况英文网址的内容更全面,版本也比中文新。
环境:Linux
sudo apt-get install git
安装git
sudo apt-get install curl
安装curl
sudo apt-get -y install docker-compose
安装docker
根据指引去安装Go和jq,Go足矣
Go安装
创建一个文件夹xxx用于拉取文件
mkdir xxx
cd xxx
拉取相关文件
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh
安装
./install-fabric.sh docker samples
拉取二进制文件,版本2.2.1
./install-fabric.sh --fabric-version 2.2.1 binary
进入文件夹
cd fabric-samples/test-network
下载二进制文件并添加到环境变量
curl -sSL https://bit.ly/2ysbOFE | bash -s
export PATH=$PWD/bin:$PATH
启动网络
./network.sh up
创建通道
./network.sh createChannel
默认通道名为“mychannel”,可在后面加上自定义的通道名./network.sh createChannel -c 自定义通道名
部署智能合约
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
可以看出部署的是文件夹asset-transfer-basic/chaincode-go
里的链码
当前目录为test-network
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
指向文件core.yaml
作为Org1的Peer CLI:
修改环境变量CORE_PEER_TLS_ROOTCERT_FILE
和CORE_PEER_MSPCONFIGPATH
指向Org1的加密材料(文件夹organizations
)
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=localhost:7051
调用智能合约初始化账本
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"InitLedger","Args":[]}'
查询账本数据
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
更改账本
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem" -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt" --peerAddresses localhost:9051 --tlsRootCertFiles "${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt" -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'
作为Org2的情况类似
更换为Org2的CLI
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051
查询
peer chaincode query -C mychannel -n basic -c '{"Args":["ReadAsset","asset6"]}'
Fabric使用公钥基础设施(PKI)来验证所有网络参与者的 *** 作。提交交易的每个节点、网络管理员和用户都需要有一个公共证书和私钥来验证他们的身份。这些身份需要有一个有效的信任根,确定证书是由网络成员组织颁发的。network.sh
脚本在创建对等节点和排序节点之前创建部署和 *** 作网络所需的所有加密材料。
creating Org1, Org2, and ordering service organization with crypto from 'cryptogen'
/Usr/fabric-samples/test-network/../bin/cryptogen
##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
##########################################################
############ Create Org1 Identities ######################
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output=organizations
org1.example.com
+ res=0
+ set +x
##########################################################
############ Create Org2 Identities ######################
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output=organizations
org2.example.com
+ res=0
+ set +x
##########################################################
############ Create Orderer Org Identities ###############
##########################################################
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output=organizations
+ res=0
+ set +x
默认情况下,该脚本使用加密工具cryptogen创建证书和密钥。该工具用于开发和测试,可以快速为Fabric组织创建所需的加密材料,并具有有效的信任根。当您运行./network.sh
时,您可以看到加密工具为Org1、Org2和Orderer Org创建证书和密钥。
但是,测试网络脚本还提供了使用证书颁发机构(Certificate authority, CAs)启动网络的选项。在生产网络中,每个组织运行一个CA(或多个中间CA),这些CA创建属于其组织的身份。由组织运行的CA创建的所有身份都共享相同的信任根。尽管这比使用cryptogen花费更多的时间,但是使用CAs生成测试网络可以介绍如何在生产中部署网络。部署CAs还允许您注册Fabric sdk的客户端身份,并为您的应用程序创建证书和私钥。
./network.sh up -ca
部署CA后,需要花时间检查。/network.sh脚本生成的日志。测试网络使用Fabric CA客户端向每个组织的CA注册节点和用户身份。脚本然后使用enroll命令为每个标识生成一个MSP文件夹。MSP文件夹包含每个身份的证书和私钥,并确定身份在 *** 作CA的组织中的角色和成员资格。可以使用以下命令检查Org1 admin用户的MSP文件夹:
tree organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/
结果如下
organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/
└── msp
├── IssuerPublicKey
├── IssuerRevocationPublicKey
├── cacerts
│ └── localhost-7054-ca-org1.pem
├── config.yaml
├── keystore
│ └── 58e81e6f1ee8930df46841bf88c22a08ae53c1332319854608539ee78ed2fd65_sk
├── signcerts
│ └── cert.pem
└── user
您可以在signcerts
文件夹中找到admin用户的证书cert.pem
,在keystore
文件夹中找到私钥。cryptogen和Fabric ca都在组织文件夹中为每个组织生成加密材料。在organizations/fabric-ca
目录下的registerEnroll.sh
脚本中可以找到用于设置网络的命令。要了解如何使用Fabric CA部署Fabric网络的更多信息,请访问Fabric CA *** 作指南。
MSP
过程解析
./network.sh
为两个peer组织和orderer组织创建证书和密钥。默认情况下,脚本使用位于organizations/cryptogen
文件夹中的配置文件使用cryptogen工具。如果使用-ca
标志创建证书颁发机构,脚本将使用Fabric CA服务器配置文件和位于organizations/ Fabric -ca
文件夹中的registerEnroll.sh
脚本。cryptogen和Fabric ca都在organizations
文件夹中为所有三个组织创建加密材料和MSP文件夹。一旦生成了组织加密材料,network.sh
就可以启动网络的节点。该脚本使用docker- compose-test-net.yaml
文件在docker
文件夹中创建peer和排序节点。docker
文件夹也包含docker- compose-e2e.yaml
文件,它将网络的节点与三个Fabric ca放在一起。该文件用于Fabric SDK运行端到端测试。有关运行这些测试的详细信息,请参阅Node SDK repo。如果使用了createchannel
子命令,./network.sh
运行scripts
文件夹中的createchannel.sh
脚本,使用提供的通道名称创建通道。该脚本使用configtxgen
工具基于configtx/configtx.yaml
文件中的TwoorgsApplicationGenesis
通道配置文件创建通道生成块。创建通道之后,脚本使用peer命令行将peer.org1.example.com
和peer.org2.example.com
加入到通道中,并使这两个Peer成为锚点Peer。如果发出了deploycc
命令,./network.sh
运行deploycc.sh
脚本在两个对等端安装asset-transfer-basic链码,然后在通道上定义链代码。一旦链码定义提交给通道,Peer命令行使用Init
初始化链码,并调用链码来将初始数据放到分类账上。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)