2019 年 5 月 15 日,比特幣現金硬分叉似乎遭遇到三個相互關聯的重大問題。 「攻擊交易」 利用一個漏洞,導致礦工產生空塊。 圍繞空區塊的不確定性可能引起了一些礦工的擔憂,他們可能試圖在最初的非硬分叉區塊鏈上挖礦,繼而引發了共識區塊鏈分裂。

開發人員和礦工似乎已經制定了一項計劃,以復原意外發送到隔離見證(SegWit)地址的資金,上述漏洞可能破壞了這一計劃。 這種失敗可能導致了進行有意識和協調的兩個區塊鏈重組。根據我們的計算,大約有 3392 比特幣現金(BCH)可能已經在一個精心策劃的交易逆轉中成功地被雙重花費了。 不過,這次雙重花費的唯一受害者可能是原來竊取這筆錢的 「小偷」。

原文標題:《比特幣現金硬分叉 —— 三個相互關聯的事件》
作者 : BitMEX 研究團隊

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題比特幣現金網絡在 2019 年 5 月 15 日分裂的圖解,資料來源: BitMEX 研究

(注: 分裂的圖形說明)

三個比特幣現金的問題

比特幣現金在 2019 年 5 月的硬分叉升級受到三個重大問題的困擾,其中兩個可能是間接由一個導致空塊的漏洞引起的。下圖顯示了這三起事件之間的潛在關係。

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題比特幣現金在硬分叉升級期間面對的三個問題之間的關係,資料來源: BitMEX 研究

空塊問題

Bitcoin ABC 是比特幣現金的一個重要實現軟件,但它有一個漏洞,進入內存池的交易的有效性條件可能沒有共識有效性條件那麼繁瑣。 這與比特幣(想必比特幣現金也一樣)預期運作的方式相反,共識有效性規則本應比內存池有效性更寬鬆。這實際上是一個非常重要的特性,因爲它可以防止惡意花費者創建滿足通過網絡中繼並進入商家內存池的條件,但是無法滿足進入有效區塊所需條件的交易。這會使 0 確認雙重花費攻擊相對容易阻止,而無需擔心初始付款進入區塊鏈。在這種情況下,攻擊者可以有理由確定,惡意構造的交易永遠不會進入區塊鏈。

攻擊者似乎已經在比特幣現金 ABC (Bitcoin Cash ABC)中發現了這個漏洞,然後在硬分叉之後加以利用,從而引起混亂和迷惑。這個攻擊可以隨時執行。 攻擊者只需要廣播滿足內存池有效性條件但未通過共識檢查的交易。當礦工試圖產生這些交易的區塊時,他們失敗了。作爲故障保護,礦工似乎已經制造空塊,而不是顆粒無收,至少在大多數情況下是這樣。

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題比特幣現金 — 每個區塊的交易數量 — 橙色線是硬分叉,資料來源: BitMEX 研究

不對稱的鏈分裂

在空塊不確定性達到最高峯時,我們的預硬分叉 Bitcoin ABC 0.18.2 節點收到了一個新的區塊,582,680。 當時,許多人都擔心空塊,一些礦工可能已經恢復到一個硬分叉前客戶端,認爲較長的區塊鏈遇到了麻煩,並可能會恢復到硬分叉之前。不過,這僅僅是我們的猜測,而空塊漏洞可能與鏈分裂無關,這可能只是由一個太慢而無法升級的礦工造成的。

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題比特幣現金共識鏈分裂,資料來源: BitMEX 研究

對於硬分叉的結構,鏈分裂確實向我們強調了一個問題。 我們測試了我們的硬分叉後客戶端 ABC 0.19.0 是否會將分裂的非硬分叉側視爲有效。 爲了使分裂 「乾淨」,分裂的每一側都應該認爲另一側是無效的。

爲了測試較短的硬分叉前區塊鏈的有效性,從 Bitcoin ABC 0.19.0 節點的角度來看,我們不得不使自分裂以來的第一個硬分叉區塊無效。 然後,我們觀察該節點是否會跟隨鏈分裂或仍然卡在硬分叉點。 出乎我們意料的是,如下面的屏幕截圖所示,該節點跟隨分裂的另一側。 因此,分裂並不完全,這種不對稱,可能爲攻擊者提供更多機會。

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題我們的 Bitcoin ABC 0.19.0 節點的命令行截圖,資料來源: BitMEX 研究

協調的兩個區塊重組

在硬分叉之後的幾個區塊,在分裂的硬分叉側,有一個長度爲 2 的區塊鏈重組。 當時,我們認爲這是由正常的區塊傳播問題引起的,並沒有考慮太多。 例如, Bitcoin SV 在此之前幾周經歷了該長度的 6 個區塊 的重組, 根據我們的分析,當 Bitcoin SV 重組時,孤鏈中的所有交易最終都進入主要的獲勝鏈(Coinbase 交易除外)。 不過,在這種比特幣現金重組中,我們發現事實並非如此。

孤立區塊,582,698,包含 137 筆交易(包括 Coinbase),其中只有 111 筆交易進入獲勝鏈。 因此,就 25 筆交易而言,似乎發生了一次成功的 2 個區塊雙重花費。 如下表所示,這 25 筆交易的輸出值總計超過 3,300 個 BCH。
BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題孤立區塊(582,698)中沒有進入主鏈的交易列表,資料來源: BitMEX 研究

如上表所示,這 25 筆雙重花費交易的總輸出值爲 3,391.7 BCH,從經濟角度來看,這是一筆重大數額。 因此,可以得出結論,重組是一個精心策劃的事件,而不是偶然發生的。 如果這是偶然發生的事件,則分裂的每一側的交易可能不會出現不匹配。 不過,假設協調和故意重組是我們的猜測。

我們提供了以下兩個雙重花費的輸出示例:
BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題其中一個雙重花費 UTXO (未花費過的交易輸出)示例 —— 「0014」, 資料來源:BitMEX 研究

上表說明了重組期間 5 個 BCH 輸出發生的情況。 這 5 個 BCH 首先被髮送到區塊 582,698 中的地址 qzyj4lzdjjq0unuka59776tv4e6up23uhyk4tr2anm 。 該鏈是孤立鏈,而相同的輸出最終被髮送到不同的地址, qq4whmrz4xm6ey6sgsj4umvptrpfkmd2rvk36dw97y,在 7 個區塊之後。

BCH 雙花的唯一受害者竟是攻擊者?圖解比特幣現金硬分叉的三大問題第二個雙重花費 UTXO 示例 —— 「0020」, 資料來源: BitMEX 研究

上述輸出的情況與 25 筆雙重花費交易中的幾乎所有資金有共同的特徵。 大多數輸出似乎已經在主鏈上的區塊 582,705 附近進行雙重花費,在孤立區塊後大約 7 個區塊。

用於贖回交易輸入的 SigScript 以 「0020」 或 「0014」 開頭,在上面的示例中突出顯示。 這些可能與 Segregated Witness (隔離見證)有關。 根據 Segregated Witness 中的 規範,「0014」 被推送到 P2WPKH (支付給見證公鑰哈希),和「0020」 被推送到 P2WSH (支付給見證腳本哈希)。 因此,這些輸入的贖回可能與比特幣升級的隔離見證有關,其中只有一部分是在比特幣現金上採用的。

實際上,基於我們的分析,孤立區塊 582,698 中的 25 筆交易中的每個單個輸入都用 「0014」 或 「0020」 開頭的 Sigscript 來贖回。因此,除了贖回這些 SegWit (隔離見證)輸出的「攻擊者」或「小偷」 之外,有可能沒有人丟失與此鏈重組相關的資金,而這些資金可能首先被偶然地發送到這些輸出。

作爲比特幣現金 2019 年 5 月硬分叉一部分,有一個變化,就是允許復原被意外發送到 SegWit 地址的比特幣。 因此,這可能發生在這次事件中。

允許隔離見證復原

在上次升級中,意外發送到 Segwit P2SH 地址的比特幣因 CLEANSTACK 規則而變爲不可花費。這次升級將對這些比特幣進行豁免,並將它們恢復到之前可以花費的情況。這意味着一旦 P2SH 贖回腳本預映射被透露(例如通過從相應的 BTC 地址花費比特幣),任何礦工都可以拿走硬幣,資料來源

這個 2 個區塊重組可能與空塊漏洞無關。 不過,分裂似乎就在在解決漏洞之後一個區塊發生,因此它可能是相關的。 也許「誠實」的礦工們試圖在分裂後直接協調這些輸出的花費,又或許要將它們歸還到原來的所有者那裏,而空塊漏洞搞砸了他們的時間,讓攻擊者得益並捲走資金。

另一方面,該攻擊非常複雜,因此攻擊者可能非常老練,並需要進行廣泛的規劃。 因此,即使沒有空塊漏洞,這種攻擊也可能是有效的。

結論

我們從有關比特幣現金硬分叉升級的事件中吸取到許多教訓。 硬分叉似乎爲惡意行爲者提供了攻擊和製造不確定性的機會,因此對硬分叉的精心規劃和協調非常重要。 另一方面,這個空塊漏洞可能是其他兩個事件的根本原因,其可能在任何時候發生,而無論是否正在試圖硬分叉,嘗試防止這樣的漏洞纔是重中之重。

這些事件的另一個重要教訓是需要透明度。 在事件發生期間,很難知道開發人員的計劃、漏洞的性質或礦工支持的鏈。 在公共渠道中就這些問題進行公開交流可能會更有幫助。 特別是,很多人都不能清晰知道開發人員和礦工的計劃,以協調和復原發送給 SegWit 地址的資金。 如果這個計劃事先在社區中,以及在明顯的經過深思熟慮和協調的重組期間進行辯論和討論,可能會有所幫助。 當然,假設有時間披露後者。 如果參與者在事後披露有關這些事件的詳細信息,也可能會有所幫助。

我們認爲,所有這一切中令人最擔憂的是經過深思熟慮和協調的重組。 從論證的一方來看,資金被盜,因此將資金歸還給其「合法所有者」的行爲是合理的,即使這造成了一些短期中斷。 不過,許多人或者某些人認爲交易最終確認等現金是這些區塊鏈系統的唯一獨特特徵。 如果能夠逆轉交易,和在本情況下的經濟上重大交易,這將否定這個系統的整個前提條件。 這種行爲可能消除適當保障資金的動機,開創先例或改變預期,更有可能產生進一步逆轉。

對於比特幣社區中所有不喜歡比特幣現金的人來說,這可能成爲嘲笑這種幣的機會。 不過,雖然比特幣現金的哈希值比比特幣低得多,使得這種逆轉更容易,但我們認爲,成功對比特幣現金進行經濟上重大的精心策劃交易逆轉對比特幣而言並不是好消息。 從某些方面來看,這些事件有助於樹立一個危險的先例。 這表明這些事件可能會發生在比特幣身上。 或者,這可以說明比特幣現金在成爲少數鏈的同時所面臨的風險。

本文由 BitMEX 研究團隊提供,查閱更多加密貨幣行業相關研究報告請 訪問

來源鏈接:blog.bitmex.com