Confirmations

何時擔心一確認付款

  • November 17, 2014

一位客戶向我支付了一些數字商品的費用,因為延遲傳遞會破壞交易,所以我只等待網路的 1 次確認,然後再發布購買的數字商品的連結。

這些物品的價格範圍從 0,0001 XBT 到 50 XBT。

我確實意識到我可能應該將我的服務配置為等待更昂貴物品的更多確認,並假設目前對新區塊的礦工獎勵是 25 XBT 是否可以安全地假設沒有黑客會從當我已售出的確認付款為 0 的商品的總價值小於 25 XBT 時,對新區塊(包含從我的商店支付數字商品的交易)執行攻擊?

同樣,是否將 2 次確認(礦工總獎勵:2 x 25 XBT)視為價格為 50 XBT 的物品的安全門檻值?

要考慮的是,“攻擊者必須放棄什麼才能攻擊我?” 如果這件事的成本小於成功攻擊的回報,那麼從純粹的經濟角度來看,攻擊是合理的。(顯然,攻擊某人會帶來非經濟的道德成本。)

控制一半以上網路雜湊率並希望無限期保持這種控制的礦工不會因為攻擊你而損失任何東西。這就是所謂的 51% 攻擊。

控制不到一半算力的礦工可能會失去獲得一定收入的機會,但多少取決於他們與網路算力一半的接近程度。幾個月前我創建了以下圖像來說明這一點:

沒收收入中的攻擊成本

如果您查看BlockChain.info 礦池圖表,您會看到有幾種可以對一次確認和六次確認的交易進行經濟實惠的攻擊。我懷疑阻止他們這樣做的所有因素都是他們在社區中的聲譽。

其他因素是:

  1. 攻擊者在一次攻擊中可以從你那裡得到多少?例如,他們可以同時訂購多個 50 BTC 商品嗎?
  2. 攻擊者從針對您的攻擊中獲利的難易程度如何?例如,他們可以將這 50 個 BTC 商品轉售多少錢?大多數攻擊者不會想要 20 份來自外太空的計劃 9 的數字副本,但他們會喜歡價值 20 倍 50 BTC 的另一種加密貨幣。

不幸的是,這些因素不僅僅適用於您:它們適用於攻擊者可以同時攻擊的每個人。例如,如果他們可以通過敲詐你賺 10 BTC,通過敲詐別人賺 190 BTC,那麼成本低於 200 BTC 的攻擊在經濟上是值得的。這意味著您無法僅通過查看您的項目來全面分析您的風險。

等待更多的確認總是會大大提高你的安全性,我希望這個世界價值 50 BTC 的東西很少有人等不及一兩個小時才能到達。(但是,嘿,也許我不夠富有,無法定期花費 20,000 美元。)

如果這一切都非常令人沮喪,我很抱歉。從長遠來看,社區的目標將是減少礦工中心化。如果沒有礦工或礦池控制超過約 1% 的網路雜湊率,對一次確認交易的攻擊將變得既昂貴又不可預測,而對六次確認交易的攻擊實際上變得不可能。

腳註:數學

在上圖中,成功攻擊的平均成本為

r * h * b / p(h,b) - r * (b-1)

其中r是區塊獎勵(25 BTC),h是網路雜湊率的百分比,b是要創建的區塊數(確認加一),*p()*是來自 bitcoin.pdf 第 7 頁的 Satoshi 機率計算器。 * h * b 是每次嘗試使用的工作的平均值;p(h,b) 是每次嘗試成功的機率;r * (b-1) 是攻擊者誠實挖礦時將獲得的區塊獎勵。

作為參考,攻擊所花費的時間(平均經過的塊數)很簡單

1 / p(h,b)

引用自:https://bitcoin.stackexchange.com/questions/32562