Transactions
如何從地址雜湊中確定正確的地址
我正在使用私人 libbitcoin 伺服器和 libbitcoin explorer。當我使用 bx fetxh-transaction 時,它返回如下內容:
我試圖弄清楚如何從 address_hash 中獲取正確的地址。當我將 bx base58check-encode 用於沒有版本(或 -v 0)的輸入 address_hash 時,它返回:
當我使用 bx base58check-encode -v 5 它返回:
通過blockexplorer檢查顯示第二種方法是正確的。我的問題是:如何確定 base58check-encode 版本以生成正確的地址?
謝謝你。
您的地址
32feVAD9Haq1CtfT6JCLTt4L5qef3UnVpY
是一個 P2SH 主網地址,帶有05
地址前綴,代表以下數據的 base58 編碼:
[05][20-byte hash][4-byte checksum]
因此,
[05]
前綴告訴您的錢包您的地址代表 P2SH 嵌入式腳本預兆 (20B)。另一方面,
[00]
前綴告訴你的錢包 20B 摘要代表公鑰雜湊,並且資金應該發送到 P2PKH(Pay-2-Public-Key-Hash)輸出。因此,版本號為您的錢包提供了必要的資訊,以便在發送資金時產生正確的輸出類型,以便接收者擁有私鑰 (P2PKH) 或預兆 (P2SH) 來使用它們。
05
前綴轉換為base58 編碼,這就是為什麼您的地址以 3 開頭的3
原因。我無法評論嵌入式腳本類型是什麼,因為 P2SH 只是其中的 20B 雜湊摘要。也許是 P2SH(P2WPKH) 腳本類型。修正答案:
要確定適合交易特定輸出的地址版本,只需查看有問題的輸出腳本。
- P2PKH:
"hash160 [20B] equal"
-> 版本 5- P2SH:
"dup hash160 [20B] equalverify checksig"
-> 版本 0- P2WPKH:
"[00] [20B]"
-> bech32 地址