是否可以為比特幣交易分配一個“發件人”和一個“收件人”地址?
我正在做一個項目,我們需要獲取跨多種加密貨幣的每筆交易的“發件人”和“收件人”地址。在基於賬戶的貨幣中,這非常簡單,但在基於 UTXO 的貨幣中則不然。是否有已知的算法可以在兩者之間“標準化”?
不,比特幣交易不能清晰地投射在單個“發件人地址”或單個“收件人地址”上。比特幣可以在一次交易中促成許多支付,並且可能有多個發送者,通常是多個接收者。
即使在一個使用者向另一個使用者付款的簡單交易中,發送者也可能使用多個輸入,並且幾乎總是會為自己分配一個零錢輸出。因此,有一個(或多個)發送者和兩個接收者。
沒有什麼能阻止多個使用者一起創建交易。例如,在 PayJoin 交易中,接收方向支付自己的交易提供輸入,從而使其成為兩個發送方和一個或兩個接收方(取決於是否有變化)。
兩個使用者也可以加入在一筆交易中進行單獨的支付。在所謂的 CoinJoin 交易中,他們每個人都在貢獻自己的輸入,並將一些資金分配給接收者,並將找零發回給自己。因此,例如,您可能有兩個發送者和四個接收者。
當您考慮託管服務的工作方式時,挑戰將獲得一個全新的維度。例如,當您從線上錢包服務或經紀公司發送資金時,該服務通常會將數十筆付款/取款一起批量處理,並從他們的綜合錢包中全部支付。付款和取款的發起者不控制為交易提供資金的任何地址,但在他們授權付款的意義上是“發送者”。保管人是實際的發送者,但可能不知道任何接收者是誰,並且僅代表客戶執行付款。例如,發送到交易的任何“發件人”地址可能會歸功於服務的某個隨機使用者,該使用者既不是服務也不是任何發送者。
比特幣交易中沒有“發件人”地址這樣的東西,您通常無法區分輸出是返回發送者還是接收者。
我建議您為模型中的每筆交易假設多個發送者和多個接收者的一般情況,並將基於帳戶的加密貨幣作為單個發送者和單個接收者的特殊情況進行跟踪。請注意,即使對於基於賬戶的貨幣,許多智能合約也允許在一次交易中發送給多個收件人。