Я следил за этим сообщением и создал закрытый ключ для биткойн-кошелька. В сообщении говорится, что после нахождения случайного 256-битного (32 байта) целого числа необходимо добавить номер версии и добавить к нему контрольную сумму. Это создает 37-байтовый шестнадцатеричный код. Теперь я пытаюсь найти открытый ключ, связанный с этим закрытым ключом. Я узнал, что ОТКРЫТЫЙ ключ рассчитывается путем применения кривой ECDSA secp256k1 к закрытому ключу. Но только 32 байта принимаются на вход алгоритмом ECDSA.
Так что я делаю неправильно?
Заранее спасибо.
Закрытый ключ — это просто сгенерированная вами энтропия в 32 байта. Между кошельками этот закрытый ключ может быть закодирован в формате, который предоставляет дополнительную информацию, такую как сеть (основной/тестовый/альтернативный) и был ли использован сжатый или несжатый открытый ключ. Эта кодировка называется форматом импорта кошелька.
version
(1B) (основная сеть 0x80/тестовая сеть 0xEF)privatekey
(32Б)0x01
маркер сжатия (1B)checksum
(4Б)https://teachbitcoin.io/wallets.html#/2
Контрольная сумма - это все, что предшествует ей. Данные, наконец, закодированы в base58.
Чтобы взять эти данные WIF и создать открытый ключ, кошельку просто нужно извлечь закрытый ключ (32B) и вычислить точку открытого ключа.
private_key * Generator_point = public_key(x,y)
Полученная точка открытого ключа x, y является вашим открытым ключом. Если рынок сжатия включен, возьмите координату x и добавьте к ней 0x02 или 0x03 в зависимости от того, четная она или нечетная.
0x02/0x03 + x_coordinate(32B)
0x04 + x_coordinate(32B) + y_coordinate(32B)
АБХИШЕК
Джеймс С.