Transactions
如何從 scriptPubKey 中提取地址?
我正在創建一個塊解析器,昨天剛剛了解了比特幣中的腳本,到目前為止這有點令人困惑。我想提取每筆交易中涉及的地址。現在,我能夠閱讀每個輸出的腳本。為了提取地址,我認為我的程式碼需要處理所有不同格式的 scriptPubKeys 是否正確?是否有任何範常式式碼可以指導我?如果我完全錯了,我該怎麼辦?
是的,要從 scriptPubKeys 獲取地址,您需要進行模式匹配。只有少量的地址類型,每種都有自己固定的 scriptPubKey 模式。請記住,並非所有 scriptPubKeys 都映射到一個地址,因此您會發現沒有地址的 scriptPubKeys 並且您需要處理這些。
Bitcoin Core 有一個模式匹配器,用於從 scriptPubKeys 到函式中的
solver
地址類型。、MatchPayToPubkey
和可以在該文件的較高位置找到MatchPayToPubkeyHash
。MatchMultisig
和函式可以在這裡IsPayToScriptHash
找到。IsWitnessProgram
需要注意的一件事
solver
是它不只返回地址類型。它返回的某些類型不映射到地址。它們是 TX_NULLDATA、TX_MULTISIG、TX_PUBKEY 和 TX_NONSTANDARD。了解如何從地址獲取 scriptPubKey 也可能對您有用。比特幣核心在這裡做到了。