天天看點

比特币 轉賬交易為什麼要等6個區塊确認才算到賬 安全 以太坊12個區塊

一、背景-雙花

成功發動51%算力攻擊後,可以實作雙花

假設小黑給大白發了 666BTC,并被打包到了第 N 個區塊。

沒過幾分鐘,小黑反悔了,通過自己控制的超過 50% 的算力,發起了 51% 算力攻擊,通過剔除發給大白的 666BTC 那筆交易,重組第 N 個區塊,并在重組的第 N 個區塊後面繼續延展區塊,使之成為最長合法鍊。

比特币 轉賬交易為什麼要等6個區塊确認才算到賬 安全 以太坊12個區塊

這就是雙花的過程,小黑發給大白的那 666BTC 被廢棄。

從上面的例子中,我們可以看到,即便大白當時收到了小黑轉賬過來的 666BTC,交易被打包上鍊,這筆交易也是有可能被廢棄的。

為了避免雙花造成的損失,一般認為,等 6 個區塊确認後的比特币交易基本上就不可篡改了。也就是說,如果小黑發給大白的 666BTC 這筆交易被打包在了第 N 個區塊(第1個區塊确認),大白等到第 N+5 個區塊出現的時候(第6個區塊确認),這筆交易基本上就不可篡改了。

二、為什麼是等6個區塊确認

由于算哈希是随機的,加上網絡有延遲,是有同時挖出兩個區塊的可能。

然後不同的礦工根據他們收到的區塊不同繼續挖。

然後還是有可能再出現分叉,但是幾率會越來越小。

一般認為一個區塊在最長鍊上後面跟了五個區塊,就不可能被分叉了。

與其說是 6 個區塊,倒不如說是 1 小時(6*10 分鐘),這個值的意義在于,即使算力第一名節點的算力再強,也不可能讓第二名提前 1 小時挖礦,然後自己還能比第二名先挖出來。

如果支出方想要進行雙重支付,他必須控制了非常大的算力,不然其他的挖礦者不會幫助它,因為他們都需要在最長的分支上工作才能得到獎賞。

比特币 轉賬交易為什麼要等6個區塊确認才算到賬 安全 以太坊12個區塊

假設誠實節點p找到下一個區塊的機率小于0.001,

假設攻擊者擁有10%的系統算力,6次确認交易的安全性高于99.9%

比特币 轉賬交易為什麼要等6個區塊确認才算到賬 安全 以太坊12個區塊

三、以太坊

It will be secured after n−1 successive blocks appended (n-th confirm,n=6 in Bitcoin and 12 in Ethereum).

四、PBFT

PBFT(practical Byzantine Fault Tolerance) has been shown to achieve liveness and safety properties in a partially asynchronous model, thus unlike Pow, once the block is appended it is confirmed immediately.

(https://blog.acolyer.org/2017/07/05/blockbench-a-framework-for-analyzing-private-blockchains/)

https://www.jianshu.com/p/2da3a9970387

https://www.zhihu.com/question/55581569

https://blog.csdn.net/u013288190/article/details/107590146

繼續閱讀