区块链技术面试常被问到的Hyberledger Fabric关键概念

先给英文官方原文地址:https://hyperledger-fabric.readthedocs.io/en/latest/overview.html

###总览Overview

介绍 Hyberledger Fabric 做为一个全面、可定制、企业级区块链解决方案关键设计需求:

  • Assets (资产) - 资产定义了可以交换的几乎所有东西,其能通过网络用钱计价,从食物、到古董车、到未来的货币。
  • Chaincode(链码/智能合约) - Chaincode分区执行,根据交易顺序、所需信任级别的限制、验证跨节点类型、优化网络规模和性能
  • Ledger Features (账本) - 不可更改、共享帐本记录了每个channle的完整的交易历史,包括类SQL的查询能力以保证高效的审计和纠纷解决
  • Privacy through Channels - (跨channles隐私) 通道能满足竞争企业和受监管行业在普通网络在进行多边交易能满足高隐私和保密需求。
  • Security & Membership Services (安全和成员服务) - 带权限的成员管理提供了可信的区块链网络,参与者值得所有的交易可以被有授权的监管和审计人员探测和跟踪。
  • Consensus (共识) - Fabric 独特的共识机制能满足企业对灵活性和可扩展性的需求。

###Fabric 功能

Hyperledger Fabric 是分布式帐本(DLT)的一个独特实现,采用模块化区块链架构,其提供了企业所需的网络安全、可扩展性、保密性和性能。其主要的区块链网络功能包括:

  • Identity management 身份管理

Hyperledger Fabric 提供用户识别服务来管理用户的ID和参与者在网络内的授权。访问控制列表可以作为额外的许可层提供特定网络操作授权。比如,一个特定的用户ID可以执行chaincode应用,但是无法部署新的chaincode。

用户之间相互知道身份,但是并不知道相互之间做了什么。

  • Privacy and confidentiality 隐私与保密

Hyperledger Fabric 使竞争商业组织、任何需要私有、保密交易的组织共存在同一个许可网络中。私有channel限制消息路径来给特定子网成员完成隐私和保密交易。没有该channel权限的用户无法见到和访问channel的任何数据,包括交易、成员和通道数据。

  • Efficient processing 高效的处理

Hyperledger Fabric 根据节点类型分配网络角色。为给网络提供并发和并行,交易执行从交易共识和承诺中分开。执行交易先于共识是每个peer节点能同时处理多个交易。并发执行提高了每个peer节点的执行效率,加速了分发交易到 ordering 服务。

除了能够进行并行处理之外,还使交易处理和帐本维护的节点得到了拆分,peer节点没有了共识的工作负载。这样分工同样降低了授权和认证的处理需求;所有peer节点不需要信任全部 ordering 节点,反之亦然,因此处理能被独立与对方认可外运行

  • Chaincode functionality 链码/智能合约功能

Chaincode应用编码了在channel上执行特定类型交易的逻辑。Chaincode定义资产所有权变更的参数,例如,确保转让所有权的所有交易都遵守相同的规则和要求。System chaincode 是定义了整个channel操作参数的chaincode。生命周期和配置system chaincode定义channle的规则;背书和验证system chaincode定义了背书和验证交易的需求。

  • Modular design 模块化设计

Hyperledger Fabric实现了模块化设计,网络设计者能根据需求选择功能。比如特定的识别、共识、加密算法可以插入任何 fabric网络。因此,其是一个任何行业和公共领域都可以使用的通用区块链架构,保证其网络可以跨市场、监管和地理边境进行互操作。相比之下,其他竞争对手大多是受限于特定领域和行业的。

###Fabric 模型

  • Assets 资产

资产可以是有形(实体和硬件)或无形(合同和知识产权)的。可以很方便在客户端javascript定义资产,在你的Fabric应用中使用,通过Fabric Composer工具。

Fabric支持资产的交换,通过未使用交易输出作为后续交易的输入。资产(和资产注册)在Fabric中作为键值对的集合存在,在channel帐本中带状态变更记录作为交易。Fabric允许任何资产采用二进制或JSON格式表示。

  • Chaincode

Chaincode 是定义资产和修改资产的交易指令的软件。也就是说,它就是业务逻辑。chaincode执行读取和修改键值对和其它状态数据库信息的规则。chaincode 函数基于帐本当前状态数据库执行,通过交易提案初始化。chaincode 执行结果是一系列键值对写入,其被提交到网络并被所有peer节点的帐本记录。

  • Ledger Features 帐本特性

帐本是fabric中所有状态转换的记录,其记录为顺序、防篡改。状态转换是参与方提交的chaincode的执行结果。每个交易结果是一系列键值对提交给帐本来创建、更新或删除。

帐本由一个区块链来保持不可变更、顺序记录在区块中,同时一个状态数据库来维护fabric当前状态。每个channel一个账本。每个peer维护所属每个channel的一个账本拷贝。

  • 检索和更新账本使用基于key查找、范围检索和组合key检索
  • 只读检索使用富检索语言(如果使用 CouchDB 作为状态数据库)
  • 只读历史检索 - 检索一个key的账本历史,可以查看数据来源(enabling data provenance scenarios)
  • 交易由各版本的键值对组成,chaincode (读集合)读取的和chaincode写入的(写集合)
  • 交易包括每个背书peer的签名,提交到ordering服务
  • 交易被ordered(排序?共识)进区块,从ordering服务发布到channel的peer节点中
  • peer节点根据背书策略验证交易并执行策略
  • 在添加新块之前,将执行版本检查来保证资产的状态从chaincode执行时刻开始没有被改变
  • 一旦交易被验证和提交就不可以被改变
  • 一个channel的帐本包括了配置区块,其定义了策略、访问控制列表和其它相关信息
  • channel 包括成员服务提供者实例允许从不同证书机构加密材料。阅读帐本主题,深入了解数据库、存储结构和"检索能力".
  • Privacy through Channels 跨通道隐私

Fabric 实现了基于每个channel的不可变帐本,同时chaincode可以操作和修改资产的当前状态(比如,更新键值对)。一个账本存在于一个channel范围 - 它可以被整个网络共享(假设每个参与者都在一个共同的channel内操作) - 或者可以私有给有一组特定的参与者。

在后续,这些参与者将能创建一个分离的channel,因此隔离/分离他们的交易和账本。Fabric甚至能解决这样的场景:希望弥合全局透明度和隐私之间的差距。Chaincode仅安装在需要获取资产状态来执行读写操作的peers(换句话说,如果一个chaincode没有安装一个peer,它将不能与账本交互)。为了更进一步的隔离数据,chaincode内的值可以在附到账本前使用通用的加密算法,如SHA-256,来加密(部分或全部)。

  • Security & Membership Services 安全和成员服务

Hyperledger Fabric 加强了交易网络,所有参与者都有已知的身份。公钥基础设施用来生成与组织,网络组件以及最终用户或客户端应用程序相关联的加密证书。因此,数据访问控制可以在网络和channel层面进行操作和管理。Fabric的“许可”概念,加上channel的存在和功能,有助于解决隐私和机密性至关重要的场景。

参看 Fabric CA章节来更好的理解加密的实现,以及在Fabric中的签名、证明、验证实现。

  • Consensus 共识

在分布式帐本技术中,共识最近变成一个实现独立功能的特定算法的同义词。然后,共识不仅是简单的同意交易的顺序,它是贯穿了整个交易流程中的基本角色,从提案、背书、到确认顺序、验证和承诺,Hyperledger Fabric中强调这样差异。简单来说,共识是对一个块内一组交易正确性的全生命周期验证。

当一个块内交易的顺序和结果符合明确的政策标准检查时,共识最终达成。这些检查和平衡发生在一个交易的生命周期内,包括的背书策略使用,指定特定成员必须对特定交易等级背书;同时系统chaincode保证这些策略被执行和坚持。在承诺前,peers将执行系统chaincode来保证足够的背书存在,而且它们是从恰当的实体发布而来。更进一步,当帐本的当前状态被同意时将进行版本检查,在任何包括交易的区块被附加的帐本前。这个最终的检查时为了保证避免双重支付和其它可能可能导致危机数据完整性的其它威胁,并允许对非静态变量执行函数。

除了大量背书、有效性和版本检查之外,同时还有在交易流程中所有方向上持续存在的身份识别。访问控制列表在网络层上分级实现(从ordering服务下到channels),并且随着交易穿过不同架构组件,payloads(负载在不同层次上是不同的)被重复签名,验证和认证。 总而言之,共识不仅仅局限于一批交易的顺序达成一致,而是作为在交易从提案到承诺的过程中进行持续验证的副产品而实现的总体。


相关文章和视频推荐

圆方圆学院汇集大批区块链名师,打造精品的区块链技术课程。 在各大平台都长期有优质免费公开课,欢迎报名收看。

公开课地址:https://ke.qq.com/course/345101?flowToken=1007371

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏区块链大本营

偷天换日合约易主,地址变脸移花接木——底层函数误用漏洞 | 漏洞分析连载之四

引子:阵有纵横,天衡为梁,地轴为柱。梁柱以精兵为之,故观其阵,则知精兵之所有。共战他敌时,频更其阵,暗中抽换其精兵,或竟代其为梁柱,势成阵塌,遂兼其兵。并此敌以...

1114
来自专栏申龙斌的程序人生

区块链上存证,只需这四步

区块链里的信息具有不可篡改性,比如中本聪在创世区块中写的一段话:“The Times 03/Jan/2009 Chancellor on brink of se...

7211
来自专栏WindCoder

Time-locked Wallets:一个以太坊智能合约的教程

本次推荐的是一篇关于通过以太坊了解区块链的教程,能力有限,本身没接触过,各位尽量看原文吧。

3602
来自专栏极客编程

以太坊智能合约升级策略

本文是对以太坊中可升级智能合约领域的各种实现策略的总结 ,目的是汇总迄今为止的相关资源,以帮助我们在设计智能合约时,考虑如何对其进行升级和更新。

1162
来自专栏区块链大本营

@程序员,如何淋漓尽致地敲出Solidity安全代码?

区块链技术的发展要与安全挂钩,齐头并进,让迅速的发展约束在可靠的范围之内,才能真正让新科技稳步推广,深入人心。

891
来自专栏区块链大本营

“危机四伏”的以太转账操作|以太转账安全风险——漏洞分析连载之八期

Solidity语言的默认存储规则和引用未初始化变量带来的特殊性共同导致了未初始化变量将原有状态变量覆盖,占用了状态变量在Storage中的位置,重演了最近“高...

1032
来自专栏区块链大本营

嘿,程序员!手把手教你写出智能合约Hello, World

8089
来自专栏极客编程

EOS智能合约开发和测试框架EOSFactory

自2017年秋季以来,Tokenika一直致力于创建基于Python的EOS智能合约开发平台,以便轻松创建,测试和部署智能合约。随着EOS的不断发展,我们已经习...

1221
来自专栏区块链入门

这30个以太坊开发示例,让你成为80万都挖不走的区块链人才!

我曾经买过加密货币,曾试图使用一些丑陋矿机挖矿,看过一些稀稀拉拉的Solidity教程。但不得不承认,在当时,我更****偏爱前者,我切身体会到了加密货币的狂热...

3243
来自专栏区块链大本营

以太坊再爆高危漏洞!黑客增发ATN 1100万枚token事件始末

事情发生在5月中旬,ATN技术人员发现Token合约由于存在漏洞受到攻击。不过ATN基金会随后透露,将销毁1100万个ATN,并恢复ATN总量,同时将在主链上线...

591

扫码关注云+社区

领取腾讯云代金券