Transactions

如何從地址雜湊中確定正確的地址

  • January 14, 2019

我正在使用私人 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 地址

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