论文1-----Monoxide:Scale out Blockchains with Asynchronous Consensus Zones

声明:<本篇论文是本人读此篇论文后的感想,与原论文无关,图片来源于网络与论文>
论文名称:以异步共识组来拓展区块链

1、传统区块链的特点
传统区块链的结构有一个主链,每个块里有确认的交易;
一个未确认的交易池存放交易;
有一个账簿来记录整个链的状态;
每个块之间通过Gossip 协议来传播;在这里插入图片描述
缺点是每个结点都需要复制大量的相同信息,消耗大量的资源,影响运算速度。在这里插入图片描述
为了解决容量以及速度的问题,类比操作系统中的单线程到多线程的发展,常用的扩展技术就是分片技术。
此篇文章大体用了也是分片技术,将整个系统分成了n个内部结构相同的(都是单链系统)共识组(Consensus Zone)。每个共识组的运行都互不影响。
在这里插入图片描述
共识组的个数n = 2^k
k值是用户地址前k bit数据,每个bit都取值0或1,所有最多有2^k个
在这里插入图片描述
每个共识区的内部结构就是一个完整的单链结构。如下图:
在这里插入图片描述
1、每个"共识组"其组成部分和现在单链系统完全一致,有自己的账簿状态,区块的链条,未确认交易的集合,同步区块数据和交易数据的广播网络以及一堆全节点(包括矿工)。
2、各个共识组之间完全对等,无主次之分,除此之外这个网络就没有任何其它的角色了,没有之前那些方案提出的母链,根链之类的,也没有任何掌控全局的调度节点或验证节点。

一句话概括:
每个共识区有相同的、平行的、十分简洁的结构。

分片优点:
扩展了容量跟速度
抵抗了女巫攻击(去中心化系统自带特性)
是一个去中心化的操作
分片缺点:
造成了算力的稀释(一把筷子---->一根筷子)
如何跨区域交易的问题

###################################################################

如何跨区域交易:

根据一个简单的例子:
从A提取x代币传送给B。(A,B属于不同的共识区域)
可简单分为两个步骤:
1、在A区域执行取操作
2、在B区域执行存操作
在这里插入图片描述
根据上图可以大致可以发现,在A区域执行完后,无法预测B如何执行剩余操作,可能是在Block r+3 也可能在Block r+4…,从而会引出一个问题:该系统如何保持交易的原子性?
什么是区块链的原子性:
区块链系统,每一个交易都是一个原子操作。在单链系统中,就好比单线程,这个原子操作并没有被强调,因为交易本来就是被一个一个地确认和处理,系统无需任何额外的事情,原子性就自然有保障。而在 Monoxide 中,不同地址的状态在不同共识组中维护,互相不可见,其状态的更新也被两个不同的链驱动,就好比多线程。
解决方法:
通常为了协同多线程,有两种办法,一个是互相对涉及的资源加锁,一个是借由消息传递。本文选择了后者,不仅是因为加锁将阻塞对应的共识组的吞吐,严重影响性能,也是因为所有的单链区块链天生就有一个消息传递机制(未确认交易集合),从而避免引入新的实体。

在这里插入图片描述
例子:a withdraw operation p from payer a and a deposit operation φ to payee b
过程
Tx<p,a,φ,b> -----> validate------>create chaining-block and transaction block ----->
Pow puzzle ----->broadcast ------>Intra-zone(first) cross-zone(then)---->
derive relay Tx ( ψ := <φ,b, r>)----->picked by b miner----->verify its originate block
------>create chaining-block and transaction block----->broadcast---->execute
如何验证传到B中的交易是合法的?
大体思路:存储该交易的相邻结点,然后重新计算去默克尔树的根值,与A中的根值进行比较。
ψ := <φ,b, r>---->r := <s, k,t, p,{hq}>----->recalculate path{hq} and tx<φ,b>
------>match originate block

参数说明:zone index s;sharding scale k;height t;
pointer p (position in the list of outbound relay Tx)
path {hq} refers to hash values of all sibling nodes on the path from Merkle tree root to its entry;
最终原子性的提出:
下面提出的就是如果交易执行到B中执行的情况可能发生什么。在这里插入图片描述
所谓主动无效就是因为A中的区块产生了分叉,造成了源区块的无效,所以最终原子性的实现,主要的是如何解决分叉情况。
在这里插入图片描述
如上图可能会产生三种情况:
1、就是在B中的relay 交易还未执行的情况下,A中的块就已经显示无效,则此交易自动标为无效。
2、如果B中的relay交易已经绑定在了区块中,则规定区块是有效的但是交易无效。
3、如图情况:多个区域以及区块收到了影响,这种情况需要预防而不是处理
received at least λ confirmations.例子:
State S is G-Block b || State λ is G-block d-1------>执行blocks b 到d-1的所有交易,除了inbound relay Tx ---->下一个跨区域交易在保证State S~State λ都有效前提下进行出块。
解决办法是:
Delaying execution of inbound relay transaction for λ blocks. Thus, transaction y will be not be confirmed until block d, which makes such case unlikely since block a already received at least λ ,把所有情况都变成了第一、二种情况。
总结
其实最终原子性就是一个过程原子性,而不要求立刻执行,反而要求在一定区块数内是不执行跨区域交易的。
在这里插入图片描述
在这里插入图片描述
连弩挖矿的提出是因为当整个共识区分为多个共识区后,如同一把筷子分成了单个筷子,更易受到攻击,所以提出可以使用户用以往相同的算力处理更多个的区块,这些区块共用一个Nounce
在这里插入图片描述
在这里插入图片描述
下边是如何用公式计算得出其安全性与普通以太坊的防御能力是相同的。
在这里插入图片描述

发布了29 篇原创文章 · 获赞 5 · 访问量 4606

猜你喜欢

转载自blog.csdn.net/guoyihaoguoyihao/article/details/102807259