查看原文
其他

未来公链技术哪家强?下一站“公链2.0”(下)

五火球教主 白话区块链 2019-04-09

白话区块链

从入门到精通,看我就够了!

本文是上周六专栏文章《未来公链技术哪家强?下一站“公链2.0”》的续篇。

前情提要

上篇介绍了双链结构、分层结构、反直觉的随机算法等诸多下一代公链技术,在文章最后,我们还提到了“非区块链技术”这一大类,代表有DAG公链、类DAG公链等,它们采用的技术和我们熟知的区块链项目有很大差异,将会在本文逐一介绍。

介绍之前,我们首先弄清楚区块链(Blockchain)和DLT(分布式帐本技术)的关系。

DLT包含BLOCKCHAIN、DAG、TEMPO等技术

如上图所示,区块链是一种DLT(分布式账本技术),而不完全等同于DLT


DLT(分布式帐本技术)是能实现分布式记账的技术统称,包含了区块链、有向无环图(DAG)、分布式哈希表(DHT)、Tempo等一系列技术。


因此,DLT和区块链的关系就好比是“交通工具和轿车”的关系。只是在DLT家族里,相比于其他技术,人们更加熟悉区块链。


那么,在那些没有使用区块链技术的DLT项目里,是否会杀出与区块链旗鼓相当的底层公链呢?下面我们就来讲讲这类项目的几大技术代表。



 01 
DAG与类DAG
(有向无环图)技术

DAG全称是“有向无环图”,没有区块概念。它不是把所有数据打包成区块,再用区块链接区块。而是每个用户都可以提交一个数据单元,数据单元间通过引用关系链接起来,从而形成具有半序关系的“有向无环图”。

DAG还处于起步阶段,对比区块链“相对成熟”的技术,晚了好多年。

由于DAG没有区块,所以也就不受区块大小的限制,从而可以支持极大的并发量和极高的速度,在TPS上远胜区块链技术。但有利就有弊,它在工程学上的一些硬伤,目前仍待解决。

• 首先,DAG是异步的,无需同步就能提交交易。但由于其他节点要迭代,全网迟早要同步。(异步导致目前的DAG项目,都比EOS更加“中心化”,比如IOTA需要协调器,Byteball用的是“见证人网络”。因为,由谁负责同步很重要,不然大家都瞎广播,很容易乱了套。)

• 其次,做合约,用异步会更加费劲,因为合约是依赖关系冲突的。(这也是DAG的两个始祖项目,IOTA原生根本不支持合约;Byteball用了一个偏“中心化”的解决方案,虽然能支持合约,却依旧没法跟ETH和EOS等公链相提并论的原因。)

用大白话来讲就是:区块链走的是排队买票上车的路数,有秩序,但速度慢;DAG走的则是“先上车,后补票”的路数,省时间,速度快,然而有可能会挤死…… 

DAG与类DAG的底层公链,代表项目如下:国内的纳尔图、Intervalue、VITE;韩国的Hycon、Fantom;欧美的Byteball和Hashgraph等项目。

上期有小伙伴留言,说“DAG类代表居然没有IOTA”。这里给出解释:IOTA算是DAG的祖师爷,按理说应该列出。但IOTA原生不支持智能合约,且专注于物联网而非底层平台型公链,并不属于同一赛道,所以没有列出。(同理,NANO专注于支付领域,也同样没有列出。)

这些项目,也都在解决“DAG异步提交”这个工程学硬伤上绞尽脑汁,比如:

• VITE用了NANO的区块点阵(Block Lattice),然后加了一层快照链(Snapshot Chain),略微牺牲了一些性能,但提高了安全性;

• Intervalue则是用了哈希网(Hashnet)的数据结构和BA-VRF(基于随机选择函数的拜占庭协商)双层共识;

• Hashgraph则是用了互相传播(Gossip about Gossip)和虚拟投票(Virtual Voting)的技术确保全网共识。

每个解决异步的方法和思路都不太一样,有兴趣的朋友可以去详细了解一下。


 02 
DHT(分布式哈希表)技术

DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。

利用DHT技术的代表项目是Holochain和IPFS。IPFS是协议,不是公链,在此不详述。下面,重点来介绍应用DHT技术的公链Holochain。

区块链目前面临的扩容难题,就是因为区块链要获得全网共识,共同维护一个统一版本的账本。而运行速度、网络带宽、动机等都会影响区块链的整体性能,导致扩容进程艰难。

Holochain的账本是分布式存储在各个参与的节点之上,通过DHT的寻址技术来保证账本的完整性与可检索性。换句话说,全网就一份账本,一人存一部分,这样扩容就方便多了。

放在现实世界类比的话,这有点儿类似于“六人定律”原理。比如,最近赵丽颖跟冯绍峰官宣结婚了,你想要给女神发个微信恭喜一下,该怎么做? 

你的手机里大概率没有女神的微信号,但是你的朋友里面可能有认识她的,即便你的朋友没有认识她的,你朋友的朋友说不定有人认识。最多不超过六层关系,你就能找到赵丽颖的微信号。

区块链,就好比每个人手机里都存着所有微信用户的微信号。

DLT技术,就是每个人只存自己好友的微信号,找人时跳转几次就能找到目标对象。

你肯定会问,那若有节点离线该怎么办?很简单啊,赵丽颖的微信号肯定不是只有离线的那个节点知道,你可以通过别的节点找到女神呀。

换成Holochain的专业术语,就是:虽说只是局部共识,但节点之间会互相做一些备份,并与备份的相邻节点按时通信,如果发现相邻节点离线了,就把数据再次备份到另外一个相邻节点,保证副本的数量。

Holochain的问题在于:它是局部共识,安全性还有待验证。比如,能否完全避免双花;如何应对DDOS攻击;若好多个节点同时离线且来不及数据备份该怎么办等一系列问题,这些都需要时间来检验。

值得一提的是,在Holochain平台上,个人电脑和手机都可以当节点,专业矿机请走开!


 03 
Tempo及逻辑钟技术

Tempo及逻辑钟技术是一个比较冷门的技术,鲜有项目使用这类技术。Radix DLT成为该技术的唯一代表。

Radix DLT有两个很有意思的特点:

 先分片,后共识 

传统区块链实现安全的方法,就是每个节点存储所有数据。分片后,每个节点掌握的数据不同,就容易带来很大的安全隐患。

比如说,你在家表现不乖,被你妈揍了一顿。然后等你爸下班回家之后,你跟你爸说:“爸比,我今天表现很乖哦!可不可以出去玩?”然后你顺利讨你爸欢心,出去玩了。

理论上来说,你被你妈揍的事情是可以瞒住你爸的,因为信息并没有同时传播给所有人,每个人只掌握部分信息。

区块链分片技术推出这么久,成功的项目寥寥无几的原因就是:“先共识,后分片”的技术,跟区块链“每个节点存储所有数据,实现全网共识”的核心精神相背离。Radix DLT的Tempo共识分片则完全反了过来,先分片,后共识。

在技术上,遵循这样的逻辑:

• 每个分片的大小和总分片的数量是提前设计好的;

• 每个分片都已经创建。它们住在同一个“宇宙”中,它们的位置ID是已知的。 每个交易都带有发送方ID与其分片ID的混合标记。

这么说比较抽象,还拿刚才的例子来说明:你在家再次表现不乖,又被你妈揍了一顿,但这次揍完之后,你妈拿印泥在你头上盖了个戳 ——“不乖”。你爸下班回家后,你跑过去跟你爸说:“爸比,我今天表现很乖哦!可不可以出去玩?”你爸瞥了眼你额头那鲜红的“不乖”二字,冷笑一声,“小样儿!在家不乖还想出去玩?!回屋罚站!”

你爸这次完全不需要跟你妈交换信息。他不需要所有的信息,但仍可以识破你的谎言。

 逻辑钟 ( Logic Clock)

在区块链或者说DLT的世界里,对事件排序是个很重要的事。

PoW共识机制,是用谁先算出哈希的方法来决定事件顺序;PoS共识机制,是用随机抽样的方法来决定事件顺序;Radix DLT的Tempo,则是用逻辑钟来做这件事。逻辑钟不关心某个时间点发生的事情,而是更关心事件之前发生的事情。

比如,你去饭店吃饭这件事,要经历“走进餐馆、点餐、用餐、结账、离开餐馆”这个流程。如果你是餐馆老板或者保安,当一个客人拍拍屁股要走人的时候,你可能不是关心现在是几点几分,而是关心这人结账了么?

结了? —很好

没结? —那得瞅瞅他之前有没有发生“用餐”行为(没用餐? - 那走就走吧;用餐了? - 你这是要吃霸王餐啊!哪里走!)

总而言之,Radix DLT的Tempo并不关心交易发生的确切时间,它所关心的只是交易发生的顺序。对于某个特定交易,它只关心交易之前“发生过什么”。

假设,张三与李四在12:00完成交易A,与王五12:10分完成交易B。那么,Radix DLT是不关心准确的完成交易的时间,只会记录“交易A发生在交易B之前”。

哪怕王五在12:15才看到交易A,也没事儿,因为共识是“交易A发生在交易B之前”,全网一致性靠顺序来实现,而不是具体时间。

当然,逻辑钟属于新生事物,还在理论设计阶段,它的各项性能仍需时间的检验和历史的筛选。

看完这些公链技术探讨,你有什么困惑和看好的公链要分享吗?欢迎留言和大家交流分享。

如果你在学习区块链的过程中遇到了困难,也可以来我们的“大白兔奶糖”知识星球(白话区块链精华社区)寻求解答和帮助!

相关阅读:


——End——


『声明:本文由白话区块链特约作者「五火球教主」供稿,文章为作者独立观点,不代表白话区块链立场,亦不构成任何投资意见或建议。』


很多时候,留言比正文更精彩

↓快来升级认知顺便挖个矿吧↓ 

亲,给「白话区块链」加个“星标”

   👇 不错过重要推送哦 👇

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存