• 摘要:研究过HLC在西安和上海测试新闻的技术爱好者一定发现,Block DAG 和区块链其实没有本质的区别。

    编者按
    今天是5月9日。这一段时间,在认识HLC公链DAG技术之前, 很多人一直不理解为什么比特币的打包需要10分钟, 或者为什么区块要限定在1M。如果放开这两个限制, 不就轻松地解决了比特币现在的吞吐量的问题了么?而且似乎安全性也不会降低, 因为比如说我把出块周期改成1分钟, 根据比特币的难度调节机制, 一段时间稳定后, 难度会调节成现有难度十倍, 还是能保证一个出块周期内平均只会产生一个块, 所以似乎也没有安全性的问题。这么简单的方案, 改几个参数就可以解决了(事实上早期的某些竞争币也就是这么做的), 为什么中本聪这么不去做?HLC公链团队的技术沙龙上,我们仔细聊了这个话题。

    出块时间和传播时间矛盾

    你细想下, 又觉得哪儿不对。既然要解决扩容问题, 那自然是多多益善。 既然改成一分钟就提高十倍, 那我改成一秒钟呢? 岂不是就提高了 600 倍了, 吞吐量就可以到4200TPS, 已经足够覆盖目前大多数区块链的应用场景了, 这个困扰了行业这么长时间的问题居然就这么简单地解决了?

    相信你此时已经发现问题不对了, 区块的传播是需要时间的, 这其中包括节点带宽的限制, 地理位置的远近, 验证区块的开销等. HLC公链团队根据论文Information propagation in the Bitcoin network中的数据, 2013年的时候需要40秒才能传遍95%的网络。根据Bitcoin Stats的数据, 近期(2017年)也需要13秒才能传遍90%的网络。所以,根据最长链规则, 出块周期必须远大于区块传播时间才能保证区块在全网是同步的, 不会分叉。

    区块链设定

    时间到了2019年, 区块链的可伸缩性(scalability, 本文没有使用可扩展性以免和extensibility混淆), 似乎早就不是问题. 因为高吞吐量的项目其实非常多。现在最被大家熟知应该是EOS了, 实际的吞吐量能够达到3000TPS。事实上, Ripple, Stellar, Ziliqa, OmiseGo等知名项目也都有很高的吞吐量。但是似乎可伸缩性的技术探索并未终止, 因为不同的网络设定可以得到完全不同的数据, 抛开具体的网络设定单谈可伸缩性意义不是太大。

    HLC关注的主流扩容方案

    HLC公链开发团队的视野之内,目前主流的扩容方式有如下几种, 事实上每种技术都有各自优势以及适用场景, 我们认为理想的扩容方案是综合方案, 在保证安全的情况下最大限度地扩容。

    1. 类Proof-of-Authority(PoA)

    这里的类PoA是指只有少数权威出块节点的协议, 比如说, EOS的Delegated Proof-Of-Stake(DPoS)和Ripple的Interledger Protocol(ILP), Stellar的 Stellar Consensus Protocol (SCP)等。共识成本较低, 加上出块节点彼此可知, 也可以提高硬件性能, 自然是可伸缩的。显然, 这是一种偏中心化的方案。所以, 类PoA的设定是基于对于权威节点的信任。

    1. 链下技术

    也叫二层扩容(Layer-2 Scaling)比特币的闪电网络(Lightning Network), 还有基于以太的Plasma协议(目前OmiseGO已经使用), 都是典型的链下技术。也就是说, 只有部分交易才会最终会上链, 其他的交易要么把中间交易丢弃, 如闪电网络;要么记录在更下一层, 比如说Plasma, 交易不需要上链, 所以理论上不存在吞吐量的上限。链下技术的设定是基于部分交易不需要上链以及网关的安全性。

    1. 分片技术

    也叫一层扩容(Layer-1 Scaling), 既然吞吐量的成本在于共识节点过多, 那把共识节点分成若干个小组, 即分片或者共识组, 片内只有少数节点, 共识效率自然就高, 而且每个分片可以并行的共识. 显然, 共识组的减小意味着每个分片聚集的资源也相应的减少, 对于Proof-Of-Work(PoW)来说, 就是聚集的算力减少, 同时跨片的交易成本也增加。所以分片的设定是基于, 分片内足够可信, 以及跨片交易不会过于频繁。

    1. 多区块技术

    这个技术的思路比较多, 一般来说就是会有多种类型的区块, 有难度较大, 出块周期较长的区块以保证安全性, 称为快区块;也有难度较低出块周期较短以提高交易吞吐量。这类技术知名项目不多, 但是协议不少, 比如说BitcoinNG, FruitChain等,混合共识的设定是允许难度较小快速区块的存在。

    1. 混合共识技术

    这类技术的特点就是通过去中心化的方式选举出一个规模较小人数大致确定的委员会, 然后通过许可链的协议进行共识(一般是PBFT)。等于把非许可链转换成了许可链, 自然也会有许可链特有的一些优势, 比如说共识效率高, 再比如说最终确认性(Finality), 所以宣称支持最终确认性的公链项目基本上都是这种思路。最知名的协议有Algorand, 其中的VRF算法被许多项目用来去中心地随机选取一组节点。混合共识技术的设定, 相信随机算法选出的委员会是可靠的, 以及能接受许可链协议的1/3的网络安全性。

    1. 图形结构账本最符合中本聪理想的区块链扩容方案

    典型的就是HLC公链团队研究的DAG技术。DAG技术解决的是上述提到的出块时间和传播时间的矛盾, 因为出块时间过快, 在传播时间不得不考虑的情况下, 必然会增加分叉, 长时间的分叉会导致网络的不一致, 所以DAG归根结底也是解决分叉的问题。目前DAG技术的知名项目有IOTA, ByteBall以及NANO, 目前这些项目都是采用偏中心化的共识方案解决分叉问题, 造成许多用户误会DAG的共识方案只能用中心化的方案解决。事实上, DAG技术是目前最符合中本聪的理想的区块链设定的扩容方案, 自然DAG技术也是可以解决中心化的问题。DAG技术目前看来最大的问题跟多区块技术和混合共识技术一样, 由于每个节点需要处理所有交易, 无法解决理论上的无限扩容, 所以采用DAG技术的设定是要能接受无法无限扩容以及区块中交易重复的问题。
    需要指出, 这里并没有提到Proof-of-Stake, 因为区块链扩容的瓶颈并不在于挖矿, PoW 同样可以做到很高的吞吐量. PoS更多地是为了解决PoW能耗的问题。

    HLC构思的经典区块链设定

    根据比特币的白皮书中描述, 比特币的目的是要打造成一个真正的去中心化的支付网络, 并通过算力投票的方式来保证公平。事实上, 比特币运行10年后, 现实的情况已经违背了中本聪的初衷, 60%的算力集中在前五大矿池, 手续费已经高昂到接近1美元每笔, 以至于很多人认为比特币是价值存储网络, 这明显违背了中本聪的初衷。因此, HLC公链的同人们需要明确比特币的理想的设定是什么, 在此基础上有哪些方案可以最大程度地保证扩容能力, 我们称这样的设定为经典区块链设定. 我们认为该设定需要满足如下方面:

    1. 自由地加入或退出网络

    这也是非许可链和许可链最大的区别, 从这个角度来讲, 比特币即使算力如此集中, 也是满足的。因为矿池是衍生的服务, 跟比特币的协议无关,但是EOS的超级节点就不满足了。

    1. 公平地激励机制

    公链不属于任何组织, 所以不是通过商业公司的盈利或者捐赠来维持链的运行, 而是有一套激励机制,能让矿工通过挖矿获利来保证,公平的意思是付出了多大的工作, 得到相对相应比例的回报, 也就是激励相容. 这也是目前比特币最大的问题, 主要表现在两个方面:

    机会成本

    严格意义从概率的角度来讲, 矿工加不加入矿池, 得到的回报都是一样的, 扣除矿池的抽成, 不加入矿池似乎还高一点,但是机会成本太高了, 比如说某个矿工拥有全网千分之一的算力, 如果时间足够长的话, 他得到的汇报大致也相当于千分之一的奖励。但是由于他获得奖励的形式只有挖到矿, 所以他要做好大部分时间得不到奖励, 然后等待突然某个瞬间挖到一个区块得到大额奖励来填补之前的成本. 因为承受巨大的心理和成本压力。所以最终他不得不加入矿池, 从而加剧了矿池的中心化。

    挖矿效率

    挖矿效率指投入单位成本能产生的挖矿收益, 事实上由于ASIC矿机存在, 矿机的成本相对挖矿效率是远大于用同样成本的常规计算机。这种效率不单只针对PoW, PoS也需要考虑, 比如说, 拥有同样份额(Stake)的两个矿工, 如果某个矿工挖矿的效率比另一个更高, 那就是不公平的。

    值得提出来的是, 公平的激励机制并不一定代表较低的准入门槛, 根据比特币的设想, 随着难度的增加, 门槛也一定是越来越高的. 也许刚开始笔记本都能挖矿, 到后来只能服务器, 最后来只能是矿场. 但是这个过程应该是缓慢的, 而且机会成本应该和拥有的算力是大体相当的, 这样才能保证即使难度相当大了, 算力也不至于垄断到几个矿池中间。

    HLC公链目前采用的Block DAG的准入门槛只是相对传统区块链来说较低。比如Block DAG来说, 随着网络的发展, 难度的增加, 到达吞吐量的极限后, 网络的门槛也会逐渐增高, 比如说网络前期可能算力排名在前一万的机器可以参与挖矿, 到达极限后, 可能只有算力排名前一千的机器才能挖到矿了。但是这个门槛的提高跟区块链门槛提高的本质区别在, Block DAG的机会成本并没有显著增加。还以上述的例子来讲, 该矿工拥有千分之一的算力, 比如在网络中算力排行前500, 他仍然可以通过自己算力来挖矿, 而不是非得加入某个矿池。这样网络还是能保持较高的去中心化程度。

    1. 强容错性
      这里的容错性, 指网络能承受任何非正常工作的节点的比例, 包括网络卡顿, 恶意攻击等。作为一个完全去中心且由算法驱动的网络, 最理想的情况就是50%的容错性了, 也就是少数服从多数. 不考虑自私挖矿等特殊攻击行为, 比特币理论上能达到50%的容错性, 所以要推翻一笔比特币的已经确认的交易要拥有超过50%的算力, 也就是所谓的51%攻击。50%的算力是比较严格的, 也有许多算法不能保证50%, 比如说PBFT只能保证1/3, 但是对于大部分场景也是很理想了。

    2. 高伸缩性
      这点从比特币的设计中来看并没有体现出来, 因为比特币的交易容量只有理论上的7笔交易每秒, 所以才需要扩容。不过比特币的定位是去中心化的支付网络, 而非去中心化的资产存储网络来讲, 比特币应该也是希望能具有较高的伸缩性, 否则这个目标是无法达到的, 姑且认为中本聪当时在安全性和可伸缩性之间没有找到更好的平衡的方案, 当然只能优先安全性。

    这里追求高伸缩, 理想的情况下应该是首先得保证公链本身的伸缩能力, 再去考虑和其他扩容方案结合比如说链下或者分片。就好像组建一个团队,首先考虑的应该是把每个人的能力发挥到最大, 而非一旦有新的任务了, 就直接去扩充团队。因为不管网络怎么拆分, 最终划分的单元始终会遇到扩容的问题。以分片为例, 每个分片可以理解为一个独立的区块链网络, 如果每个分片的可伸缩性足够强, 就可以极大地减少分片的数量, 降低分片间通信的成本, 此外, 由于分片聚集的算力较大, 安全性也较高, 同时整个网络的结构也会简单, 好维护。

    简而言之, HLC开发团队一直以来理解的经典的区块链, 应该是自由、公平、安全、高效的区块链, 我们称之为经典的区块链设定。

    HLC公链底层的Block DAG(区块图)

    什么是Block DAG

    我们HLC公链采用的Block DAG 首先不是一个特定的共识协议, 就跟区块链也不是指特定的一个项目一样, 是相对于区块链而言的一类分布式加密账本技术。狭义的Block DAG 指图式的账本存储技术, 就跟狭义的区块链指的是链式账本技术。但是更广泛的理解指的是整套图式账本的协议或框架, 对标区块链是基于链式的账本的协议或框架。

    研究过HLC在西安和上海测试新闻的技术爱好者一定发现,Block DAG 和区块链其实没有本质的区别。Block DAG 就是区块链在出块率较高时, 分叉较多时的区块链, 所以Block DAG 其实是更一般情况下的区块链, 而区块链是Block DAG在出块率较低时的特殊情况。唯一的区别是, 区块链会把最长链之外的区块全部抛弃, 而Block DAG 会保留所有的区块, 这也就是为什么Block DAG的吞吐量可以很高的原因之一。

    值得注意的是, HLC技术小组特地提到Block DAG 而非 DAG, 其实是在强调Block DAG 节点是通过完全去中心化地加入网络以及得到奖励的, 目前看来只有PoW可以做到这点, 所以可以看到Block DAG的协议基本上都基于PoW。这正是2018年以来行业人士突然意识到BLOCK DAG厉害的原因。强调有没有区块本身意义并不大, 因为完全可以一个区块只存放一笔交易, 区块链也可以这么做. 事实上, 目前知名的三大DAG项目IOTA, OByte, NANO的账本都是DAG, 只不过不需要打包区块,因为每笔交易就是图中的一个节点。也因此, 许多人认为DAG的账本就是没有区块的, 这明显是一种误区。

    为什么HLC的Block DAG 满足经典的区块链设定

    Block DAG除了是最直观的和经典区块链模型兼容性最强的扩容方案之外, 最关键是满足我们理解的经典区块链设定:

    1. 自由

    BlockDAG 的网络是不存在任何特殊节点的, 也不对节点在线与否做要求。

    1. 公平

    BlockDAG 跟普通区块链最大的区别在于, Block DAG是合作机制, 而区块链是竞争机制。由于挖出单个区块的成本相对较低, 能在可以接受的预期时间内得到应有的奖励, 所以矿工没有必要非得加入某个矿池。事实上, 合作机制还可以避免自私挖矿, 而自私挖矿严格也可以理解为公平性的问题。

    1. 强容错性

    容错性严格意义上来讲是共识的问题, 即使是BlockDAG如果采用最长链的共识算法, 同样也无法保证50%的容错性。Block DAG 作为一个技术类别, 我们评价它的安全性应该是以它能达到的上限为准, 事实上, 从GHOST协议到后面的SPECTRE, 以及最新的PHANTOM 和 CONFLUX都是基于最重链规则, 能达到跟比特币相当的50%容错性。

    1. 高伸缩性

    这点也许是最没有争议的, 因为DAG技术在区块链的运用就是为了解决高伸缩性。只是还是强调下DAG没法做到无限扩容, 因为网络的节点还是会存储所有的交易, 也会收到网络带宽等限制. 但是对于主流的Block DAG协议来说, 安全性已经和出块率无关了, 所以理论上只要网络以及节点物理性能能承受, 可以无限地提高出块率。

    HLC技术沙龙小结

    HLC技术小组从主流区块链扩容不同方案基于不同的设定开始, 总结出了我们理解的经典的区块链设定是什么, 最后解释为什么Block DAG可以满足经典的区块链设定,这也是HLC公链的技术理想。接下来,我们的专栏还要讲深入Block DAG的最重链规则, 解释为什么最重链能解决区块链的扩容问题。(DAG研究院 / 供稿 )

    声明:本文系入驻陨石财经的作者撰写,观点仅代表作者本人,绝不代表陨石财经赞同其观点或证实其描述。

提交成功!

提交失败