深入浅出区块链
陈浩
元界CTO
立即订阅
16620 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 帮你从0到1深入学习区块链技术
免费
第一章 浅说区块链基础 (8讲)
第1讲 | 到底什么才是区块链?
第2讲 | 区块链到底是怎么运行的?
第3讲 | 浅说区块链共识机制
第4讲 | 区块链的应用类型
第5讲 | 如何理解数字货币?它与区块链又是什么样的关系?
第6讲 | 理解区块链之前,先上手体验一把数字货币
第7讲 | 区块链的常见误区
第8讲 | 最主流区块链项目有哪些?
第二章 深入区块链技术 (15讲)
第9讲 | 深入区块链技术(一):技术基础
第10讲 | 深入区块链技术(二):P2P网络
第11讲 | 深入区块链技术(三):共识算法与分布式一致性算法
第12讲 | 深入区块链技术(四):PoW共识
第13讲 | 深入区块链技术(五):PoS共识机制
第14讲 | 深入区块链技术(六):DPoS共识机制
第15讲 | 深入区块链技术(七):哈希与加密算法
第16讲 | 深入区块链技术(八): UTXO与普通账户模型
第17讲 | 去中心化与区块链交易性能
第18讲 | 智能合约与以太坊
第19讲 | 上手搭建一条自己的智能合约
第20讲 | 区块链项目详解:比特股BTS
第21讲 | 引人瞩目的区块链项目:EOS、IOTA、Cardano
第22讲 | 国内区块链项目技术一览
第23讲 | 联盟链和它的困境
第三章 数字货币与数字资产 (5讲)
第24讲 | 比特币专题(一)历史与货币
第25讲 | 比特币专题(二):扩容之争、IFO与链上治理
第26讲 | 数字货币和数字资产
第27讲 | 弄懂数字货币交易平台(一)
第28讲 | 弄懂数字货币交易平台(二)
第四章 区块链与当下互联网 (5讲)
第29讲 | 互联网身份与区块链数字身份
第30讲 | 区块链即服务BaaS
第31讲 | 数字货币钱包服务
第32讲 | 区块链与供应链(一)
第33讲 | 区块链与供应链(二)
第五章 如何从业区块链 (3讲)
第34讲 | 从业区块链需要了解什么?
第35讲 | 搭建你的迷你区块链(设计篇 )
第36讲 | 搭建你的迷你区块链(实践篇)
尾声 (2讲)
尾声篇 | 授人以鱼,不如授人以渔
新书首发 |《区块链第一课:深入浅出技术与应用》
深入浅出区块链
登录|注册

第23讲 | 联盟链和它的困境

陈浩 2018-05-16
不知不觉我已经写到了深入区块链技术部分的最后一篇,今天我们就一起来聊聊联盟链。
其实,在 2016 年的时侯,联盟链是非常火热的,当时的公链还处于探索阶段,以太坊也不够成熟,这给了很多联盟链涌现的机会。所以说,从技术上来看,联盟链其实非常强劲,毫不逊色于著名的区块链项目,下面我们就一起来看看联盟链技术。

简介

联盟链源自于 Vitalik 对区块链的概念分类,是他第一次提出了联盟链的说法,联盟链的英文是 Consortium Blockchain。
我们回顾一下联盟链。所谓联盟链,就是这个区块链具有准入许可,不像公链,任何人都可以随时进入,准入许可意味着候选节点进入区块链时需要得到已经在网络中的节点的许可。
所以联盟链也叫做许可链,也就是 Permisson Chain,这个叫法在国外比较常见。联盟链的节点数通常不多,维护成本相比公链要低。
有关联盟链与公链的概念区别,它们的区别仅仅是看新加入的节点是否要经过全网中其他节点的许可,这决定了一个区块链是否开放,开放程度决定了项目生态的大小,这也是最直观的区别。
联盟链的技术框架很多,其中又以超级账本项目下的技术框架最为知名,应用也最为广泛,它基本代表了联盟链,所以,今天我们就重点来介绍一下超级账本项目。

超级账本 HyperLedger

超级账本在 2015 年年底被发起,吸纳了众多重量级公司加入,它们包括大家耳熟能详的 IBM、Intel、Accenture、日立、JP 摩根、Digital Asset Holdings 等公司。
超级账本的代码和组织结构都结构清晰、层次分明。可以说无论从声势还是实力上来说,它都可以完胜公链。
例如,超级账本组织是会员制的,加入超级账本需要缴纳一笔入会费,入会费决定了你的会员等级。再如,超级账本 Frabric 的架构设计简直就是教科书级别的,干净利落、模块清楚,几乎挑不出毛病。
超级账本由 Linux 基金会主持,宗旨是构建一个面向企业应用场景的开源分布式账本技术平台。
因为企业应用场景的多样性,所以超级账本包含了不只一个项目,它是由多个项目组成的。一共 9 个项目,其中 5 个是主要的技术框架,其他 4 个是辅助性工具。
它的主要技术框架分别是下面的 5 种。
1.Hyperledger Fabric :没有中文名,暂译【纺布克】,是 IBM 提供的,超级账本第一个项目。纺布克旨在用模块化架构作为开发区块链程序或解决方案的基础,允许一些组件——例如共识算法和成员管理变成即插即用的服务。
2.Hyperledger Sawtooth:中文名【锯齿湖】,Intel 提供,是超级账本第二个项目。锯齿湖是一个可以创建、部署和运行分布式账本的模块化平台,基于硬件依赖的 PoET 共识,可以面向大型分布式验证器群,同时也比较低功耗。
3.Hyperledger Iroha:没有中文名,暂译【伊路哈】,由 Soramitsu 提供。伊路哈是为了将分布式账本技术简单容易地与基础架构型项目集成而设计的一个区块链框架。
4.Hyperledger Burrow:没有中文名,暂译【掘地者】,由 Monax 提供。掘地者提供了一个模块化的区块链客户端,提供了权限管理的智能合约虚拟机,它部分建立在以太坊虚拟机(EVM)规范的基础上。
5.Hyperledger Indy:没有中文名,暂译【因迪】。因迪是特别为去中心化的身份而建立的一种分布式账本。它提供了基于区块链或者其它分布式账本互操作来创建和使用独立数字身份的工具、代码库和可以重用的组件。
另外 4 个辅助性工具是:Cello、Composer、Explorer、Quilt,这四个辅助性工具可以对以上 5 个框架进行管理,例如 Composer 可以类比 Docker 中的 Composer,Explorer 就是区块浏览器。
我们不排除随着超级账本的发展,还有新的技术框架加入,当然,也可能存在既有的框架被市场淘汰。不过这些都不是本文的重点,所以我们不作过多介绍,你可以通过查阅超级账本官方网站获得更多内容。

1. 纺布克 Fabric

纺布克是由 IBM 提供的,它基于 Go 语言,前身是 Openchain 项目。在超级账本成立之初,Openchain 的代码量就已经达到 4 万行了,随着项目的推进,项目成员对 Openchian 进行了重构,也就是我们看到的纺布克 1.0 版本。
纺布克提供了比较完备的模块化组件,如下图所示。
我们可以看到,它的架构上分成了:成员关系管理、区块链服务、Chaincode 服务三个大模块。
成员关系管理相当于账户和权限管理系统,区块链服务提供了区块链一样的账本结构,Chaincode 服务相当于智能合约。
成员关系管理是基于 PKI 的成员权限管理,平台可以对接入的节点和客户端的能力进行限制。
区块链服务提供一个分布式账本平台,多个交易被可以被打包进一个区块中,多个区块单向链接成一条区块链。区块链代表的是账本状态机发生变更的历史过程,这与公链区别不大。
Chaincode 包含核心的业务处理逻辑,并对外提供接口,外部通过调用 Chaincode 接口来改变账本数据,在纺布克中,Chaincode 是运行在隔离环境中的,也就是 Docker。
纺布克的一个可能的工作模式如下图。
如果 Chaincode 运行在 Docker 中,我们按照经典的 IT 架构来分析,可以发现纺布克基本就是经典分布式系统的升级版,它可以提供宕机容错,可插拔的共识模块让用户自行选择是否需要拜占庭容错。

2. 锯齿湖 Sawtooth

锯齿湖也是一个高度模块化的区块链技术框架,它基于 Python 语言,1.0 版本之后和纺布克一样,作为一套稳定的框架,它已经有了实际的应用了。
它是第一真正意义上提供拜占庭容错共识选项的超级账本项目,有以下四个特点。
链上治理:利用智能合约进行投票运营成员管理彼此之间的关系。
高级交易执行引擎:可以并行处理交易的创建和验证,性能可观。
支持以太坊智能合约:兼容了以太坊智能合约技术栈。
支持主流语言编写智能合约:编写智能合约不局限 Solidity,可以是 Go、Javascript、Python 等语言。
相比以上四个特点,最引人注意的其实是锯齿湖提供了一个新的共识算法,叫做 PoET(Proof of Elapsed Time),它的中文译作:时间流逝证明。
如果你熟悉 Raft 共识算法的话,我们知道 Raft 算法是一类强 Leader 的共识算法,选举 Leader 的时候,每个节点自己倒计时(CountDown),最先数完的那个成为候选人。
这个过程叫做超时选举(Election Timeout)。每个节点每轮选举中得到的倒计时时间是不同的,它的代码实现为随机产生,通常是 150 毫秒到 300 毫秒。
PoET 与上述规则类似,只是倒计时时间的产生变更为硬件依赖的,这里的硬件目前是由英特尔提供的 SGX,Software Guard Extensions,它可以提供可信的程序执行环境。
SGX 提供了一种名为 Enclave 的机制,它支持两个函数“CreateTimer”和“CheckTimer”。CreateTimer 用于从 Enclave 中产生一个计时器。
CheckTimer 会去校验这个计时器是不是由 Enclave 产生并验证是否已经过期。如果满足这两个条件就给该节点开具一个证明,这个证明可以被其他节点验证,验证通过则表示同意该节点成为记账节点。
我们看出,PoET 共识算法的拜占庭容错是由 SGX 保证的,具有一定的硬件依赖。
锯齿湖官方提供了的四种工作模式:开发模式、PoET 模式、PoET 仿真模式以及 Raft 模式。
可以发现,锯齿湖相当于是 Raft 协议的变种版本,选择 Raft 模式使得锯齿湖可以退化成经典分布式系统。

3. 掘地者 Burrow

掘地者也是一个基于以太坊 EVM 的智能合约执行引擎的区块链技术框架,最初项目名叫 Eris,它是基于 Go 语言构造的。
掘地者主要由下述组件组成。
共识引擎:提供了基于 Tendermint PBFT 算法的高性能拜占庭容错共识算法。
应用程序区块链接口 ABCI:为共识引擎和智能合约引擎提供接口规范。
许可型以太坊虚拟机 EVM:权限许可是可以通过本地安全接口强制绑定到智能合约上,其他与以太坊智能合约一样。
API 网关:提供 REST 和 JSON-RPC 两种 API 接口。
掘地者也是模块化的分布式账本技术,提供许可型的智能合约执行环境,它也基于 EVM 规范。除了 Tendermint PBFT 共识算法,没看到与纺布克的的区别。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出区块链》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • 有风的林子
    一个本质的不同,联盟链是有主的。主宰说什么是什么,而且通过安全账本保证了绝不含糊。

    公链的主宰是上帝,或者市场。上帝和市场是自然规律,没有人欲的狭隘。

    联盟链可以是1984,而公链应该不会。😁

    作者回复: 鼓掌👏

    2018-05-17
    4
  • SoWhat
    联盟链比公有链靠谱,政府,大公司都在用。公有链目前还都是泡沫经济,都还没落地,全是画饼。

    作者回复: 你好,我们观点不一致哦。泡沫是一个新行业的必经之路,革新之始。

    2018-05-29
    2
  • SoWhat
    联盟链适合政府和大公司优化一些流程,比公有链市场大得多。公有链最后可能只是一场泡沫,要落地太难了。
    2018-05-29
    2
  • 阿痕
    我觉得联盟链是当前阶段过渡性的区块链技术,它可以帮助企业认识和使用区块链,区块链最终的形态应该是公有链

    作者回复: 我觉得未来也会共存,只是联盟链的生态不如公链家,无论是技术生态还是商业生态。

    2018-05-25
    2
  • 钰湚
    我个人认为,经典分布式技术框架不适合搭建服务于网状生态系统的业务环境,这也是供应链系统一直不是很好的原因,联盟链退化自公有链,保留了区块链先天适合构造网状系统的基因,并且与现有多中心化的商业环境契合,又能发挥经典分布式系统难以依托通证实现的治理,因此更适合企业端的应用

    作者回复: 有道理~

    2018-05-17
    1
  • 小老鼠
    可以不可以通过区块链建立类似微信群的项目。可以1,不用群主,由群内所有人自主管理。2,只有郡内部人才可看到郡内容,保护隐私。
    2019-12-11
  • 万志勇
    老师,您好!在看您推荐的“区块链原理设计与应用”一书第13章中介绍fabric链码的开发案例二`资产权属管理’,介绍了transferMarble方法,直接修改资产所有者的方式为 更新原key对应值的所有者属性,这不是直接把已有的记录更新了吗?这与不可篡改不符吧,忘老师指点,多谢!
    2019-12-01
  • maomaostyle
    私有云,公有云,混合云,万变不离其宗
    2019-01-08
  • rayeaster
    最近还有个新项目 clovyr.io 号称打通公链和联盟链

    作者回复: 挺多的,像阿希和NXT也是

    2018-06-08
  • rayeaster
    老师讲讲 r3 corda吧

    作者回复: 好的,看有机会我会发我个人专栏。

    2018-06-06
  • 悟空来 | Arthur李华栋 ...
    联盟链已经好久了没有实际的运用场景

    作者回复: 供应链算一个吧

    2018-05-26
  • 舍我其谁
    陈老师对秘猿的CITA有研究吗?
    https://www.cryptape.com/#/

    https://github.com/cryptape/cita
    2018-05-23
  • 唐稳
    您好,关于BAAS和现有公链(比如比特币)关系,可不可以这么理解:
    1)可以基于BAAS平台开发比特币应用,并将应用部署和运行在BAAS中
    2)可以基于BAAS平台查询比特币公链相关的信息

    而不是直接将比特币客户端部署到BAAS中

    作者回复: 是的,这是我的理解,也可以扩展到其他区块链,例如IOTA物联网服务也是可以的。

    2018-05-16
收起评论
13
返回
顶部