Fabric学习-区块链的基础概念

1、区块链定义与三大要点

可以把区块链看成是一种去中心化、防篡改的分布式记账的技术。在区块链网络节点之间是对等的关系,这区别于我们常用的B/S架构,需要在网络上部署一个中心服务器提供web服务,区块链网络中,你可以连接任何一个网络节点上去做交易,这些交易数据经过网络节点的投票机制进行确认,在大部分节点取得共同确认的情况下,将交易打包成块,并按照时间的顺序将这些块进行连接,形成一个区块链。

1.1 分布式分类帐

简单来说,分布式分类账记录着区块链网络上的所有交易。网络中的主机节点通过复制的方式进行账本同步,保证交易记录在不同的网络主机上都存在副本,同时,运用加密技术,使得交易记录具有不可篡改性。

1.2 智能合约

官方的定义:为了支持信息的一致更新-并启用总账功能(交易,查询等),区块链网络使用智能合约来提供对账本的受控访问。(智能合约的概念不太理解,缺乏场景支持,但暂时可以理解为一种区块链账本的访问规则和事务处理,后续再进行确认。

1.3 共识

保证交易在整个网络上同步的过程,确保交易仅在相应参与者批准交易后更新,并且在分类账确实更新时,它们将以相同的顺序更新相同的交易-称为共识

我的理解共识可以理解为一种投票机制,确保交易添加到账本之前,获得交易参与者的一致同意,取得大多数参与者的共识

2、Hyperledger Fabric简介

2.1 Fabric简介

Hyperledger Fabric是一个分布式账本解决方案的平台,是Hyperledger中的区块链项目之一。而且Hyperledger Fabric是针对私有区块链或者联盟链的开发平台,像其他区块链技术一样,它具有分类帐,使用智能合约,并且是参与者用来管理其交易的系统。

2.2 Fabric特点

Fabric有几个特点,简单的描述一下:

  • Fabric通过成员资格服务提供商(MSP)去管理网络权限,只有经允许的参与者才能进入网络中参与交易。

  • 可选的共识机制,支持可插拔。

  • 允许创建渠道,这意味着不同的参与者可以拥有私有虚拟的交易空间。

2.3 Fabric的共享分类账

Hyperledger Fabric具有一个账本子系统,该子系统包括两个组件:世界状态事务日志。每个参与者都有一份账本的副本。

世界状态组件描述分类帐在给定时间点的状态。这是分类帐的数据库。

事务日志组件记录所有导致当前世界状态值的事务;这是世界状态的更新历史。

分类帐世界状态数据库事务日志历史记录的组合。

账本子系统数据存储可替换。默认情况下,是LevelDB数据库。

2.4 Fabric的智能合约

链码可以用几种编程语言实现。当前,支持Go和Node。而智能合约是由链码实现。应用程序调用智能合约与账本子系统进行交互。

在大多数情况下,链码仅与分类账的数据库组件,世界状态(例如,查询状态)交互,而不与事务日志交互。

Fabric学习-区块链的基础概念

3、Hyperledger Fabric结构模型

读后感:这个大的章节主要就是针对于Fabric的关键结构上的组成元素进行一个综合性的描述,而每一项内容的展开就有可能涉及多个软件模块来组成,但最核心的东西已经在此机构模型中给出答案,后面的内容都是基于这个模型进行展开。

3.1 资产

资产范围从有形资产(房地产和硬件)到无形资产(合同和知识产权)。Hyperledger Fabric提供了使用链码交易修改资产的功能。资产在Hyperledger Fabric中表示为键值对的集合,状态更改记录为通道分类账中的事务。资产可以二进制和/或JSON形式表示。

3.2 链码

链码(Chaincode)是定义一项或多项资产的软件以及用于修改资产的交易指令;换句话说,这是业务逻辑。链码强制执行用于读取或更改键值对或其他状态数据库信息的规则。链码功能针对分类帐的当前状态数据库执行,并通过交易建议启动。链码执行会产生一组键值写操作(写集),这些键值写操作可以提交到网络并应用于所有对等节点上的分类帐。

3.3 分类帐功能

3.3.1 分类账基本描述

分类帐是结构中所有状态转换的有序,防篡改记录。状态转换是参与方提交的链码调用(“交易”)的结果。每笔交易都会产生一组资产键值对,这些键值对在创建,更新或删除时将被提交到分类账。

分类账由一个区块链(“ chain”)和一个状态数据库组成,该区块链将不可变的顺序记录存储在块中,并维护一个状态数据库。每个频道有一个分类帐。每个对等方都为其所属的每个通道维护一个分类帐的副本。

3.3.2 功能列表

  • 使用基于键的查找,范围查询和组合键查询来查询和更新分类帐
  • 使用丰富查询语言的只读查询(如果使用CouchDB作为状态数据库)
  • 只读历史记录查询—查询**的分类帐历史记录,从而启用数据出处场景
  • 事务由链代码(读集)中读取的键/值的版本和链代码(写集)中写入的键/值的版本组成
  • 交易包含每个认可对等方的签名,并提交给订购服务
  • 交易被分为几大块,并从订购服务“交付”给渠道上的对等方
  • 对等方根据背书政策验证交易并执行政策
  • 在附加块之前,执行版本检查,以确保自链码执行以来,已读取资产的状态未更改
  • 交易一旦经过验证并提交,便具有不变性
  • 通道的分类帐包含一个配置块,用于定义策略,访问控制列表和其他相关信息
  • 通道包含成员资格服务提供者实例,允许从不同的证书颁发机构派生加密材料

3.4 隐私

Hyperledger Fabric在每个通道的基础上使用不可变的分类帐,以及可操纵和修改资产当前状态(即更新键值对)的链码。分类账存在于渠道范围内-可以在整个网络中共享(假设每个参与者都在一个公共渠道上工作)-或可以将其私有化以仅包括一组特定的参与者。

在后一种情况下,这些参与者将创建一个单独的渠道,从而隔离/隔离他们的交易和分类帐。为了解决要弥合总体透明度和隐私之间的差距的方案,只能在需要访问资产状态以执行读写的对等方上安装链码(换句话说,如果未在对等方上安装链码) ,它将无法与分类帐正确连接)。

当该渠道上的组织子集需要对其交易数据保密时,可以使用私有数据收集(集合)将这些数据隔离在逻辑上与渠道分类帐分离的私有数据库中,该数据库只能由组织的授权子集访问。

因此,渠道使交易对于更广泛的网络而言是不公开的,而集合则对渠道上的组织子集之间的数据保持不公开。

为了进一步混淆数据,可以在将交易发送到订购服务并将块附加到分类账之前,使用AES等通用加密算法对链码中的值进行加密(部分或全部)。一旦加密的数据已写入分类帐,则只有拥有用于生成密文的相应**的用户才能对其解密。

3.5 安全和会员服务

Hyperledger Fabric支持所有参与者都具有已知身份的交易网络。公钥基础结构用于生成与组织,网络组件以及最终用户或客户端应用程序绑定的加密证书。结果,可以在更广泛的网络和通道级别上操纵和控制数据访问控制。Hyperledger Fabric的“许可”概念与渠道的存在和功能相结合,有助于解决隐私和机密性是最重要的问题。

3.6 共识

 

Fabric学习-区块链的基础概念

在分布式分类帐技术中,共识最近已成为单一功能内特定算法的同义词。但是,共识不仅包括简单地同意交易顺序,而且这种区别在Hyperledger Fabric中得到了体现,它在整个交易流程(从提案和认可到订购,验证和承诺)中的基本作用得到了强调。简而言之,共识被定义为对包含一个区块的一组交易的正确性的全面验证。

当区块交易的顺序和结果满足明确的策略标准检查时,最终才能达成共识。这些检查和平衡发生在交易的生命周期中,包括使用背书策略来指示哪些特定成员必须背书特定的交易类,以及系统链代码以确保这些策略得到执行和维护。在作出承诺之前,对等方将使用这些系统链码来确保存在足够的认可,并且它们是从适当的实体派生的。此外,在将包含交易的任何块附加到分类账之前,将进行版本控制检查,在此期间将对分类账的当前状态进行同意或同意。

除了进行大量的背书,有效性和版本检查外,还在交易流程的所有方向上进行持续的身份验证。访问控制列表是在网络的分层层上实现的(将服务订购到各个通道),有效载荷在交易建议书通过不同的体系结构组件时被重复签名,验证和认证。总而言之,共识不仅限于一批交易的商定顺序。相反,它是一项总体特征,它是交易从提案到承诺的整个过程中不断进行的验证的副产品。

 

相关文章: