Этой публикацией я хочу начать цикл статей объясняющих устройство блокчейна, если конечно это вызовет интерес.
Для построения нам нужно уметь вычислять sha256 и ripemd160 хэш функции. Кроме того необходимо уметь представлять данные в base256 и base58 формате. Я расскажу, как это сделать, не обладая знанием программирования.
Для начало рассмотрим схему по которой будем работать.
https://d.radikal.ru/d41/1812/c5/017c45da11fb.png1. Берется открытый ключ (65 байт, 1 байт 0x04, 32 байт соответствуют координате X, 32 байт соответствуют координате Y): 04249909a17e37ecc6475391055bbef9f4368710d72a745194ee6f8590f0186fdc9d436e1e1a6fd
92aa9f2c51cf75cadb3e8f0929af99d715ed9179e4a17f99b94
Для этого, нужно перевести представление в двоичный код, в этом нам поможет сервис
http://tomeko.net/online_tools/hex_to_file.php сохраняем файл.
2. Производится SHA-256 хэширование открытого ключа в двоичном коде, для этого нужен сервис
https://md5file.com/calculator:
1074fc35c00c2e30bc3362613b35275d7297aa1457d4f05bbd1d34b5d231d3de
3. Выполняется RIPEMD-160 хэширование результата SHA-256 аналогично переводим в двоичный код, и пользуемся сервисом
http://hash.online-convert.com/ripemd160-generator: 04b0e1b46c883997b91f34b93bd549d343824004
4. Добавляется байт-идентификатор сети перед RIPEMD-160 хэшем (0x00 для основной сети): 0004b0e1b46c883997b91f34b93bd549d343824004
5. Выполняется SHA-256 хэширование по расширенному результату от RIPEMD-160 не забываем переводить в двоичный код: 5d63090bdb448f28d9444ae2e43795706972274813b02a8aedc877affbd63373
6. Выполняется SHA-256 хэширование по предыдущему SHA-256 хэшу, результат будет представлять собой контрольную сумму, опять сперва переводим в двоичный код: d7c2b8c66897ecb4158779435633ae332c1587918d419217d10b5b9038cedbdb
7. Берутся первые 4 байта от полученного хэша: d7c2b8c6
8. Эти 4 байта контрольной суммы из пункта 7 добавляются в конец расширенного RIPEMD-160 хэша из пункта 4. Это 25-байтовый двоичный Биткоин адрес: 0004b0e1b46c883997b91f34b93bd549d343824004d7c2b8c6
9. Результат пункта 8 конвертируется в строку base58 . Это наиболее часто используемый формат bitcoin адреса, для этого потребуется сервис
http://lenschulwitz.com/base58: 1Robineowz7ddMRYPKqoBCNPqLmuShoeV
О решение эллиптического уравнения для построения по приватному ключу публичного я расскажу в одной из следующих статей.
Источник:
https://bits.media/bitcoin-address-theory/For donate: 1Robineowz7ddMRYPKqoBCNPqLmuShoeV (приветствуется)