Содержание статьи:
- Что такое хэш — краткая история
- Хэш в криптовалюте — сущность
- Свойства
- Функции
- Внутреннее строение
- Применение в майнинге
- Где применяется хэш
- Видео о хэш-функциях
Хэш в криптовалюте представляет собой использование детерминированной схемы в процессе преобразования входной информации свободной длины в исходящую битную строчку с конкретным размером. Иными словами, хэш — преобразование входящей информации по определённому алгоритму для получения на выходе шифрованной информации (набора символов). К примеру, хэш алгоритма Биткоин (SHA-256) может иметь следующий вид — e58f1e8c55fa105bdd3f40e5038eb0b039b5998d52c05e6cd99878dd2da5cab2.
Полученные хэши можно сравнивать, ведь они могут различаться по составу и размеру. Такая необходимость возникает в процессе добычи виртуальных монет. Смежное понятие (хэшрейт) представляет собой скорость расчета хэшей в процессе получения нового блока в цепи блокчейн. Чем больше этот параметр, тем быстрее оборудование находит необходимое число, тем выше заработок майнера. Наиболее производительным оборудованием считаются асики. К примеру, если ASIC-майнер имеет мощность в 10 ТХ/с, это говорит о его возможности обрабатывать 10 000 000 000 000 хэшей за одну секунду.
Что такое хэш в криптовалюте — краткая история
В математическом смысле хэш-функция представляет собой преобразование данных в короткую строчку, имеющую определенную длину. С ее помощью можно контролировать состояние файлов ОС, важных программ и основной информации. Работа осуществляется по желанию или с определенной периодичностью (в автоматическом режиме).
Термин «хэш» произошел от слова hash на английском языке. Прямой перевод определения означает «путаница». Такая формулировка описывает принцип работы функции, задача которой заключается в изменении входного параметра для получения иного значения на выходе. Аналогичный подход характерен и для термина «хэширование». Источником этого слова является английское определение «hashing», что переводится как «крошение».
Определение появилось в 50-х годах XX века в среде специалистов, занимающихся обработкой больших объемов информации. С помощью хэш-функции специалисты приводили любой массив к строчке с определенным числом символов. Так, если конкретную цифру (вне зависимости от числа знаков) множество раз делить на идентичный числовой параметр, полученный набор символов будет называться хэш. Итоговый результат различается в зависимости от применяемого делителя.
Хэш в криптовалюте — сущность
Простыми словами, хэш в криптовалюте — это процесс преобразования одного набора символов (на входе) в другой. Разница в том, что в первом случае параметр носит свободный характер, а во втором — фиксированную длину. Это пояснение характерно для различных сфер, в том числе криптовалюты. Преобразование происходит на основании определенного алгоритма. К примеру, в Биткоине это SHA-256, в Лайткоине — Scrypt и так далее.
Для рассмотрения принципа работы используем протокол Bitcoin из серии SHA-2 (его размер — 256 бит). Вне зависимости от объема вводимых данных итоговый параметр на выходе всегда имеет определенную величину. Это важно, ведь в случае с криптовалютами речь идет о передаче огромного потока информации и совершении множества транзакций в секунду.
Наличие хэша — возможность упростить запоминание больших массивов информации. Достаточно иметь хэш-функцию для получения необходимых сведений об операции в сети.
Свойства хэша в криптовалюте
Чтобы разобраться, что такое хэш в криптовалюте, важно понимать его свойства. Выделим основные:
- Стабильность параметра на выходе. При анализе одной и той же информации на входе на выходе получается неизменный итог. Это важно, ведь при получении различных хэшей при каждом действии привязать результат к интересующей информации о транзакции не выйдет.
- Скорость расчетов. Преобразование поступающих на вход массивов должно осуществляться с максимальной скоростью. В ином случае применение системы неэффективно.
- Трудность обратных расчетов. Процесс преобразования исходных данных в хэш на выходе происходит в одностороннем порядке. Процедура обратного перевода возможна, но она максимально усложнена (это необходимо для защиты сети).
- Влияние небольших изменений. Достаточно незначительной правки в исходные параметры, чтобы на выходе появился новый хэш, с другим набором символов. Можно изменить одну букву или даже регистр в строчке на входе, чтобы итоговый результат претерпел значительных изменений. Это важное качество в криптовалюте, обеспечивающее безопасность и неизменность blockchain.
- Сложность алгоритма. В процессе создания хэша применяется сложная формула, а именно Y = H (кIх), где Y — выходной параметр, k — число из распределения с большой энтропией, а кIх — конкатенация (объединении двух строчек). Суть в том, что при наличии значения Y трудно подобрать такой параметр Х, чтобы в результате конкатенации кIх получился итоговый хэш.
- Коллизионная устойчивость. Для каждого источника на входе характерен индивидуальный хэш. Вероятность получения двух одинаковых чисел на выходе при вводе различной информации на входе возможна. К примеру, для SHA-256 имеет место следующая вероятность — 2^256.
Функции хэша в криптовалюте
Хэш-функция обладает следующими функциями:
- Преобразование информации из свободной в строго определенную длину.
- Открытость алгоритма для возможности изучения криптографической устойчивости.
- Односторонность, то есть невозможность по конечному результату определить первоначальную информацию.
- Минимальные требования к вычислительным мощностям (важно для майнинга).
- Способность преобразовывать любой объем сведений (к примеру, двоичных данных) к определенному числу с заданной длиной. Иными словами, происходит сжатие информации при использовании определенного алгоритма.
- Минимальна нагрузка оборудования в провесе выполнения операции. От этой функции зависит скорость исполнения. Здесь важно найти компромисс между качеством результата и быстротой решения поставленной задачи.
Алгоритм, применяемый в процессе преобразования функции хэш, должен быть открытым. Это позволяет определить устойчивость к обратному преобразованию, то есть получению первичных данных по имеющемуся хэшу.
Внутреннее строение хэша в криптовалюте
Чтобы понять сущность хэша в криптовалюте, что это, и как работает, важно представлять структуру процесса преобразования. Блокчейн представляет собой множество ячеек, в которых хранятся определенные данные. Для понимания структуры blockchain и работы хэша необходимо знать следующие термины:
- Указатели. В вопросе программирования указатели представляют собой переменные, используемые для хранения адреса переменной (вне зависимости от программы). К примеру, int b =20 свидетельствует о наличии переменой b, хранящей значение, равное двадцати. В указателях содержатся не сами данные, а адреса переменных. Иными словам, они показывают на местонахождение последних.
- Связанные элементы. При рассмотрении структуры важно учесть связанные списки — набор элементов цепочки блокчейн, скрепленные друг с другом при помощи указателей. Переменный параметр последнего хранит адрес очередного блока, что позволяет двум элементам цепочки соединиться. Указатель, расположенный в каждом элементе blockchain, хранит адрес прошлого узла, что обеспечивает создание цепи. Первый узел блокчейн представляет собой блок генезиса. Его указатель расположен в криптосистеме.
Цепь blockchain представляет собой связанный список с информацией, а также хэш-указатели. Благодаря их наличию, происходит закрепление элементов цепи и контроль валидности операций. Указатель содержит хэш данных, расположенных внутри прошлого блока. Такая особенность обеспечивает максимальную надежность цепочки блокчейн. К примеру, злоумышленник пытается атаковать пятый блок и внести изменения в сведения. Из-за особенностей хэш-функции даже небольшие правки способны изменить итоговый хэш. В результате меняется хэш-функция в предыдущих четырех элементах цепи. Блокчейн корректируется в полном объеме, что невозможно реализовать.
Не меньшее значение имеет заголовок блока, состоящий из таких элементов:
- Номер версии элемента цепи.
- Время.
- Сложность.
- Хэш прошлого узла blockchain.
- Nonce.
- Хэш корня Меркла.
Необходимость наличия хэша корня Меркла объясняется следующим образом. В каждом элементе блокчейн находится большое число транзакций. Если информация хранится в форме серии, это займет много места, а сама цепочка теряет эффективность. Применение дерева Меркла оптимизирует блокчейн и позволяет быстрее получить информацию о транзакции (при наличии такой необходимости).
Применение хэша криптовалюты в майнинге
Суть майнинга подразумевает поиск параметра Nonce для получения нового элемента цепи. После успешного нахождения он добавляется в общую цепочку. При зарождении криптовалюты Биткоин для расчетов применялись обычные ноутбуки или ПК, но с ростом сложности такой способ потерял актуальность. Люди стали применять более мощное оборудование и объединяться в пулы для получения новых блоков.
В случае с Биткоин число монет ограничено 21 миллионом единиц. На создание блока в blockchain уходит определенный промежуток времени. Среднее время на получение нового элемента цепи составляет 10 минут. При ускорении этого процесса повышается сложность, которая поддерживает скорость поиска хэшей и получения блоков на определенном уровне.
Снижение времени добычи блока может привести к следующим проблемам:
- Создание большого числа одинаковых хэшей и еще большее количество повторений.
- Увеличение числа оставленных элементов цепи. Если майнеры начнут спешить, они будут формировать новые блоки без обеспечения целостности цепи. В результате будут оставаться брошенные узлы.
Во избежание рассмотренных проблем предусмотрена система сложности, которая повышает требование к вычислительной мощности для поиска необходимого хэша и создания нового блока. Суть проста. При появлении очередного узла цепи его содержимое хэшируется. Если выбранный хэш превышает или равен уровню сложности, он включается в блокчейн, а майнеры получают оплату за блок.
В процессе добычи участники сети ищут символ Nonce, представляющий собой число, объединенное с хэшем. Полученная строчка меняется и сравнивается с текущей сложностью. При несоответствии параметров код меняется.
В целом алгоритм такой:
- Выполнение хэша нового элемента цепи.
- Добавление к хэшу элемента Nonce.
- Хэширования полученной строки.
- Сравнивание хэша с текущей сложностью (система убеждается — меньше ли он заданного параметра). Если нет, происходит изменение nonce и запуск процесса. В обратной ситуации блок включается в цепь, а blockchain обновляется и информирует ноды о получении нового элемента цепи.
- Майнеры, отдавшие свои мощности, получают премию.
На октябрь 2018 года решение хэша в Bitcoin требует больших вычислительных мощностей.
Где применяется хэш (в том числе для криптовалюты)?
Функции хэш имеют широкий спектр применения:
- При контроле целостности пакетов TCP/IP и других протоколов. Если расчетный параметр функции совпадает с переданным пакетом, это свидетельствует об отсутствии потерь и необходимости перейти к следующему пакету.
- В сети Интернет. Указанный выше протокол применяется в глобальной сети.
- Технология блокчейн. Здесь функция хэша обеспечивает целостность цепи операций и защищает систему от взлома. Благодаря такой особенности, blockchain отличается надежностью и лежит в основе многих криптовалют.
- Криптография. При использовании в этой сфере используется функция, исключая вычисление исходного массива данных по конечному хэшу. Дополнительное условие — стойкость к повторениям. Расчеты занимают больше времени, ведь главный упор делается на надежность.
- Электронная цифровая подпись. Хэш-функция применяется для проверки подписи переданного документа.
- Получение доступа к сайтам в Сети и серверам по персональным данным (логин, пароль). Личная информация, как правило, хранится в зашифрованном виде (хэш-сумма). После ввода пароля полученный параметр преобразуется в хэш, сверяется с тем, что находится в системе, после чего пользователь попадает в личный кабинет.
Значение хэш в криптовалюте и других сферах сложно переоценить. Это важный параметр, обеспечивающий быстрое преобразование и шифрование данных с возможностью получить информацию о проведенной операции.
Видео о криптографических хэш-функциях: