Является ли сгенерированный открытый ключ из закрытого ключа уникальным в биткойнах?

Я генерирую открытый ключ из своего закрытого ключа. Я делал на Java-скрипте и C#. но сгенерированные открытые ключи разные. Мой код в С# (KeyCore.NET):

PrivateKey pv = new PrivateKey(Globals.ProdDumpKeyVersion, "KwY7eRvXXFd7HPX4Zuv8STZMLsVSe2X22HkU24Av84W1Cb7Rd5Yh");
PublicKey pb = pv.PublicKey;
Console.WriteLine(pb.ToString());

результат для кода С# 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdHи результат для кода javascript16reZXagkyToongduimD25SEerXwP3MQ4n

Я использовал KeyCore.NET и битадрес

Ответы (2)

Закрытому ключу соответствует уникальный открытый ключ.

В вашем случае 16reZXagkyToongduimD25SEerXwP3MQ4n — это адрес (хэш + кодировка открытого ключа).

а как же: 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdH? это неправильно?
Поскольку открытый ключ, соответствующий закрытому ключу, который вы указали в своем сообщении (кстати, не делайте этого !!!), имеет вид «030d4018f164d58e41e0c5fb99eb5ec26b4f21fc8ad0db726d51a7cce60c75df0a», я не знаю, что такое 16..sdH, я должен сказать

Число base58 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdHпредставляет собой кодировку base58Check (сжатого) открытого ключа:

030d4018f164d58e41e0c5fb99eb5ec26b4f21fc8ad0db726d51a7cce60c75df0a

что соответствует KwY7eRvXXFd7HPX4Zuv8STZMLsVSe2X22HkU24Av84W1Cb7Rd5Yh, и чей адрес 16reZXagkyToongduimD25SEerXwP3MQ4n. Обратите внимание, что ваш закрытый ключ на самом деле немного больше, чем закрытый ключ. Это 38-байтовое число, которое является кодировкой base58Check числа, содержащего 34байты (а не просто 32 для секретного ключа). В начале есть дополнительный байт версии 0x80, который указывает, что закрытый ключ должен использоваться для основной сети биткойнов (а не для тестовой сети). есть дополнительный0x01суффиксный байт в конце (непосредственно перед 4 байтами контрольной суммы), который указывает, что открытый ключ, связанный с этим закрытым ключом, должен быть сгенерирован в сжатой форме (33 байта), а не в несжатой форме (65 байтов). Таким образом, несмотря на то, что ваше WIF-представление вашего секретного ключа верно, приводит к уникальному адресу (один из которых соответствует сжатому ключу в основной сети), фактический 32-байтовый секрет может потенциально привести к 4 адресам (в зависимости от состояния сжатия открытый ключ и тип сети).

Спасибо, сэр! так что я ясно теперь! мы можем преобразовать base58 открытого ключа, т.е. 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdHв адрес 16reZXagkyToongduimD25SEerXwP3MQ4nс BitcoinAddressклассом Bitcoin.KeyCoreпространства имен! на самом деле это для удобства чтения человеком. Я люблю голосовать, но не могу!