Hyperledger Fabric 学习笔记

这篇文档是关于 Hyperledger Fabric 官方文档 的学习笔记。

Introduction

区块链是一个不可变的交易账本(Ledger),维护在同级节点(peer nodes)的分布式网络中。每个节点通过应用已经通过共识协议(concensus protocol)的交易来维护账本的副本,这些交易被分组为多个区块,区块中包含了此区块绑定到前一个块的 hash。

Bitcoin cryptocurrency 比特币加密货币是第一个也是最广为人知的一个区块链的应用。Ethereum,以太坊则采用了不同的方式,整合了很多与比特币相同的特性,但添加了智能合约(smart contract,Fabric 把它叫做 chaincode)以创建一个用于分布式应用的平台。Bitcoin 和 Ethereum 属于公共无许可(public permissionless)区块链技术。也就是说,它们是对任何人开放的,公共网络,其中的参与者都匿名交互。

但这种无许可区块链技术不能满足企业用户场景,因为企业用户案例中,尤其是财务交易需要遵循 KYC(Know Your Customer)和 AML(Anti Money Laundering)规则。

所以对于企业使用,需要考虑到:

  • 参与者可识别
  • 需要许可
  • 高交易吞吐量性能
  • 交易确认低延迟
  • 与业务交易相关的隐私和数据的隐私和机密性

Hyperledger Fabric 就是专门为企业使用设计的。

For now, it’s enough to think of a blockchain as a shared, replicated transaction system which is updated via smart contracts and kept consistently synchronized through a collaborative process called consensus.

自问自答
1. 什么是分布式账本(ledger)?
答:一个区块链网络的核心就是一个分布式账本,记录了网络中发生的所有交易。
一个区块链账本是去中心化的(decentralized),因为它被多个参与者复制。
另外,区块链账本也是 append-only 的。一个交易一旦添加到账本中,就不能再修改了。

2. 什么是 peer ?功能?
答:Peer 是区块链网络的基本元素,托管(host)账本和智能合约。

3. 什么是 Smart contract?
答:为了支持一致的信息更新,以及启用一些账本功能(比如交易,查询等)。区块链网络使用智能合约来提供对账本的受控访问。
智能合约不仅是一个封装信息并发散到网络的关键机制,它也可以用来允许参与者自动执行交易的某些方面。比如根据运送时间自动修改运费。

4. 什么是共识(Consensus)?
答:保持账本交易在网络中同步的过程,就是共识。共识要确保,只有在交易被对应的参与者确认时,账本才会更新。以及一旦账本更新,那么所有的账本以相同的顺序,更新相同的交易。

Hyperledger Fabric

Linux 基金会于2015年创建了 Hyperledger 项目,以推进跨行业的区块链技术。Hyperledger Fabric 是 Hyperledger 中的区块链项目之一。像其他区块链技术一样,它有 Ledger,使用智能合约,并且是参与者用来管理其交易的系统。

Hyperledger Fabric与其他一些区块链系统的不同之处在于它是私有的并且许可的。也正因为如此,在国外 Fabric 不受什么待见,他们甚至认为 Fabric 不是去中心化的。反而在国内,Fabric 受到众多企业的青睐。

Fabric 是高度模块化,高度可配置化的架构。应用场景有银行,金融,保险,医疗保健,人力资源,供应链,甚至数字音乐交付。

Fabric 是第一个支持用通用开发语言比如Java,Go,Node.js 开发智能合约的分布式账本平台。

支持可插拔共识协议。

共享账本(Shared Ledger)

账本系统包含两个组件:

  • 世界状态(world state):描述某个时间点的账本状态。是账本的数据库。默认使用 LevelDB。
  • 交易日志(transaction log):世界状态的更新历史。不需要可插拔的。It simply records the before and after values of the ledger database being used by the blockchain network.

智能合约(Smart Contract)

在 Fabric 中,智能合约是用 chaincode 写的,所以也称为 chaincode。

智能合约是可信的分布式应用,可从区块链和 peer 中潜在的共识中获得安全性/信任。

当外部应用需要跟账本交互的时候,就会调用智能合约。大多数情况下,chaincode 只跟账本的数据库组件(世界状态)交互,比如查询。目前支持用 Go 和 Node 实现 chaincode。

智能合约有三个要点:

  • 多个智能合约同时运行
  • 可能会动态地部署
  • 应用代码被视为是不可信的,甚至可能是恶意的

共识(Consensus)

交易必须按照发起的顺序写到账本里。错误地(或恶意地)添加到账本里的交易需要被拒绝掉。

实现的方式有很多,各有利弊。比如 PBFT(Practical Byzantine Fault Tolerance)可以让文件副本彼此通信,并且保持每个副本一致,即使是在发生损坏的情况下。

许可的(permissioned)和无许可的(permissionless)区块链

  • 无许可的区块链:所有参与者都是匿名的。使用挖矿本地货币或交易费作为经济诱因,来补偿参与基于PoW(Proof of Work)的拜占庭容错共识的特殊费用。

  • 有许可的区块链:一群已知的,认证的,通过审查的参与者。通过依赖参与者的身份,有许可的区块链可以使用传统 CFT(crash fault tolerant)或者BFT(byzantine fault tolerant)公司协议,这些协议不需要高花费地挖矿。

隐私和机密性

对于公共的无许可的区块链,交易是在每个节点上执行的,因此交易数据和代码是对网络中的每个节点可见的,没有机密性。

为了解决隐私和机密性的问题,区块链平台采用过多种办法:

  1. 加密数据:在无许可的区块链中,就算是加密了,也都在每个节点中可见,时间和计算资源足够的话,就能解密。
  2. 零知识证明(Zero Knowledge Proofs,ZKP):取舍在于计算ZKP需要很多时间和计算资源。
  3. 在有许可的区块链中,可以利用多种形式的共识,有些可以限制机密信息的分发,只分发给授权了的节点。

自问自答
1. 什么是 Tendermint?
答:简单来说就是一种区块链共识算法。

Peers

A blockchain network is comprised primarily of a set of peer nodes (or, simply, peers). Peers are a fundamental element of the network because they host ledgers and smart contracts.

区块链网络主要由一组 Peer 节点(或简称为对等节点)组成。Peer 是区块链网络的基本元素,因为它们托管账本和智能合约。智能合约用于封装共享进程,账本用于封装共享信息。一个 Peer 可以有多个账本和智能合约。

Applications and peers

当应用需要访问账本和智能合约的时候,就需要连接到 peer。Fabric 的 SDK 提供了 API 使得应用可以连接到 peer,调用 chaincode 来生成交易,提交交易到网络上,然后将它们排序、验证、提交到分布式账本中,接收事件当此过程结束。

通过连接 peer,应用可以执行 chaincode 以查询、更新账本。


peer 查询和更新账本的过程

Peers, in conjunction with orderers, ensure that the ledger is kept up-to-date on every peer. In this example, application A connects to P1 and invokes chaincode S1 to query or update the ledger L1. P1 invokes S1 to generate a proposal response that contains a query result or a proposed ledger update. Application A receives the proposal response and, for queries, the process is now complete. For updates, A builds a transaction from all of the responses, which it sends to O1 for ordering. O1 collects transactions from across the network into blocks, and distributes these to all peers, including P1. P1 validates the transaction before committing to L1. Once L1 is updated, P1 generates an event, received by A, to signify completion.

更新账本比查询多额外的两个步骤。查询账本过程中,peer 不需要跟其他 peer 交互,可以直接返回本地账本副本的查询结果;但是在更新账本过程中,只有当其他 peer 都同意更新,账本才能更新——也就是说需要共识。

上图中的第四步,应用发送一系列建议的(proposed)更新到整个 peer 网络,以作为提交到各自账本的交易。这是通过使用一个 orderer 实现的,它会把这些交易打包到一些区块中,然后分发到整个 peer 网络。每个 peer 会先验证这些交易然后再更新到各自本地的账本副本。由于这整个 ordering 的过程需要一些时间(几秒)来完成,应用会接收到异步的通知,如上图的第五步。

Peers and Channels

通过 Channel 机制,区块链网络中的一组组件可以进行私下通信和交易。这些组件通常是 peer 节点,orderer 节点和应用程序。通过加入 channel,它们同意协作以共享和管理与该频道关联的相同的账本副本。Channel 是一个逻辑上的结构,由物理上的 peer 集合形成。Peer 提供了访问和管理 channel 的控制点。

Peer and Organizations

区块链网络由向其贡献资源的多个组织组成和管理。网络的大小取决于这些协作的组织提供的资源的多少。网络不依赖于某个单个的组织,只要有一个组织贡献资源,那么这个网络就会存在。这也是一个网络去中心化的核心含义。

不同组织的应用不需要是一样的,如何操作 peer 的账本副本完全取决于组织。应用要么连接到所属组织的 peer,要么连接到其他组织的 peer。这取决于所需的账本交互的性质:对于查询账本的交互,应用通常连接到所属组织的 peer;对于更新账本的交互,应用则需要连接到验证更新所需的每个组织的 peer。

Peer and Organizations

Peers and Identity

通过数字证书,每个 peer 都被所属组织的管理员分配了身份。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容