「知礦大學問答」礦工為何打包空塊?

買賣虛擬貨幣
欄目介紹
「知礦大學問答」是以問答的形式,邀請行業資深從業者,解答使用者挖礦相關的提問。提出好問題並被採納的使用者,將會獲得知礦大學精美周邊一份。

來自 @地攤小王子 的提問:

打包交易有手續費收入,為什麼會有礦工打包空塊呢?有人說打包空塊的礦工是製造比特幣網路擁堵的壞礦工,這種說法對嗎?

知礦大學小編 @owen 的回答:

比特幣的空塊是指,區塊中僅打包了創幣交易的區塊。在《如果區塊鏈會說話》一文介紹過,截止到目前,大約有9萬空塊,約佔目前區塊數量的14%。這其中很多空塊是在比特幣早期產生的,那時候用比特幣的使用者極少,鏈上幾乎沒有交易產生,所以礦工也只能打包空塊了。

後來比特幣鏈上交易多了起來,記憶體池一直有等待礦工打包的交易,這種情況下,為什麼礦工還會打包空塊? @地攤小王子 提問是針對這種情況的,以下的回答也是針對這種情況的。


 01 
陰謀論

首先,打包空塊的礦工是製造比特幣網路擁堵的壞礦工,這是徹徹底底的陰謀論

假設真的有攻擊者透過打包空塊的方式來造成比特幣網路擁堵,這種攻擊非常低效,而且需要投入大量的成本。

目前比特幣全網算力超過100e,全網礦工每天(24小時)大約挖出144個塊,每個塊打包交易的上限在4000筆左右。假設惡意礦工想控制10%的算力來進行“空塊攻擊”,他們需要控制超過10e的算力,這麼大的算力規模,不管是透過租用算力,還是買礦機來實現,都是一筆非常巨大的成本支出。

參考crypto51的即時(6月17日)資料來計算髮起攻擊的成本,crypto51給出了對比特幣進行51%算力攻擊每小時需要的成本,我們假設的是10%的算力,也就是這個攻擊成本的五分之一,每小時大約需要花費?53萬,攻擊成本非常高。當然這種攻擊,還是可以得到區塊獎勵回報的。

▲https://www.crypto51.app/?ref=block123

再來說“空塊攻擊”對比特幣網路破壞效果。

空塊攻擊難以對比特幣造成實質性的傷害,最終結果是損人利己、自討沒趣

假設比特幣網路已經很擁堵了,用10%算力進行“空塊攻擊”,相當於區塊大小被惡意礦工人為“縮小“了10%,實際效果是平均每個區塊能打包交易數量的上限”下降“了10%。比特幣網路如果實在太擁堵,又會反過來降低人們鏈上交易的需求,網路就變得不再擁堵了,這樣一來,“空塊攻擊”的效果就難以起到持續性效果。

綜上,“空塊攻擊”需要付出高昂的成本代價,在攻擊效果上也很難持續,打包空塊是礦工發起“空塊攻擊”的這種言論是不明真相者的陰謀論

礦工打包空塊的真相是什麼呢?


 02 
真相

礦工挖礦是一場比拼速度的競賽。不僅要看誰先找到了符合系統要求的解,還要把找到的解,儘快廣播出去。快,對於礦工來說是一件貫穿始終的事情

一個區塊包含兩部分,區塊頭和區塊體。比特幣客戶端在對區塊廣播時,是將區塊頭和區塊體分開傳播的。區塊頭包含了版本號、父區塊頭雜湊值、時間戳、默克爾樹根雜湊值、難度目標、隨機數等6部分,它的大小隻有80位元組。交易資訊被打包在區塊體裡。一個滿載的區塊大小為1m,它是區塊頭大小的12500倍。

越多的資訊量,傳播延時越長。區塊頭和區塊體的大小差異,造成其他礦工會先接收到新區塊頭資料,一段時間(一般在10秒之內)之後,再收到區塊體的資料。

收到區塊頭資料還沒收到區塊體資料的這段時間,對於礦工來說,也是有成本的,礦機依舊在執行。

工為了充分利用這段時間進行挖礦,就不能往區塊裡填充交易,也就說礦工只能嘗試挖空塊。這是因為礦工沒有收到父區塊打包的交易資料,不知道父區塊打包了哪些交易,如果礦工往區塊裡填充交易,可能會把已經被父區塊打包的交易再次打包,這會造成區塊資料不合法,之前為此付出努力都變成了無用功。為了避免這種情況發生,在這段時間,礦工明智的做法是不打包交易挖空塊。如果這段時間剛好挖到新區塊,那麼挖出的塊就是空塊。

粗略統計了一下,在待確認交易記憶體池持續不空的情況下(從第二次減半之後至今),21萬多個區塊中,大約有0.75%的空塊。另外這部分空塊的出塊時間,與其父區塊的時間間隔基本都在幾十秒之內,這樣很好印證了我們前面給出的資訊延遲的解釋

 03 
總結

礦工打包空塊是出於經濟利益的考量,這樣做是礦工最明智的選擇。工為了充分利用這段時間進行挖礦,且避免與父區塊中打包的交易發生衝突,就不能往區塊裡填充交易,也就是說礦工只能嘗試挖空塊。打包空塊是惡意礦工為了對比特幣發起“空塊攻擊”,這是典型的陰謀論。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;