这部分算是对Fabric一些针对企业的优势做了简单的介绍。
本节概述了编入Hyperledger Fabric的关键设计特性,实现了对全面但可定制的企业区块链解决方案的承诺:
Assets—资产定义为可以通过网络交换几乎所有具有货币价值的东西,从全食品到古董车再到货币期货。
Chaincode—链码的执行与交易排序是分开的,降低了跨节点类型所需的信任和验证级别,并优化了网络的可伸缩性和性能。
Ledger Features—不可变的共享账本为每个通道编码所有交易历史,并包含类似SQL的查询功能,以便进行有效的审计和争议解决。
Privacy—通道和私有数据收集确保了私有机密的多方交易,这些交易通常是竞争企业和在公共网络上交换资产的受监管行业所需要的。
Security&Membership—成员身份许可机制提供了可信的区块链网络,参与者知道所有交易都可以由授权的监管机构和审计员记性检测和跟踪。
Consensus—达成共识的独特方法能够实现企业所需的灵活性和可扩展性。
资产的范围可以从有形(房地产和硬件)到无形资产(合同和知识产权)。 Hyperledger Fabric提供使用链码交易修改资产的功能。
资产在Hyperledger Fabric中表示为键值对的集合,状态更改记录为Channel账本上的交易。 资产可以用二进制和/或JSON格式表示。
您可以使用Hyperledger Composer工具在Hyperledger Fabric应用程序中轻松定义和使用资产。
chaincode是定义一个或多个资产的软件,以及修改资产的事务指令;换句话说,它是业务逻辑。chaincode强制执行读取或更改键值对或其他状态数据库信息的规则。chaincode函数针对账本的当前状态数据库执行,并通过交易启动。链码执行会产生一组键值写入(写入集),可以提交到网络并应用到所有对等方的账本。
账本是Fabric中所有状态转换的顺序、防篡改记录。状态转换是参与方提交的链码调用(“事务”)的结果。每个事务都会产生一组资产键值对,这些资产键值对在创建、更新或删除时提交到账本。分类帐是结构中所有状态转换的顺序、防篡改记录。状态转换是参与方提交的链码调用(“事务”)的结果。每个事务都会产生一组资产键值对,这些资产键值对在创建、更新或删除时提交到账本。
账本由一个区块链(“链”)组成,以块形式存储不可变的、顺序的记录,以及一个维护当前结构状态的状态数据库。每个通道有一个账本。每个对等方都为其所属的每个通道维护一份账本副本。
Fabric账本的一些功能:
· 使用基于键的查找,范围查询和组合键查询来查询和更新分类帐
· 使用丰富查询语言的只读查询(如果使用CouchDB作为状态数据库)
· 只读历史记录查询 - 使用密钥查询账本历史记录,查找数据来源
· 事务由在链码(读取集)中读取的键/值和在链码(写入集)中写入的键/值版本组成。
· 交易包含每个背书节点的签名并提交给排序服务
· 交易在区块中排序并且通过通道传递给排序节点
· 节点根据背书策略验证交易并且青之执行策略
· 附加区块之前,执行版本控制检车,以确保在执行链码之后读取的自产的状态没有更改。
· 一旦一个交易被验证和提交了就不能更改了。
· 通道账本包含一个配置块,定义了背书策略,访问控制列表,和其他相关信息。
· 通道包含成员资格服务提供程序实例,允许从不同的证书颁发机构派生加密材料。
有关数据库、存储结构和“查询能力”的详细信息,请参阅Ledger主题。
Hyperledger Fabric在每个通道的基础上使用不可变的账本,以及可以操纵和修改资产当前状态(即更新键值对)的链码。一个账本存在于一个通道内,它可以在整个通道网络内共享,也可以私有化既仅包括一组特定的参与者。
在后一种情况下,这些参与者将创建一个单独的通道,从而隔离/分离他们的交易和账本。为了解决希望弥合整体透明度和隐私之间的鸿沟的方案,只能在需要访问资产状态以执行读写操作的对等机上安装链码(换句话说,如果对等机上未安装链码,它将无法与分类帐正确接口)。
当该通道上的组织的子集需要对其交易数据保密时,将使用私有数据收集将该数据隔离在私有数据库中,该数据库在逻辑上与通道账本分开,仅对授权的组织子集可访问。
因此,通道使来自更广泛网络的事务保持私有,而私有数据收集使通道上组织的子集之间的数据保持私有。
为了进一步混淆数据,可以使用常见的加密算法(如AES)对链码中的值进行加密(部分或全部),然后将事务发送到排序服务并将块追加到分类帐。一旦加密数据被写入分类帐,它只能由拥有用于生成密码文本的相应密钥的用户解密。有关链码加密的更多详细信息,请参阅ChaincodeforDevelopers主题。
有关如何在区块链网络上实现隐私的更多详细信息,请参阅Private Data主题。
Hyperledger Fabric支持交易网络,所有参与者都拥有已知身份。 公钥基础结构用于生成与组织,网络组件以及最终用户或客户端应用程序相关联的加密证书。因此,可以在更广泛的网络和通道级别上操纵和管理数据访问控制。 Hyperledger Fabric的这种“许可”概念,加上通道的存在和功能,有助于解决隐私和机密性至关重要的问题。
请参阅 Membership Service Providers (MSP) 主题,以更好地了解加密实现,以及Hyperledger Fabric中使用的签名,验证,身份验证方法。
在分布式账本技术中,共识最近已成为单个函数内特定算法的同义词。然而,共识不仅仅是简单地就交易顺序达成一致,而且这种差异在Hyperledger结构中得到强调,通过其在整个交易流程中的基本角色,从提案和背书,到排序、验证和提交。简言之,共识被定义为对包含一个块的一组事务的正确性进行全循环验证。
当区块交易的顺序和结果满足明确的政策标准检查时,最终达成共识。这些检查和平衡发生在交易的生命周期中,包括使用背书政策来规定哪些特定成员必须认可某个交易类别,以及系统链码以确保这些背书得到执行和支持。在提交之前,同行将使用这些系统链码,以确保存在足够的认可,并且这些认可来自适当的实体。此外,在将包含交易的任何块附加到分类帐之前,将进行版本控制检查,在此期间对分类帐的当前状态进行商定或同意。此最终检查提供了对可能损害数据完整性的重复开销操作和其他威胁的保护,并允许对非静态变量执行函数。
除了进行大量的背书、有效性和版本控制检查外,还在事务流的各个方向进行身份验证。访问控制列表是在网络的层次层(将服务向下订购到通道)上实现的,当事务提案通过不同的体系结构组件时,有效负载会被重复地签名、验证和验证。综上所述,共识不仅限于一批交易的商定顺序;更重要的是,它是在交易从提议到承诺的过程中进行的核查的副产品。
查看Transaction Flow以直观地表示一致意见。
记录每天解决的小问题,积累起来去解决大问题