Accounts

我可以為乙太坊和比特幣使用相同的私鑰嗎?

  • March 29, 2020

比特幣和乙太坊私鑰通常都是 256 位數字,比特幣錢包和乙太坊賬戶不能使用相同的私鑰嗎?

例如,比特幣維基指出

在比特幣中,私鑰通常是一個 256 位的數字(一些較新的錢包可能使用 128 到 512 位),可以用幾種方式之一來表示。這是十六進制的私鑰 - 十六進制的 256 位是 32 個字節,或 0-9 或 AF 範圍內的 64 個字元。

E9 87 3D 79 C6 D8 7D C0 FB 6A 57 78 63 33 89 F4 45 32 13 30 3D A6 1F 20 BD 67 FC 23 3A A3 32 62

這是(刪除空格):

e9873d79c6d87dc0fb6a5778633389f4453213303da61f20bd67fc233aa33262

使用MyEtherWallet,我為乙太坊生成了相應的公鑰:

0x60751Ab56d58781069b1C73064aD580dAde1F469

現在我看到並不是每個 256 位數字都是比特幣的有效 ECDSA 私鑰。我可以為乙太坊和比特幣使用相同的私鑰嗎?有沒有一種方便的方法可以從任何 256 位隨機數生成 ETH 和 BTC 公鑰?

這將是一種將乙太幣和比特幣儲存在同一個賬戶上的好方法。是否可以?

是的,兩種加密貨幣都使用相同的橢圓曲線 SECP256K1。

也許更好的選擇是使用BIP32 錢包。您有一個不直接用於事務的主密鑰,但它用於派生無法使用的子密鑰。

您可以為比特幣和乙太坊派生單獨的密鑰。您將始終能夠使用主密鑰為兩個密鑰簽署交易。

4 年後自我回答我自己的問題:是的!

我在 Crystal 中寫了一個 Secp256k1 實現:github.com/q9f/secp256k1.cr

在這個過程中,我為比特幣和乙太坊實現了密鑰管理。相同的密鑰對可用於檢索比特幣和乙太坊格式的地址:

生成一個壓縮的比特幣主網地址:

key = Secp256k1::Keypair.new

btc = Secp256k1::Bitcoin::Account.new key
btc.address
# => "1Q1zbmPZtS2chwxpviqz6qHgoM8UUuviGN"

eth = Secp256k1::Ethereum::Account.new key
eth.address
# => "0x224008a0F3d3cB989c807F568c7f99Bf451328A6"

Github 儲存庫包含更多範例。有趣的好處:通過這種方式,您可以將比特幣錢包導入格式 (WIF) 用於乙太坊賬戶甚至迷你私鑰。

引用自:https://ethereum.stackexchange.com/questions/6520