Я генерирую открытый ключ из своего закрытого ключа. Я делал на Java-скрипте и C#. но сгенерированные открытые ключи разные. Мой код в С# (KeyCore.NET):
PrivateKey pv = new PrivateKey(Globals.ProdDumpKeyVersion, "KwY7eRvXXFd7HPX4Zuv8STZMLsVSe2X22HkU24Av84W1Cb7Rd5Yh");
PublicKey pb = pv.PublicKey;
Console.WriteLine(pb.ToString());
результат для кода С# 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdH
и результат для кода javascript16reZXagkyToongduimD25SEerXwP3MQ4n
Я использовал KeyCore.NET и битадрес
Закрытому ключу соответствует уникальный открытый ключ.
В вашем случае 16reZXagkyToongduimD25SEerXwP3MQ4n — это адрес (хэш + кодировка открытого ключа).
Число base58 16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdH
представляет собой кодировку base58Check (сжатого) открытого ключа:
030d4018f164d58e41e0c5fb99eb5ec26b4f21fc8ad0db726d51a7cce60c75df0a
что соответствует KwY7eRvXXFd7HPX4Zuv8STZMLsVSe2X22HkU24Av84W1Cb7Rd5Yh
, и чей адрес 16reZXagkyToongduimD25SEerXwP3MQ4n
. Обратите внимание, что ваш закрытый ключ на самом деле немного больше, чем закрытый ключ. Это 38-байтовое число, которое является кодировкой base58Check числа, содержащего 34
байты (а не просто 32 для секретного ключа). В начале есть дополнительный байт версии 0x80
, который указывает, что закрытый ключ должен использоваться для основной сети биткойнов (а не для тестовой сети). есть дополнительный0x01
суффиксный байт в конце (непосредственно перед 4 байтами контрольной суммы), который указывает, что открытый ключ, связанный с этим закрытым ключом, должен быть сгенерирован в сжатой форме (33 байта), а не в несжатой форме (65 байтов). Таким образом, несмотря на то, что ваше WIF-представление вашего секретного ключа верно, приводит к уникальному адресу (один из которых соответствует сжатому ключу в основной сети), фактический 32-байтовый секрет может потенциально привести к 4 адресам (в зависимости от состояния сжатия открытый ключ и тип сети).
16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdH
в адрес 16reZXagkyToongduimD25SEerXwP3MQ4n
с BitcoinAddress
классом Bitcoin.KeyCore
пространства имен! на самом деле это для удобства чтения человеком. Я люблю голосовать, но не могу!
Арман
16w4zZWjWnhfEasJcSbfDQeHJRk1LytPHF5ir1ZS9mtUD5adsdH
? это неправильно?Хартмут