算力攻击的概率
Author:li, yang | 2018-04-04 16:13 | 比特币技术进阶, 工作证明与挖矿

算力攻击是一个概率问题,这里作简单叙述:

  • p = 诚实节点挖出block概率
  • q = 攻击者挖出block概率,q = 1 – p
  • qz = 攻击者从z个block追上的概率

a22dae50-fb92-11e2-95aa-3e346efdab40

我们假设p>q,否则攻击者掌握了一半以上的算力,那么概率上永远是赢的。该事件(攻击者胜出)的概率是固定,且N次事件之间是相互独立的,那么这一系列随机过程符合泊松分布(Poisson Distribution)。Z个块时,攻击者胜出的期望为lambda:

e386fa6c-fc20-11e2-8376-73d9a367bf98

攻击者在攻击时已经偷偷的计算了k个块,那么这k个块概率符合泊松分布(下图左侧部分),若k<=z,那么追赶上后续z-k个块的概率为(q/p)z-k,即:

d08dfcca-fc21-11e2-9740-907f2a89de88

展开为如下形式:

b08c63ec-fc23-11e2-8f43-c932daec9f7c

由于block的链式形式,随着块数的上升,攻击者赢得的概率呈指数下降。这是很多应用等待六个甚至六个以上确认的原因,一旦超过N个确认,攻击者得逞的可能微乎其微,概率值快速趋近零。

当攻击者的算力超过50%时,便可以控制Block Chain,俗称51%攻击。