首頁>科技>

昨天,BitMEX Research在推特上釋出訊息稱,他們的ForkMonitor在比特幣區塊鏈上花費了雙倍的錢。可以理解的是,“雙花”這個詞讓人們在社交媒體上憂心忡忡,所以我很快想解釋一下到底發生了什麼,以及這對比特幣意味著什麼。

陳舊的區塊

在中本聰共識中,所有節點都會自動切換到最重的有效鏈。這允許他們將自己的本地分類賬狀態(誰擁有什麼)與其他所有人的狀態同步。

有時,兩個礦池幾乎在同一時間找到一個新區塊,並且這些區塊具有相同的累積難度。然後,一些節點切換到一個區塊,其他節點切換到第二個區塊。在很短的一段時間內,比特幣網路就會出現分叉。但是很奇怪的是,一旦找到下一個區塊,分叉就會解決。

例如,假設一些礦工在666833-1區塊進行挖礦,而另一些礦工在666833-2區塊挖礦。一旦其中一個發現了666834區塊,這個區塊鏈將會有更高的累積難度,所有仍然在666833-1上的節點將會自動放棄其區塊鏈並切換到新的規範區塊鏈。

這正是比特幣網路中發生的情況,因為SlushPool和F2Pool同時發現了區塊666833。在幣安的礦池發現666834區塊和F2Pool的區塊變得陳舊之後,雙方的關係破裂。

現在陳舊的區塊相對頻繁地出現,完全不需要擔心。但是可疑的“雙花”呢?

什麼是雙花?

雙花有兩種流行的定義,一種是技術性支出,一種是實用性支出。

我們稱其為雙花,不是因為使用者被雙重花費了,而是因為交易的輸入已經被雙重花費了。但實際上,如果T1>T2是否實際上將代幣的所有權從一個使用者更改為另一個使用者也很重要。

換句話說,T1代幣的接收者不得不傳送其他資金或產品作為交換。下面是一個真實發生的例子:

1. 攻擊者在交易所購買了100萬美元的ETC。

2. 他們把ETC換成100萬美元的比特幣,然後提現。

3. 然後,攻擊者透過建立競爭性交易T2,在交易上花費雙倍的費用。在該交易T2中,攻擊者將最初用於交易的相同代幣花回自己手中。

4. 攻擊者現在擁有100萬美元的ETC和100萬美元的比特幣。交易所的空頭比特幣為100萬美元。

第三步相當於退回支票,這在比特幣網路中極其困難。反轉T1需要反轉T1之上的所有區塊,這將要求攻擊者控制大量的雜湊率。所以這種攻擊只能由礦工或者像NiceHash這樣的市場上租用雜湊算力的人來執行。

請注意,最大的代幣都不能用這種方式攻擊。如果有人從Nicehash租借了所有的SHA256雜湊算力(約500 PH/s),那將是比特幣當前雜湊率(123 EH/s)的0.4%。

基本上所有的雙花事件,包括最近的事件,都是完全無害的。即使是大型礦工(而不是兩個礦池之間的意外競爭)故意孤立了包含T1的區塊,只要接收者遵循共同確認的經驗法則,他們就無法透過攻擊獲利。在這種情況下,我們僅看到在不同時間確認了衝突的T1和T2。

正如我們現在看到的,比特幣使用者有充分的理由廣播這種衝突的交易。

取代您的交易

每當使用者將交易廣播到網路時,他們就會參與第一次價格拍賣。透過在交易中附加費用,他們希望礦工將其納入一個區塊。理性的礦工傾向於支付最高的交易來填滿他們的區塊,因為這給了他們最大的利潤。

但是與常規拍賣不同,區塊空間市場有一個怪癖:如果出價沒有贏得它所競標的區塊空間,它不會被撤回,而是自動進入下一次拍賣。如果出價太低,無法包含在內,則交易(以及相應的代幣)會長期停滯不前,那將是一個大問題。

因此,使用者需要一種方法來提高已經發布的交易的費用。一個有用的副作用是,使用者可以降低交易費用費率,因為他們總是可以選擇以後提高費用。這使得區塊空間拍賣更加有效。

最後,為了關閉支付渠道(例如在閃電網路中),可能需要增加費用。不合作的關閉有嚴格的截止日期,由於費用不足而錯過這個截止日期可能會導致使用者資金的損失。

使用者可以透過三種方式進行交易:

父母為孩子付錢(CPFP)。交易加速器。按費用替換(RBF)。

如果傳送者支付的費用不夠,則“父母為孩子付費”可以接收使用者加快交易速度。為此,他廣播一種輔助交易,該交易使用未確認交易的輸出作為輸入,並支付比平常更高的費用。如果礦工希望從子交易中獲得費用,而子交易的有效性取決於包含的父交易,那麼他現在被激勵將兩個交易包含在內。

交易加速器是鏈下市場,用於確認在鏈上市場支付費用不足的交易。這些通常由礦池提供,有並以免費和付費的形式存在。使用者可以將他們的交易ID貼上到加速器中,然後礦池將以更高的優先順序包含它。由於不需要簽名,因此傳送方和接收方以及任何人都可以使用它們(例如:ViaBTC和BTC.com)。

按費用替換允許使用者建立一個替換交易,該交易至少花費一個與被卡住交易相同的輸入,但需要支付額外的費用。(如果它沒有花費相同的輸入,那將完全是一個單獨的交易。)

除了在卡住的交易上增加費用外,交易替換對於像迭代付款批次處理之類的用例非常有用。雖然常規批次處理將許多支付合併到同一筆交易中,然後再發布,但同樣可以先發布交易,然後在交易廣播之後,但在一個礦工將其包含在區塊之前,透過新增更多的輸入和輸出來迭代該交易。

有問題的交易

回到實際的問題上,在區塊666833-1、666833-2和666834中到底發生了什麼?

正如比特幣工程師和研究員0xB10C在此圖中所示,一個使用者(我們稱她為Alice)廣播了三次競爭的交易,與前一次相比,每一項都更新了費率。

第一個收費標準是1 sat/b,這太低了,不能包含在區塊中。因此,大約23小時後,她決定使用RBF替換該交易,並收取9.4 sat / b的較高費用。請注意,Alice此時已經等待了幾乎一整天,在她廣播替換交易之前,她的交易仍未進行。但是,新的費率仍然太低,所以她在三個小時後又用更高的費率代替了它。

這一分析後來也得到了BitMEX Research的證實。

那是雙花嗎?

我們確定使用者可以在交易被確認之前使用RBF替換交易。由於使用者試圖取消先前卡住的交易並將其發回給自己,因此更新後的交易通常具有與第一個交易不同的輸出。這幾乎肯定是Alice的替代交易2和3所發生的情況。

因此,交易的不同版本可以同時在網路中浮動。當礦工包含兩個衝突的(但不是有害的)交易時,先前包含的交易可能變得無效。這使得它最初看起來像是雙花。

雖然理論上講,比特幣網路可能出現雙花,但這通常不是一個嚴重的問題。以下是一些您感到驚慌時有用的啟發方法:

交易所或其他大型實體如果不等待更合理數量的確認,就不會接受如此大的交易作為最終交易。因此,攻擊者無法透過替換單個區塊來退回支票,他們可能必須替換10個以上的區塊。這就要求現有的大多數礦工相互勾結,同時冒著破壞他們在挖礦硬體上的投資。

像許多辯論一樣,這歸結為對“雙花”一詞的定義。今天我提供了其中兩個原因,其中一個是技術性的,指的是INPUT的雙重支出,而不是另一個使用者。輸入雙花顯然已經發生,但對其他使用者沒有任何影響。

從實際意義上說,雙倍支出就像是在向另一位使用者付款後退還支票。我們可以非常肯定地說這是有幾個原因的。

其他更有可能的解釋的存在,例如使用者(不是礦工)使他們自己的交易無效。我們沒有其他可能導致有害的雙重支出的因素,例如,更大的無效交易和大量的陳舊區塊。

由於媒體很快就會注意到“雙花”之類的術語,所以我認為當啟發式方法沒有一個指向有害意義上的雙花時,我們應該謹慎使用。相反,我建議說“交易已經失效”,這具有更廣泛的含義,包括使用者可能故意取消交易的許多方式。

Alice想做什麼?

因此,我們已經確定這肯定不是礦工故意用更高難度的區塊鏈替換一個區塊鏈以退回一張非常大的支票的雙花。它沒有礦工的參與,只是一個陳舊的區塊。

然而,許多人仍對Alice發表的不同交易的性質感到好奇。她為什麼要取代原來的交易?這是否是嘗試“零配置”的商人花雙倍的錢嗎?

我們可以立即排除後者,因為在初始交易和第一個替換交易之間幾乎經過了整整一天。但探索Alice把代幣花給了誰還是很有趣的。雖然我們不知道誰分別控制輸出,但我們可以使用一些啟發方法來解決這個難題。

1. 輸入可以忽略,因為我們知道輸入必須由使用者控制。

2. 具有一個輸出的交易幾乎總是內部轉賬(意味著同一使用者的多個錢包之間)。您很少在錢包中輸入正確的錢來支付給其他人。

3. 具有兩個輸出的交易通常會支付給第三方,其餘的費用返還給使用者(所謂的變更輸出)。

把難題拼湊起來,我們可以看到交易2和交易3都只有一個輸出,這意味著Alice可能控制這些輸出。交易1與交易3共享一個輸出,因此同樣適用於交易3。

這隻剩下交易1的第二個輸出3JaLvP了。要回答這個問題,我們需要繞一小段路。為什麼費用較低的交易(1sat/b)獲勝?Slushpool討厭錢嗎?

換句話說,她進行了一個以前未知的第四個交易,其中包括交易a13c2bd…的滯留輸出(地址3JaLvP)作為同一區塊中的唯一輸入。

正如我們在這裡看到的,新的交易支付了更高的費用率(46.3sat/byte),足以支付這兩筆交易。因為包含交易1290376...的條件是包含交易a13c2bd...,因此Slushpool必須同時包含這兩者。

透過從3JaLvP中支出資金,我們可以非常確定地知道,這些資金確實達到了他們的目標目的地,實際上並沒有被重複使用。我們知道這一點是因為只有控制3JaLvP的私鑰的人才能簽署最終得到確認的CPFP交易。

Alice試圖傳送給第三方Bob的可能性很小,Bob已經厭倦了等待錢到來。所以他用CPFP把未經確認的輸出給了她。但這可能是Alice用自己的錢包匯款或嘗試不同的方式來提高交易費用。

因此,我們可以得出結論,所有的輸出確實是由Alice控制。

9
最新評論
  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 29歲的鄧自剛打破600公里高鐵極限