本文主要介绍Hyperledger Fabric的主要设计特点,为了满足功能丰富、可定制、企业化区块链解决方案。
Assets
- 资产定义,使得任何形式的资产,从食物到汽车到货币都可以进行自由的交换。Chaincode
- 链码的执行从交易共识中分离,将需要的可信等级和验证分担给各种类型的节点,优化了网络的可扩展性和性能。Ledger-Features
- 不可更改的,共享的账本对每个通道中的所有历史进行编码,为高效的审计和解决分歧等提供了类SQL的查询能力。Privacy-through-Channels
采用通道的方式使得业务隔离,为多方在同一个网络中执行资产交易提供了更高的隐私性和机密性。Security-Membership-Services
- 准入服务提供了一个可信的区块链网络,参与者可以知道所有的交易都会被权威机构和审计来检查和追溯。Consensus
- 独特的共识方式为企业提供了灵活性和扩展性需求。
资产
资产包括有形资产(房产和五金制品)和无形资产(合约和知识财产)。超级账本Fabric使用链码交易提供了一种修改资产的功能。
资产在Fabric中使用健值对集合来表示,资产状态的改变通过交易来记录。参考Channel
.资产可以用二进制或者JSON的形式来表示。
在你的Fabric应用中,你可以很容易的使用[Hyperledger Composer](Hyperledger Composer <https://github.com/hyperledger/composer)工具来定义和使用资产。
链码
链码是用来定义一个或一组资产的程序,交易指令用来修改资产。换句话说,就是业务逻辑。链码在读取或修改健值对或者其他状态数据库信息会强制执行一些规则。链码中函数操作账本当前的状态数据库。链码执行结果会生成一组健值写入集合,可以提交到网络中,并添加到所有节点的账本中。
账本特点
账本是一个线性的,不可篡改的所有状态转变记录。状态的转变是链码执行的结果。每个交易都会引起资产资产健值对的改变,比如创建,更新或者删除动作。
账本由区块组成,用来存储不可更改的,序列的交易区块,还有一个维护当前fabric状态的状态数据库。每个通道有一个账本。每个节点都会维护一个他们所加入通道的账本。
- 查询和更新账本,使用健,范围查询和组合键查询。
- 只读查询使用富查询语言(如果使用CouchDB作为状态数据库)
- 只读历史查询 - 通过key查询账本历史,数据证明场景
- 交易包含读集合(健/值的版本)和写集合(健值对)
- 交易排序后记录到区块中,然后由ordering服务递交给通道中的所有节点
- 节点验证交易的背书策略,并执行策略
- 在提交区块前,会执行版本检查以保证读取的资产状态在链码执行阶段没有改变
- 交易一旦验证和提交,就不能更改
- 通道账本包含配置块定义一系列策略,访问控制列表,和其他有关信息
- 通道包含
MSP
实例,允许加密配置来自不同证书中心。
想要进一步了解数据库,存储结构和query-ability
,请参考ledger
通道保密性
超级账本Fabric在每个通道中使用一个永久账本,结合链码来操作和修改资产的当前状态(例如,更新健值对)。账本属于某个通道 - 可以在整个网络中进行共享(假设参与者都在同一个通道中) - 或者可以创建仅包含特定数量的参与者的私有通道。
在以后的场景中,参与者可以创建隔离的通道来隔离他们的交易和账本。为了平衡隐私性和透明性,链码可以只安装在需要访问资产状态的节点上(换句话说,如果链码不安装在某个节点上,节点就不能够访问该账本)。为了进一步保护数据,链码中的数据可以进行加密(部分或者全部),使用AES等加密算法等,然后在提交到账本中。
安全性&成员服务
超级账本Fabric是一个交易网络,其中所有参与者都有已知的身份。使用PKI体系来为组织,网络组建,终端用户以及客户端应用来颁发数字证书。因此,数据访问控制可以在更广的网络或者通道上进行。Fabric的准入机制结合通道技术,共同解决了注重隐私性和机密性的区块链场景。
想要进一步了解Hyperledger Fabric中密码实现,以及签名、验证和授权方式,请参考MSP
.
共识
在分布式账本技术中,共识最近已经成为某个函数中的一种特定的算法。然而,共识强调的不仅仅是对交易顺序达成一致,在Fabric中,注重整个交易流程,从提议和背书,到排序,再到验证和提交。 简言之,共识被定义为一个块中所有交易在整个流程中的正确性验证。
当排序和区块中交易满足策略检查,共识最终达成。这些检查在交易的整个生命周期中,从背书策略(指定哪些成员背书特定交易)的使用,到系统链码保证这些策略执行和维持。在提交前,节点会使用系统链码来保证交易有足够的背书,交易来自合法的实体。此外,在区块提交到账本前,会对达成的账本状态进行版本检查。
最后的这个检查用来防止双花以及其他可能破外数据完整性的威胁。
除了大量的背书,有效性和版本检查,在交易流程中还有大量的身份检查。在网络的分层结构中是加入了访问控制列表(从排序服务到通道),交易内容也会被反复的签名,验证以及授权,然后发送的fabric网络中。总结下来,共识不仅仅是对一组交易的顺序达成一致,还包括从交易提议到最终提交整个过程中的所有相关验证。
txflow
以可视化的方式展现共识过程。
--------------------------------------------------------------------------完美的终结线------------------------------------------------------------