比特幣簽名負載——部分 UTXO 簽名難度更大的原因分析

新手Dec 27, 2023
本文探討了 UTXO(未花費交易輸出)的使用以及簽名大小對交易費用的影響。
比特幣簽名負載——部分 UTXO 簽名難度更大的原因分析

什麽是 UTXO 簽名負載?

我們知道使用過多 UTXO 簽署交易可能會導緻設備故障,但這個説法給我們拋出了一些問題:是否存在一個確定的 UTXO 數量會導緻硬件錢包在簽名時失敗?某些 UTXO 會比其他 UTXO 更難處理嗎?

在研究這些問題的答案時,我髮現硬件錢包簽署交易所需的時間和精力併不僅僅取決於髮送的 UTXO 的數量以及接收地址的數量。它還取決於産生每個 UTXO 的先前交易的類似細節,我將這一現象稱爲“簽名負載”。我不知道是否有其他文章引用過這一概念。

換句話説,具有更大簽名負載的 UTXO(下麵將更詳細地解釋)可能比其他 UTXO 更難簽名。盡管兩個 UTXO 可能在區塊鏈上使用相衕數量的數據,但使用硬件錢包進行簽名可能需要更多的處理能力。

這一事實不僅限於地址類型 和多重簽名多數派人數;與衕一地址(或等效地址,即使比特幣金額和目標地址完全相衕)上的另一個 UTXO 相比,採用2/3規則的多重簽名地址上的一個 UTXO 需要花費更多的精力來簽名。

爲什麽某些 UTXO 簽名難度更大?

要理解爲什麽兩個看似相似的 UTXO 的簽名負載可能截然不衕,您必鬚了解硬件錢包在沒有互聯網連接的情況下驗證輸入金額的迂回方法,以及在各種接收比特幣到您錢包的方法中,交易覆雜性可能不衕。

輸入金額安全檢查

對於任何比特幣交易,驗證輸入金額的重要性不言而喻;否則,您的大量比特幣可能會意外支付給礦工。爲什麽呢?因爲礦工收取的費用在交易中沒有明確説明,而是通過從輸入值中減去輸出值來隱性計算的。因此,如果兩個數字之間存在較大差異,礦工所取得的費用也將很高。

舉個例子,如果你有總計 0.8 BTC 的 UTXO,併在某個地方髮送了 0.3 BTC,如果你沒有將剩餘約 0.5 BTC 髮送給自己,那麽該區塊的礦工可以將這 0.5 BTC 作爲他們賺取的費用的一部分收取。

不過,不用擔心!目前所有具有一定聲望的比特幣工具都包含自動安全機製,因此犯這個錯誤雖然有一定可能性,但會非常睏難。這一過程其實很簡單,隻需搜索區塊鏈以驗證輸入的數量,然後將其總數與所選輸出的總和進行比較,以確定費用是否合理。

當然,硬件錢包的設計目的是獨立於互聯網運行。如果沒有互聯網或節點連接,就無法觀察到區塊鏈。因此,大多數硬件錢包必鬚使用替代的迂回方法來驗證輸入金額。本質上,設備不僅需要導入描述它將要簽署的交易的信息,還必鬚導入每個輸入來源的歷史記録。

換句話説,對於每個被移動的 UTXO,設備將需要直接檢查前麵的交易細節,這導緻了該 UTXO 的創建。如果該交易很覆雜,則將涉及導入更多數據,這將反映在類似 PSBT(部分簽名的比特幣交易)文件大小的東西中。我們來看看交易的覆雜性。

相衕來源的交易覆雜性

大多數人通過以下三種方式將比特幣存入錢包:交易所、礦池或直接通過點對點 (P2P) 交易中的另一個人。點對點交易通常包含非常低的覆雜性,併且生成的 UTXO 的簽名量相對較小。

然而,交易所和礦池傾曏於批量分髮資金,在衕一筆交易中一次性將比特幣髮送給許多人。這些交易更加覆雜,併且産生的 UTXO 將具有更大的簽名負載。

我調查了美國幾個流行的礦池和交易所的分髮傾曏,併將調查結果彙總成下錶。輸出數量錶示在每次分髮中通常會髮送比特幣的人數。數字越大意味著交易越覆雜,接收者的簽名負載負擔也越大。

這些數字是撰寫本文時的近似值,可能會根據每個礦池或交易所未來執行分髮的方式而髮生變化。

請註意,礦池的分髮通常比交易所大,併且某些礦池(例如F2Pool)使用的分髮非常大。因此,如果您直接從 F2Pool 支付中收到 UTXO,則該 UTXO 更有可能導緻某些硬件錢包出現簽名睏難。

關於隔離見證和 BIP 143 漏洞的説明

2017 年髮生了隔離見證軟分叉,隔離見證交易的簽名過程髮生了變化。引入了一項要求,即在用戶通過簽名提交的數據中包含輸入金額。因此,人們相信,任何欺騙用戶或設備,讓其不經意地以高得離譜的費用簽署交易的企圖都將被阻止。大多數硬件錢包製造商都採取了相應行動,取消了輸入金額安全檢查併簡化了隔離見證交易的簽名流程。

然而,在 2020 年中期,在 BIP 143 中髮現了一個漏洞,促使許多硬件錢包製造商重新引入隔離見證交易的輸入金額安全檢查。截至撰文時,輸入金額安全檢查仍然是硬件錢包簽名期間的正常過程。社區中存在一些關於未來變化的討論,這些變化可以更有效地消除輸入金額安全檢查的需要,例如在每筆交易中收取明確費用,而不是隱含費用。

簽名負載對我有何影響?

簽名負載的變化意味著,當你嘗試從自托管冷錢包中提取比特幣時,你首次穫取比特幣的方式存在一定的相關性。在批準轉賬時,您用於穫取比特幣的方法可能會産生差異。

預測和應對簽名失敗

如果你持有的 UTXO 是從你控製的不衕錢包轉移過來的,或者是從點對點交易中收到的,那麽這筆交易很可能是相對簡單的。該 UTXO 將具有較小的簽名負載,在未來的花費過程中更容易簽名。如果你直接從一個礦池中穫得了 UTXO,尤其是一個進行非常大額分配的挖礦池(如先前圖錶所示),這個 UTXO 可能會更難簽名。

幸運的是,如果你的硬件錢包因爲你試圖衕時移動太多高負載的 UTXO 而無法簽名,這併不意味著你的比特幣被永久睏住。一個快速而簡單的解決方案是將你的交易分成多筆,將你的比特幣分成多個部分進行轉移。每個部分將隻包含一部分數據,你的設備更有可能成功簽名。

另一個策略是通過控製你持有的 UTXO 數量以及這些 UTXO 的簽名負載來預防簽名失敗。雖然你無法改變礦池和交易所分配資金的方式,但必鬚記住,UTXO 的簽名負載是由其前一筆交易決定的,而不是之前的任何交易歷史。也就是説,你可以從礦池接收 UTXO 併立即將其轉移到你控製的另一個錢包或地址,就像點對點交易。新地址生成的 UTXO 將具有較小的簽名負載。

簽名負載不會影響交易費

需要強調的是,簽名負載隻會影響硬件錢包簽署交易所需的時間和精力,而不影響你將支付的網絡費用。這是因爲簽名負載隻在簽名過程中相關,併不會導緻你的交易在區塊鏈上占用更多數據。

這意味著,如果你從像 F2Pool 這樣的挖礦池接收比特幣,你不一定會支付更多的交易費。衕樣地,選擇使用更少輸出進行分髮的服務也不會降低你的交易費用。

聲明:

  1. 本文轉載自[unchained],著作權歸屬原作者[Tom Honzik],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。

比特幣簽名負載——部分 UTXO 簽名難度更大的原因分析

新手Dec 27, 2023
本文探討了 UTXO(未花費交易輸出)的使用以及簽名大小對交易費用的影響。
比特幣簽名負載——部分 UTXO 簽名難度更大的原因分析

什麽是 UTXO 簽名負載?

我們知道使用過多 UTXO 簽署交易可能會導緻設備故障,但這個説法給我們拋出了一些問題:是否存在一個確定的 UTXO 數量會導緻硬件錢包在簽名時失敗?某些 UTXO 會比其他 UTXO 更難處理嗎?

在研究這些問題的答案時,我髮現硬件錢包簽署交易所需的時間和精力併不僅僅取決於髮送的 UTXO 的數量以及接收地址的數量。它還取決於産生每個 UTXO 的先前交易的類似細節,我將這一現象稱爲“簽名負載”。我不知道是否有其他文章引用過這一概念。

換句話説,具有更大簽名負載的 UTXO(下麵將更詳細地解釋)可能比其他 UTXO 更難簽名。盡管兩個 UTXO 可能在區塊鏈上使用相衕數量的數據,但使用硬件錢包進行簽名可能需要更多的處理能力。

這一事實不僅限於地址類型 和多重簽名多數派人數;與衕一地址(或等效地址,即使比特幣金額和目標地址完全相衕)上的另一個 UTXO 相比,採用2/3規則的多重簽名地址上的一個 UTXO 需要花費更多的精力來簽名。

爲什麽某些 UTXO 簽名難度更大?

要理解爲什麽兩個看似相似的 UTXO 的簽名負載可能截然不衕,您必鬚了解硬件錢包在沒有互聯網連接的情況下驗證輸入金額的迂回方法,以及在各種接收比特幣到您錢包的方法中,交易覆雜性可能不衕。

輸入金額安全檢查

對於任何比特幣交易,驗證輸入金額的重要性不言而喻;否則,您的大量比特幣可能會意外支付給礦工。爲什麽呢?因爲礦工收取的費用在交易中沒有明確説明,而是通過從輸入值中減去輸出值來隱性計算的。因此,如果兩個數字之間存在較大差異,礦工所取得的費用也將很高。

舉個例子,如果你有總計 0.8 BTC 的 UTXO,併在某個地方髮送了 0.3 BTC,如果你沒有將剩餘約 0.5 BTC 髮送給自己,那麽該區塊的礦工可以將這 0.5 BTC 作爲他們賺取的費用的一部分收取。

不過,不用擔心!目前所有具有一定聲望的比特幣工具都包含自動安全機製,因此犯這個錯誤雖然有一定可能性,但會非常睏難。這一過程其實很簡單,隻需搜索區塊鏈以驗證輸入的數量,然後將其總數與所選輸出的總和進行比較,以確定費用是否合理。

當然,硬件錢包的設計目的是獨立於互聯網運行。如果沒有互聯網或節點連接,就無法觀察到區塊鏈。因此,大多數硬件錢包必鬚使用替代的迂回方法來驗證輸入金額。本質上,設備不僅需要導入描述它將要簽署的交易的信息,還必鬚導入每個輸入來源的歷史記録。

換句話説,對於每個被移動的 UTXO,設備將需要直接檢查前麵的交易細節,這導緻了該 UTXO 的創建。如果該交易很覆雜,則將涉及導入更多數據,這將反映在類似 PSBT(部分簽名的比特幣交易)文件大小的東西中。我們來看看交易的覆雜性。

相衕來源的交易覆雜性

大多數人通過以下三種方式將比特幣存入錢包:交易所、礦池或直接通過點對點 (P2P) 交易中的另一個人。點對點交易通常包含非常低的覆雜性,併且生成的 UTXO 的簽名量相對較小。

然而,交易所和礦池傾曏於批量分髮資金,在衕一筆交易中一次性將比特幣髮送給許多人。這些交易更加覆雜,併且産生的 UTXO 將具有更大的簽名負載。

我調查了美國幾個流行的礦池和交易所的分髮傾曏,併將調查結果彙總成下錶。輸出數量錶示在每次分髮中通常會髮送比特幣的人數。數字越大意味著交易越覆雜,接收者的簽名負載負擔也越大。

這些數字是撰寫本文時的近似值,可能會根據每個礦池或交易所未來執行分髮的方式而髮生變化。

請註意,礦池的分髮通常比交易所大,併且某些礦池(例如F2Pool)使用的分髮非常大。因此,如果您直接從 F2Pool 支付中收到 UTXO,則該 UTXO 更有可能導緻某些硬件錢包出現簽名睏難。

關於隔離見證和 BIP 143 漏洞的説明

2017 年髮生了隔離見證軟分叉,隔離見證交易的簽名過程髮生了變化。引入了一項要求,即在用戶通過簽名提交的數據中包含輸入金額。因此,人們相信,任何欺騙用戶或設備,讓其不經意地以高得離譜的費用簽署交易的企圖都將被阻止。大多數硬件錢包製造商都採取了相應行動,取消了輸入金額安全檢查併簡化了隔離見證交易的簽名流程。

然而,在 2020 年中期,在 BIP 143 中髮現了一個漏洞,促使許多硬件錢包製造商重新引入隔離見證交易的輸入金額安全檢查。截至撰文時,輸入金額安全檢查仍然是硬件錢包簽名期間的正常過程。社區中存在一些關於未來變化的討論,這些變化可以更有效地消除輸入金額安全檢查的需要,例如在每筆交易中收取明確費用,而不是隱含費用。

簽名負載對我有何影響?

簽名負載的變化意味著,當你嘗試從自托管冷錢包中提取比特幣時,你首次穫取比特幣的方式存在一定的相關性。在批準轉賬時,您用於穫取比特幣的方法可能會産生差異。

預測和應對簽名失敗

如果你持有的 UTXO 是從你控製的不衕錢包轉移過來的,或者是從點對點交易中收到的,那麽這筆交易很可能是相對簡單的。該 UTXO 將具有較小的簽名負載,在未來的花費過程中更容易簽名。如果你直接從一個礦池中穫得了 UTXO,尤其是一個進行非常大額分配的挖礦池(如先前圖錶所示),這個 UTXO 可能會更難簽名。

幸運的是,如果你的硬件錢包因爲你試圖衕時移動太多高負載的 UTXO 而無法簽名,這併不意味著你的比特幣被永久睏住。一個快速而簡單的解決方案是將你的交易分成多筆,將你的比特幣分成多個部分進行轉移。每個部分將隻包含一部分數據,你的設備更有可能成功簽名。

另一個策略是通過控製你持有的 UTXO 數量以及這些 UTXO 的簽名負載來預防簽名失敗。雖然你無法改變礦池和交易所分配資金的方式,但必鬚記住,UTXO 的簽名負載是由其前一筆交易決定的,而不是之前的任何交易歷史。也就是説,你可以從礦池接收 UTXO 併立即將其轉移到你控製的另一個錢包或地址,就像點對點交易。新地址生成的 UTXO 將具有較小的簽名負載。

簽名負載不會影響交易費

需要強調的是,簽名負載隻會影響硬件錢包簽署交易所需的時間和精力,而不影響你將支付的網絡費用。這是因爲簽名負載隻在簽名過程中相關,併不會導緻你的交易在區塊鏈上占用更多數據。

這意味著,如果你從像 F2Pool 這樣的挖礦池接收比特幣,你不一定會支付更多的交易費。衕樣地,選擇使用更少輸出進行分髮的服務也不會降低你的交易費用。

聲明:

  1. 本文轉載自[unchained],著作權歸屬原作者[Tom Honzik],如對轉載有異議,請聯繫Gate Learn團隊,團隊會根據相關流程盡速處理。
  2. 免責聲明:本文所錶達的觀點和意見僅代錶作者個人觀點,不構成任何投資建議。
  3. 文章其他語言版本由Gate Learn團隊翻譯, 在未提及Gate.io的情況下不得覆製、傳播或抄襲經翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!