Next scheduled rescrape ... never
Version 1
Last scraped
Scraped on 23/06/2025, 15:07:55 UTC
В исходниках первой версии Bitcoin v0.1.0 (на C++), генерация приватного ключа происходила при помощи функции GetRandBytes(), которая внутри использовала:
Code:
RAND_bytes(pch, num);
А RAND_bytes() — это функция из библиотеки OpenSSL, и в ранних версиях она опиралась на состояние PRNG OpenSSL, который в свою очередь базировался на таких источниках, как:

/dev/urandom на Unix-подобных системах,

CryptoAPI на Windows (например, CryptGenRandom),

внутреннее состояние OpenSSL (которое можно было "засеменить" вручную — RAND_seed()).
Ключевая часть генерации находилась в классе CKey, внутри которого приватный ключ создавался вызовом GetRandBytes(privkey, 32);. Это можно найти в методе CKey::MakeNewKey() (или аналогичной функции на тот момент, потому что структура проекта была совсем другой).
Code:
RAND_bytes() → OpenSSL PRNG → /dev/urandom или Windows CryptoAPI
что делает OpenSSL источником энтропии и генерации, а не какие-то кастомные функции типа getround().
Original archived Re: какая функция в ранних Bitcoin core отвечала за генеl
Scraped on 23/06/2025, 15:03:22 UTC
В исходниках первой версии Bitcoin v0.1.0 (на C++), генерация приватного ключа происходила при помощи функции GetRandBytes(), которая внутри использовала:
Code:
RAND_bytes(pch, num);
А RAND_bytes() — это функция из библиотеки OpenSSL, и в ранних версиях она опиралась на состояние PRNG OpenSSL, который в свою очередь базировался на таких источниках, как:

/dev/urandom на Unix-подобных системах,

CryptoAPI на Windows (например, CryptGenRandom),

внутреннее состояние OpenSSL (которое можно было "засеменить" вручную — RAND_seed()).
Ключевая часть генерации находилась в классе CKey, внутри которого приватный ключ создавался вызовом GetRandBytes(privkey, 32);. Это можно найти в методе CKey::MakeNewKey() (или аналогичной функции на тот момент, потому что структура проекта была совсем другой).
RAND_bytes() → OpenSSL PRNG → /dev/urandom или Windows CryptoAPI
что делает OpenSSL источником энтропии и генерации, а не какие-то кастомные функции типа getround().