C-Sharp
來自 DecodeRawTransaction (C#) 的發件人地址
我正在嘗試使用 C# 中的比特幣 JSON RPC 獲取發件人地址。所以我 GetRawTransaction 然後使用 DecodeRawTransaction 方法返回我的 JSON 對象。我可以在此接收方地址的“vout”中看到,但在“vin”中看不到發送方地址。
任何人都可以幫忙嗎?我可能對這個問題的表述很糟糕,所以請詢問您是否需要更多資訊。謝謝。
下面的引用摘自我對如何實現像 SatoshiDice 這樣的遊戲的回答? 您正在尋找的內容在我下面的答案的這一部分中得到解決。
獲取客戶金額和付款地址
- 打電話
bitcoind getrawtransaction [The incoming transaction ID] 1
。末尾的 1 將以“詳細模式”返回數據,本質上是 JSON 格式的原始數據。- 從原始交易細節中,從對像中獲取
txid
and 。通過此事務,再次呼叫.vout``vin``bitcoind getrawtransaction``txid
- 從這些原始事務詳細資訊中找到
vout
對象,由vout
步驟 #2 中的索引引用。在這個vout
對像中,應該有一個收款人地址列表。獲取並儲存第一個地址。值得一提的是,收到的付款可以是對多個收件人地址的大量先前交易的總和。獲取發起人地址並不總是直截了當的,因為原始付款可能包含來自多個發送地址的多筆付款。
這就是為什麼我在回答 SatoshiDice 問題時提到從第二個
vout
結果中獲取第一個地址。您可以放心地假設,如果有人向您發送來自多個賬戶的付款,他們將控制所有賬戶。因此,選擇列表中的第一個將為您提供正確的地址。
您可以使用BitcoinLib的GetTransactionSenderAddress方法,但重要的是您要了解這是一種黑客攻擊,因為比特幣的協議不支持“發件人地址”,並且僅適用於胖客戶端,例如比特幣核心等。