不驗證交易挖礦獲利,挖“空區塊”是否罪孽深重?_風聞
金牛财经-2018-10-09 17:05
如果説挖礦完全是為了盈利,那麼為什麼礦工們會把交易費棄之不顧?
在以太坊區塊鏈開採的“空區塊”數量急劇增加,自去年9月以來增加了637%。
螞蟻礦池控制的比特幣礦池最近也出現了“空區塊”現象。螞蟻礦池在10月5日挖了12個空區塊,且相當規律。
這些挖空區塊的礦池,要麼被指責故意挖空區塊以增加收益,要麼被指責是為了攻擊比特幣網絡的一種手段(尤其是螞蟻礦池)。雖然與比特大陸2018年第一季度11億美元的利潤相比,這一數字微不足道。
而這麼做的目的其實很簡單——如果要礦工們在“什麼都不做”還是“至少有很低的利潤”中做選擇,答案一目瞭然。

什麼是空區塊
空區塊是指,礦工在不實際處理區塊上的任何交易的情況下獲得挖礦獎勵。在這種情況下,就形成了“空區塊”。越來越多的人蔘與這種自私的挖礦方式,很多礦工試圖在不將空塊廣播到網絡的情況下尋找下一個區塊,從而使他們獲得先機。
那麼,為什麼“間諜礦工”要挖掘空區塊呢?事實上,這種做法源於礦工每天參與的算力競爭,在理想情況下,只有當區塊被廣播之後礦工才能開始挖礦。值得一提的是,區塊鏈中的每個區塊都包含了不同量級的數據,無論它們的限制是什麼,對於礦工來説其實並沒有必要準確地保存那些需要驗證、並且要添加到區塊鏈上的數據。
當礦工對所有區塊數據進行編碼時,驗證就會發生,之後區塊會被關閉、並在區塊鏈上廣播。對於下一個區塊來説,這種編碼是必不可少的。但是在廣播這個動作之前,一些礦池已經開始進行私下挖礦,雖然在沒有預先讀取區塊數據的情況下不可能創建哈希(hash),但是礦工卻可以在交易發生之前從已有哈希中創建新區塊。
由於創建的新區塊中沒有任何交易,所以這些區塊並不能生效——因為如果交易數據中沒有“不規則性(irregularity)”,而礦工則是通過礦池獲得了算力。為了搶先一步,一些礦工找到一個新區塊,並且嘗試找到其繼任者,但不會在礦池中廣播。
由於以太坊開發人員的基數很大(接近25萬),因此很難像比特幣那樣及時對核心代碼進行調整。
空區塊產生現狀
針對礦工“挖空區塊”的指控並不新鮮,2015年至2016年在比特幣上一直存在——但這個問題的嚴重程度(尤其是在以太坊網絡上)還是首次被提出。
近期,CoinFi一項對以太坊的研究顯示,在9月中旬開採的空區塊數量從通常的不到0.5%躍升至近3%。

經過分析,亞歷克斯•斯瓦內維克發現了兩個礦池沉迷於“非法挖礦”,一個是全球第二大以太坊礦池F2Pool(魚池),另一個是Etherdig。
根據Etherscan.io區塊瀏覽器的數據,看看魚池是否還在挖空區塊。沒有EtherDig程度那麼高但確實還在挖。這是今天在6471202號高度開採的一個空區塊的瀏覽器截圖。還有更多:

魚池在以太坊挖礦的份額為13.4%。

EtherDig的規模較小,但涉及的金額仍然很大。
根據Etherscan.io區塊瀏覽器的數據,已有1695個空區塊被EtherDig挖掘,而自75天前以來,它們都不包含經過驗證的交易。
換句話説,EtherDig沒有進行任何交易驗證工作,卻能夠因此獲利。
對於礦商來説,為什麼不去收取交易費呢?
在此之前,比特幣區塊鏈上的比特大陸和它的螞蟻礦池(以及BTC.com)就曾遭到類似指責,熱衷於挖空區塊的人注意到了這一點。
空區塊存在的好處
創建空塊是有原因的。其中最重要的是儘快找到並挖出下一個區塊。
例如,去年比特大陸的吳忌寒解釋了為什麼螞蟻礦池生產了6個空區塊,因為在引入隔離見證之後,礦機出現了問題。

吳忌寒2017年8月26日推特
“BCC/BTC聯合開採在開採池中造成了大量的誤差,而空區塊是一種安全措施倒退的表現。現在問題解決了。”
在吳忌寒的推特之前,比特幣網絡上未經證實的交易增加到9萬筆,待完成交易的內存池增加到100MB。
比特大陸的批評者表示,這兩件事是有關聯的——這家中國礦商和ASIC製造商“攻擊”比特幣,以支持比特幣現金。
在需要收集任何事務之前,挖掘器可以通過從最後一個塊獲取散列來啓動一個塊,這可能是由於阻塞整個節點傳播的中斷造成的。
重要的是,由於各種原因,礦機可能在沒有下載和驗證鏈中的前一個塊的情況下啓動新的塊。選擇不將交易驗證包括在內,意味着不會出現雙花問題,從而使交易區塊失效。
據CoinFi的首席數據科學家Alex Svanevik介紹,空區塊開採起來要快得多。一個正常區塊的平均開採時間為13.2秒,而空區塊過去3個月的平均時間為14.6秒。
因此,從本質上講,礦商有時會採取一種“更快”的做法,這意味着有時在下一個區塊出塊前,會出現空區塊。
如果區塊鏈的高度,(含出塊的速度),可以作為檢驗一條鏈是否健康的標誌(包括礦工盈利能力以及網絡資源的使用),可以説,一個空區塊,雖然沒有交易驗證,但它還有助於提高以前的所有交易的安全。
空區塊存在的危害
以上就是空區塊存在的一些合理原因,但這並不能解釋為什麼有些礦池選擇只產生空塊,比如EtherDig。
在以太坊池開採空區塊可能被指責榨取系統。他們讓別人去做塊驗證的苦差事,而自己在上面構建空區塊,還拿錢。
魚池和EtherDig的批評者表示,如果未來幾周有更多礦商效仿,這種行為可能會影響網絡性能。
然而,到目前為止,還沒有跡象表明包含未確認交易的mempool與空區塊的增長同步。此外,沒有確鑿證據表明空區塊正在損害以太坊網絡性能。每天大約有6000個區塊被挖出,如下圖所示:

Svanevik觀察到:“接下來的幾周內,我們肯定會對後續發展持續觀察,包括空區塊會對以太坊生態系統造成什麼影響。”
Svanevik在調查中表示,魚池和Etherdig兩個礦池只挖掘區塊鏈而不驗證任何交易,會對以太坊造成了前所未有的威脅。數據顯示,目前空區塊的產生速度提升了15%,這意味着“間諜礦工”的總收入也增加了15%。
他認為,如果越來越多的礦工都挖空區塊,那麼交易時間可能會大幅增加,並且導致gas費用急劇增加。此外,如果這種情況持續下去,也會引發更多真正在處理交易的礦工選擇退出,並且轉投挖掘其他加密代幣,甚至還可能影響以太坊的安全性。
在該調查發佈後,魚池向巴比特回應:
近期傳播的礦池產生“空區塊”會對以太坊造成威脅這一説法,是非常錯誤的,是作者對以太坊挖礦過程理解不透徹才做出了這樣的結論。
實際上礦池在區塊高度發生變化的時候,由於網絡通信延時等,如果選擇先計算交易再下發任務,這個時候礦機是有1-2秒鐘在浪費算力。因此為了礦工利益不受損失,礦池會第一時間下發一個不帶交易的任務,然後在1-2秒鐘後再補發一個帶交易的任務。如果在不帶交易任務下發後的1-2秒鐘,有礦機算出了符合難度的share,那麼這個塊就是空區塊。
在etherscan上大家能看到,主流前三的礦池都是這種機制。另外礦池本身是不願意產生空區塊的,畢竟交易費也是一筆可觀的收益。
對此,你怎麼看?
本文首發於金牛財經APP,作者:毛毛