Address

從公共地址格式轉換為原始交易格式

  • June 13, 2021

所以我試圖完全理解如何解碼交易。在開發文件中,它討論了原始交易:https ://developer.bitcoin.org/reference/transactions.html 在“TxOut:交易輸出”段落中有一個範例。在該範例的底部附近,它解碼了比特幣腳本。它顯示您將標記為公鑰的 20 個字節推入堆棧。

cbc20a​​7664f2f69e5355aa427045bc15e7c6c772

該值是從來自公鑰的“createrawtransaction”cli 函式自動生成的。它特別引用了此處的範例 <https://developer.bitcoin.org/examples/transactions.html#simple-raw-transaction> 它說

NEW_ADDRESS=mz6KvC4aoUeo6wSxtiVQTo7FDwPnkp6URG

他們從哪裡來

mz6KvC4aoUeo6wSxtiVQTo7FDwPnkp6URG

cbc20a​​7664f2f69e5355aa427045bc15e7c6c772

? 它沒有在文件中的任何地方說明。這只是閱讀原始碼的情況嗎?我應該說我已經嘗試將地址插入許多不同的雜湊計算器。我從來沒有得到相同的結果。

目前比特幣中定義了 3 種地址類型:

  • satoshi 時代的 P2PKH 格式,即 Base58 編碼(1 字節版本前綴)+(20 字節 pubkeyhash)+(4 字節校驗和)。校驗和是其前面 21 個字節的雙 SHA256 散列的前 4 個字節。主網版本號為0;很容易找到其他網路的前綴列表。

    • 它對腳本進行編碼OP_DUP OP_HASH160 &lt;that pubkeyhash&gt; OP_EQUALVERIFY OP_CHECKSIG
  • BIP 13 和 BIP 16 中指定的 P2SH 格式。它遵循與 P2PKH 地址相同的結構,但版本號不同,它不是公鑰雜湊,而是腳本雜湊。

    • 它對腳本進行編碼OP_HASH160 &lt;that scripthash&gt; OP_EQUAL
  • BIP 173 中引入的原生見證地址格式它使用完全不同的 base-32 編碼(稱為 Bech32)數據(5 位見證版本號)+(可變長度見證程序)。

    • 它對腳本進行編碼OP_(witnessversion) &lt;witness program&gt;(有關此類腳本的語義,請參見 BIP 141)。
    • 編碼在 BIP 350 中進行了修改,以對見證版本 1 及更高版本使用略有不同的校驗和算法。

一般來說,如果您正在尋找規範,那麼 BIP 就是您要尋找的地方,當然,除了早於 BIP 流程的協議/標準方面。

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