Могу ли я использовать один и тот же закрытый ключ для Ethereum и Bitcoin?

Закрытые ключи Биткойн и Эфириум обычно представляют собой 256-битное число, нельзя ли использовать один и тот же закрытый ключ как для кошельков Биткойн, так и для учетных записей Эфириума?

Например, в вики Биткойн говорится :

В Биткойне закрытый ключ обычно представляет собой 256-битное число (некоторые новые кошельки могут использовать от 128 до 512 бит), которое может быть представлено одним из нескольких способов. Вот закрытый ключ в шестнадцатеричном виде - 256 бит в шестнадцатеричном формате это 32 байта или 64 символа в диапазоне 0-9 или AF.

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 я сгенерировал соответствующий открытый ключ для Ethereum:

0x60751Ab56d58781069b1C73064aD580dAde1F469

Теперь я вижу, что не каждое 256-битное число является действительным закрытым ключом ECDSA для биткойнов. Могу ли я использовать один и тот же закрытый ключ для Ethereum и Bitcoin? Есть ли удобный способ сгенерировать открытый ключ ETH и BTC из любого 256-битного случайного числа?

Это был бы отличный способ хранить эфир и биткойн на одной учетной записи. Является ли это возможным?

Ответы (2)

Да, обе криптовалюты используют одну и ту же эллиптическую кривую SECP256K1.

Возможно, лучшей альтернативой является использование кошелька BIP32 . У вас есть главный ключ, который не используется напрямую для транзакций, но используется для получения дочерних ключей, которые можно использовать.

Вы можете получить отдельные ключи для биткойнов и эфириума. Вы всегда сможете использовать мастер-ключ для подписи транзакций для обоих ключей.

@5chdn проверьте BIP 44 для схемы кошелька, которая позволяет использовать несколько криптовалют с одним и тем же закрытым ключом HD.
"Да, можно"... но как это сделать? Если у меня уже есть должным образом зарезервированный и защищенный холодный биткойн-кошелек, как я могу просто повторно использовать его для Эфириума?
@JamesTheAwesomeDude Если у вас есть кошелек, совместимый с BIP44 , вы можете генерировать ключи, используя путь. Для Эфириума более распространен путь m/44'/60'/0'/0, но нет стандартного пути ethereum.stackexchange.com/questions/19055/… и github.com/ethereum/EIPs/issues/84 .

Сам отвечая на свой вопрос 4 года спустя: Да!

Я написал реализацию Secp256k1 в Crystal: 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) для учетных записей Ethereum или даже мини-приватные ключи.