Odaily星球日报:DAG系统区块大小和出块时间的通俗解析之二


大家好 , 上次分享我们讲解了区块大小和出块时间跟扩容的关系 ,我们特别的阐述了在区块链的系统中这两个变量是如何互动和制约的 。 今天我们会详细讨论在DAG的系统中这两个变量的关系 , 以及在Soteria DAG的设计里 , 我们是怎么处理这个问题的 。
并发下的亲子关系 上一篇我们讲到 , 在BlockDAG区块图的大背景下 , 因为没有赢者通吃的这一限制 , 于是矿工们可以并行的挖矿 , 并及时的把挖出来的区块广播出去 。 网络的传输导致了延迟 , 所以在网络的任何一个地方我们能听到的其他矿工的广播也可能是不一样的 。 不过没关系 , 对于我们收到的块 , 我们想尽办法把他们纳入到我们的区块图里就行了 。 而我们下一个要挖的新块一定要引用我们区块图里的每一个还没有被引用的块(也就是叶子节点) 。燃鹅 , 你会发现我们可能收到下图这样的一些区块 , 他们的引用都不一样 , 而且他们都是诚实节点挖出来的合法区块 。 这是怎么回事儿呢?这正是由我们之前谈到的区块大小 , 传输时间和出块时间所导致的 。
Odaily星球日报:DAG系统区块大小和出块时间的通俗解析之二
本文插图
假设上边这个状态是下图里节点B所观测到的状态 。 那么之所以每个收到的区块的父辈链接不同是因为信息在网络上传播耗时不同所导致: 假设网络因为地理或者逻辑的链接被切分成三个传播区域 , 绿色的区域夹在红色的和蓝色之间 , 信息从绿色区域传到红色或者蓝色区域有一定的延迟 , 蓝色和红色区域之间传送信息要经过绿色区域所以延时更大 。 为了简单 , 我们就认为这种跨区域的延迟是临区域延迟的两倍 。 节点A , 节点B和节点C分别生成了区块a , 区块b和区块c(这几个区块的父辈链接暂且不讨论) , 他们马上把区块向网络的所有方向广播出去 。 在红色区域的节点D和在蓝色区域的节点E和节点F都会在不同时间收到这些区块 。 因为节点ABC在网络上相对于节点D和节点E/F的网络位置 , 带宽 , 延迟都不一样 , 所以他们收到完整的区块abc的时间也不一样 。 所以在某个时刻 , 节点D只收到了区块a和区块b 而区块c还在传播的路上;节点E/F只收到了区块b和区块c , 而区块a还在路上 。 节点B最为和出块的节点最近的节点 , 除了他自己生成的区块b以外 , 所有其他的区块也都收到了 。
Odaily星球日报:DAG系统区块大小和出块时间的通俗解析之二
本文插图
当节点D , E , F开始挖下一个区块的时候 , 根据“包容”的原则 , 他们会把新的区块的父辈链接锁定在他们刚刚收到的这些区块上 , 然后再马上广播出去 。 也就是 , 节点D生成了一个链接在区块a和区块b的区块d , 节点B生成了一个链接在区块a,b,c上的区块b' , 而节点E和节点F分别生成了链接在区块b , c的区块e和区块f 。 这恰恰是之前我们看到的BlockDAG的状态 。 很明显 , 区块a , b' , e , f之间不可能有任何链接 , 也就是说他们都是一代的 , 或者说他们都是兄弟姐妹 。 跟之前区块链的构造里“独生子女”的政策比起来 , 在区块图的环境下会出现“多子多福”的情况了 。 我们没有调整区块大小和出块速度 , 就自动扩容了 。 而兄弟姐妹的数量就反映着我们扩容的能力 。 我们暂且叫它K 。 为了科学地描述K , 我们给出如下的表述:对于任何一个节点 , 当它在时间t的时候产生了一个区块b;而网络对区块的最大传输延迟为Dmax , 即在任何两个节点完成传输一个标准大小的区块所需的时间;那么在如下这个区间:
【Odaily星球日报:DAG系统区块大小和出块时间的通俗解析之二】[t-Dmax, t+Dmax]
里面整个系统里生成的区块都应该是区块B的兄弟姐妹 。 这个非常好理解:在t时刻 , 因为网络传输 , 所有在 [t-Dmax,t]这段时间里产生的区块还没有传到这个节点 , 所以在生成B的时候不会把这些区块当成父辈节点用来链接 。 同理 , 在[t,t+Dmax]这段时间里开始挖矿的节点也因为传输延迟 , 还没有听到区块B , 所以那些节点生成的区块中也不能把B当作父辈节点来链接 。 那么 , 如果系统的出块速度是r的话 , 那么平均下来 , 这段时间产生的区块数量的上限就是:


推荐阅读