Построение биткоин адреса по известному публичному ключу

in #blockchain8 years ago

Этой публикацией я хочу начать цикл статей объясняющих устройство блокчейна, если конечно это вызовет интерес.

Для построения нам нужно уметь вычислять sha256 и ripemd160 хэш функции. Кроме того необходимо уметь представлять данные в base256 и base58 формате. Я расскажу, как это сделать, не обладая знанием программирования.

Сервисы:

1. Для того, что бы перевести base256 представление в двоичный код найдём подходящий сервис по фразе “hexadecimal to binary file” - подойдёт например http://tomeko.net/online_tools/hex_to_file.php

2. Для того что бы посчитать sha256 от двоичного представления данных находим сервис по фразе “file to sha256 online” - подойдёт например https://md5file.com/calculator

3. Для того что бы посчитать ripemd160 от двоичного представления данных находим сервис по фразе “file to ripemd160 online” - подойдёт например http://hash.online-convert.com/ripemd160-generator

4. Для того что бы перевести данные из base256 представления в base58 представление находим сервис по фразе “base256 to base58 online” - подойдёт например http://lenschulwitz.com/base58

Построение:

Рассмотрим построение биткоин адреса по публичному ключу на примере. Публичным ключом является последовательная запись двух решений эллиптического уравнения предваряемая байтом ‘04’. О решение эллиптического уравнения для построения по приватному ключу публичного я расскажу в одной из следующих статей.

Пусть решениями эллиптического уравнения в base256 представлении:

678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb6 49f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f

Тогда публичный ключ:

04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5f

Для того, что бы посчитать sha256 хэш мы должны сначала записать публичный ключ в файл, в двоичном представлении воспользовавшись сервисом 1, а затем посчитать sha256 от получившегося файла воспользовавшись сервисом 2.

1. sha256 => 261c1eb21fc4708c6acbe1cfc6d4565652e9e768b620782898936b93000a6c02

Аналогично действуем для вычисления ripemd160 хэш функции.

2. ripemd160 => 62e907b15cbf27d5425399ebf6f0fb50ebb88f18

3. 00+ => 0062e907b15cbf27d5425399ebf6f0fb50ebb88f18

4. sha256 => 9b90f16de7f0e580c07735dac15ffe23e2f8f8e103914e509aa91913ffdb9fb6

5. sha256 => c29b7d937e3049e279391e62fdf00c12def7444013ddf6215808d10e9f2d5996

6. Берем первые 4 байта => c29b7d93

7. Соединяем результаты (3) и (6) 0062e907b15cbf27d5425399ebf6f0fb50ebb88f18c29b7d93

Для перевода в base58 представление воспользуемся сервисом 4.

8. base256 в base58 => 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Готово. Этот самый первый биткоин адрес встречающийся в блокчейне.

Использованная схема нарисована пользователем etotheipi bitcointalk.org