Transactions

翻譯輸入(和輸出)以找到交易中涉及的地址?

  • July 5, 2022

我有辦法翻譯比特幣交易中的輸入和輸出腳本嗎?

我正在建構一個應用程序,它可以讓你從比特幣網路查詢不同的統計數據,我希望它也能夠“跟踪地址”。

我試圖閱讀 Script 以及事務是如何工作的,但我有點困惑。

由於 bitcoin-cli 中的內置函式(以及大多數區塊瀏覽器)能夠找到地址,我確信我應該能夠解析和翻譯腳本……或者?

是的,您可以從交易的輸入或輸出中獲取比特幣地址。

為此,您必須從輸入或輸出中提取公鑰(現在主要從輸入中提取,取決於交易類型)。之後,您可以輕鬆計算所涉及的比特幣地址(例如,按照這些步驟https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses#How_to_create_Bitcoin_Address)。

然而,提取公鑰是一項相當艱鉅的任務,要自己實現,並且會花費大量時間,除非您找到現成的實現(如果找到,請告訴我)。

祝你好運,0x309。

如果我錯了,請隨時要求澄清或糾正我。

地址只是對輸出腳本進行編碼的標準化方式。它們不是比特幣協議的一部分,只有少數標準腳本有關聯的地址。截至目前,這些是 P2PKH、P2SH、P2WPKH、P2WSH 和 P2TR。

我不會詳細介紹如何將這些腳本中的每一個轉換為地址,但我會提供有用的連結。

P2PKH(支付給公鑰雜湊)

P2PKH 輸出腳本如下所示:

OP_DUP OP_HASH160 OP_PUSHBYTES_20 <key_hash> OP_EQUALVERIFY OP_CHECKSIG

<key_hash>部分是公鑰的 160 位散列(SHA-256 然後 RIPEMD-160)。地址總是以 開頭1。更多細節在這裡

P2SH(支付腳本雜湊)

P2SH 輸出腳本如下所示:

OP_HASH160 OP_PUSHBYTES_20 <script_hash> OP_EQUAL

<script_hash>部分是兌換腳本的 160 位雜湊。該地址的構造與 P2PKH 類似,並且始終以3. BIP-16中的更多詳細資訊。

P2WPKH(付費見證公鑰雜湊)

P2WPKH 輸出腳本如下所示:

OP_0 OP_PUSHBYTES_20 <key_hash>

與 P2PKH 中一樣,<key_hash>是公鑰的 160 位散列。地址總是以 開頭bc1qBIP-173中的更多詳細資訊。

P2WSH(支付給見證腳本雜湊)

P2WSH 輸出腳本如下所示:

OP_0 OP_PUSHBYTES_32 <script_hash>

<script_hash>部分是兌換腳本的 256 位雜湊(雙 SHA-256)。與 P2WPKH 一樣,地址始終以 BIP-173 開頭bc1q並且也在BIP-173中指定。

P2TR(支付給 Taproot)

P2TR 輸出腳本如下所示:

OP_PUSHNUM_1 OP_PUSHBYTES_32 <key>

<key>部分是BIP-340公鑰。地址總是以 開頭bc1pBIP-350中的更多詳細資訊。

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