一筆比特幣交易可以由很多人一起出錢嗎?

一筆比特幣交易可以由很多人一起出錢嗎?的文章封面插畫

幾位朋友合買一件物品時,常見做法是先把錢轉給其中一人,再由他統一付款。比特幣錢包的付款畫面也往往只呈現一位操作人,因此很容易讓人以為,一筆鏈上交易的所有資金都必須屬於同一位付款者。

不過,比特幣交易沒有「付款人姓名」欄位。它列出一組要花用的 UTXO、一組新輸出,以及兩者之間留下的手續費;每個輸入只需分別滿足原有的花費條件。只要所有必要授權都有效,不同人控制的輸入可以被組進同一筆交易。

因此,一筆比特幣交易確實可以由很多人共同出資。真正的難題不在協議能否相加,而在參與者如何共同確認收款安排、各自負擔的金額與費用,並在不交出祕密資料的情況下完成簽署。少了任何一份必要授權,整筆付款都不會只成功一半。

每個輸入都有自己的授權責任

一筆交易可以引用很多個先前產生的 UTXO。甲提供一筆、乙提供兩筆、丙再提供一筆時,這些輸入不會先匯入某個臨時共同帳戶;它們會直接成為同一份交易資料的一部分,並共同支應新輸出與費用。

每位參與者只需用自己的私鑰替所控制的輸入產生有效簽章。其他人不必取得那把私鑰;全節點日後可以利用對應公鑰與花費條件,逐一檢查每個輸入是否獲得正確授權。某一位參與者能簽自己的輸入,不代表他也能動用別人的資產。

金額檢查則針對整筆交易。所有輸入的總額必須大於或等於所有新輸出的總額,差額成為整筆交易的手續費。協議只看總和是否成立,不會附上一張表,宣告其中多少費用由甲或乙負擔。

多人可以共同組裝,不必交換私鑰

實際協作時,可以先建立一份尚未完成的交易,列出各方預計提供的輸入、付款輸出與找零安排,再交給參與者分別核對及簽署。部分簽署比特幣交易(Partially Signed Bitcoin Transaction,PSBT)就是常見的資料格式之一;它讓不同軟體交換組裝與簽署所需資訊,再把各自完成的部分合併。

這種流程分離了交易資料與祕密鑰匙。協調者可以收集公開的輸入資料與簽章,卻不必保管每個人的私鑰。常見簽署方式也會把預定輸出納入簽章承諾;收款條件、金額或費用遭到改動後,原簽章通常無法直接沿用。

限制在於,參與者簽下的是整份交易安排所計算出的授權,不只是畫面上的「我出多少」。如果協調者加入意外的輸出、減少某人的找零,或留下異常高的費用,交易在數學上仍可能有效。簽署介面能否清楚呈現輸入、輸出與總費用,因而是協作安全的一部分。特殊簽章範圍還可能刻意允許後續增添輸入或調整部分欄位,不能把所有協作流程都視為完全相同。

一人退出,整筆交易就無法完整成立

簽章資料不足時,候選交易只是未完成的資料,不會讓已簽署者的資產先行移動。全節點收到最終版本後,會檢查每個輸入;只要其中一個缺少必要簽章、引用的資產已被其他交易花掉,或輸出總額超出可用輸入,整筆交易便無效。

即使簽章已經集齊,取得交易確認前仍可能發生衝突。某位參與者若另做一筆交易花掉自己提供的同一個 UTXO,兩個版本便會競爭。礦工只能把符合當下有效帳本狀態的版本放進區塊;哪個版本先成為共同歷史,會決定另一個版本是否失去可用輸入。

所以,多方付款具有「整筆成立或整筆不成立」的特性。它不會在甲的簽章有效時先支付甲的部分,再把乙的失敗留到日後補辦。這種原子性減少了鏈上半套結算,卻也讓延誤、離線或臨時反悔的影響擴及所有參與者。

多人出資和多重簽章是兩個問題

兩種情境都可能出現多份簽章,底層關係卻不同。多人出資通常是多個 UTXO 各有自己的控制條件:甲替甲的輸入簽,乙替乙的輸入簽。多重簽章則是同一個 UTXO 的花費條件,預先要求多把指定鑰匙達到門檻後才能動用。

兩者也能同時存在。例如甲提供一般單一簽章輸入,乙提供一筆需要二取三授權的多重簽章輸入;最終交易既有不同出資者,也有某個輸入內部的共同把關。只看整筆交易出現幾份簽章,無法直接判斷它屬於哪一種控制安排。

共同輸入是一條線索,並非身分證明

鏈上分析常把同一筆交易的多個輸入視為可能由同一方控制,因為一般錢包確實常把自己的數筆 UTXO 合併花用。多人共同出資正好說明這項推測的界線:一筆交易可以集合彼此獨立的控制者,公開資料不會替每個輸入標上真實姓名。

有些協作交易會刻意利用多方輸入與輸出,降低外界直接判斷資金對應關係的把握,CoinJoin 是常被提到的例子。不過,多人參與不會自動帶來完整隱私。特殊金額、找零形狀、協調者保存的紀錄、交易前後的合併方式與網路傳播線索,仍可能重新建立關聯。

一筆多人出資的交易,像多位旅客各自拿出一張有效車票,共同租下一班只能整體發車的車。每張票都要個別驗真,路線與總價也得由所有人面對;任何必要票券缺席,整班車便不能按原計畫出發。看懂輸入各自授權、交易整體結算這兩層,就能理解多人為何可以一起付款,也能看清協作並未消除費用、失敗與隱私上的現實摩擦。