比特幣挖礦是一個有趣的話題,沒有進(jìn)行調(diào)查的話一開始會難以理解。關(guān)于挖礦的一個特殊主題是空塊,人們經(jīng)常好奇為什么礦池要挖空塊。
重新討論空塊
礦池是比特幣礦工的集合,礦工聚集在一起找到并驗證約每十分鐘產(chǎn)生的區(qū)塊。大多數(shù)的時候,當(dāng)?shù)V工挖出一個特定區(qū)塊時,區(qū)塊是填滿待確認(rèn)交易的。礦工得到12.5BTC的獎勵和這個區(qū)塊的手續(xù)費(fèi)。在早期,區(qū)塊不是很滿,因為比特幣不像現(xiàn)在這么受歡迎。最近區(qū)塊已經(jīng)滿了,并經(jīng)常達(dá)到1MB最大區(qū)塊大小。
在網(wǎng)絡(luò)上挖出來的區(qū)塊不僅有填滿交易的區(qū)塊,還有空區(qū)塊??諌K實際上也有一筆交易,我們稱之為coinbase交易,位于每個區(qū)塊的第一部分。礦池挖空塊的主要原因是,他們一直在不停進(jìn)行運(yùn)算。人們最大的疑慮是,這些致力于挖空塊的礦工導(dǎo)致了這些天的交易擁堵。
不間斷的挖礦
挖礦是一項不停進(jìn)行的挖礦比賽。當(dāng)?shù)V工通過找到一個區(qū)塊的時候贏得比賽的時候,他們也準(zhǔn)備好要進(jìn)行下一場比賽,并且?guī)缀跏橇⒖涕_始再次競爭。
但是,當(dāng)一個礦池算出一個區(qū)塊,它必須下載并執(zhí)行一些功能才能驗證包含的交易。與此同時,礦池也收到下一個廣播的區(qū)塊頭(連接到一個區(qū)塊80字節(jié)的數(shù)據(jù)),于是礦池開始致力于下一個區(qū)塊。不僅是礦工致力于挖礦,他們還清點競爭者挖到的區(qū)塊。礦工不會停止休息,他們希望可以不斷挖到盡可能多的區(qū)塊。
這有點像是一位贏得Daytona 500 的全國運(yùn)動汽車競賽協(xié)會車手還希望在Talladega 比賽上獲得領(lǐng)先位置。計算機(jī)科學(xué)教授兼比特幣愛好者Jorge Stolfi簡單解釋了礦工為什么要挖一個空塊:
“交易手續(xù)費(fèi)是為了獎勵礦工將所有他們能打包的交易打包到他們的候選區(qū)塊中,”Stolfi解釋說,“但是,一個礦工可以在沒有拿到N個區(qū)塊的時候,就開始挖N+1個區(qū)塊,這是因為他只需要拿到區(qū)塊N的哈希值,并通過特定的技巧快速得到它?!?/p>
“在這種情況下,礦工必須以一個空塊N+1開始,即使有些交易正在他的隊列中等待打包:因為,不知道區(qū)塊N內(nèi)容的情況下,他無法檢查這些交易是否有效。如果他是幸運(yùn)的,他也許能算出這個區(qū)塊N+1,甚至在他完成下載區(qū)塊N的內(nèi)容之前。這就是為什么會有空區(qū)塊。”
超過87000個空區(qū)塊
從比特幣創(chuàng)立以來,空塊非常的常見。例如,從創(chuàng)世塊開始一直到第360189個區(qū)塊,區(qū)塊鏈上已經(jīng)挖出了85295個空塊。這意味著從2009年開始到2015年6月——約23.68%的區(qū)塊是空塊。挖一個空塊投入的工作量與填滿區(qū)塊達(dá)到最大容量投入的工作量沒什么不同。從2015年開始,挖空塊的數(shù)量已經(jīng)減少,一些礦池表示他們完全不挖空塊。到目前為止,只有1筆交易的區(qū)塊是第87885個區(qū)塊。
根據(jù)Bitfury Analytics的數(shù)據(jù)顯示,Bitfury 礦池選擇不挖空塊。
礦工選擇挖空塊的想法在某種程度上是正確的,但是否是壞事又是一個不同的故事。從早期開始,一直存在關(guān)于區(qū)塊的爭論。