值得信赖的区块链资讯!
比推数据  |  比推终端  |  比推英文  |  比推 APP  | 

下载比推 APP

值得信赖的区块链资讯!
iPhone
Android

【Press Release】Soteria : DAG系统区块大小和出块时间的通俗解析之一

soteria

大家好,今天来讲讲区块大小出块时间这个问题,顺便聊一下在Soteria DAG的设计里,我们是怎么处理这个问题的。

扩容是问题的关键

区块大小和出块时间是一对设计变量,直接决定了区块链系统的容量。拿比特币系统来举例:

比特币系统大致每10分钟挖出一个1MB的区块。而每笔交易平均占250字节。所以一个区块可以容纳4000笔交易。10分钟里有4000笔交易,于是就有了每秒7笔交易这个系统容量的著名数字。如果要扩容一千倍,我们可以把这两个参数调整一下吗?比如区块大小变成100MB,出块时间变成每秒一个,于是就有了新的系统容量数字:400000/60 ~ 每秒7000笔交易,秒杀paypal和visa。答案显然是NO。而且问题不在存储,而是在于网络传输

网络传输与安全基础

POW的安全的基础,是建立在个人算力不超过全网算力的50%这一基础上的。而潜在的必要条件是任何节点要和网络其他节点公平竞争。这就跟赛跑一样,大家得一起起跑才行。而区块链系统是个异步系统,POW的安全性只有系统状态就近同步的情况下才能保证。POW挖矿奖励其实有一个重要原则就是奖励矿工们尽快的把自己挖出来的区块广播出去,被网络接收;同时在使劲的接收从网络传回来的其他区块,而不是把算力浪费在成不了气候的链上(最长链原则)。这进进出出(TX/RX)其实本质是利用矿工在系统框架下的自然行为保证了网络的同步

从发卷考试到挖矿

大家小时候上学的时候都是经常考试吧。那个时候老师会把卷子给第一排的童鞋,然后一个一个的从前往后传。坐在最后一排的童鞋总是非常晚地拿到卷子(我以前个子矮做第一排没有这个问题)。那么好了,如果拿到卷子的童鞋就开始做了,那最后一排的同学拿到卷子的时候,第一排的同学都开始做好久了,搞不好还做完了,这个不公平。所以,老师要求每个同学拿到卷子的时候扣在课桌上,等到大家都拿到了,老师说“现在开始记时”,大家才能开始做。这就是公平竞争带来的同步。

微信图片_20190827230531.jpg

这里边有两个变量:第一个是传卷子的时间,第二个是做题目的时间。卷子可以是一张纸,也可以厚厚一沓。假设我们传卷子必须要一张一张的传,因为老师印卷子的时候是每一页都印了全班的量。所以,传卷子可以半分钟就传完了,也可以传10分钟都没有全发完。同样,题目也难可易,聪明的童鞋用计算器可以十分钟就做完了,严谨的童鞋完全口算,也许要两个小时才做完。


你现在估计明白我为什么说发卷考试了。传卷子就对应我们的区块大小,题目的难度就对应我们的出块时间。小小的区别在于:在区块系统里,没有老师给大家喊“现在开始记时”;而是,童鞋们拿到考卷就开始做。具体是这样一个节奏:每一个新产生的区块,网络传播的时间是半分钟(网络广播半径)。每个矿工都是收到这个新块验证无误了之后才开始在上边挖矿。 新区块就像一份新的试卷,网络传播就是发卷。而这个卷子发给所有同学需要至少半分钟,然鹅,每轮挖矿总有人比别的人早半分钟拿到试卷。但是矿工觉得这其实也无所谓,首先,题挺难的,考试时间是十分钟,晚拿到试卷半分钟影响不太大;其次,和在教室里考试不一样,大家的座次是随机的而且经常在换,先拿到考卷的人每次都不一样,所以也没问题。有些倒霉的矿工在TA挖出一个新块的时候半分钟在网络另外一边已经产生出来的新块还没有传播到他这里。于是他的新块就被无情的drop了,也就是变成了孤块。TA的工作就也被无情的浪费了。不过这个没办法,设计就是赢者通吃,但是TA在客观上其实对整个网络的安全也做了贡献(此处省去500字有关博弈论的解析)

扩容之殇

我们想要扩容,能做的是要么把区块的尺寸变大,要么缩短出块时间,要么两个都变。我们先试试出块速度从10分钟改成半分钟。这下乱了,考卷还没有发完有些童鞋就做完开始拿下一套考卷做了。于是教室里的混乱场面一度无法控制:满地的做了一半的考卷,大家都在忙着收新来的考卷。这个参数的调整导致出现大量的孤块和分叉,不仅大量的网络算力浪费了,而且更关键的是我们前边说的同步带来的安全模型也荡然无存了:每一套新的试卷,都没发给全班呢,就有一小簇童鞋做出来了。于是重新发下一套试卷。也就是说平均每个童鞋就只做了15秒的题,就得要么完成要么白做了。这个直接带来的结果就是只有一半的算力在做有用工作,另外一半在做错误的考卷。从网络攻击者的角度上看,如下图所示,TA其实只是在和一半的算力在拼,也就是说只要他的算力占全网络的33%,TA就有可能赢, 而不是我们平时所说的50%

微信图片_20190827230544.png

那我们再试试把区块大小增加到之前的二十倍,也就是也变成10分钟。同样的道理,每套卷子的页数多了, 发卷子的时间变长了,也就是传输的时间变长了,而做卷子的时间不变,也就是出块的速度不变,那最后教室里还是同样的混乱:仍然出现大量的孤块和分叉,以及造成了相似的算力浪费。于是我们可以看出来,只要传输速度和出块速度可比,系统一开始设计的很多特性都无法保证了,特别是安全性。这两个参数不可比的时候就可以了吗?比如把区块大小增加4倍,离20倍还挺远,可以吗? 然,也是不太行的。因为区块的大小变了,等于我在两套协议下工作,我更改的那一刻之前就有一大堆部署兼容等等的各种软件工程和社区的问题需要考虑和处理。这个是个非常荆棘的道路,我们找个机会在《StoteriaDAG和分叉的通俗解析》中仔细的科普。不管如何,大家现在应该明白了扩容这件事其实是这两个参数互相制约,互相作用之下的妥协结果。这个问题在DAG的环境下就更加有趣了。

包容之美

我们做BlockDAG,其中一个重要的目标其实就是扩容。我们前边讨论已经显见:扩容被一对互斥的参数制约。他们之所以在blockchain系统里表现的这么复杂,说到底还是网络同步赢者通吃这两条原则导致的。试想,如果后排的童鞋收到卷子的时候,即使前排童鞋都做完了,已经要下一套试卷了,他们仍然坚持做完并且得到心仪的分数,这样没有喇嘛多的孤块儿和分叉,这将多么美好啊。BlockDAG就是解决了这个问题,矿工们可以并行的挖矿,不用担心别人挖出来新的区块之后,自己这个新块就没用了;而是全心全意的继续挖矿,并及时的把挖出来的区块广播出去。下一篇连载我们会详细讨论在DAG的前提下,这两个参数是如何互动的。


说明:比推所有文章只代表作者观点,不构成投资建议
原文链接:https://www.bitpush.news/articles/558053

比推快讯

更多 >>

下载比推 APP

24 小时追踪区块链行业资讯、热点头条、事实报道、深度洞察。

邮件订阅

金融科技决策者们都在看的区块链简报与深度分析,「比推」帮你划重点。