摘要:fabric查看区块链一个关键词就是区块链技术,它是一种分布式数据库技术,可以让不同的组织或个人在一个安全的、可信的网络上共享数据。它可以提供更高的安全性和可信...
fabric查看区块链
一个关键词就是区块链技术,它是一种分布式数据库技术,可以让不同的组织或个人在一个安全的、可信的网络上共享数据。它可以提供更高的安全性和可信性、更快的交易速度和更低的成本。Fabric是一种特定的区块链技术,具有高性能、安全性和可扩展性,可用于构建企业级区块链应用程序。
另一个关键词是分布式账本,它是一种用于存储交易记录的分布式数据库,可以让不同的组织或个人安全地共享数据。Fabric的分布式账本技术可以支持企业级应用程序,提供更高的安全性和可信性,以及更快的交易速度和更低的成本。
最后一个关键词是智能合约,它是一种可以自动执行交易的计算机程序,可以让不同的组织或个人自动执行交易,而无需人为介入。Fabric智能合约技术可以提供更高的安全性和可信性,以及更快的交易速度和更低的成本。
㈠ 使用 AWS 区块链模版搭建 Hyperledger Fabric
AWS 区块链模版号称可以在几分钟内完成创建并部署区块链网络。
使用 AWS 区块链模版可以搭建两种类型的区块链网络:
具体搭建步骤可以参考 AWS Blockchain Templates 开发人员指南 ,里面有关于搭建 Ethereum 的详细步骤,文档中的 「先决条件」 设置项是用于搭建 Ethereum 网络的,对 Fabric 网络并不适用,所以这里说一下搭建超级账本的 Fabric。
在使用模版快速创建堆栈前,务必要提前设置好的相关内容:
说明:
以上的5个前提条件设置正确了,我们就可以用区块链模版创建 Fabric 网络了,下面具体说一下画红框的比较难的两个配置:
设置步骤:
点击右下角的 「Review Policy」 ,设置这个权限策略文件的名称(myFabricPolicy)和描述(...),最后点击 「Create Policy」 :
设置如下:
AWS控制台——服务——VPC——在VPC控制面板中点击蓝色的按钮「 Launch VPC Wizard 」,选择带有单个公有子网的 VPC:
设置 VPC 名称、子网名称,其他值为默认值。
在 AWS Blockchain Templates 开发人员指南 的Hyperledger Fabric 部分点击启动链接:
设置参考如下:
创建之后,喝一杯咖啡☕️等一会儿...
等状态显示为「 CREATE_COMPLETE 」就OKK了。🎉🎉🎉
㈡ 火爆!5分钟创建并玩转属于自己的区块链
区块链今年发展真是飞快!从最初一个陌生的概念,到如今已经在各个行业起步,星星之火大有燎原之势。真希望能拥有自己的区块链练练手!可是一个人、一台电脑,怎么才能搭起来区块链环境火到不梁饥厅行的区块链,想说爱你不容易!
Don’t Worry! 小编已经沉迷于区块链和智能合约不可自拔!现在就手把手带你从零开始,5分钟玩转属于自己的区块链!~
IBM中国研究院开发的超能云(SuperVessel)平台提供了给区块链爱好者、开发者的区块链开发测试环境。通过该平台,用户能够免费、超快速创建基于Hyperledger Fabric的多节点区块链、并在自己的链上花式玩转智能合约。
----
0.
准备工作
只需要你的本地浏览器即可!
1. 注册一个账号
访问超能云(SuperVessel)区块链服务的公测地址:8800/bc。
点击右上角Log in(登录)按钮,在弹出的窗口中点击Register(注册),填写邮箱和密码后提交。此时建议去邮箱查看激活邮件,并激活自己的账号(小编提示:懒的激活也没关系,只是某些高级服务必须激活后才能使用哦)。
2.
快速创建自己的区块链
注册完成后,回到主页,点击偌大的GIVE ME A BLOCKCHAIN(给我一个区块链!)按肢启钮。在弹出框橡隐中选择你想要的Consensus Plugin(共识插件)和Size(区块链网络节点数量)。
小编备注:目前可选Hyperledger Fabric官方提供的两种共识插件:noops和pbft。
点击Submit(提交)后,几秒后就能得到自己的区块链,并自动进入监控面板。没错,拿到一个属于自己的区块链就是这么简单!
进入监控面板后可以看到,左侧是智能合约管理面板,包括对智能合约的管理和部署;右侧是网络面板,展示申请到的区块链网络情况,拓扑、节点之间的延迟信息等一目了然;点击右上角的望远镜图标,则可以实时监控各节点的日志信息。最下方是区块链面板,展示当前区块链的整体情况,初始状态下只有一个区块。
3. 部署和使用智能合约
接下来,小编教你如何在自己的区块链上部署和使用智能合约。
在智能合约管理面板的Smart Contracts(智能合约)标签下列出了2个智能合约作为示例,分别为map和chaincode_example02。其中map合约可以实现键值对(key-value)的存储,chaincode_example02合约可以模拟两个人的转账和查询。
小编备注:这2个示例合约的代码可在Hyperledger Fabric源码中找到。
以部署和使用chaincode_example02合约为例:
部署合约
点击chaincode_example02合约对应的Deploy(部署)按钮,并填写合约的初始化值,包括合约名、初始函数、初始参数。该合约初始函数为init,初始参数需按格式填写,如[“a”,”100”,”b”,”200”]表示注册两个人a和b,分别给他们100单位和200单位。
点击Deploy按钮,该合约将部署在你的区块链中,该过程大约需要20~40秒时间。当区块链面板出现一个新区块,通常表示合约已部署完成。
调用合约
部署完成后,在智能合约管理面板的My Deployment(我的部署)标签下查看已部署的合约实例。
点击Action下方的Invoke按钮调用智能合约,并填写调用的方法名和相应参数(不同合约的方法名和参数含义不同,具体与合约内容相关哦)。如对该合约,调用invoke方法名,填写参数[“a”,”b”,”50”],表示a给b转50个单位。
点击Submit完成调用后,可以查看区块链情况,此时会生成新的区块。
查询合约
调用完成后,接下来你可以查询合约执行结果。仍然在My Deployment标签下,点击Action下方的Query按钮查询智能合约,并填写查询的方法名和相应参数。如选择query方法名,填写参数[“a”],表示查询a的当前单位。
点击Submit后可以看到a的当前单位为50。你可以再去查询b试试看!
OK,接下来你可以继续操作该合约,观察区块链情况,或者在该区块链上再部署一个新智能合约,比如map。为了方便使用,部署、调用和查询合约的方法名和参数格式都默认填好了,你只需选择一个方法名,照猫画虎改改参数就好!看看你能把链玩到多长~
4. 上传并测试自己的私有智能合约
除了目前提供的两个公有智能合约,你还可以上传并测试自己的私有合约!私有合约只有自己能看到。
在Smart Contracts标签下点击Import private smart contract。
填写合约名和描述,并上传合约代码文件后,点击Import,完成上传。
之后Smart Contracts列表里便出现我上传的合约,可以像前文一样进行部署、调用和查询了。
㈢ Hyperledger Fabric 介绍几个关键配置文件(三)
configtx.yaml是Hyperledger Fabric区块链网络运维工具configtxgen用于生成通道创世块或通道交易的配置文件,configtx.yaml的内容直接决定了所生成的创世区块的内容。
configtx.yaml主要用到了以下YAML语法:
当byfn.sh脚本执行networkUp启动网络时,会调用generateChannelArtifacts创建Orderer通道的创世区块,应用通道配置配置交易文件channel.tx。根据不同的共识机制,传入不同的profile参数。
Profiles配置段用来定义用于configtxgen工具的配置入口。包含consortium的配置入口,可以用来生成排序节点的创世区块。如果在排序节点的创世区块中正确定义了consortium 的成员,那么可以仅使用机构成员名称和委员会的名称来生成通道创建请求。
Capabilities段定义了fabric程序要加入网络所必须支持的特性。通过定义通道的能力,就明确了不满足该能力要求的fabric程序,将无法处理 交易,除非升级到新的版本。
Organizations配置段用来定义组织机构实体,以便在后续配置中引用。
Fabric主要通过策略(Policy)来控制各种场景下访问这些资源的权限限制。Fabric实现了两种宽弊类型的Policy来满足不同的场景需求:
Orderer配置段用来定义要编码写入创世区块或通道交易的排序节点参数。
Channel配置段用来定义要写入创世区块或配置交易的通道参数。
Application配置段用来定义要写入创轿巧核世区块或配置交易的应用参数。
core.yaml配置文件闭掘是Peer节点的示例配置文件,该core.yaml示例配置文件中共指定了六大部分内容。
㈣ 区块链和HyperLedger Fabric(五)共享账本
peer ledger:存储在背书节点和记账节点
orderer ledger:存储在order service node
Chaincode是无状态的。Chaincode存储在节点上,账本只会存储hash值
账本的隔离和隐私性用多通道(Multiple Channels)技术来保护
Query System Chaincode(QSCC)
背书节点需提前设定,也作为记账节点
transaction事务处理流1.X
• client应用(向一个或多个Peer节点(背书节点))发送交易请求(对事务的背书请求);
• 背书节点模拟执行ChainCode,但并不将结果提交到本地账本(World state,不会修改底层账本),只是将结果(读写集)加密签名返回给client应用;
• 应用收集所有背书节点的结果后,验证背书策略是否满足和模拟执行结果是否一致(去除不确定无效的交易,1.0未实现)将结果广播给Orderers;
• Orderers执行共识过程,并生成Block,通过消息通道批量的将Block发布给Peer节点(记账节点);
• 各个Peer节点验证交易,并提交到本地账本中.通知client端处理结果
记账节点Committing Peer:维护账本和状态
合约部署都需要指定背书策略。AND,OR,OutOf
背书策略在chaincode实例化时指定
ESCC
VSCC
账本保存Blockchain和World state(维护当前状态,方便应用快速查询)
Block(s):Block header(Block number,当前区块hash,前区块hash),Block data,Block Metadata(写入时间,写入人,签名)
transactions:header(名字,version),签名,proposal(input参数),Pesponse(执行结果前后的数据),Endorsements(背书节点返回的结果list)
World State:kv形式。维护账本当前信息
Smart Contract:业务角度。定义组织的业务规则,创建交易,记录到账本,打包进chaincode。操作World state DB:get,put,delete(put和delete会增加新的记录,block。只会删除world state的数据,在账本里新增记录)
chaincode可以包含多个合约,实现打包的角度
Chaincode Lifecycle
打包(签名,)--安装(peer)--实例化--运行
更新--运行
一个peer可以安装多个chaincode
System Chaincode
运行在peer上,LSCC(Lifecycle),CSCC(配置),QSCC(查询)
Peer
Leader Peer:连接order推送新的区块,随机传播其它记账节点。选举方式(静态指定,动态生成)。一个分区一个leader。
Anchor Peer:(Gossip协议,降低order负担)节点相互认识。
共识:读写集
网络搭建:
1.配置启动order Service
2.配置启动peer
3.安装chaincode
4.创建channel
5.加入channel
6.实例化chaincode
㈤ 浅析 Fabric Peer 节点
Hyperledger Fabric,也称之为超级账本,是由 IBM 发起,后成为 Linux 基金会 Hyperledger 中的区块链项目之一。
Fabric 是一个提供分布式账本解决方案的平台,底层的账本数据存储使用了区块链。区块链平台通常可以分为公有链、联盟链和私有链。公有链典型的代表是比特币这些公开的区块链网络,谁都可以加入到这个网络中。联盟链则有准入机制,无法随意加入到网络中,联盟链的典型例子就是 Fabric。
Fabric 不需要发币来激励参与方,也不需要挖矿来防止有人作恶,所以 Fabric 有着更好的性能。在Fabric 网络中,也有着诸多不同类型的节点来组成网络。其中 Peer 节点承载着账本和智能合约,是整个区块链网络的基础。在这篇文章中,会详细分析 Peer 的结构及其运行方式。
在本文中,假设读者已经了解区块链、智能合约等概念。
本文基于 Fabric1.4 LTS。
区块链网络是一个分布式的网络,Fabric 也是如此,由于 Fabric 是联盟链,需要准入机制,所以在网络结构上会复杂很多,下面是一个简化的 Fabric 网络:
各个元素的含义如下:
对于 Fabric 网络,外部的用户需要通过客户端应用,也就是图中的 A1、A2 或者 A3 来访问网络,客户端应用需要通过 CA 证书表明自己的身份,这样才能访问到 Fabric 网络中有权限访问的部分。
在上面的网络中,共有四个组织,R1、R2、R3 和 R4。其中 R4 是整个 Fabric 网络的创建者,网络是根据 NC4 配置的。
在 Fabric 网络中,不同的组织可以组成联盟,不同的联盟之间数据通过 Channel 来隔离。Channel 中的数据只有该联盟中的组织才能访问,每一个新的 Channel 都可以认为是一条新的链。与其他的区块链网络中通常只有一条链不一样,Fabric 可以通过 Channel 在网络中快速的搭建出一个新的区块链。
上面 R1 和 R2 组成了一个联盟,在 C1 上交易。R2 同时又和 R3 组成了另外一个联盟,在 C2 上交易。R1 和 R2 在 C1 上交易时,对 R3 是不可见的,R2 和 R3 在 C2 上交易时,对 R1 是不可见的。Channel 机制提供了很好的隐私保护能力。
Orderer 节点是整个 Fabric 网络共有的,用来为所有的交易排序、打包。比如上面网络中 O4 节点。本文不会对 Orderer 节点进行详细说明,可以把这个功能理解为比特币网络中的挖矿过程。
Peer 节点表示网络中的节点,通常一个 Peer 就表示一个组织,Peer 是整个区块链网络的基础,是智能合约和账本的载体,Peer 也是本文讨论的重点。
一个 Peer 节点可以承载多套账本和智能合约,比如 P2 节点,既维护了 C1 的账本和智能合约,也维护了 C2 的账本和智能合约。
为了可以更深入了解 Peer 节点的作用,先了解一下 Fabric 整体的交易流程。整体的交易流程图如下:
Peer 节点按照功能来分可以分为 背书节点 和 记账节点 。
客户端会提交交易请求到背书节点,背书节点开始模拟执行交易,在模拟执行之后,背书节点并不会去更新账本数据,而是把这个交易进行加密和签名,然后返回给客户端。
客户端收到这个响应之后就会把响应提交到 Orderer 节点,Orderer 节点会对这些交易进行排序,并打包成区块,然后分发到记账节点,记账节点就会对交易进行验证,验证结束之后,就会把交易记录到账本里面。
一笔交易是否能成功是根据背书策略来指定的,每一个智能合约都会指定一个背书策略。
Peer 节点代表着联盟链中的各个组织,区块链网络也是由 Peer 节点来组成的,而且也是账本和智能合约的载体。
通过对上面交易过程的了解可以知道,Peer 节点是主要的参与方。如果用户想要访问账本资源,都必须要和 peer 节点进行交互。在一个 Peer 节点中,可以同时维护多个账本,这些账本属于不同的 Channel 。每个 Peer 节点都会维护一套冗余账本,这样就避免了单点故障。
Peer 节点根据在交易中的不同角色,可以分成背书节点(Endorser)和记账节点(Committer),背书节点会对交易进行模拟执行,记账节点才会真正将数据存储到账本中。
账本可以分成两个部分,一部分是区块链,另一部分是 Current State,也被称之为 World State。
区块链上只能追加,不能对过去的数据进行修改,链上也包含两部分信息,一部分是通道的配置信息,另一部分是不可修改,序列化的记录。每一个区块记录前一个区块的信息,然后连成链,如下图所示:
第一个区块被称之为 genesis block,其中不存储交易信息。每个区块可以被分为 区块头 、 区块数据 和 区块元数据 。区块头中存储着当前区块的区块号、当前区块的 hash 值和上一个区块的 hash 值,这样才能把所有的区块连接起来。区块数据中包含了交易数据。区块元数据中则包括了区块写入的时间、写入人及签名。
其中每一笔交易的结构如下,在 Header 中,包含了 ChainCode 的名称、版本信息。Signature 就是交易发起用户的签名。Proposal 中主要是一些参数。Response 中是智能合约执行的结果。Endorsements 中是背书结果返回的结果。
WorldState中维护了账本的当前状态,数据以 Key-Value 的形式存储,可以快速查询和修改,每一次对 WorldState 的修改都会被记录到区块链中。WorldState 中的数据需要依赖外部的存储,通常使用 LevelDB 或者 CouchDB。
区块链和 WorldState 组成了一个完整的账本,World State 保证的业务数据的灵活变化,而区块链则保证了所有的修改是可追溯和不可篡改的。
在交易完成之后,数据已经写入账本,就需要将这些数据同步到其他的 Peer,Fabric 中使用的是 Gossip 协议。Gossip 也是 Channel 隔离的,只会在 Channel 中的 Peer 中广播和同步账本数据。
智能合约需要安装到 Peer 节点上,智能合约是访问账本的唯一方式。智能合约可以通过 Go、Java 等变成语言进行编写。
智能合约编写完成之后,需要打包到 ChainCode 中,每个 ChainCode 中可以包含多个智能合约。ChainCode 需要安装,ChainCode 需要安装到 Peer 节点上。安装好了之后,ChainCode 需要在 Channel 上实例化,实例化的时候需要指定背书策略。
智能合约在实例化之后就可以用来与账本进行交互了,流程图如下:
用户编写并部署实例化智能合约之后,就可以通过客户端应用程序来向智能合约提交请求,智能合约会对 WorldState 中数据进行 get、put 或者 delete。其中 get 操作直接从 WorldState 中读取交易对象当前的状态信息,不会去区块链上写入信息,但 put 和 delete 操作除了修改 WorldState,还会去区块链中写入一条交易信息,且交易信息不能修改。
区块链上的信息可以通过智能合约访问,也可以在客户端应用通过 API 直接访问。
Event 是客户端应用和 Fabric 网络交互的一种方式,客户端应用可以订阅 Event,当 Event 发生时,客户端应用就会接受到消息。
事件源可以两类,一类是智能合约发出的 Event,另一类是账本变更触发的 Event。用户可以从 Event 中获取到交易的信息,比如区块高度等信息。
在这篇文章中,首先介绍了 Fabric 整体的网络架构,通过对 Fabric 交易流程的分析,讨论了 peer 节点在交易中的作用,然后详细分析了 peer 节点所维护的账本和智能合约,并分析了 peer 节点维护账本以及 peer 节点执行智能合约的流程。
文 / Rayjun
[1] https://hyperledger-fabric.readthedocs.io/zh_CN/release-1.4/whatis.html
[2] https://developer.ibm.com/zh/technologies/blockchain/series/os-academy-hyperledger-fabric/
[3] https://en.wikipedia.org/wiki/Gossip_protocol
㈥ 区块链之联盟链(三) 认识Fabric
Fabric 是超级账本联盟推出的核心区块链框架,它适合在复杂的企业内和企业间搭建联盟链。根据超级账本联盟的目标, Fabric 被建设为一个模块化的、支持可插拔组件的基础联盟链框架。;
与以太坊系的Quorum不同,Fabric从一开始就只考虑企业间的应用。其独有的channel概念,将企业根据业务目的不同以不同的子网连接起来, 每一个子网对应一个channel,而每个channel有自己独立的区块链。而Quorum很显然是只有一个公网(所有企业节点都加入进去),企业与企业间的私有业务是通过Private Manager 完成的。
理解channel的最简单方法就是,将它类比为一个消息服务提供的Topic,实际上Fabic最早就是基于Kafka 的分布式消息服务来实现。
在Fabric网络中,一个企业可以有一个或多个节点加入整个联盟链;一个企业可以加入1个或者多个Channel(子网); 一个节点可以加入1个或者多个channel。每个channel构成一个子网,所以Fabric 是 一种由子网组成的网络。
那么Fabric是怎么实现智能合约的执行和完成业务上链(将事务结果记录在区块链里)的呢?
与其它框架不同, Fabric 将整个过程分成了三个阶段:
业务背书阶段 : 客户的请求发送的背书节点,通过智能合约完成业务的计算(但不更新状态),并完成背书;将背书结果返回个客户端。
业务的排序阶段 : 客户端将背书结果通过Channel被发送到排序节点(orderer),在排序节点完成事务的排序,并打包到block里,最后下发给所有连接到channel的节点。
业务验证并写入账本阶段 : 通过Gossip 网络,所有Channel的节点都会接收到新的block,节点会验证block中的每一个事务,确定是否有效:有效地将会跟新world state,无效的将会标志为“无效”,不会更新World state,但整个block会被完整的加入到帐本中(包括无效的事务)。
根据以上的描述,Fabric 节点实际可以分为 ,普通节点和Order节点:
Peer, 普通节点, 完成背书(包括只能合约的执行)和验证.
orderer, 排序节点,完成排序。
加入orderer节点的Fabric网络可以被描述如下:
每一个Channel,都定义了所有属于channel的节点,但是并不需要所有节点都连接到Orderer 节点(节点间可以通过gossip 协议通讯来传播私有数据或事务).
在区块链中,共识是区块链的基础。与公有链不同,联盟链的共识要求所有加入账本的事务是确定的、最终的,也就是不可以有分叉,区块与区块间的顺序是一定的,只存在唯一条链。在Fabric 中,这个客观需求正是由排序实现的,所有的事务将被提交给orderer节点获得确定的顺序,并最终打包成block进入帐本。 Fabric 从1.4.1开始支持基于Raft实现排序服务, 可以认为基于Raft实现共识。
基于RAFT的排序服务相对于早期的Kafka 具有更好的分布性,配置更加简单,是联盟链里常用的一个常用的达成共识的算法,Quorum就 默认使用RAFT作为共识层。简单的说,RAFT是一个leader和follower的模式, 所有加入RAFT网络的节点,任意时候都有一个leader, 只有这个leader有权决定事务的顺序,并打包成Block,其它节点只能作为follower提交事务和同步block。
基于FAFT网络,每个企业可以有一个或多个节点参与到Orderer中去。在Frabric中企业间的网络连接可以变化成如下形式:
区块链的使用用户在以太网中被称作EOA(External of Account), EOA的载体是钱包。我们沿用这个概念,来看看Fabric是如何实现用户和发起事务的。Fabric中EOA是一个CA中心发布的certificate(x.509),一个Certificate代表一个Identity(这与以太坊还是有很大区别的, 以太坊中一个EOA其实是一个hash地址),EOA能够参与的channel以及被授权的操作是有channel的MSP( Membership Service Provider)决定的(如下图)。
注:certificate 是一种密码学上验证身份的通用做法; certificate包含了个人的信息,公钥以及发布这个certificate的CA的签名。验证方只需要拥有这个CA的证书(包含CA的公钥),就可以验证这个签名是否正确,certificate的内容是否有篡改。简单的说,通过CA和Certificate,我们可以获得一个可验证的的身份和信任链。
如上图,fabric中通要使用Wallet作为EOA的载体,一个Wallet中可以包含多个Identity(x.509 certificate)。 Identity 通过 CA提供的信任链来验证正确性。
验证了身份之后, Fabric 通过MSP在区块链网络中解决该身份是否代表组织的成员和在组织内具有什么角色。例如,channel首先会验证当前用户Identity是否是有效地身份,然后通过MSP查看其所处的企业和具有的角色,最终确定该用户是否有权执行操作。
可以说,Fabric的访问控制是通过MSP来完成的。在每一个需要访问控制的地方都需要定义一个MSP。 例如,每个channel都定义一个MSP,这个MSP规定了在channel范围内资源的访问权限。 MSP 是Fabric里一个晦涩难懂的概念,也是其赋予企业间安全访问的基础。
前文提到, Fabric 将业务处理和上网分成了三个部分, 背书,排序,验证后加入账本。
其中背书是Fabric执行智能合约的阶段。以太坊中,智能合约是在EVM中执行的,有多种语言支持。 在Fabric,智能合约被称为chaincode: 一个chaincode 可以理解为是智能合约的容器,可以包含一个或多个智能合约, 不用于EVM, chaincode是在 JVM 或NodeJS中执行。
客户应用程序通过智能合约来访问账本,每一个可访问的智能合约都被安装在客户端可以访问的节点上,并被定义在channel里。(有只能合约的节点被称为背书节点,没有只能合约的节点被称未提交节点,提交节点只维护账本)
客户应用提交一个交易请求, 请求到达背书节点, 背书节点首先会验证客户的签名,确保客户的身份有权执行本次交易,接着执行交易提及的智能合约(chaincode),并生成一个背书响应(或者叫做交易提案,tran-proposal)。这个背书响应中通常包含World state 的读集合,写集合, 以及节点对本次交易的签名。这里与以太坊系联盟链最主要的不同是: 背书阶段只模拟交易,并不真正更新交易结果。 而真正更新交易在第三阶段完成。背书节点最后将生成的背书响应fanhui给客户端, 智能合约部分的执行就结束了。
通常一个交易的执行需要多方的签名,所以客户端需要将一个交易发送给多个背书节点,这些背书节点的选择需要满足背书策略的要求。
下图是一个包含有客户、背书节点,提交节点的网络示意图。
根据Fabric官方的参考文档,客户交易的正果过程可使用下图描述。
如上图,从1到3,为背书阶段,4为排序阶段,4.1,4,2, 5为验证提交阶段。 参考 Frabic的节点 概念,可以了解更多在交易细节的概念。
总的来看, Fabric 更专注于企业间,通过上文,可以让大家对Fabric的基本构成与概念有一个总的了解。 Fabric本身并不神秘,都是使用的现有的企业间的技术。要更好的了解,建议参考阅读分布式消息系统和企业的安全基础设施(CA相关)的支持。与以太坊系联盟链实现比较, Fabric 的子网更概念对于复杂企业间应用适应更强,但是其复杂的安全考量,使得运营成本很高,另外,Fabric 使用Certificate做为用户身份,有很大的局限性,在新的2.0里,Fabric对于此处将有所改变。
下一篇,我们将来看看Sawtooth , 由Inter 提供的区块链框架。
区块链之联盟链(一) 认识以太坊
区块链之联盟链(二) 认识Quotum
区块链之联盟链(三) 认识Fabric
区块链之联盟链(四) 认识Sawtooth
㈦ 区块链平台有哪些
区块链平台,是要看区块链资讯的吗,这里安利个 密码财经,一般链圈币圈dapp等信息都能看到。
㈧ 超级账本之——Fabric
目前超级账本下面有5个并行的项目,Fabric属于其中较为成熟的一个。这个项目由,来自28个不同组织的159名工程师参与开发。
在Fabric的区块链网络中,有四类节点:MSP,Ordering Node,Endorsing Peer,Commtting Peer
MSP(Membership Service Provider), 这类节点主管区块链网络中其他的节点的授权,准入,踢除。通过给不同节点颁发证书的方式,授予不同类型的节点相应的权限。
中文可以称作排序节点。通常在一个网络中至少有一个或多个排序节点,这类节点负责 按照指定的算法,将交易进行排序,并返回给Committing Peer。其并不关心具体的交易细节。
这类节点的主要负责接收交易请求,验证这笔交易之后,并做一些预处理之后,并将签名后的数据传回给客户端。
这类节点做是区块链网络中的全节点,它们需要记录完整的区块信息,并且验证每笔交易的正确性,是最终将交易打包进区块链的节点。
结合下面这种图,看看一笔交易的上链过程:
1,首先从客户端发起一笔交易提交到Endorsing Peer,进行预处理。
2,预处理通过之后,将签名数据,传回给客户端。
3,客户端发起请求,将收到的签名数据传给Ordering Node。
4,Ordering Node对交易进行排序,然后传给Committing Peer。
5,Committing Peer这里将排序好的交易进行验证,并打包,通过指定的共识算法达成一致,形成新的区块。
6,最后将交易结果返回给客户端。
6,中间过程的每一步,都伴随着权限的验证。会根据MSP颁发的证书,进行判断。
㈨ 初识Hyperledger Fabric
Fabric是联盟链,Peer代表一系列组织,Peers是整个区块链网络的基础,因为它是账本和智能合约的载体。通过智能合约,账本通过不可篡改的方式记录了交易的全过程。
对于不能的公司来说,是有不同的业务的,不同的业务又与不同的公司相关联,需要创建多个联盟链,因此就需要创建多个channel,channel是多个特定成员之间以机密交易为目的建立的私网,一个peer可以加入多个channel,每个channel维护自己的账本,账本和账本之间是隔离的,每个channel可以维护一个或多个账本。所以为了满足复杂的交易需求,每个peer上可以安装不同的智能合约,当peer交易完成时,会发送事件通知Client。peer上还有一个Local MSP(成员服务提供器)服务,提供身份认证和加密签名等功能。
WorldState 以key-value的形式,维护着当前账本的当前信息。
智能合约(Smart Contract)是区块链的核心,定义了各个不同组织间的业务规范,创建交易并记录在账本里。多个智能合约可以打包到一个链码中。只有链码(Chaincode)部署之后,智能合约才能被应用使用。
不同于一般的链码运行在一个独立的容器,系统链码运行在peer进程上,实现了一些系统行为。
Fabric为了优化网络性能,提高安全性和可扩展性,将每个交易分到 Endorsing Peer 、 Ording-Service 和 Committting Peer 三个部分,这就需要一种安全的,可信的和可扩展的数据传输协议——Gossip Protocol。 Gossip 传输协议以随机的方式将信息散播到网络中,主要执行三个功能: