Analysis of the Blockchain Protocol in Asynchronous Networks读书笔记(1)

Preface

好久没在CSDN写过Blog了,最近也是准备去读Phd了,最近看了两章Blockchain相关的最基本的文章,都是对于Nakamoto’s Consensus(NC)安全性的分析。当时读的时候发现目前也是很缺少相关的资料,因此写下读书笔记以备后面忘了了回头看。

因为内容很多,这篇Blog先讲一下这篇文章的Contribution和相关的Motivation。

Contribution

与这篇文章类似的还有另外一篇The Bitcoin Backbone Protocol: Analysis and Applications。这两篇文章的区别在于,后者考虑的是在没有延迟的情况下NC的security,前者考虑的是存在延迟的情况下NC的security。也就是说,后者假设当一个诚实节点挖出了更长的链(完成了PoW),其他诚实节点立马能知道这件事,并且丢弃自己的链接受那条更长的链。但是在大部分实际场景下,这个假设过于奢侈。随着时间的增长,链会越来越长,那么communication所需的时间也就越来越不能忽视。在考虑存在时间延迟的情况下,我们假设这么一个场景,在某个时间点,所有诚实节点的链的长度都 l l l,然后一个诚实节点 a a a挖出了更长的链 l + 1 l+1 l+1,它将自己的链广播给其他节点,但是由于存在网络延迟,这条长度为 l + 1 l+1 l+1的链需要一定的时间才能够到达其他节点。如果在这条链到达其他节点之前,有另外一个节点 b b b同样挖出了长度为 l + 1 l+1 l+1的链,那么它就不会接受即将到来的那条链,因为它们长度相同。这样至少会有两个不同的诚实节点没办法converge on同一条链,也就是它们没办法达成共识,这是不安全的。所以考虑延迟的NC需要保证比不考虑延迟的NC更高的security。这篇文章便是证明在时间延迟存在上界的情况下,NC依旧能够满足 T T T-consistency这个最重要的安全性属性。

Background

首先我们来了解一下什么是 T T T-consistency。下面是文章中的定义:请添加图片描述
我们可以这样去理解这个定义,如果NC满足 T T T-consistency,那么任意两个时刻的任意两条链,去掉最后的 T T T个块,剩下的两条链中一条较短链以压倒性的概率是另外一条较长链的子链(不满足的概率是 T T T的negligible函数)。

基于这个定义,文章提出了一个问题:“Does Nakamoto’s Protocol Achieve Consistency?”,并且也给出了他们的答案:

  • Fully Asynchronous Setting(完全异步的环境下):不能。因为在这种环境下Adversary可以无限delay诚实节点的信息,相当于切断了诚实节点之间的communication。在这种环境下当然不能达到 T T T-consistency的要求。
  • Partial Synchronous Setting(部分同步(异步)的环境下):可以,只要满足 p ≤ 1 ρ n Δ p \leq \frac{1}{\rho n \Delta } pρnΔ1。其中 p p p表示挖矿系数, ρ \rho ρ表示恶意节点的比例, n n n表示节点的数量,因此 ρ n \rho n ρn表示恶意节点的数量。 Δ \Delta Δ表示延迟时间的上线。

对于不等式 p ≤ 1 ρ n Δ p \leq \frac{1}{\rho n \Delta} pρnΔ1的解析:为什么需要满足这个条件,NC才是满足 T T T-consistency的。我们可以先看 Δ \Delta Δ,等式表明, Δ \Delta Δ越大,便需要 p p p越小。我们想想一下在某个时间点所有的诚实节点已经converge在同一条链上,这时候链的长度是 l l l,并且在这个时间点有一个新的节点挖出了新的块,这时候它的链长度为 l + 1 l+1 l+1,并将这条链broadcast给其他节点,这条链在 Δ \Delta Δ个时间戳之后到达。但是如果 p p p没有足够小,导致在这 Δ \Delta Δ个时间戳期间,其他节点也挖出了块,等到链到达的时候它们自己的链长度至少为 l + 1 l+1 l+1,因此不会accept到达的链,这导致最后大家的链并不能converge到同一条。如果在期间由于 p p p没有足够小,有节点挖出了 T T T个块,那么这个NC就不满足 T T T-consistency了。

我们再考虑 ρ n \rho n ρn,其实这个很好理解,如果 ρ \rho ρ足够大(大于50%)。那么恶意节点能够挖出一条比其他诚实节点挖出的链都长的链,它可以先将这条链藏起来,等挖到一定长度的时候再放出来,因为它比其他链都长,并且有很大不同(因为藏了很久了),因此只要有一个诚实节点accept了它便会导致NC不满足 T T T-consistency。

这篇文章对上述第二种情况Partial Synchronous Setting的情况进行了分析证明,最主要的定理下面这条:
请添加图片描述
简单理解这定义那便是,只要 α , β \alpha,\beta α,β Δ \Delta Δ这三个参数满足一定的关系,NC便是满足 T T T-consistency的。而 α , β \alpha,\beta α,β这两个参数与 p , ρ , n p,\rho, n p,ρ,n有关,因此相当于 p , ρ , n , Δ p,\rho, n, \Delta p,ρ,n,Δ满足一定关系。定理1.1与不等式 p ≤ 1 ρ n Δ p \leq \frac{1}{\rho n \Delta} pρnΔ1其实是同理的

除了这个定理,这篇文章还顺带证明了一些其他次要的东西。首先我们先来了解一下有关NC的四个安全属性:

请添加图片描述

  • consistency:在上文已经分析过了
  • future self-consistency:这篇文章自己增加的一个属性,它主要是想保证一个“链震荡”的问题。与consistency不同的是,consistency保证的是在同一个时间点两条不同的链最多有T个不同的块,future self-consistency保证的是在不同时间点两条不同的链最有有T个不同的块。“链震荡”是指有A,B两条链,所有诚实节点在奇数回合用A链,然后在偶数回合用B链。这样的NC也是满足consistency的,但是不满足future self-consistency。作者提出这个安全属性是因为“链震荡”在很多应用例如bitcoin上是不安全的
  • g-chain-growth:链增长属性,保证的是链的增长速率
  • μ \mu μ-chain-quality:链质量属性,保证一条链中起码有一定的块是由诚实节点挖出来的,不能全部都是由恶意节点挖出来的

我们在定理1.1中提到了NC需要满足一定的条件才能满足 T T T-consitency和future self-consisency。但是NC不需要这样的条件也能满足 g g g-chain- growth和 μ \mu μ-chain-quality。我们也很好理解,网络中存在延迟不影响链的增长,只要 p p p不为0,链一定会增长。同理,网络中存在延迟和恶意节点的数量也不影响链的质量,因为只要诚实节点能挖出块,任意链中一定会存在诚实节点挖出的块(只不过可能诚实节点挖出的块比例要低一点罢了)。在这基础上,作者拓展了定理1.1

请添加图片描述
在这里需要注意 γ = α 1 + Δ α = 1 1 α + Δ \gamma = \frac{\alpha}{1+\Delta \alpha} = \frac{1}{\frac{1}{\alpha} + \Delta} γ=1+Δαα=α1+Δ1,它是 α \alpha α的discounted版本。将等式进行简单变换我们可以看出来,这里是将 Δ \Delta Δ也当作挖矿时间所计算出来的概率( 1 α \frac{1}{\alpha} α1是诚实节点挖出块所需要的回合数, Δ \Delta Δ是传输时间)。也就是说,这是假设诚实节点在传输链的过程中不进行挖矿所计算出来的概率。后文会有相关的分析方法(假设诚实节点在传输过程中frozen)。

最后基于定理1.2作者还给了个推论:

请添加图片描述
其实就是将定理1.2翻译了一下,就是说只要 ρ < 2 \rho < 2 ρ<2,对于任意的 n , Δ n,\Delta n,Δ都能找到相关的参数使得该NC满足上面所说的4个安全属性。

到此为止将文章的Introduction讲完了,因为能从文章读出来的东西还是蛮多的,下一篇Blog再讲文章所使用的formulation和相关的notation。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值