首页IT科技hyperledgerfabric是什么(Hyperledger Fabric介绍1)

hyperledgerfabric是什么(Hyperledger Fabric介绍1)

时间2025-05-01 17:11:52分类IT科技浏览3157
导读:Fabric1.0架构简介 Fabric架构的核心包括三部分:...

Fabric1.0架构简介

Fabric架构的核心包括三部分:

Identity - 身份管理(让允许的人进入) Smart Contact - 智能合约(逻辑与数据分离) Ledger及Transactions - 账本和交易(插拔式共识协议)

APIs,Events,SDKs

Fabric开发主要包括客户端和服务器端应用程序的编写

服务端

Fabric提供API方便应用开发            ,对服务端的ChainCode               ,目前支持用Go            、Java或者Node.js开发         。

客户端

对客户端应用     ,Fabric目前提供Node.js和Java SDK, Go SDK                 。未来计划提供Python         ,Fabric还提供RESTAPI      。

Fabric 业务网络

Peer节点:

Peer节点可以充当多种角色                ,如背书者endorser, 提交者committer       。一个区块链网络中会有多个Peer节点                。

Orderer节点:

对交易进行排序       ,批量打包      ,生成区块                 ,发给Peer节点         。

Channel:

交易的两个节点必须处于一个频道里

Fabric核心模块

peer 主节点模块, 负责存储区块链数据, 运行维护链码 orderer 交易打包, 排序模块 cryptogen 组织和证书生成模块 configtxgen 区块和交易生成模块 configtxlator 区块和交易解析模块

五个模块中peer和orderer属于系统模块, cryptogen, configtxgen, configtxlator属于工具模块     。

工具模块负责证书文件               、区块链创始块     、通道创始块等相关文件和证书的生成工作         ,但是工具模块不参与系统的运行               。

peer模块和 orderer 模块作为系统模块是Fabric的核心模块   ,启动之后会以守护进程的方式在系统后台长期运行            。 1         、cryptogen

cryptogen模块主要用来生成组织结构和账号相关的文件

比如有多少个组织有多少个节点                  ,需要多少个账号等

crypto-config.yaml 配置各个组织内的节点信息            ,用来生成组织各个节点的证书   。

上述模板文件定义了一个orderer节点,这个orderer节点的名字为orderer               ,orderer节点的根域名为ordererorg.com               ,主机名为orderer               。模板文件同时定义了两个组织   ,两个组织的名字分别为org1 和 org2            ,其中组织 org1 包含了2个节点和2个用户               ,组织 org2 包含2个点和2个用户               。

Fabric证书文件结构

orderer节点 # 查看TestNetWork目录 cd /root/fabric/fabric-samples/basic-network/crypto-config bb@ubuntu:~/TestNetWork$ tree -L 2 . ├── crypto-config │ ├── ordererOrganizations # orderer节点相关的证书文件 │ └── peerOrganizations # 组织相关的证书文件(组织的节点数, 用户数等证书文件) └── crypto-config.yaml # 配置文件 # 查看排序节点的证书目录, 进入到 ordererOrganizations 子目录中 bb@ubuntu:ordererOrganizations$ tree -L 4 . └── bb.com # 根域名为bb.com的orderer节点的相关证书文件 ├── ca # CA服务器的签名文件 │ ├── 94db924d3be00c5adda6ac3c3cb7a5f8b80868681c3dd04b58c2920cdf56fdc7_sk │ └── ca.bb.com-cert.pem ├── msp │ ├── admincerts # orderer管理员的证书 │ │ └── Admin@bb.com-cert.pem │ ├── cacerts # orderer根域名服务器的签名证书 │ │ └── ca.bb.com-cert.pem │ └── tlscacerts # tls连接用的身份证书 │ └── tlsca.bb.com-cert.pem ├── orderers # orderer节点需要的相关的证书文件 │ └── ubuntu.bb.com │ ├── msp # orderer节点相关证书 │ └── tls # orderer节点和其他节点连接用的身份证书 ├── tlsca │ ├── de45aeb112ee820197f7d4d475f2edbeb1705d53a690f3537dd794b66de1d6ba_sk │ └── tlsca.bb.com-cert.pem └── users # orderer节点用户相关的证书 └── Admin@bb.com ├── msp └── tls

peer节点

configtxgen

生成 orderer 节点的初始化文件

生成 channel 的初始化文件 configtxgen模块配置文件

configtxgen 模块的配置文件包含Fabric系统初始块                、Channel初始块文件等信息。configtxgen 模块的配置文件样例如下所示     ,以下部分定义了整个系统的配置信息:

configtxgen 的使用

创建 orderer 的初始块 bb@ubuntu:TestNetWork$ configtxgen -profile ItcastOrgOrdererGenesis -outputBlock ./channel-artifacts/genesis.block # ItcastOrgOrdererGenesis: 要和配置文件中的配置项对应, 可以由数字和字母构成. # orderer初始块文件为genesis.block         ,生成在channel-artifacts目录中 创建 channel 的初始块 bb@ubuntu:TestNetWork$ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel # TwoOrgsChannel: 要和配置文件中的配置项对应 # channel.tx 为生成的频道文件, 在channel-artifacts目录中 # 创建的频道名称为: mychannel 创建锚点更新文件 - 每个组织分别进行更新 # 更新第一个组织 OrgGoMSP 的peer节点 bb@ubuntu:TestNetWork$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/GoMSPanchors.tx -channelID mychannel -asOrg OrgGoMSP # TwoOrgsChannel: 要和配置文件中的配置项对应 # OrgGoMSP组织使用的频道为 mychannel 生成的配置信息文件名为 GoMSPanchors.tx #============================================================================== # 更新第2个组织 OrgJavaMSP 的peer节点 bb@ubuntu:TestNetWork$ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/JavaMSPanchors.tx -channelID mychannel -asOrg OrgJavaMSP # TwoOrgsChannel: 要和配置文件中的配置项对应 # OrgJavaMSP组织使用的频道为 mychannel 生成的配置信息文件名为 JavaMSPanchors.tx

orderer

orderer 模块负责对交易进行排序, 并将排序好的交易打包成区块            。

orderer模块的配置信息

# orderer节点运行需要配置一些环境变量 ORDERER_GENERAL_LOGLEVEL # 日志级别 越高写的日志越少 越低写的日志越多 - `critical | error | warning | notice | info | debug ORDERER_GENERAL_LISTENADDRESS # orderer服务器监听的地址 ORDERER_GENERAL_LISTENPORT # orderer服务器监听的端口 ORDERER_GENERAL_GENESTSMETHOD # 初始化块(Genesis)的来源方式, 一般赋值为 file 即可 ORDERER_GENERAL_GENESISFILE # 存储初始块文件的路径 ORDERER_GENERAL_LOCALMSPID # orderer节点的编号,在configtxgen模块配置文件中指定的 - `configtx.yaml配置文件中排序节点的组织的ID ORDERER_GENERAL_LOCALMSPDIR # orderer节点msp文件路径 ORDERER_GENERAL_LEDGERTYPE # 账本类型, ram, json, file - `ram: 账本数据存储在内存, 一般用于测试环境 - `json/file: 账本数据保存在文件中, 生成环境中推荐使用file ORDERER_GENERAL_BATCHTIMEOUT # 批处理超时, 创建批处理之前的等待时间 - `每隔一个BATCHTIMEOUT时长, 就会生成一个新的区块 ORDERER_GENERAL_MAXMESSAGECOUNT # 最大消息计数, 批处理的最大消息数量 - `只要一个区块的消息达到MAXMESSAGECOUNT指定的数量, 就会生成一个新的区块 ORDERER_GENERAL_TLS_ENABLED # 是否启用TLS, true/false ORDERER_GENERAL_TLS_PRIVATEKEY # orderer节点的私钥文件, 按照下边的示例目录找 - `crypto-config/ordererOrganizations/xx.com/orderers/orderer.xx.com/tls/server.key ORDERER_GENERAL_TLS_CERTIFICATE # 证书文件 - `crypto-config/ordererOrganizations/xx.com/orderers/orderer.xx.com/tls/server.crt ORDERER—GENERAL_TLS_ROOTCAS # 根证书文件 - `crypto-config/ordererOrganizations/xx.com/orderers/orderer.xx.com/tls/ca.crt

peer

peer模块是Fabric中最重要的模块                ,也是在Fabric系统使用最多的模块                  。peer模块在Fabric中被称为主节点模块       ,主要负责存储区块链数据       、运行维护链码      、提供对外服务接口等作用   。

peer channel子命令

create - 创建通道 join - 将peer加入到通道中 list - 列出peer加入的通道 update - 更新

peer chaincode 子命令

install instantiate invoke list package query upgrade

1                 、在一个分布式账本系统中      ,当客户端向链码发起交易时                 ,链码需要被多个Peer节点背书         ,以确保交易被正确处理和验证         。当Peer节点背书完成后   ,背书结果会被返回给客户端                 。然而                  ,这些背书结果并不能直接添加到区块链中            ,因为它们还需要经过共识机制的验证和排序,以确保交易的正确性和一致性      。

2         、Orderer节点是负责维护和管理区块链中交易顺序和一致性的节点       。当客户端收到所有Peer节点的背书结果后               ,它会将这些结果发送给Orderer节点                。Orderer节点会将这些交易按照共识机制的规则进行排序               ,并打包成一个区块         。然后   ,Orderer节点会将这个区块广播给所有网络中的Peer节点            ,以便它们可以将其添加到它们各自的副本中               ,从而达成共识     。 3   、当多个Peer节点背书失败时     ,客户端收到的背书结果可能是不一致的         ,此时客户端需要根据应用程序的具体逻辑来判断如何处理                ,可以1                  、重新发起交易请求 2            、对背书结果进行统计和比较3、引入额外的认证和安全机制

每个Peer节点都维护着完整的账本副本

排序服务是由Orderer节点提供               。Orderer节点是一个独立的组件       ,用于维护整个区块链网络中的交易顺序      ,并将已排序的交易打包成区块广播给Peer节点进行验证和提交            。

排序服务类似于发布/订阅消息系统中的主题topic                 ,应用程序在指定Peer节点的子集中架设通道   。这些peer组成提交到该通道交易的相关者集合         ,而且只有这些peer可以接收包含相关交易的区块   ,与其他交易完全隔离                  ,实现数据隔离和保密               。

如上图所示            ,peer 1,2和N订阅红色通道,并共同维护红色账本; peer 1和N订阅蓝色通道并维护蓝色账本;类似地               ,peer 2和peer N在黑色通道上并维护黑色账本               。

在这个例子中               ,peer N在订阅了所有通道   ,我们看到每个通道都有一个相关的账本。一般来说            ,我们称不涉及所有peer的账本为子账本               ,另一种是系统账本     ,即全账本            。

Fabric 1.0交易流程

在Hyperledger Fabric 1.0中         ,交易流程可以简要概括如下:

应用程序通过调用链码来发起交易                ,链码定义了交易的逻辑处理和访问权限                  。

交易将被发送给一个或多个Peer节点进行背书       ,背书节点根据链码中定义的背书策略来决定是否对交易进行背书      ,背书策略可以基于身份               、属性等因素来定义   。

如果交易被足够数量的背书节点认可                 ,则交易将被发送到Orderer节点进行排序         ,Orderer节点根据共识算法对交易进行排序   ,并将它们打包成区块                  ,然后广播给整个网络中的Peer节点         。

Peer节点收到区块后            ,将对区块进行验证,包括交易的签名               、背书结果   、交易顺序等               ,如果区块验证通过               ,则将其提交到自己的账本中                 。

客户端可以查询账本状态或者通过订阅机制监听账本状态变化   ,以获得交易结果      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
python 协程 await(python协程的两大优势) python怎么交换两个变量的值(python变量如何拼接)