深度探索Hyperledger技术与应用之超级账本的典型交易流程

Hyperledger Fabric 入门必读书籍 下面整理一些 Hyperledger Fabric 一些比较好的区块链书籍,仅供学习参考。 1. 区块链原理、设计与应用 1.1 书籍封面 1.2 介绍 本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深,系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1-3章介绍区块链技术的由来、核心思想及典型的应用场景;第4-5章重点介绍区块链技术中... 阅读详情

image

上一篇分享了超级账本的系统逻辑架构和网络节点架构,本篇主要分享超级账本的典型交易流程。

1

典型交易流程

下图所示为Hyperledger Fabric 1.0典型的交易流程图。

image

从上一节的网络节点架构中,我们已经了解到基于Hyperledger Fabric 1.0的区块链应用中涉及几个节点角色:应用程序、背书节点、排序服务节点和主节点。在图3-4中,假定各节点已经提前颁发好证书,且已正常启动,并加入已经创建好的通道。后面的步骤介绍在已经实例化了的链码通道上从发起一个调用交易到最终记账的全过程。

1、创建交易提案并发送给背书节点

使用应用程序构造交易提案,SignedProposal的结构如下所示:

SignedProposal: {

    ProposalBytes(Proposal): {

        Header: {

            ChannelHeader: {

                Type: "HeaderType_ENDORSER_TRANSACTION",

 TxId: TxId,  Timestamp: Timestamp,  ChannelId: ChannelId,  Extension(ChaincodeHeaderExtension): {  PayloadVisibility: PayloadVisibility,  ChaincodeId: {  Path: Path,  Name: Name,  Version: Version  } }, Epoch: Epoch }, SignatureHeader: { Creator: Creator, Nonce: Nonce } }, Payload: { ChaincodeProposalPayload: { Input(ChaincodeInvocationSpec): { ChaincodeSpec: { Type: Type, ChaincodeId: { Name: Name }, Input(ChaincodeInput): { Args: [] } } }, TransientMap: TransientMap } } }, Signature: Signature }

我们来看看上面的结构,SignedProposal是封装了Proposal的结构,添加了调用者的签名信息。背书节点会根据签名信息验证其是否是一个有效的消息。Proposal由两个部分组成:消息头和消息结构。消息结构详细的解释参考后面的章节。这里简单讲一下消息头。

消息头(Header)也包含两项内容。

通道头(ChannelHeader):通道头包含了与通道和链码调用相关的信息,比如在哪个通道上调用哪个版本的链码。TxId是应用程序本地生成的交易号,跟调用者的身份证书相关,可以避免交易号的冲突,背书节点和记账节点都会校验是否存在重复交易。

签名头(SignatureHeader):签名头包含了调用者的身份证书和一个随机数,用于消息的有效性校验。

应用程序构造好交易提案请求后,选择背书节点执行并进行背书签名。背书节点是链码背书策略里指定的节点。有一些背书节点是离线的,其他的背书节点可以拒绝对交易进行背书,也可以不背书。应用程序可以尝试使用其他可用的背书节点来满足策略。应用程序以何种顺序给背书节点发送背书请求是没有关系的,正常情况下背书节点执行后的结果是一致的,只有背书节点对结果的签名不一样。

2、背书节点模拟交易并生成背书签名

背书节点在收到交易提案后会进行一些验证,包括:

  • 交易提案的格式是否正确;

  • 交易是否提交过(重复攻击保护);

  • 交易签名有效(通过 MSP);

  • 交易提案的提交者在当前通道上是否已授权有写权限。

验证通过后,背书节点会根据当前账本数据模拟执行链码中的业务逻辑并生成读写集(RwSet),其中包含响应值、读写集等。在模拟执行时账本数据不会更新。而后背书节点对这些读写集进行签名成为提案响应(Proposal Response),然后返回给应用程序。

ProposalResponse的结构如下:

ProposalResponse: {

    Version: Version,

    Timestamp: Timestamp,

    Response: {

        Status: Status,

 Message: Message,  Payload: Payload  }, Payload(ProposalResponsePayload): { ProposalHash: ProposalHash, Extension(ChaincodeAction): { Results(TxRwSet): { NsRwSets(NsRwSet): [ NameSpace: NameSpace, KvRwSet: { Reads(KVRead): [ Key: Key, Version: { BlockNum: BlockNum, TxNum: TxNum } ], RangeQueriesInfo(RangeQueryInfo): [ StartKey: StartKey, EndKey: EndKey, ItrExhausted: ItrExhausted, ReadsInfo: ReadsInfo ], Writes(KVWrite): [ Key: Key, IsDelete: IsDelete, Value: Value ] } ] }, Events(ChaincodeEvent): { ChaincodeId: ChaincodeId, TxId: TxId, EventName: EventName, Payload: Payload } Response: { Status: Status, Message: Message, Payload: Payload }, ChaincodeId: ChaincodeId } }, Endorsement: { Endorser: Endorser, Signature: Signature } }

返回的ProposalResponse中包含了读写集、背书节点签名以及通道名称等信息。

3、收集交易的背书

应用程序收到ProposalResponse后会对背书节点签名进行验证,所有节点接收到任何消息后都是需要先验证消息合法性的。如果链码只进行账本查询,应用程序会检查查询响应,但不会将交易提交给排序服务节点。如果链码对账本进行Invoke操作,则须提交交易给排序服务进行账本更新,应用程序会在提交交易前判断背书策略是否满足。如果应用程序没有收集到足够的背书就提交交易了,记账节点在提交验证阶段会发现交易不能满足背书策略,标记为无效交易。

如何选择背书节点呢?目前fabric-sdk-go默认的实现是把配置文件选项channels.mychannel.peers(其中的mychannel需要替换成实际的通道名称)里的节点全部添加为背书节点,需要等待所有背书节点的背书签名。应用程序等待每个背书节点执行的超时时间是通过配置文件选项client.peer.timeout.connection设置的,配置文件的示例给出的是3秒,根据实际情况调整,如果没有设置就是5秒的默认值。

4、构造交易请求并发送给排序服务节点

应用程序接收到所有的背书节点签名后,根据背书签名调用SDK生成交易,广播给排序服务节点。生成交易的过程比较简单,确认所有的背书节点的执行结果完全一致,再将交易提案、提案响应和背书签名打包生成交易。交易的结构如下:

Envelope: {

    Payload: {

        Header: {

            ChannelHeader: {

                Type: "HeaderType_ENDORSER_TRANSACTION",

 TxId: TxId,  Timestamp: Timestamp,  ChannelId: ChannelId,  Extension(ChaincodeHeaderExtension): {  PayloadVisibility: PayloadVisibility,  ChaincodeId: {  Path: Path,  Name: Name,  Version: Version  } }, Epoch: Epoch }, SignatureHeader: { Creator: Creator, Nonce: Nonce } }, Data(Transaction): { TransactionAction: [ Header(SignatureHeader): { Creator: Creator, Nonce: Nonce }, Payload(ChaincodeActionPayload): { ChaincodeProposalPayload: { Input(ChaincodeInvocationSpec): { ChaincodeSpec: { Type: Type, ChaincodeId: { Name: Name }, Input(ChaincodeInput): { Args: [] } } }, TransientMap: nil }, Action(ChaincodeEndorsedAction): { Payload(ProposalResponsePayload): { ProposalHash: ProposalHash, Extension(ChaincodeAction): { Results(TxRwSet): { NsRwSets(NsRwSet): [ NameSpace: NameSpace, KvRwSet: { Reads(KVRead): [ Key: Key, Version: { BlockNum: BlockNum, TxNum: TxNum } ], RangeQueriesInfo(RangeQueryInfo): [ StartKey: StartKey, EndKey: EndKey, ItrExhausted: ItrExhausted, ReadsInfo: ReadsInfo ], Writes(KVWrite): [ Key: Key, IsDelete: IsDelete, Value: Value ] } ] }, Events(ChaincodeEvent): { ChaincodeId: ChaincodeId, TxId: TxId, EventName: EventName, Payload: Payload } Response: { Status: Status, Message: Message, Payload: Payload }, ChaincodeId: ChaincodeId } }, Endorsement: [ Endorser: Endorser, Signature: Signature ] } } ] } }, Signature: Signature }

我们来看交易信封的几个对应关系:

  • Envelope.Payload.Header同交易提案SignedProposal.Proposal.Header;

  • Envelope.Payload.Data.TransactionAction.Header是交易提案的提交者的身份信息,同SignedProposal.Proposal.Header.SignatureHeader和Envelope.Payload.Header.SignatureHeader是冗余的;

  • Envelope.Payload.Data.TransactionAction.Payload.ChaincodeProposalPayload同交易提案的SignedProposal.Proposal.Payload.ChaincodeProposalPayload,唯一不同的是,TransientMap强制设置为nil,目的是避免在区块中出现一些敏感信息;

  • Envelope.Payload.Data.TransactionAction.Payload.Action.Payload结构,其实和Proposal

  • Response.Payload结构完全一样;

  • Envelope.Payload.Data.TransactionAction.Payload.Action.Endorsement变成了数组,代表多个背书节点的背书签名。

整个信封Envelope的Signature是交易提交者对整个Envelope.Payload的签名。应用程序可以把生成的交易信封内容发送给任意选择的几个排序服务节点。

5、排序服务节点以对交易进行排序并生成区块

排序服务不读取交易的内容,如果在生成交易信封内容的时候伪造了交易模拟执行的结果,排序服务节点也不会发现,但会在最终的交易验证阶段校验出来并标记为无效交易。排序服务要做得很简单,先是接收网络中所有通道发出的交易信息,读取交易信封的Envelope.Payload.Header.ChannelHeader.ChannelId以获取通道名称,按各个通道上交易的接收时间顺序对交易信息进行排序,生成区块。

6、排序服务节点以广播给组织的主节点

排序服务节点生成区块以后会广播给通道上不同组织的主节点。

7、记账节点验证区块内容并写入区块

背书节点是动态角色,只要参与交易的背书就是背书节点,哪些交易选择哪些节点作为背书节点是由应用程序选择的,这需要满足背书策略才能生效。所有的背书节点都属于记账节点。所有的Peer节点都是记账节点,记录的是节点已加入通道的账本数据。记账节点接收到的是排序服务节点生成的区块,验证区块交易的有效性,提交到本地账本后再产生一个生成区块的事件,监听区块事件的应用程序可以进行后续的处理。

如果接收到的区块是配置区块,则会更新缓存的配置信息。记账节点的处理流程如图所示。

image

交易数据的验证

区块数据的验证是以交易验证为单位的,每次对区块进行验证时都会生成一个交易号的位图TxValidationFlags,它记录每个交易号的交易验证状态,只有状态为TxValidationCode_VALID才是有效的。位图也会写入到区块的元数据BlockMetadataIndex_TRANSACTIONS_FILTER中。交易验证的时候会检查以下内容:

  • 是否为合法的交易:交易格式是否正确,是否有合法的签名,交易内容是否被篡改;

  • 记账节点是否加入了这个通道。

基本的验证通过以后会提交给VSCC进行背书策略的验证。

记账节点与VSCC

链码的交易是隔离的,每个交易的模拟执行结果读写集TxRwSet都包含了交易所属的链码。为了避免错误地更新链码交易数据,在交易提交给系统链码VSCC验证交易内容之前,还会对链码进行校验。下面这些交易都是非法的:

  • 链码的名称或者版本为空;

  • 交易消息头里的链码名称Envelope.Payload.Header.ChannelHeader.Extension.ChaincodeId. Name和交易数据里的链码名称Envelope.Payload.Data.TransactionAction.Payload.ChaincodeProposalPayload.Input.ChaincodeSpec.ChaincodeId.Name不一致;

  • 链码更新当前链码数据时,生成读写集的链码版本不是LSCC记录的最新版本;

  • 应用程序链码更新了LSCC(生命周期管理系统链码)的数据;

  • 应用程序链码更新了不可被外部调用的系统链码的数据;

  • 应用程序链码更新了不可被其他链码调用的系统链码的数据;

  • 调用了不可被外部调用的系统链码。

基于状态数据的验证和MVCC检查

交易通过VSCC检查以后,就进入记账流程。kvledger还会对读写集TxRwSet进行MVCC(Multi-Version Concurrency Control)检查。

kvledger实现的是基于键值对(key-value)的状态数据模型。对状态数据的键有3种操作:

  • 读状态数据;

  • 写状态数据;

  • 删除状态数据。

对状态数据的读操作有两种形式:

  • 基于单一键的读取;

  • 基于键范围的读取。

MVCC检查只对读数据进行校验,基本逻辑是对模拟执行时状态数据的版本和提交交易时状态数据的版本进行比较。如果数据版本发生变化或者某个键的范围数据发生变化,就说明这段时间之内有别的交易改变了状态数据,当前交易基于原有状态的处理就是有问题的。由于交易提交是并行的,所以在交易未打包生成区块之前,并不能确定最终的执行顺序。如果交易执行的顺序存在依赖,在MVCC检查的时候就会出现依赖的状态发生了变化,实际上是数据出现了冲突。图所示为基于状态的数据验证的流程图。

image

写集合本身包含了写和删除的数据,有一个状态位标识是否删除数据。为了提升效率,状态数据库的提交是批处理的,整个区块交易的状态数据同时提交,这也保证了整个区块的状态数据要么都提交成功,要么都提交失败。这时只会出现记录的账本数据和状态数据库不一致,不会出现区块的状态数据不一致的情况。当账本数据和状态数据库不一致时,可以通过状态数据库的检查点来标记。

无效交易的处理

伪造的交易会导致无效交易,正常的交易也可能出现无效交易。MVCC检查的是背书节点在模拟执行的时候,环境是否和记账节点提交交易时的环境一致,这里的环境是指状态数据库里数据的三元组(key、value、version)是否完全一致。如果正常提交的交易在这个过程中涉及的数据发生了变化,那么也会出现检查失败从而导致无效交易。在这种情况下,需要在上层的应用程序有一些补偿措施,比如调整交易打包的配置,重新提交失败的交易等。

在目前版本的实现中,无效交易也会保留在区块中,可以通过区块记录的元数据确定哪些是无效交易。无效交易的读写集不会提交到状态数据库中,不会导致状态数据库发生变化,只是会占用区块的大小,占用记账节点的硬盘空间。后续的版本会实现账本的精简,过滤掉无效交易。

8、在组织内部同步最新的区块

下篇预告:深度探索Hyperledger技术与应用之超级账本的策略管理

京东有购:https://item.jd.com/12279369.html

image

深度探索区块链

Hyperledger技术与应用

区块链

张增骏,董宁,朱轩彤,陈剑雄  著

本书由超级账本执行董事Brian Behlendorf领衔推荐,区块链一线落地实践团队、Hyperleger会员智链骨干团对撰写。深入讲解Hyperledger Fabric 1.0的架构、执行逻辑、核心功能实现、从零部署,并以票据案例为例,讲解具体开发实践,穿插开发所需的最佳实践和遇到的问题解决。

机械工业

出版社

image

华章科技是机械出版社的旗下品牌,出版了“计算机科学丛书”等近30个经典套系,在各个细分领域均处于领导地位,其中《Java编程思想》、《算法导论》、《编译原理》、《数据挖掘:概念与技术》、《深入理解计算机系统》、《深入理解Java虚拟机》等著作犹如计算机图书领域的璀璨明珠,长销不衰!

image

HiBlock秉承开放、协作、透明、链接、分享的价值观,致力打造区块链开发者社区。专注于在开发者中推广区块链,帮助开发者真正掌握区块链技术和应用。

本文内容节选自《深度探索区块链:Hyperledger技术与应用》一书的第3章《超级账本的系统架构》。

本书作者:张增骏,董宁,朱轩彤,陈剑雄

感谢机械工业出版社华章分社的支持和分享。

以下是我们的社区介绍,欢迎各种合作、交流、学习:)

image

Hyperledger Fabric技术原理深度解析:模块化设计与企业级应用 Hyperledger Fabric以其模块化设计和高性能架构,成为企业级区块链解决方案的首选。通过本文的解析,你已经了解了Fabric的技术原理和实际应用场景。未来,随着技术的不断发展,Fabric将进一步推动区块链在企业中的落地应用。 阅读详情

相关推荐

IBM关于区块链的HyperLedger Fabric项目第八讲PPT:Fabric应用案例赏析

IBM开源技术社区关于区块链的HyperLedger Fabric项目系列讲堂的第八讲的PPT,讲课很详细,ppt做的很棒,其中一些图表都有借鉴意义。第九讲内容主要是Fabric应用案例

hyperledger fabric explorer 超级账本区块链浏览器搭建-docker的方式

hyperledger fabric explorer 超级账本区块链浏览器搭建-使用docker的方式快速搭建一个超级账本区块链浏览器 区块链浏览器可以让用户更加直观地查看当前超级账本网络的情况,来观察整个区块链上的块数,节点数,通道,链码等; 官方推荐的搭建区块链浏览器有两种方法,一种是docker的方式,一种是用代码在自己本地的方式搭建,这里我们选择docker的方式搭建; 官方的github项目地址: https://gitee.com/workspy/notebook.git Qui

每一个不曾起舞的日子,都是对生命的辜负 9026

2017_IBM_微课程_区块链和HyperLedger之PPT汇总(含全部九章)

2017_IBM_微课程_区块链和HyperLedger之PPT汇总(含全部九章)

超级账本交易流程

应用端首先构建交易的预案。 背书节点收到交易预案后,首先校验交易的签名是否合法。 背书节点把链码模拟执行后得到读写集。 应用端在收到背书响应后,检查背书节点的签名。 排序节点在收到各个节点发来的交易后,按照交易的通道号对交易进行分类排序。 确认节点收到排序节点发来的交易后,逐笔检查区块中的交易。...

qq_30505673的博客 1001

QGIS:安装Deepness插件+应用

简单的描述了deepness的安装应用历程,重点是记录博主本次遇到的坑

fengyi157的博客 2342

从零开始:使用Python实现基于深度强化学习的柔性车间调度系统

本文详细介绍了如何使用Python和深度强化学习(DRL)构建柔性车间调度系统,特别关注图神经网络(GNN)与近端策略优化(PPO)算法的结合应用。通过实战指南,读者将学习从环境准备、异构图构建到PPO算法实现的全流程,最终实现生产效率的显著提升。

weixin_29074295的博客 245

区块链开源实现hyperledger fabric架构详解

hyperledger fabric是区块链中联盟链的优秀实现,主要代码由IBM、Intel、各大银行等贡献,目前v1.1版的kafka共识方式可达到1000/s次的吞吐量。本文中我们依次讨论:区块链的共通特性、fabric核心概念、fabric的交易执行流程。本文来源于笔者欲对公司部分业务上链而进行培训的PPT,故图多文字少,不要怕太长。 1、区块链解决方案的特性 1.1 分布式帐本 区块...

陶辉:聚焦分布式系统的程序员 10万+

微信小程序利用Echarts加载中国地图的步骤

微信小程序如何利用Echarts加载地图?可按照如下四个步骤进行。(阅读时间大概3分钟)。

成都都成 5281

超级账本 Fabric交易提交过程详解

Peer 启动后会在后台执行 gossip 服务,包括若干 goroutine,实现位于 gossip/state/state.go#NewGossipStateProvider(chainID string, services *ServicesMediator, ledger ledgerRes...

qq_30505673的博客 3057

ConnectionResetError 10054 根因分析与全链路防御指南

ConnectionResetError(错误码10054)是TCP协议中服务端主动发送RST包导致的强制断连,本质并非网络连接失败,而是服务端基于空闲超时、连接满载、TLS协商失败等策略做出的确定性终止决策。理解其底层原理有助于跳出‘重试’误区,转向连接生命周期管理。该错误高频出现在HTTP长连接、WebSocket、第三方API对接等场景,尤其在Nginx反向代理、负载均衡器(如AWS ALB)、WAF设备及内核conntrack机制下极易触发。本文结合Wireshark抓包分析、客户端心跳保鲜、协议指

weixin_30225755的博客 641

Wezterm的安装和简单配置

希望 wezterm 的主题配色,保持和 powershell 默认配色一致,也就是 Compell 主题。目的是在频繁使用 wezterm 时,原本的根据颜色判断文件信息(尤其是WSL里的Linux下,文件和目录颜色)依然可以使用。wezterm 默认用 cmd.exe, 我是 win11,希望默认用 powershell。

baiyu33的博客 4282

深度探索Hyperledger技术与应用之超级账本的策略管理

本文从消息协议结构、策略管理等两个个方面介绍了Hyperledger Fabric 1.0的架构。

HiBlock的博客 1399

Android 13.0 双屏时触摸失效问题排查与修复

摘要:本文记录了RK3588 Android12开发板上主屏触摸失效问题的排查与解决过程。通过分析发现,USB触摸设备被错误关联到辅屏(displayId=3)而非主屏(displayId=0)。解决方案是修改TouchInputMapper.cpp,强制触摸设备使用INTERNAL viewport(主屏),并保持设备在viewport不活跃时仍启用。该修改涉及约40行代码,有效解决了多显示器环境下触摸设备错误映射的问题,同时提供了详细的调试方法和注意事项。

ip0417的博客 354

深度探索Hyperledger技术与应用之超级账本的系统架构

本文从逻辑结构、节点结构等2个方面介绍了Hyperledger Fabric 1.0的架构。

HiBlock的博客 2303

06 - 深度学习处理器原理

深度学习处理器的重要性在于它们可以加速深度学习任务的执行,从而推动了人工智能的发展。传统的通用处理器虽然可以执行深度学习任务,但它们不够高效,需要消耗大量的能量和时间。深度学习处理器通过硬件加速和特定设计来优化深度学习任务的执行,从而可以提高执行效率、降低能耗和加速训练和推断过程。 深度学习处理器的发展也推动了深度学习算法的创新,因为算法的发展需要硬件的支持和驱动。同时,深度学习处理器的出现也促进了更广泛的应用场景,包括自动驾驶、人脸识别、语音识别、图像识别等领域。因此,深度学习处理器的重要性不仅在于加速

m0_51339444的博客 754

使用Captum库对CIFAR数据集进行模型可解释性分析

为了训练模型,我们需要指定损失函数和优化技术。损失函数用于衡量模型的性能,在训练过程中,我们通过调整模型参数来最小化损失。本教程使用。

2501_90323865的博客 178

深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,用官方提供的fabric-samples提供的配置和链码示例,展示了如何调用和查询链码。

HiBlock的博客 1440

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

新闻丨超级账本Hyperledger执行董事访问智链万源

2019年2月22日,全球最大企业级开源区块链项目超级账本Hyperledger执行董事 Brian Behlendorf 、亚太区副总裁 Julian Gordon 、...

智链ChainNova 241

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

超级账本Fabric教程(一):超级账本入门

本节分享有关拆超级账本的概念以及体验部署过程。 一、简介 是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。由Linux 基金会的开源项目,全称是Hyperledger Fabric)是区块链的商用平台。开源地址:https://github.com/hyperledger。 二、为什么用超级账本? 会员众多:包括Cisco、 IB...

weixin_30731305的博客 1789

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Hyperledger Fabric 超级账本 区块链技术 概述 优点

超级账本概述 区块链的第一个也是最被广泛认可的应用是比特币,另一种加密货币以太坊采取了不同的方法,它集成了许多与比特币相同的特征,添加了智能合约来创建分布式应用程序的平台。比特币和以太坊属于区块链,我们将其归类为无公开许可的区块链技术。基本上,这些都是对任何人开放的公共网络,参与者可以匿名互动。 随着比特币、以太坊和其他一些衍生技术的普及,将区块链的底层技术、分布式账本和分布式应用平台应用到更具创新性的企业用例的兴趣也在增长。然而,许多企业用例需要无许可区块链技术(目前)无法提供的性能特征。此外,在许多用例

littleshenyue的博客 2344

Hyperledger Fabric 1.0架构深度拆解:交易流程、账本结构与共识机制

联盟链作为许可链的典型代表,通过身份认证与通道隔离实现数据隐私与成员管理。其核心原理在于将交易流程拆分为提案、背书、排序、验证提交四个阶段,由Peer节点负责模拟执行与账本维护,Orderer节点负责全局排序,CA节点管理身份证书。这种分层解耦设计实现了可插拔共识与链码容器化,技术价值在于兼顾吞吐量与隐私隔离,广泛应用于供应链金融、跨境支付等场景。Hyperledger Fabric 1.0作为经典架构,其通道隔离、读写集、Kafka排序服务等设计奠定了后续版本演进基础,深入理解其交易流程与账本结构对维护老

weixin_29015127的博客 191

百度超级链联合超级账本:区块链技术如何提升金融行业互信与安全

区块链技术被IT界誉为最有潜力触发新一轮科技革命浪潮的新兴技术,这也使得众多企业、金融机构互信和协作成为可能。6月27日,百度超级链学院联合超级账本Hyperledger共同开展了主题为...

baiduxuperchain的博客 1430

Hyperledger Fabric核心概念与架构解析:从交易流程到企业级实践

分布式账本技术通过多节点共识与密码学保障实现去中心化信任,其核心在于交易执行、排序与验证的解耦设计。Hyperledger Fabric作为许可链代表,引入MSP身份体系、通道隔离与背书策略,在确保成员可控的前提下提升吞吐与隐私性。这种架构使企业能在供应链金融、跨境支付等场景中构建高性能联盟链,兼顾安全与合规。理解Fabric的节点角色、账本结构及链码生命周期,是落地企业级区块链应用的关键基础。

weixin_33770878的博客 451
上一篇: 深度探索Hyperledger技术与应用之超级账本的策略管理
下一篇: 干货|捕捉智能合约中的event实战
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值