首页 > 其他 > 详细

Hyperledger Fabric

时间:2020-02-06 00:30:40      阅读:107      评论:0      收藏:0      [点我收藏+]

超级账本 (Hyperledger) 

技术分享图片

Hyperledger 是一个旨在推动区块链跨行业应用的开源项目, 由 Linux基金会在2015年12月主导发起该项目, 成员包括金融,银行,物联网,供应链,制造和科技行业的领头羊。

Hyperledger Burrow

Burrow是一个包含了“built-to-specification”的以太坊 虚拟机区块链客户端。其主要由Monax贡献,并由Monax 和英特尔赞助。

Hyperledger Fabric

Hyperledger Fabric是一个许可的区块链架构(permissioned blockchain infrastructure)。其由IBM 和Digital Asset最初贡献给Hyperledger项目。它提供一个模块化的架构,把架构中的节点、智能合约的执行 (Fabric项目中称为"chaincode") 以及可配置的共识和成员服务. 一个Fabric网络包含同伴节点"Peer nodes")执行chaincode合约,访问账本数据,背书交易并称为应用程序的接口。命令者节点("Orderer nodes")负责确保此区块链的一致性并传达被背书的交易给网络中的同伴们;以及MSP服务,主要作为证书权威(Certificate Authority)管理X.509 证书用于验证成员身份以及角色.

Hyperledger Iroha

Iroha是一个基于Hyperledger Fabric主要面向移动应用的协议,由Soramitsu贡献.

Hyperledger Sawtooth

由Intel贡献的Sawtooth利用一种新型公式机制称为时间流逝证明("Proof of Elapsed Time,")一种基于可信的执行环境的彩票设计模式的共识协议由英特尔的Software Guard Extensions (SGX)提供.

Hyperledger Fabric搭建

1.搭建GO环境:

https://www.cnblogs.com/biaogejiushibiao/p/10887371.html#_label1

2.安装Docker/Docker-compose:

https://www.cnblogs.com/biaogejiushibiao/p/10640356.html#_label1

3.搭建Fabric :

3.1:简单例子搭建

 

下载最新版本并构建

curl -sSL https://bit.ly/2ysbOFE | bash -s

 

如需指定版本

curl -sSL https://bit.ly/2ysbOFE | bash -s -- <fabric_version> <fabric-ca_version> <thirdparty_version>
curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.0.0-beta 1.4.4 0.4.18

如果在运行上述curl命令时遇到错误,则可能是因为curl版本太旧而无法处理重定向或不支持的环境。

上面的命令将下载并执行一个bash脚本,该脚本将下载并提取设置网络所需的所有特定于平台的二进制文件,并将它们放入上面创建的克隆存储库中。它检索以下特定于平台的二进制文件:

  • configtxgen
  • configtxlator
  • cryptogen
  • discover
  • idemixgen
  • orderer
  • peer
  • fabric-ca-client

并将它们放置bin在当前工作目录的子目录中。

您可能希望将其添加到PATH环境变量中,以便无需完全限定每个二进制文件的路径就可以选择它们。例如:

export PATH=<path to download location>/bin:$PAT

 

3.2:

首先创建文件夹

mkdir -p $GOPATH/src/github.com/hyperledger/

 进入文件夹

cd $GOPATH/src/github.com/hyperledger/

从github上拉取fabric的源码

git clone https://github.com/hyperledger/fabric.git
下载必要镜像
cd scripts/
sudo ./bootstrap.sh 

如果上一步操作下载二进制文件太慢或者没速度,可以直接对源码进行编译,执行以下命令(前提是以上相关路径配置没有错误):

首先进入fabric文件夹
cd ~/go/src/github.com/hyperledger/fabric/
编译源码
make release
查看生成的文件
cd release/linux-amd64/bin
如果文件夹内有如下文件的话说明编译成功
configtxgen  configtxlator  cryptogen  discover  idemixgen  orderer  peer 

将生成的文件添加进环境变量

vim /etc/profile
文件中最后添加以下内容
export PATH=$PATH:$GOPATH/src/github.com/hyperledger/fabric/release/linux-amd64/bin
更新一下
source /etc/profile

完成上面的操作,就可以启动第一个fabric网络了。

进入first-network文件夹
cd ~/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/first-network/
执行命令
./byfn.sh up

如果最后输出内容为

===================== Query successful on peer1.org2 on channel mychannel ===================== 

========= All GOOD, BYFN execution completed =========== 


 _____   _   _   ____   
| ____| | \ | | |  _ \  
|  _|   |  \| | | | | | 
| |___  | |\  | | |_| | 
|_____| |_| \_| |____/  

root@JD:~/mikey/gopath/src/github.com/hyperledger/fabric/fabric-samples/scripts/fabric-samples/first-network# 

说明我们的fabric网络已经成功搭建完毕。

最后执行以下命令关闭网络

./byfn.sh down 

补充一下
执行命令的时候很可能出现权限问题,一个简单的方法可以解决:

sudo chmod -R 777 ~/go/src/github.com/hyperledger/fabric/

超级账本结构功能

Hyperledger Fabric是分布式账本技术(DLT)的实现,它以模块化的区块链架构提供企业就绪的网络安全性,可伸缩性,机密性和性能。Hyperledger Fabric提供以下区块链网络功能:

身份管理

为了启用许可的网络,Hyperledger Fabric提供了成员身份服务,该服务管理用户ID并验证网络上的所有参与者。访问控制列表可用于通过特定网络操作的授权来提供其他权限层。例如,可以允许特定的用户ID调用链码应用程序,但是阻止其部署新的链码。

隐私权和机密性

Hyperledger Fabric使竞争的商业利益以及任何需要私人机密交易的组能够共存于同一许可的网络上。专用通道是受限制的消息传递路径,可用于为网络成员的特定子集提供交易隐私和机密性。通道上的所有数据(包括事务,成员和通道信息)对于任何未明确授予该通道访问权限的网络成员都是不可见和不可访问的。

高效处理

Hyperledger Fabric通过节点类型分配网络角色。为了向网络提供并发性和并行性,将事务执行与事务排序和承诺分开。在订购交易之前执行交易使每个对等节点可以同时处理多个交易。这种并发执行可以提高每个对等方的处理效率,并加快向订购服务的交易交付。

除了启用并行处理外,分工还减轻了订购节点的负担,使其无需执行事务和进行分类帐维护,而对等节点则无需进行订购(协商)工作。角色的这种分叉还限制了授权和身份验证所需的处理。所有对等节点都不必信任所有排序节点,反之亦然,因此一个对等节点可以独立于另一个进行验证而运行。

链码功能

链码应用程序对逻辑进行编码,该逻辑由通道上的特定类型的事务调用。例如,定义用于资产所有权变更的参数的链码可确保所有转让所有权的交易都遵循相同的规则和要求。系统链码被区分为定义整个通道的操作参数的链码。生命周期和配置系统链码定义了通道规则;背书和验证系统链代码定义了背书和验证交易的要求。

模块化设计

Hyperledger Fabric实现了模块化架构,可以为网络设计人员提供功能选择。例如,可以将用于身份,排序(共识)和加密的特定算法插入任何Hyperledger Fabric网络。结果是任何行业或公共领域均可采用的通用区块链架构,并确保其网络可跨市场,法规和地理边界进行互操作。

 

超级账本结构模型

本节概述了编织到Hyperledger Fabric中的关键设计功能,这些功能可以实现其对全面而可定制的企业区块链解决方案的承诺:

  • 资产 -资产定义允许通过网络交换几乎所有具有货币价值的东西,从完整食品到古董车再到货币期货。
  • 链码 -链码执行从事务顺序中划分出来,限制了节点类型之间所需的信任和验证级别,并优化了网络可伸缩性和性能。
  • 分类帐功能 -不变的共享分类帐对每个通道的整个交易历史进行编码,并包括类似SQL的查询功能,以进行有效的审计和争议解决。
  • 隐私 -渠道和私人数据收集可实现私有和机密的多边交易,这通常是竞争企业和受监管行业在公共网络上交换资产所必需的。
  • 安全和会员服务 -允许的会员提供了一个受信任的区块链网络,参与者知道所有交易都可以由授权的监管机构和审计员检测和追踪。
  • 共识 -达成共识的独特方法可实现企业所需的灵活性和可扩展性。

资产

资产的范围从有形的(房地产和硬件)到无形的(合同和知识产权)。Hyperledger Fabric提供了使用链码交易修改资产的功能。

资产在Hyperledger Fabric中表示为键值对的集合,状态更改记录为通道 分类账中的事务资产可以二进制和/或JSON形式表示。

链码

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

分类帐功能

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

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

Fabric分类帐的一些功能:

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

有关数据库,存储结构和“查询能力”的更深入了解,请参阅分类账主题。

隐私

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

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

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

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

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

有关如何在区块链网络上实现隐私的更多详细信息,请参阅私有数据主题。

安全和会员服务

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

请参阅成员资格服务提供商(MSP)主题,以更好地了解加密实现以及Hyperledger Fabric中使用的签名,验证,验证方法。

共识

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

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

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

Fabric的构架

技术分享图片

在Fabric的区块链网络中,有四类节点:MSP,Ordering Node,Endorsing Peer,Commtting Peer

MSP

MSP(Membership Service Provider), 这类节点主管区块链网络中其他的节点的授权,准入,踢除。通过给不同节点颁发证书的方式,授予不同类型的节点相应的权限。

Ordering Node

中文可以称作排序节点。通常在一个网络中至少有一个或多个排序节点,这类节点负责 按照指定的算法,将交易进行排序,并返回给Committing Peer。其并不关心具体的交易细节。

Endorsing Peer

这类节点的主要负责接收交易请求,验证这笔交易之后,并做一些预处理之后,并将签名后的数据传回给客户端。

Committing Peer

这类节点做是区块链网络中的全节点,它们需要记录完整的区块信息,并且验证每笔交易的正确性,是最终将交易打包进区块链的节点。

结合下面这种图,看看一笔交易的上链过程:

1,首先从客户端发起一笔交易提交到Endorsing Peer,进行预处理。

 技术分享图片
技术分享图片

2,预处理通过之后,将签名数据,传回给客户端。

技术分享图片
技术分享图片

3,客户端发起请求,将收到的签名数据传给Ordering Node。

 技术分享图片
技术分享图片

4,Ordering Node对交易进行排序,然后传给Committing Peer。

技术分享图片
技术分享图片

5,Committing Peer这里将排序好的交易进行验证,并打包,通过指定的共识算法达成一致,形成新的区块。

 
技术分享图片
技术分享图片

6,最后将交易结果返回给客户端。

 
技术分享图片
技术分享图片 

6,中间过程的每一步,都伴随着权限的验证。会根据MSP颁发的证书,进行判断。

 

 

 

 

 

更多参考资料:

官方文档:https://hyperledger-fabric.readthedocs.io/en/release-1.4/

在线教学:http://t.cn/Eoz7J5B

https://www.ibm.com/developerworks/cn/cloud/library/cl-lo-hyperledger-fabric-study-notes1/index.html

https://hyperledgercn.github.io/hyperledgerDocs/getting_started/

https://docs.docker.com/compose

https://medium.com/mlg-blockchain-consulting/installing-hyperledger-fabric-v1-0-on-ubuntu-16-04-part-iii-19635c29a011

http://hyperledger-fabric.readthedocs.io/en/latest/prereqs.html

http://hyperledger-fabric.readthedocs.io/en/latest/chaincode4ade.html

Hyperledger Fabric

原文:https://www.cnblogs.com/biaogejiushibiao/p/12053557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!