比特币史话·64 | 赌徒的破产(5): 泊松分布

(西莫恩·德尼·泊松,法国数学家。图片来源于网络)


前情回顾:
比特币史话·61 | 赌徒的破产(2): 薛定谔的猫
比特币史话·62 | 赌徒的破产(3): 双花欺诈
比特币史话·63 | 赌徒的破产(4): 算力对决

正文:
现在让我们把视角从挑战者一方切换到擂主一方。中本聪很清楚,挑战者之所以迟迟没有发起进攻,是因为他的算力不如当前全网诚实算力,出手并无必胜把握,必须等待时机。反之,当攻击者掌握的算力大于诚实挖矿算力,也就是攻击者算力大于总算力的50%,比如51%的算力,那么他出手必胜。这就是所谓的“51%算力攻击”。但事实上,“51%算力攻击”其实是“双花攻击”或者“共识攻击”的同义词。要成功实施该攻击,并不必须掌握高达51%的算力,而是可以在掌握比这小的多的算力的情况下,通过赌概率来成功实施该攻击。
中本聪接下来要推算的,就是如何让这位赌概率的攻击者成为一名失败的、破产的赌徒的策略。这个策略包含两点
第一,接收方每次收款都要生成一个新的比特币地址给到发送方(潜在的攻击方),这样一来,接收方就把开始比赛的发令枪拿到了自己手里。正如中本聪在比特币白皮书中所写的,“接收者生成一个新的密钥对,并在签署交易前不久(才)将公钥(注:应更新为“地址”)提供给发送者。这可以防止发送者提前准备一条区块链,通过不断地进行运算直到幸运地取得足够的进展,然后再执行交易。一旦发出了交易,不诚实的发送者就开始在包含其交易替代版本的平行链上秘密工作。”
站到诚实的最长链一边看,敌在暗处而我在明处,如果不能掌握开始比赛的发令枪,那么攻击者就会通过“抢跑”而获得不公平的先发优势。之前我们已经了解到,比特币地址一旦付款,其公钥就将暴露在区块链上,所以一个比特币地址用于付款最好只用一次,不重复使用。现在我们又了解到了,为了避免遭受双花欺诈,一个比特币地址用于收款最好也只用一次,不要重复使用。综合起来,一个地址无论收款还是付款,只用一次,绝不重复使用,这是最安全的使用方式。
比如对于一个电商应用,最好为每一个订单生成一个新的比特币收款地址。为了减轻管理大量地址和私钥的负担,可以考虑采用分层确定性钱包(HD钱包)技术。
第二,接收方等待一定的区块数量,也就是区块时间,来确认到账。“现在我们考虑新交易的接收者需要等待多久才能确定发送者无法更改交易”[比特币白皮书,2008]。这是一场对赌,但是主动权完全掌握在接收方手中,因为等待多少个区块时间才进行到账确认这件事儿,完全是由接收方定的。这是一场耐力的比拼。在敌暗我明的情况下,接收方胜算几何呢?中本聪引入了大名鼎鼎的“泊松分布”(Poisson distribution)。
中本聪指出,在接收方看到交易被写入到一个区块中并在后面又增加了若干“加固”区块之后,“他并不知道攻击者取得的确切进度,但是假设每个诚实区块花费时间符合平均期望,那么攻击者的潜在进度将是一个泊松分布”,而这个泊松分布将具有一个数学期望,期望值为“加固”区块的数量乘以算力之比。


(泊松分布。图片来源于网络)

1837年,法国数学家、几何学家和物理学家西莫恩·德尼·泊松(Simeon-Denis Poisson, 1781-1840)发表了论文《关于判断的概率之研究》,提出了一种随机现象的分布,这就是日后在统计学和概率论中占据一席之地的“泊松分布”。泊松分布是一种离散概率分布,描述了单位时间或空间内发生给定数量的随机事件的概率,如果这些随机事件以已知的常数平均速率发生,且独立于距上一次事件发生的时间。[wikipedia]
哈希计算速率有一个很良好的特性就是正比于算力,如此,找到工作量证明的速率也就是区块生成的速率也就稳定地正比于算力。而且,每次哈希计算彼此都是独立的,且与历史数据无关。恰好满足泊松分布的成立条件!如果更换了共识算法,不再使用基于工作量证明的哈希计算来标定区块生成速率,那么就改变了区块链延长的概率特征,很可能就不再满足泊松分布的成立条件,也就不适用于中本聪接下来计算的“几个区块确认”的全部概率推算方法了。对于这些非PoW共识算法的区块链而言,不分青红皂白地套用“XX个区块确认”,实在是一种非常盲目和滑稽的表现。
泊松分布就像一个夜视镜,让潜伏在伸手不见五指的暗夜之中的攻击者无所遁形。攻击者可能取得的每一种可能的进度(区块数)的概率,正是泊松密度函数(Poisson density)。那么,把每一种可能的进度下挑战成功的概率(赌徒破产问题)乘以取得该进度的概率(泊松密度函数),然后将所有可能性遍历求和,就得到了攻击者通过赌概率的方法最终成功完成攻击的可能性。具体的数学公式中本聪已经写在了比特币的白皮书中,诸君若有兴趣可自行查阅。
中本聪给出了几组试算结果。显而易见的是,随着攻击方算力占比的变化,所需等待的区块确认数也会变化,并非一个定数。并且这个数字和我们心里所接受的“安全”概率也有关系。假设我们能够接受把双花攻击成功可能性不超过千分之一定义为“安全”,那么就有下面的几组数据:
攻击方算力占比:10% => 安全的区块确认数:6攻击方算力占比:15% => 安全的区块确认数:9攻击方算力占比:20% => 安全的区块确认数:12攻击方算力占比:25% => 安全的区块确认数:16攻击方算力占比:30% => 安全的区块确认数:25攻击方算力占比:35% => 安全的区块确认数:42攻击方算力占比:40% => 安全的区块确认数:90攻击方算力占比:45% => 安全的区块确认数:341
业内流传的所谓“6个区块确认”,仅仅是源于中本聪列举的一系列计算结果的起点是10%和6这一巧合。显然,当年中本聪所设的攻击算力占比10%,是一个相对宽裕的红线。今天的比特币全网算力已经足够高,高到大多数人根本没有资本和实力来与之抗衡,因此,安全的区块链确认数就可以适当下调,就像coinbase公司调整为3个区块确认那样。
【未完待续】(公众号:刘教链)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇