SHA-256-это криптографическая хэш-функция, которая принимает входные данные случайного размера и выдает Выходные данные фиксированного размера. Хэш-функции являются мощными, потому что они являются “односторонними”. Это означает, что любой может использовать хэш-функцию для получения выходных данных при заданном входе. Однако невозможно использовать Выходные данные хэш-функции для восстановления заданных входных данных. Простым языком, это функция которая принимает входные данные (строку) любого размера и содержания. А на выходе выдает закодированную строку фиксированной длины.
Эта мощная функция хэш-функции SHA-256 делает его идеальным для использования в сети Биткоин.
Хэш-функция SHA-256 используется в сети Bitcoin двумя основными способами:
- Для Майнинга
- Создание адреса Биткоин кошельков
Майнинг
Майнинг – процесс, с помощью которого новые монеты вводятся в существующую циркуляционную поставку протокола Биткойн, а также метод, используемый для обеспечения безопасности сети Биткойн.
Для того, чтобы человек имел право добавить блок в блокчейн Биткойн, он должен сначала управлять так называемым узлом майнинга. После успешной настройки узла майнинга, пользователь может приступить к созданию блоков-кандидатов, которые затем передаются в сеть Биткойн для проверки их валидности. Внутри блока есть то, что известно как Заголовок блока; для построения блока есть 6 параметров, которые должны быть заполнены майнером. К ним относятся:
- Version – номер версии программного обеспечения Bitcoin
- Previous block hash – ссылка на хэш предыдущего блока
- Merkle Root – репрезентативный хэш всех транзакций, входящих в блок
- Timestamp – время, в котором блок был создан
- Target – Алгоритм доказательства работы блока
- Nonce – переменная, используемая в процессе доказательства работы
Как видно из приведенного выше изображения, для того, чтобы майнер мог произвести предыдущий параметр хэша блока, Заголовок блока предыдущего блока должен быть помещен через алгоритм SHA-256 дважды, это также известно как double-SHA-256.
Это:
Предыдущий Хэш Блока = SHA-256(SHA-256(Загаловок блока))
Алгоритм SHA-256 также используется для создания Дерева хэшей,который затем вставляется в Заголовок блока. Подробное объяснение этого аспекта протокола Bitcoin можно найти здесь: Merkle Tree & Merkle Root Explained (скоро).
После успешного построения блока майнер может начать процесс майнинга, в котором будет представлен еще один пример использования алгоритма SHA-256. В этом случае один параметр заголовка блока, nonce, является переменной, которая изменяется несколько раз, и при хэшировании заголовка блока с помощью функции SHA-256, если хэш ниже целевого, майнер считается успешным.
Например, если nonce будет иметь переменную “12345”, она будет помещена в Заголовок блока вместе с другими 5 параметрами, перечисленными выше. Заголовок блока будет хэширован, однако, если полученный хэш окажется выше целевого значения, майнер должен повторить попытку. Затем майнер может изменить nonce на другую переменную, например, “90872”, и поместить ее в Заголовок блока, при этом остальные 5 параметров остаются постоянными. Полученный хэш оказывается ниже целевого, таким образом, блок майнера затем передается в сеть, чтобы убедиться, что он действителен.
Создание Биткоин адресов
Чтобы получить Биткойн-адрес, приватный ключ, который является случайным образом выбранным числом, умножается с помощью эллиптической Кривой для получения публичного ключа. Затем этот открытый ключ проходит через алгоритмы хэширования SHA-256 и RIPEMD160.
Где K = открытый ключ и A = Биткоин-адрес:
A = RIPEMD160 (SHA-256 (K))
Использование алгоритмов хэширования SHA-256 и RIPEMD160 для создания Биткоин адреса имеет одно неоспоримое преимущество:
Короткие адреса
Более короткие адреса: открытый ключ имеет длину 256 бит, тогда как хешированная версия, т.е. Биткоин-адрес, длиной 160 бит. Это делает его намного более удобным для пользователей из-за более короткой длины символов.
Вывод
Таким образом, алгоритм хэширования SHA-256 является неотъемлемой частью протокола Bitcoin. Он видел реализацию в различных аспектах технологии, таких как: добыча биткойнов, деревья хэшей и создание Биткойн-адресов.