不驗證交易挖礦獲利,挖“空區塊”是否罪孽深重?
如果說挖礦完全是為了盈利,那麼為什麼礦工們會把交易費棄之不顧?
在以太坊區塊鏈開採的“空區塊”數量急劇增加,自去年9月以來增加了637%。
此前,比特幣採礦平臺螞蟻礦池控制的比特幣礦池最近也出現了“空區塊”現象。螞蟻礦池在10月5日挖了12個空區塊,且相當規律。
這些挖空區塊的礦池,要麼被指責故意挖空區塊以增加收益,要麼被指責是為了攻擊比特幣網路的一種手段(尤其是螞蟻礦池)。雖然與位元大陸2018年第一季度11億美元的利潤相比,這一數字微不足道。
答案其實很簡單——礦商們被“什麼都不做,還是至少有很低的利潤”所誘惑。
什麼是空區塊
空區塊是指,礦工在不實際處理區塊上的任何交易的情況下獲得挖礦獎勵。在這種情況下,就形成了“空區塊”。越來越多的人蔘與這種自私的挖礦方式,很多礦工試圖在不將空塊廣播到網路的情況下尋找下一個區塊,從而使他們獲得先機。
那麼,為什麼“間諜礦工”要挖掘空區塊呢?事實上,這種做法源於礦工每天參與的算力競爭,在理想情況下,只有當區塊被廣播之後礦工才能開始挖礦。值得一提的是,區塊鏈中的每個區塊都包含了不同量級的資料,無論它們的限制是什麼,對於礦工來說其實並沒有必要準確地儲存那些需要驗證、並且要新增到區塊鏈上的資料。
當礦工對所有區塊資料進行編碼時,驗證就會發生,之後區塊會被關閉、並在區塊鏈上廣播。對於下一個區塊來說,這種編碼是必不可少的。但是在廣播這個動作之前,一些礦池已經開始進行私下挖礦,雖然在沒有預先讀取區塊資料的情況下不可能建立雜湊(hash),但是礦工卻可以在交易發生之前從已有雜湊中建立新區塊。
由於建立的新區塊中沒有任何交易,所以這些區塊並不能生效——因為如果交易資料中沒有“不規則性(irregularity)”,而礦工則是通過礦池獲得了算力。為了搶先一步,一些礦工找到一個新區塊,並且嘗試找到其繼任者,但不會在礦池中廣播。
Etherdig就是這麼做的,而且他們還部署了一套系統,可以在礦池中進行“間諜挖礦”。這套系統允許Etherdig獲得足夠的資訊來建立自己的空區塊——這種做法是 有害的,因為控制網路中最大算力的礦池完全有能力壟斷挖礦。
由於以太坊開發人員的基數很大(接近25萬),因此很難像比特幣那樣及時對核心程式碼進行調整。
空區塊需要被警惕嗎
針對礦工“挖空區塊”的指控並不新鮮,2015年至2016年在比特幣上一直存在——但這個問題的嚴重程度(尤其是在以太坊網路上)還是首次被提出。
近期,CoinFi一項對以太坊的研究顯示,在9月中旬開採的空區塊數量從通常的不到0.5%躍升至近3%。
經過分析,亞歷克斯•斯瓦內維克發現了兩個礦池沉迷於“非法挖礦”,一個是全球第二大以太坊礦池F2Pool(魚池),另一個是Etherdig。
根據Etherscan.io區塊瀏覽器的資料,看看魚池是否還在挖空區塊。沒有EtherDig程度那麼高但確實還在挖。這是今天在6471202號高度開採的一個空區塊的瀏覽器截圖。還有更多:
F2Pool在以太坊挖礦(見下圖)的份額為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秒。
因此,從本質上講,礦商有時會採取一種“更快”的做法,這意味著有時在下一個區塊出塊前,會出現空區塊。
如果區塊鏈的高度,(含出塊的速度),可以作為檢驗一條鏈是否健康的標誌(包括礦工盈利能力以及網路資源的使用),可以說,一個空區塊,雖然沒有交易驗證,但它還有助於提高以前的所有交易的安全。
在空區塊損害以太坊網路文章釋出後,魚池向巴位元迴應:近期傳播的礦池產生“空區塊”會對以太坊造成威脅這一說法,是非常錯誤的,是作者對以太坊挖礦過程理解不透徹才做出了這樣的結論。
實際上礦池在區塊高度發生變化的時候,由於網路通訊延時等,如果選擇先計算交易再下發任務,這個時候礦機是有1-2秒鐘在浪費算力。因此為了礦工利益不受損失,礦池會第一時間下發一個不帶交易的任務,然後在1-2秒鐘後再補發一個帶交易的任務。如果在不帶交易任務下發後的1-2秒鐘,有礦機算出了符合難度的share,那麼這個塊就是空區塊。
在etherscan上大家能看到,主流前三的礦池都是這種機制。另外礦池本身是不願意產生空區塊的,畢竟交易費也是一筆可觀的收益。
空區塊存在的危害
以上就是空區塊存在的一些合理原因,但這並不能解釋為什麼有些礦池選擇只產生空塊,比如EtherDig。
在以太坊池開採空區塊可能被指責榨取系統。他們讓別人去做塊驗證的苦差事,而自己在上面構建空區塊,還拿錢。
魚池和EtherDig的批評者表示,如果未來幾周有更多礦商效仿,這種行為可能會影響網路效能。
然而,到目前為止,還沒有跡象表明包含未確認交易的mempool與空區塊的增長同步。此外,沒有證據表明空區塊正在損害以太坊網路效能。每天大約有6000個區塊被挖出,如下圖所示:
Svanevik觀察到:“接下來的幾周內,我們肯定會對後續發展持續觀察,包括空區塊會對以太坊生態系統造成什麼影響。”
Svanevik在調查中表示,魚池和Etherdig兩個礦池只挖掘區塊鏈而不驗證任何交易,會對以太坊造成了前所未有的威脅。資料顯示,目前空區塊的產生速度提升了15%,這意味著“間諜礦工”的總收入也增加了15%。
如果越來越多的礦工都採用這種做法,那麼交易時間可能會大幅增加,並且導致gas費用急劇增加。此外,如果這種情況不斷持續下去,也會引發更多真正在處理交易的礦工選擇退出,並且轉投挖掘其他加密代幣,甚至還可能影響以太坊的安全性。
對此,你怎麼看?
原創宣告:本文系金牛財經原創,版權屬金牛財經所有,未經授權不得轉載。轉載或內容合作請聯絡微信號:13725514262獲取轉載格式,違者將依法追究責任。