什麼是比特幣空區塊?比特幣空區塊是怎麼產生的?為什麼會產生比特幣空區塊呢?比特幣空區塊有什麼作用?比特幣空區塊是威脅嗎?
比特幣網路中的「空區塊」是一種僅包含礦工獎勵(coinbase)的特殊區塊,該區塊並未納入任何用戶交易。這種現象雖然看似浪費資源,但背後是礦工在挖礦效率與收入穩定性之間的機會成本之選擇。
下面,腳本之傢小編將給大傢帶來關於空區塊的形成機制、對比特幣網路的影響,以及如何透過技術與協議的改進,減少空區塊對網路效率與用戶體驗的影響。有需要的朋友一起看看吧!

引言
有時,你可能會註意到,一個新生成的比特幣區塊中隻有一筆交易——那就是coinbase 交易(這裡說的不是那傢交易所),目前這筆交易會為礦工帶來3.125 比特幣的獎勵。
(礦工收益會隨著「比特幣減半」有所減少)
但為什麼這樣的區塊會出現?這是不是某種對比特幣網路的攻擊?
事實上,一個完全空的區塊出現在比特幣網路已經不是第一次(像是在區塊高度 776,339 和 857116 都曾發生過)!這個區塊雖然被成功上傳到比特幣區塊鏈,但它並未包含任何用戶交易。
「空區塊」到底是什麼?它是比特幣網路的故障,還是某種必然現象?在本文中,我們將深入探討空區塊的形成原因、其對網路的影響,以及潛在的應對策略。

圖、空區塊示例(高度 857116)
(資料來源:https://mempool.space/zh/block/000000000000000000020a41a1d234191d5f86a051cfc105000a5163f6a58b82)註:常用的比特幣瀏覽器:mempool.com、blockchain.com、blockchair.com、blockcypher.com
礦工挖礦流程
- 新區塊的傳播與驗證:
- 當有礦工成功發現新區塊時,該區塊會被廣播到整個網絡,並分發到所有礦池
- 其他礦工需對新區塊進行驗證,像是檢查工作量證明(Proof of Work)是否正確以及區塊中的交易是否有效
- 更新記憶池(mempool):
- 礦工會從記憶池中剔除已被確認的交易,留下未被確認的交易
- 建立候選區塊:
- 礦工根據記憶池中的未確認交易,建立一個候選區塊,並引用前一區塊的哈希值,添加剩餘的交易
- 候選區塊中必須包含一筆 coinbase 交易,作為礦工挖掘成功後的獎勵來源
- 構建區塊頭:
- 礦工為候選區塊構建區塊頭(header),內容包含前一區塊的哈希值、時間戳、目標難度和隨機數(nonce)
- 計算哈希值:
- 礦工消耗大量運算資源,以不斷更新區塊頭中的隨機數(nonce),計算區塊頭的哈希值,目的是找到一個小於當前網絡目標值的哈希
- 廣播新區塊:
- 一旦找到符合要求的哈希值,礦工立即將新區塊廣播至網絡,供其他節點進行驗證
- 獲得獎勵:
- 如果新區塊被網絡接受,礦工將獲得區塊補貼(coinbase 獎勵)和該區塊中交易的手續費收入。
在某些情況下,為瞭降低網絡延遲的影響,礦工可能會快速生成僅包含 coinbase 交易的空白候選區塊,這種空區塊能有效鎖定獎勵,但無法處理其他交易。 (下段會詳細說明何為空區塊)
礦池是如何與礦工協作的
比特幣(Bitcoin)網絡的挖礦是一種通過暴力計算符合條件的哈希值來實現工作量證明(Proof of Work,PoW)的過程,其難度如今已經變得很高。就拿上述的 825999 區塊舉例,該區塊產出當時的全網難度約為 73.20 T。這是什麼概念呢?如果一個礦工擁有一個 1Ghash/s 效率的計算設備(這比常規的傢用顯卡效率快得多),那麼他需要約 3638791736 天(99693 個世紀!)才能成功挖掘到一個區塊。這幾乎是不可能獨立完成的。
因此我們有瞭礦池。礦池按照特定的分配方式(如,按工作量以及最近收益的移動平均值)為參與計算的礦工按照所貢獻的算力分配挖礦所獲得的收益(與此同時,礦池自己也會獲得分成)。為瞭計算一個區塊的目標哈希值,礦工必須首先從礦池獲得區塊中包含的交易信息等內容後,再通過調整區塊中的隨機數(nonce)等值,嘗試計算出符合目標要求的哈希值。區塊中包含的交易數量可能很多(從區塊鏈瀏覽器來看的話,一個區塊中可以容納 4,000 筆交易,有時候還要更多),因此典型上來講,礦池可能需要幾秒中的時間才能將這些編排的交易內容(礦工待解的“謎題”)整理並發送給礦工(其中還有網絡傳輸時間以及網絡延遲)。
什麼是空區塊
加密貨幣挖礦其實是一個計算打包的過程,礦工們首先需要進行算力競爭,誰先解出區塊難題誰就先獲得瞭記賬權,獲得記賬權的礦工需要把用戶廣播出來的交易信息打包到這個區塊中,隨後放到區塊鏈上傳遞下去。
而如果礦工獲得記賬權後,並不在區塊中打包交易信息,我們就將其稱作為空塊。空塊上不包含交易信息,隻是礦工利用它來獲得區塊獎勵。這種情況下,由於不包含交易,所以也無法獲得相應的交易礦工費/Gas費獎勵,因此礦工隻能獲得最基礎的爆塊獎勵。

孤塊是什麼
在區塊鏈網絡中,由於區塊在網絡中傳輸和廣播是需要一定的時間,如果兩個礦工幾乎同時發現瞭同樣高度的塊,那麼就會出現競爭關系。最終稍微晚一點誕生的區塊雖然也是正常運算產生的,但由於“最長鏈”原則,這個稍晚一些的區塊將無法成為主鏈的一部分,在比特幣網絡中,我們把這些挖得稍晚的區塊叫“孤塊”,是需要完全拋棄掉的,挖到孤塊的礦工也無法得到相應的區塊獎勵。
孤塊率越高將意味著挖到的無效區塊越多,收入也會隨之降低。因此如何降低孤塊率成為礦池和礦工們會去思考的問題,例如ViaBTC微比特礦池通過自行研發的比特幣客戶端,對比特幣網絡廣播和傳輸過程進行瞭技術優化,使得礦工能夠更快地發現和廣播比特幣新的區塊,降低瞭礦工挖礦的孤塊率,保障礦工收益。
叔塊是什麼
在以太坊中,也有“孤塊”這一現象的出現。但是由於以太坊的出塊時間比較短,為瞭防止礦池算力過大控制挖礦過程,同時避免算力的浪費,如果主鏈中的區塊願意接受這些稍晚產生的“孤塊”,那麼它就可以成為叔塊,被包容進接受它的主鏈區塊中,而這部分挖出叔塊的礦工也能獲得相應的叔塊獎勵。
叔塊機制的目的是為瞭更好地保護以太坊網絡的安全。相較於比特幣,以太坊的出塊時間要短很多,這樣很有可能會出現臨時分叉,在這種情況下,孤塊的大量存在會容易導致以太坊的主鏈可能不是“最重”的那條鏈,最終影響到主鏈的安全性,因此加入將“孤塊”變成“叔塊”的機制其實是一種更安全的行為。
這些挖出瞭包容叔塊的區塊的礦工能夠獲得相應的叔塊引用獎勵,大約為1/32的基礎挖礦獎勵。當然叔塊的產生也會有一些限制,叔塊必須是區塊的前2層-7層的區塊的直接子塊,並且隨著間隔越大,叔塊獎勵會越少,比如是前2層區塊的子塊也就是間隔1層可以獲得7/8的挖礦基礎獎勵,間隔兩層可以獲得6/8,以此類推。
總體來看,對於礦工而言,空塊的誕生會導致礦工費/Gas費的減少,孤塊率過高也就是無效計算過多將直接導致收入減少,叔塊引用將獲得一定的額外的叔塊引用獎勵。所以礦工在接入算力時,最好應該考慮一些孤塊率更低的礦池,從而更好地保障自己的挖礦收入。
空區塊的形成
空區塊的概念
在比特幣區塊鏈中,每個區塊通常包含多筆交易,這些交易不僅為網路增加價值,還支持比特幣作為支付處理系統的功能。然而,空區塊(也被稱為「單交易區塊」)隻包含礦工的 coinbase 獎勵,並未納入其他交易,因此也放棄瞭額外的交易手續費收入。
為瞭鼓勵礦工盡快開采區塊,礦池會在新區塊被定位後立即向礦工提供一個空白的區塊模板(以減少挖掘下一個區塊所需的時間,從而最大限度地提高硬體的哈希效率。),讓他們可以迅速開始下一輪挖礦(即使此時尚未收到新的交易數據)。在礦池給完區塊模板和寫入交易的過渡期間(通常隻有一到兩秒),礦工可能會「運氣極好」,利用這個空模板成功挖出一個新區塊,從而形成空區塊。
值得註意的是,空區塊並不會對比特幣網路造成威脅。即使區塊中沒有用戶交易,coinbase 獎勵仍會被生成,這不僅激勵礦工參與挖礦,還確保比特幣的供應逐步接近其 2,100 萬枚的上限。
空區塊內的資訊
空區塊雖然沒有包含用戶交易,但仍然記錄瞭一些資訊:
- 區塊頭:
- 區塊的基本資訊,例如版本號、前一區塊的哈希值、時間戳
- Coinbase 交易:
- 唯一包含的交易,即礦工的獎勵交易
- 該交易為礦工分配挖掘區塊的獎勵
- 默克爾樹根(Merkle Root):
- 即使區塊中沒有其他交易,coinbase 交易仍會生成一個默克爾樹根,用於證明交易數據的完整性
- 區塊大小與重量:
- 雖然空區塊的數據量較小,但仍有大小記錄
- 礦工地址(若有標記):
- 某些礦工會在 coinbase 交易中嵌入自己的識別信息,例如礦池名稱或地址
- 區塊高度:
- 區塊鏈中該區塊的位置(例如第 871732 區塊)
- Nonce 值:
- 礦工找到的隨機數,用於解開工作量證明的數學難題(Proof of Work 的解答)

圖、空區塊示例(高度 871732)
(資料來源:https://btc.tokenview.io/cn/block/871732?_gl=1%2aww3zil%2a_ga%2aMzc0NDE4MTQxLjE3MzQwNzIyMTQ.%2a_ga_0RCPHZPZ TE%2aMTczNDA3MjIxMy4xLjEuMTczNDA3MjI2My4wLjAuMA..&_ga=2.29097727.291129773.1734072214-374418141.1734072214)
為什麼礦工創建空區塊?
當礦工在上一個區塊生成後沒多久,礦池會在新區塊被定位後立即向礦工提供一個空白的區塊模板(通常時間落在幾秒內)時。此時,礦工面臨兩種選擇:要麼立即生成一個空區塊以獲得有保證的區塊補貼(例如3.125 比特幣),要麼花時間排序交易以增加手續費收入,但冒著在完成之前被其他礦工搶先挖出該區塊的風險。
這是礦工對「機會成本」的考量,若礦工花過多時間處理交易,而其他礦工率先完成該區塊,則不僅無法獲得交易手續費,連基本的區塊補貼也會損失。相較之下,若生成空區塊,雖然放棄瞭額外的手續費收入,但可以穩定地鎖定補貼。
上述段落中,我們有說明空區塊並不會對比特幣網路造成威脅。網路上有人認為空區塊就像「垃圾郵件」一般會對網路造成幹擾,但這種看法並不完全正確。空區塊確實不會處理任何待處理交易,但它們也不會造成混亂。相反的,這些區塊也要通過 Proof of Work 機制,並為下個區塊增加工作量證明的強度,為之前的所有區塊提供瞭更高的安全性,同時維持瞭網路的完整性。
註:雖然空區塊並不會對網路造成威脅,但倘若有高頻率的空塊可能表示網路沒有充分發揮其潛力
空區塊的影響
正面碰撞
提高網路安全性:
- 空區塊雖然不含用戶交易,但仍完成瞭工作量證明(Proof of Work),使下個區塊的計算難度增加
- 且每個空區塊的生成都會進一步鞏固瞭之前所有區塊的安全性,提升瞭抵禦雙重支付攻擊的能力
穩定礦工收入:
- 縱使沒有交易數據,礦工仍能獲得穩定的區塊補貼,這提升瞭礦工持續為此網路輸出的動機
加速挖礦效率:
- 礦池在新區塊被定位後立即向礦工提供一個空白的區塊模板,可以減少挖掘下一個區塊所需的時間
維持區塊鏈的連續性:
- 即使沒有交易數據,空區塊也能確保區塊鏈的「連續性」,防止網路中斷
負面影響
降低交易處理效率:
- 空區塊內沒有交易數據,無法處理待確認的交易,導致記憶池(mempool)中的交易累積
- 倘若遇到交易量高峰時,空區塊會進一步加劇網路擁堵,影響整體交易體驗。
降低區塊鏈吞吐量:
- 每秒交易數量(TPS)因空區塊而下降,降低瞭比特幣作為支付系統的可能性
用戶體驗與信任問題:
- 承上所述,空區塊可能導致交易等待時間增加,給用戶帶來不便
- 用戶對比特幣網路的期望與礦工優化利潤的行為之間可能產生矛盾情結,進一步損害用戶對網路的信任(礦工可以「選擇」采取這種方式來增加收入,但這種行為可能忽視瞭網路整體效能的需求,進一步強化瞭對利潤驅動的批評)
能源消耗與資源效率問題:
- 空區塊使用的能源幾乎與包含完整交易的區塊相同,這會引發對能源利用效率的質疑
空區塊的經濟學博弈
絕大多數比特幣礦工遵循最長鏈(Longest chain)原則工作:當礦工得知網絡上有一個新的有效區塊被發現時,礦工會希望基於這個最新產生的區塊繼續計算下一個區塊的哈希。但前面我們提到,完整的下一個區塊的信息可能需要幾秒鐘時間才能傳輸到礦工本地以供計算。在此期間,為瞭不浪費礦工寶貴的時間(以及算力),礦池通常會(預先)發送給礦工一個區塊的模版信息,該信息是隻包含一個區塊獎勵交易(coinbase transaction)的最小區塊數據,以供礦工立刻開始計算。而完整的待計算區塊的數據將在之後很快的時間發送給礦工。有的時候,幸運的礦工會在這(短暫的)幾秒鐘時間內,就基於這個最小的區塊模版,計算出下一個有效的區塊的結果。這個時候會發生什麼?大多數礦工會選擇將這個“空區塊”廣播到區塊鏈網絡,以獲得該區塊中的區塊獎勵。
在上面的場景中,當礦工計算出一個有效的“空區塊”後,礦工雖然無法獲得由於包含其他交易所帶來的手續費獎勵,但是礦工廣播交易至少會獲得確定性的由新區塊帶來的獎勵。同樣地,礦工還面臨著其他礦工也計算出有效區塊的壓力,對手礦工可能會先於自己將另外一個有效的區塊廣播到網絡中。因此,面對一個確定性的(但是可能較少)的獎勵,以及另一個有極大不確定性的較多的獎勵時,我想絕大多數礦工都會選擇廣播自己計算出的第一個區塊的。
值得註意的是,這樣的區塊由於不會包含其他任何的交易信息,並且還在區塊鏈中占用瞭一個區塊的位置,會被一些社區成員認為是一種垃圾信息以及對比特幣網絡的攻擊。針對這一點,有一篇發佈於 LinkedIn 上的文章很好地討論瞭這一點。文章中認為,盡管“空區塊”不處理任何內存池中的等待交易,但它們並沒有為區塊鏈網絡天價更多混亂,反而增強瞭所有先前區塊的安全性,並重申瞭礦工們維護網絡完整性的承諾。“空區塊”實際上是對比特幣巧妙激勵結構的證明。在這個系統中,每個決定,即使是區塊中沒有交易,也都有助於網絡的整體強度和韌性。空區塊並不常見,通常不是攻擊,也不是垃圾郵件,它們是礦工的戰略決策,凸顯瞭比特幣架構中內嵌的韌性和遠見。
減少空區塊的策略
減少空區塊的策略可從「技術面」、「協議面」談起:
技術層面的解決方案
- 采用 Compact Block協議,以減少區塊傳播時的數據量,使礦工能更快接收到完整的交易數據(詳情可參閱:A. Kim、J. Kim、M. Essaid、S. Park 和 H. Ju,“比特幣網絡中緊湊塊傳播延遲的分析”, 2021年第22屆亞太網絡運營與管理研討會(APNOMS),臺灣臺南,2021 年,第 17 頁。 313-318,doi:10.23919/APNOMS52696.2021.9562656。)
- 采用Erlay協議,以提升交易的傳播效率,縮短交易從記憶池廣播到礦工接收的時間
- 開發更高效的默克爾樹計算算法,縮短處理交易的時間,或讓礦工在挖掘新區塊時能快速生成含交易的默克爾樹,而不是僅使用空模板。
協議層面的改進
- 規定每個區塊至少需要包含一定數量或手續費總額的交易,否則礦工無法獲得完整區塊補貼
- 提高手續費在總獎勵中的占比,激勵礦工處理更多交易而非挖掘空區塊
這是壞事嗎?
比特幣網絡的整個重點在於處理交易。因此,空塊經常被批判為‘不良行為’,因為為網絡創造的價值非常小,並且加速通貨緊縮和從‘誠實’礦工那裡竊取勞動果實。
然而,這也可以被當作是為瞭平衡比特幣網絡的中心化趨勢:贏得一個區塊的礦池可以立即開始下一個區塊的挖掘工作,因為他們已經知道哪些交易被包含在區塊中。而其他礦工首先要下載的交易,然後生成一個不包含這些交易的新區塊。隻挖掘塊頭(block header)可以被認為限制瞭中心化的好處。
從技術上講,這很容易阻止,例如通過包含一種連接在塊頭中的所有以前的交易的coinbase哈希。近期空塊數量下降表明這一問題可以通過改進協議來解決,因為這些改進降低瞭空塊吸引力。另外,區塊獎勵的逐漸減少和對交易費的依賴增加都可能會讓挖掘空塊的利潤越來越小。
空塊數量下降
在過去幾個月裡,空塊的份額已經下降瞭,雖然所有礦池的計時並不全相同。其背後的理論原因是:挖礦軟件獲得提升,尤其是Bitcoin Core 0.12, 減少瞭由一個礦池開采的區塊的驗證與新非空塊挖礦之間的時間。
這些改善包括:
1.允許預先計算礦工驗證區塊中所有交易所需要做的一些工作,而不是在創建區塊的時候再做。
2.Relay Network配置改善:一種交易的技術簡化優先,幫助礦工決定區塊包含哪些交易。
3.Bitcoin Core GetBlockTemplate改善——個體礦工可以通過這種改善請求區塊的組成來優化挖礦。
結論
空區塊的產生主要由礦工為瞭追求效率和穩定收益而產生。在區塊定位後,礦池會立即向礦工提供空白的區塊模板,即使交易數據尚未完全傳播至礦工手中。空區塊的生成並非網路故障或惡意行為,而是礦工在考量機會成本後做出的選擇。
然而,空區塊對比特幣網路也帶來瞭一定的挑戰,包括降低交易處理效率、減少每秒交易數量(TPS)和增加能源消耗等問題。這可能導致用戶等待時間加長。為瞭減少空區塊的負面影響,技術層面可以采用如 Compact Block 和 Erlay 協議來提升交易傳播效率,而協議層面則可通過設定最低交易要求或調整手續費比例來激勵礦工優先處理交易。空區塊的存在並非網路設計的缺陷,而動態平衡的一部分,通過持續優化,比特幣網路的效率和穩定性仍有進一步提升的空間。
以上就是腳本之傢小編給大傢分享的是什麼是比特幣空區塊?為什麼會有空區塊?是威脅還是必然的詳細解讀瞭,希望此篇文章能夠幫助大傢瞭解比特幣空區塊吧!
原创文章,作者:fanbi,如若转载,请注明出处:http://fanbi.net/btc/45059