Transactions

如何從 scriptPubKey 中提取地址?

  • July 13, 2019

我正在創建一個塊解析器,昨天剛剛了解了比特幣中的腳本,到目前為止這有點令人困惑。我想提取每筆交易中涉及的地址。現在,我能夠閱讀每個輸出的腳本。為了提取地址,我認為我的程式碼需要處理所有不同格式的 scriptPubKeys 是否正確?是否有任何範常式式碼可以指導我?如果我完全錯了,我該怎麼辦?

是的,要從 scriptPubKeys 獲取地址,您需要進行模式匹配。只有少量的地址類型,每種都有自己固定的 scriptPubKey 模式。請記住,並非所有 scriptPubKeys 都映射到一個地址,因此您會發現沒有地址的 scriptPubKeys 並且您需要處理這些。

Bitcoin Core 有一個模式匹配器,用於從 scriptPubKeys 到函式中solver地址類型。、MatchPayToPubkey和可以在該文件的較高位置找到MatchPayToPubkeyHashMatchMultisig和函式可以在這裡IsPayToScriptHash找到。IsWitnessProgram

需要注意的一件事solver是它不只返回地址類型。它返回的某些類型不映射到地址。它們是 TX_NULLDATA、TX_MULTISIG、TX_PUBKEY 和 TX_NONSTANDARD。

了解如何從地址獲取 scriptPubKey 也可能對您有用。比特幣核心在這裡做到了。

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