Coinjoin

如果我們有交叉輸入簽名聚合,我們將為coinjoins(和payjoins)節省多少塊空間?

  • August 10, 2021

如果我們有交叉輸入簽名聚合(發布一個啟用它的推測性未來軟分叉),我們將為coinjoins(和payjoins)節省多少塊空間(重量單位或vbytes的特定數字)?

這個問題是由馬里奧·吉布尼在Twitter 上提出的,並已被轉述。

*交叉輸入簽名聚合 (CISA)*是指生成一個共享簽名的想法,該簽名涵蓋一個事務中的多個輸入。Schnorr 簽名算法的線性使得聚合成為可能。請注意,CISA 似乎對關鍵路徑支出最感興趣,這個答案根本不會考慮腳本路徑支出。此外,CISA 是想法/草案階段的一個功能,潛在的實施可能與我目前的理解有很大不同。

假設 Taproot 按照目前的提議啟動,簽名聚合(用於關鍵路徑花費)可能需要一個新的輸出類型。讓我們假設 Taproot 按目前提議啟動,並且支持簽名聚合的新輸出類型在所有方面都等同於 Pay to Taproot (P2TR)。

在 P2TR 中,簽名是交易見證部分的一部分,因此它們受到見證折扣的影響。正如 BIP340 所提議的,Schnorr 簽名為 65 個字節(32 個字節為r值,32 個字節為s值,1 個字節為 sighash 值)。聚合簽名覆蓋的每個輸入都將看到其簽名被一個字節佔位符替換,但最後一個輸入除外,其見證將包含聚合簽名。給定具有n聚合輸入的交易,(n-1)×64 WU (weightunit)假設交叉輸入簽名不需要額外的成本,則可以節省。

在 P2TR 交易中,關鍵路徑輸入的權重為230 WU (57.5 vB),交易標頭的權重為42 WU (10.5 vB),P2TR 的輸出為172 WU (43 vB)

讓我們假設一個投幣交易是由多個參與者創建的,其中每個參與者貢獻兩個輸入、一個接收者輸出和一個零錢輸出。如果每個使用者在沒有 CISA 的情況下單獨執行此交易,每個使用者將產生的交易權重為:

42 WU + 2×230 WU + 2×172 WU = 846 WU

使用 CISA,單個參與者的成本只是聚合他們的兩個輸入的簽名,這個成本將減少到:

42 WU + 2×230 WU - 64 WU + 2×172 WU = 782 WU.

當兩個參與者一起投入時,每個參與者的成本將下降到:

(42 WU + 4×230 WU - 3×64 WU + 4×172 WU) / 2 = 1458 WU / 2 = 729 WU

對於五個參與者,每位使用者的成本將變為:

(42 WU + 10×230 WU - 9×64 WU + 10×172 WU) / 5 = 3486 WU / 5 = 697.2 WU

對於十名參與者,每位使用者的成本為:

(42 WU + 20×230 WU - 19×64 WU + 20×172 WU) / 10 = 6866 WU / 10 = 686.6 WU

正如你所看到的,每個使用者的成本隨著輸入/參與者的數量而降低,因此多個使用者一起創建交易存在經濟動機。然而,節省是有限的,因為隨著輸入計數的增加,它們逐漸接近每個輸入 64 WU。前兩個參與者的加入實現了最大的節省,每個額外的使用者帶來的收益遞減。如果使用者自己已經有很多輸入,則投幣只能為他們提供邊際節省,因為通過與其他人加入的節省固定為按參與者數量拆分標頭和最後剩餘的簽名。

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