Taproot PTLC:非多重簽名部分時間鎖定的支出條件
(Taproot環境)我想出的是以下邏輯:
$alice = A; $bob = B; pk($bob) || (pk($alice) && older(10))
(參見 Minsc)。
我查看了在 Regtest 中工作的生成/生成的比特幣腳本。
我無法重現/驗證的是以下問題:
- Bob 能否在單個交易中與不同合作夥伴(在本例中為 Alice 等合作夥伴)的合約中批量花費 UTXO?
基本上 Bob 根據上述條件創建一個地址,然後 James 或多個付款人將他們的 UTXO 發送到 Tapscript 合約。
Bob 現在想花掉收到的幣,但是為了減少費用,他想批量消費。因此,典型的交易將包含來自多個不同 Tapscript 的多個 UXTO。輸出是第 3 方地址 - 包括 Alice 的地址。
如果 Bob 無法進行這些交易,Alice 應該能夠在 10 個區塊后索取剩餘的 UXTO。
- 啟動 Taproot 後,這是否可以在主網中重現?我錯過了什麼嗎?
是的,假設 James 向 Bob 發送了兩個具有以下支出條件的輸出:
pk($bob) || (pk($alice) && older(10)) pk($bob) || (pk($carol) && older(10))
Bob 可以通過僅用他的簽名單方面滿足第一個支出條件,在一次交易中一起花費這些 UTXO。一旦兩個 UTXO 中的任何一個獲得十次確認,Alice 或 Carol 也分別獲得單方面花費所述 UTXO 的能力。
如果 Bob 的交易
tx_B
沒有在那個區塊高度得到確認,例如 Alice 可以創建一個衝突交易,tx_A
只使用她控制的 UTXO 作為輸入,並將資金發送到她自己的地址之一,而不是 Bob 試圖支付的任何地址。鑑於 Bob 的交易tx_B
應該廣泛存在於網路上節點的記憶體池中,Alice 的交易tx_A
將被已經在“先見安全”策略下看到的節點丟棄,tx_B
因此在網路上的中繼很差,但 Alice 可以處理tx_A
直接發給礦工。或者,如果 Bob
tx_B
發出了可替換性信號,並且 Alice 向她附加了更高的交易費用,那麼中繼障礙將不適用,tx_A
在這種情況下,它通常會取代 Bob 在節點記憶體池中的交易。因此,雖然 Alice 和 Carol 能夠在 10 次確認後產生相互競爭的支出指令,但可靠地強制他們的交易優先於 Bob 的交易並非易事。