Transactions

從 JSON 或原始交易計算交易 ID TXID

  • November 11, 2015

考慮一個尚未發布的離線交易,通過如下方法創建:

<http://brainwallet.org/#tx>

a) 我如何從原始交易中計算交易 ID?b) 我如何從 JSON 交易中計算交易 ID?

參考客戶端 (Bitcoin-QT) 和<http://brainwallet.org/>之類的服務都在簽名之後但在交易廣播之前顯示交易 ID。

以這個有效的二進制交易為例:

01000000017a06ea98cd40ba2e3288262b28638cec5337c1456aaf5eedc8e9e5a20f062bdf000000008b48304502200addea57dd4c2871357165ed6d2bc94b117e322918073ac4c66d535637e74600022100dfaa0dce9e2e61aa2867c87fadca4e0fa3c70e9852a4689b3ef24b3f94809b4a014104e0ba531dc5d2ad13e2178196ade1a23989088cfbeddc7886528412087f4bff2ebc19ce739f25a63056b6026a269987fcf5383131440501b583bab70a7254b09effffffff01b02e052a010000001976a9142dbde30815faee5bf221d6688ebad7e12f7b2b1a88ac00000000

在 JSON 中,它解碼為:

{
   "txid" : "46b690f548f6eb70dca7fb2020ff4be369c42f3ea2375fd3f6b34890b640f8e9",
   "version" : 1,
   "locktime" : 0,
   "vin" : [
       { [... snipped ...]}
       }
   ]
}

使用第一個鍵中的事務 ID。如果您自己進行簽名,則 TXID 實際上是原始交易的雙 SHA256 雜湊。wiki 上有更多關於原始交易的資訊。

答案是對的,但是你總是要考慮交易的延展性,這樣你的交易的 ID 在挖礦過程中很容易在網路中發生變化。因此,您不能信任離線計算的交易 ID,並且必須等到您的交易被網路確認後才能依賴其 ID。

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