Hyperledger Fabric官方文档

(概念)

排序服务

每个Fabric网络还包括一个排序服务

排序服务允许对等节点专注于验证交易并将它们提交到账本。 排序节点从客户那里收到认可的交易后,他们就交易顺序达成共识,然后添加区块。 这些区块之后被分配给添加这些区块到账本的对等节点。 排序节点还可以操作定义Fabric网络的功能系统通道, 系统通道定义了哪个组织是该联盟的成员。

该示例网络使用一个单节点Raft排序服务,该服务由排序组织运行。 您可以看到在您机器上正在运行的排序节点orderer.example.com。 虽然测试网络仅使用单节点排序服务,一个真实的网络将有多个排序节点,由一个或多个多个排序者组织操作。 不同的排序节点将使用Raft共识算法达成跨交易顺序的共识网络。

智能合约与链码

在Fabric中,智能合约作为链码以软件包的形式部署在网络上。 链码安装在组织的对等节点上,然后部署到某个通道,然后可以在该通道中用于认可交易和区块链账本交互。 在将链码部署到通道前,该频道的成员需要就链码定义达成共识,建立链码治理。 何时达到要求数量的组织同意后,链码定义可以提交给通道,并且可以使用链码了。
链码通过应用提交的交易来初始化以及管理账本状态。
链码通常用来处理网络中成员共同接受的业务逻辑,所以它可以被认为是“智能合约”。

Fabric 链码生命周期

Fabric 链码生命周期是一个过程,它允许多个组织在使用一个链码之前就如何操作达成一致。网络操作者可以使用 Fabric 生命周期来展开以下的任务:

测试网络

启动测试网络test-network

./network.sh down删除先前运行的所有容器或工程
./network.sh up
此命令创建一个由两个对等节点和一个排序节点组成的Fabric网络。 运行./network.sh up时没有创建任何channel, 虽然我们将在后面的步骤实现。 如果命令执行成功,您将看到已创建的节点的日志:
enter description here

使用例程创建通道

您可以使用network.sh脚本在Org1和Org2之间创建通道并加入他们的对等节点。 运行以下命令以创建一个默认名称为“ mychannel”的通道:
./network.sh createChannel
您也可以使用channel标志创建具有自定义名称的通道。 作为一个例子,以下命令将创建一个名为channeljin的通道:
./network.sh createChannel -c channeljin

在通道启动一个链码

./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-java -ccl java
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go

后面网络交互就照着做

下一步

既然您已经使用测试网络在您的本地计算机上部署了Hyperledger Fabric,您可以使用教程来开始开发自己的解决方案:

  • 使用将智能合约部署到通道 教程了解如何来将自己的智能合约部署到测试网络。
  • 访问编写您的第一个应用程序 教程了解如何从您的客户端程序使用Fabric SDK提供的API调用智能合约。
  • 如果您准备将更复杂的智能合约部署到网络,请跟随商业票据教程 探索两个组织使用区块链网络进行商业票据交易的用例。

您可以在教程页上找到Fabric教程的完整列表。

用CA建立网络

默认情况下,脚本使用cryptogen工具创建证书和密钥。(比如以上)
测试网络脚本还提供了使用证书颁发机构(CA)的网络的启动选项。 在产品网络中,每个组织操作一个CA(或多个中间CA)来创建属于他们的组织身份。 所有由该组织运行的CA创建的身份享有相同的组织信任根源。
./network.sh up -ca
enter description here
测试网络使用Fabric CA客户端以每个组织的CA注册节点和用户身份。 之后这个脚本使用enroll命令为每个身份生成一个MSP文件夹。 MSP文件夹包含每个身份的证书和私钥,以及在运营CA的组织中建立身份的角色和成员身份。
检查Org1管理员用户的MSP文件夹:tree organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/
enter description here

每次记得关闭docker容器

直接用./network.sh down

使用configtx.yaml创建通道配置

cryptogen
cryptogen 是用来生成 Hyperledger Fabric 密钥材料的工具。它为测试提供了一种预配置网络的工具。通常它不应使用在生产环境中。

最后跑的命令2.2的示例
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric-channel configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2.3的示例
configtxgen -profile TwoOrgsApplicationGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric-channel

部署节点

使用docker的话这些配置文件会有一个默认的内置在docker hyperledger fabric官方容器中
即一般测试会写一个docker-compose.yaml的配置文件来用docker创建节点
否则一般有:

创建一个 peer 节点

在创建 peer 节点之前,你需要为 peer 节点定制配置文件。在 Fabric 中,这个文件叫做 core.yaml

创建一个排序节点

与创建 peer 节点不同,你将需要创建一个创世纪块(或者引用已经创建的块,如果将排序节点添加到现有的排序服务中),并在启动排序节点之前指定其路径。
在Fabric中,这个用于排序节点的配置文件称为 orderer.yaml

最后部署链码。。。

1
2
3
4
5
6
7
# education程序解读
* chaincode文件存放链码及相关依赖
* fixtures文件存放docker的配置文件(docker-compose.yaml)通道配置文件(configtx.yaml)网络配置文件(crypto-config.yaml)
* img作者示例图片与网页资源图片
* sdkinit
* service
* web 基本的网页应用前后端

(记)

docker compose用docker启动节点

在有docker-compose.yaml的地方
docker-compose up即可

删除container和image

1
2
3
4
5
6
7
8
9
docker container ls -a #查看所有container
docker rm xxxxxxx #通过container id 删除container,container id可以不写全
docker ps -a #通过docker提供的commands 可以做到manager commands的效果,还简便些。
docker rm $(docker container ls -qa) #批量删除
#删除前先要STOP
docker stop xxxx

docker image ls #查看所有image
docker rmi xxxxxxx #通过image id 删除

enter description here
docker rm -f $(docker ps -aq) docker rmi -f $(docker images -q)

进入容器内bash

docker exec -it cli1 bash

go代理

go env -w GOPROXY=https://goproxy.cn,direct

---------------THEEND---------------