Bitcoin-Core

使用joinpsbt進行手動coinjoin的正確方法?

  • August 1, 2019

我正在我的應用程序中為“手動投幣”開發一個功能,以此為靈感:https ://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#Manual_CoinJoin_Workflow

我不是一個有經驗的投幣使用者,只是想確保我沒有在這裡遺漏任何東西。

我正在使用的流程是:

使用者 A 創建一個 PSBT,其中一個 utxo 輸入為 0.1 btc,一個輸出為 0.0995 btc,將輸出發送到他們的新地址。使用者 A 處理 PSBT 以簽署輸入。

使用者 A 將 PSBT 傳遞給使用者 B,使用者 B 創建另一個具有相同輸入量和相同輸出量的 PSBT,並處理 PSBT 以對輸入進行簽名。

使用者 B 可以將其傳遞給重複該過程或最終確定並廣播的其他人。

這是正確的方法嗎?使用者使用錢包處理 PSBT 的順序是否重要?

不,那行不通。joinpsbts必須在創建任何簽名之前使用。否則,現有簽名對加入的交易無效。相反,每個人都必須創建自己的 PSBT,將它們發送給彼此或某個協調員,然後將 PSBT 與joinpsbts. 然後加入的 PSBT 可以分發給每個人,每個人都對其進行處理和簽名。簽名後,每個人必須再次將簽名的 PSBT 發送給其他所有人或所有 PSBT 與combinepsbt. 然後組合的 PSBT 可以最終確定和廣播。

請注意,目前joinpsbts存在重大隱私洩露,因為輸入和輸出按照指定交易的順序添加到加入的 PSBT。有一個開放的Pull Request可以解決這個問題。

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