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





