Testnet

測試網地址的公鑰

  • January 2, 2018

我正在嘗試(手動)在測試網上創建交易。我有以下私鑰:cQKqSNkEdyLJziQSr4iKTUJC95s9HHFo4bY88gi2i6v2quiVVLZb屬於以下公共地址:mkhn3gfrGHmd4b1ZmHLdMsbQd2eHRKg8wN. 當我嘗試簽署交易時,我生成的公共(未壓縮)密鑰是:042d7331345e0da6ab1125eb39488a542a9923f31c585c20114d211a9f6bc9f3bf55d1d843cb7cf1d36b32d1cb00d2f140ef028e726a19a766f6ca7cef7b956583. 事實證明這是無效的(因為交易被網路拒絕)。但是,當我嘗試使用工具對交易進行簽名時,它生成了以下(正確的)公鑰:040b4a4274222d7239d33c17ce39d753eee97103773b7e5a89e62f0ef0121032d7331345e0da6ab1125eb39488a542a9923f31c585c20114d211a9f6bc9f3b.

這些鍵有什麼區別?為什麼第一個在簽署 tx 時不正確,但在我為其生成公共地址時正確?

一些觀察:私鑰與第一個壓縮地址(mkhn3 …)匹配。它適合十六進制的公鑰,見下文。這裡描述了密鑰的派生方式 - 另見圖片。 <http://www.righto.com/2014/02/bitcoins-hard-way-using-raw-bitcoin.html>

在此處輸入圖像描述

一旦你有了十六進制的公鑰,有以下 8 個步驟來獲得最終的比特幣地址:

1 - Public ECDSA Key
2 - SHA-256 hash of 1
3 - RIPEMD-160 Hash of 2
4 - Adding network bytes to 3
5 - SHA-256 hash of 4
6 - SHA-256 hash of 5
7 - First four bytes of 6
8 - Adding 7 at the end of 4
9 - Base58 encoding of 8

第一個未壓縮的公鑰(適合私鑰):

042d7331345e0da6ab1125eb39488a542a9923f31c585c20114d211a9f6bc9f3bf55d1d843cb7cf1d36b32d1cb00d2f140ef028e726a19a766f6ca7cef7b956583

將轉換成這個比特幣地址:

myfp2YcyYjksxmdfA74yEuBmaUgt9xWCot

和你的第二個未壓縮的公鑰

040b4a4274222d7239d33c17ce39d753eee97103773b7e5a89e62f0ef0121032d7331345e0da6ab1125eb39488a542a9923f31c585c20114d211a9f6bc9f3b

將轉換為這個比特幣地址:

mmKUwoRgd9YdvRYYXGyumjduRMTAPCnkMz

我不確定您使用哪些工具來創建密鑰,看起來您在使用壓縮密鑰和未壓縮密鑰之間存在差距。Andreas 的線上書籍(“Mastering Bitcoin, 2nd edition”)提供了一個很好的參考,它也可以線上閱讀(參見第 4 章…)。

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