超级帐本组成模型git
本文主要讲述Hyperledger Fabric的关键设计特性,并细述如何实现了一个全面的、可定制的企业级区块链解决方案:github
资产定义——资产这里理解为任何具备货币价值的东西,它们均可以经过网络进行交易,不管是超市商品到古董车再到货币期货都属于资产。算法
智能合约——链码(chaincode)即Fabric的智能合约,分为系统链码和用户链码。链码的执行由事务排序划分,限制了节点类型间的信任和验证级别,并优化了网络的可伸缩性和性能。sql
帐本特征——帐本不可变的、共享的而且为每一个通道(channel)编码了整个事务历史,还包含了相似sql的查询功能,用于高效的审计和解决争议。数据库
隐私通道——多通道(channel)交易的设计方案能够确保竞争的企业和受监管的行业在一个公共网络上交换资产时的高度隐私及保密性。安全
成员安全——Hyperledger Fabric只容许被受权加盟的成员参与数据维护,且成员间相互承认全部的交易都会被彼此发现和跟踪。这种方式提供了一个可信的区块链网络。网络
共识机制——共识策略的设定是为了达成一致的一种独特的方法,它能够实现企业间所需的灵活性和可伸缩性。composer
资产分布式
资产能够从有形资产(如房地产和硬件)到无形资产(如合同和知识产权)。Hyperledger Fabric提供了使用智能合约交易修改资产的能力。工具
资产在Hyperledger Fabric中以键-值对集合的形态存在,在通道(channel)中各本地帐本能够对其状态提交变动事务。资产能够用二进制和/或JSON形式表示。
咱们能够经过Hyperledger Fabric的Composer工具很容易地定义和使用Hyperledger Fabric应用程序中的资产。
智能合约
智能合约是定义资产而且能够用于修改资产的事务指令的软件。换句话说,它就是一个通道(channel)全部的业务逻辑。智能合约制定了执行读取或修改键值对以及其它状态数据库信息操做的规则。智能合约经过一个事务请求来执行对帐本的当前状态数据库操做。智能合约执行会生成一组读写集,这组读写集能够经过网络提交给排序服务节点,并由排序服务节点广播且应用到全部的对等节点上。
帐本特征
在Fabric中产生的全部针对数据状态变动的请求都会生成有序且不可篡改的记录存于帐本中。数据状态的变动是由全部参与方承认的智能合约调用事务的结果。每一个事务都将产生一组资产键-值对,这些键值对做为建立、更新或删除等操做而同步到全部帐本。
帐本由区块链(区块根据hash等算法组成的链条)组成,而每个区块中都存储有一条或一组有序的且不可篡改的记录,也就是一个状态数据库来维护当前的Fabric的状态。每一个通道(channel)都有且仅有一个帐本,在该通道(channel)中的每一个加盟成员的对等点都维护同一份帐本。
隐私通道
Hyperledger Fabric在每一个通道(channel)中都有一个不可篡改的帐本,以及一个能够操纵和修改当前资产状态的智能合约(例如,更新键值对)。一个帐本限制在一个通道(channel)的范围内——它能够在整个网络中共享(假设每一个参与者都在一个公共通道(channel)上运行)——或者它也能够被私有化,只包含一组特定的参与者。
在上述中的后一种状况下,这些参与者将建立一个单独的通道(channel),从而使他们的事务和帐本隔离出来。为了知足即公开透明又能保护隐私的场景,智能合约只能在须要访问资产状态来执行读和写操做的对等节点上安装(换句话说,若是一个智能合约没有安装在对等节点上,它将没法调用帐本暴露出去的接口)。
为了进一步混淆数据,智能合约中的值可使用诸如AES之类的通用加密算法进行加密(在必定程度上或所有使用),而后将事务发送到排序服务,并将生成的区块追加到帐本上。一旦加密的数据被写入到帐本,它只能被拥有相应的密钥用户解密。
成员安全
Hyperledger Fabric是一个支持全部参与者都有本身的身份的交易网络。公钥的底层方案用于生成与组织、网络组件和最终用户或客户端应用程序绑定的加密证书。所以,能够在更普遍的网络和通道(channel)层次上对数据访问控制进行操做和治理。隐私和保密是最重要和最关键的问题,Hyperledger Fabric这种“被许可”的概念,再加上通道(channel)的存在和功能,有助于解决该问题。
共识机制
在分布式帐本技术中,共识做为单一功能最近成为了一种特定算法的同义词。然而,共识不只仅是简单地就事务的顺序达成一致,并且在Hyperledger Fabric中这种经过它在整个事务流中的基本做用,包括从提交请求、背书验证,到事务排序、确认和广播,这种区别显得尤其突出。简单地说,共识被定义为一个完整的循环,它是由一个通过验证核实的区块所包含的一组事务。
当一个区块中的事务集合的顺序和结果通过全部的检查而符合策略标准时,将最终达成一致。这些检查和平衡发生在一个个请求事务的生命周期中,包括使用背书策略来规定哪些特定的成员必须支持某个事务类,以及系统智能合约,以确保这些策略获得执行和维护。在提交排序服务节点以前,这些执行验证的对等节点将使用这些系统智能合约来确保足够的背书支持,并从适当的实体中得到。此外,在任何包含事务的区块被添加进帐本以前,将进行版本控制,在此期间,将对帐本的当前状态进行商定或赞成。最后的检查提供了对双重开销操做(处理相同事务)和其余可能危害数据完整性的威胁的保护,并容许被执行的方法依赖非静态变量。
除了大量的背书承认、有效性和版本控制检查以外,在事务流的各个方向上也有正在进行的身份验证。访问控制列表是在经过网络实现的(排序服务下发到全部通道),而且由于一条事务请求将会经过不一样的体系结构组件,因此payloads会被反复地签名、复核及验证。总之,达成共识并不只仅局限于一组交易的达成一致,而是一种一应俱全的特性,它是在交易从提案到最终广播过程当中进行的持续验证的副产品。