本节概述了Hyperledger Fabric中的关键设计特性,以实现Hyperledger Fabric承若的其作为一个全面的(comprehensive),可定制的(customizable),企业级区块链解决方案:
资产可以从有形(不动产和硬件)到无形(合同和知识产权)。 Hyperledger Fabric提供了使用链码交易进行修改资产的功能。
资产在Hyperledger Fabric中被表示为键值对的集合(a collection of key-value pairs),状态变化记录为通道的账本里的交易。资产可以被表示为二进制 和/或 JSON的格式。
您可以使用 Hyperledger Composer 工具轻松定义和使用你的Hyperledger Fabric应用程序中的资产。
链码是一个定义了资产,和修改资产的交易指令的软件,换句话说,它是业务逻辑。 链码强制执行用于读取或修改键值对或其他状态数据库信息的规则。 链码函数是针对总账的当前状态数据库执行的,并通过一个交易提案启动。 链码执行会产生一组键值写入(写集),这些写入集可以被提交到网络并应用于所有peers的总账。
账本是序列化的,防篡改的,Fabric中所有状态转换(state transitions)的记录。状态转换是由参与方提交的链码调用(‘交易’)的结果。每笔交易都会生成一组资产键值对,并将其作为创建,更新或删除提交给总账。
总账由区块链和状态数据库组成,区块链用于存储记录着不可变的顺序记录的区块,状态数据库用于维护当前Fabric的状态。每个通道都有一个总账。每个peer都维护着它所参与的所有通道的账本的副本。
Fabric 总账的一些特性:
可以查看 Ledger 主题,以深入研究数据库,存储结构和“查询能力”。
Hyperledger Fabric基于每个通道的基础上使用不可改变的账本,以及可以操纵和修改当前资产状态(即更新键值对)的链码。账本存在于通道范围内 - 它可以在整个网络中共享(即假设每个参与者都在一个公共通道上操作) - 或者它也可以只包含一个特定的参与者集合而私有化。
在后一种情况下,这些参与者将创建一个单独的通道,从而隔离(isolate/segregate)他们的交易和账本。为了解决想要缩小总体透明和隐私保护之间差距的方案,链码可以只安装在那些需要访问资产状态以执行读取和写入的peers结点上(换句话说,如果一个链码未安装在peer上,它将无法正确地与账本进行交互)。
当一个通道上的组织的某个子集想要保持他们的交易数据机密性,那么可以使用私有数据集合(private data collection)去分隔开这部分数据,存在私有数据库中,从而逻辑上与通道的账本分开,只能被已授权的组织子集所访问。
因此,通道(channels)保证了广泛网络上的交易隐私,而私有数据集(collections)保证了通道上的组织子集之间的数据隐私。
为了进一步混淆数据,可以在将交易发送到排序服务和将区块添加到账本之前,使用常用的加密算法(如AES)对链码中的值进行加密(部分或全部)。一旦将加密数据写入账本中,只有拥有用于生成密文(cipher text)的相应密钥的用户才能对它进行解密。有关链码加密的更多详细信息,请参阅 Chaconode for Developers 主题。
更多关于如何在区块链网络上实现隐私的详细信息可参见 Private Data 主题。
Hyperledger Fabric支撑着一个交易网络,网络内所有参与者都具有已知的身份标识。公钥基础设施(PKI)用于生成与机构组织,网络组件,终端用户或者客户端应用程序绑定的加密证书。因此,数据访问控制可以在更广泛的网络和通道级别上进行操纵和管理。 Hyperledger Fabric的这种“许可”的概念,再加上通道的存在和功能,有助于解决隐私和机密性是首要问题(paramount concerns)的应用场景。
请参阅 Membership Service Providers (MSP) 主题,以更好地了解加密实现(cryptographic implementations),以及Hyperledger Fabric中使用的签名(sign),验证(verify),认证(authenticate)方法。
在分布式账本技术中,共识最近已经与单一功能的特定算法等价了。然而,共识不仅仅只是简单地对交易顺序达成一致,这种差异性在Hyperledger Fabric中显得非常突出,Hyperledger Fabric中的共识机制在整个交易流中都扮演着非常重要的角色,涉及到从提案(proposal)和背书(endorsement),到排序(ordering),验证(validation)和提交(commitment)。简而言之,共识被定义为对包含在区块中的一组交易的正确性的全面验证。
当区块中的交易的顺序和结果符合明确的检查策略标准时,就意味着共识已经最终达成。这些检查和权衡是发生在交易的整个生命周期内的,并且包括使用背书政策来规定哪些特定成员必须背书确定的交易类,以及使用系统链码以确保这些背书策略得到执行和维护。在提交之前,peers将使用这些系统链码来确保已经有足够的背书,并且这些背书是来自恰当的实体。此外,在账本将所有包含交易的区块添加到账本之前,将进行版本检查,在该期间,账本的当前状态是同意或商妥的。此最终检查可防止双重支出操作以及可能损害数据完整性的其他威胁,并允许针对非静态变量的功能得到执行。
除了发生的众多的背书,有效性和版本检查之外,还有后续在交易流程的各个方向上发生的身份验证。访问控制列表在网络的分层结构上实现(由排序服务到通道),并且在交易提案通过不同的架构组件时,有效载荷会被重复地签名(signed),验证(verified)和授权(authenticated)。总而言之,共识并不只是限于对一批交易顺序的协商一致,相反,它是交易从提案到被提交这一整个过程所发生的持续验证的副产品(byproduct),这是它的总体特征(overarching characterization)。
参考:
Hyperledger Fabric 官网翻译入门教程–之关键概念(Hyperledger Fabric 模型)
Hyperledger入门(一) :超级账本模型
hyperledger fabric 结构模型学习
官方文档英文原文档:
https://hyperledger-fabric.readthedocs.io/en/release-1.3/fabric_model.html