Хеширование

Хеширование или хеш - это общий термин при обсуждении технологии блокчейн. Хеширование относится к преобразованию и генерации входных данных любой длины в строку фиксированного размера, которое выполняется по определенному алгоритму. В частности, алгоритм хеширования биткойнов - это SHA-256 или алгоритм безопасного хеширования 256 бит.  Этот алгоритм является односторонней криптографической функцией, так как исходные данные могут быть получены с помощью дешифрования.

блокчейн и хеширование

Реализация криптографической хеш-функции полезна для предотвращения мошеннических транзакций, двойных расходов в цепочке блоков и хранения паролей. Но что такое биткойн-хеш и что он должен делать в этом контексте? Если говорить упрощенно, то это уникальный номер, который не дублируется по алгоритму. Поэтому его часто используют для проверки подлинности файла. Чтобы поместить это в контекст, когда есть изменение в хешированном файле, его хеш также автоматически изменится. И каждый последующий хеш привязан к предыдущему, что обеспечивает согласованность всех блоков.

Как работает хеширование в блокчейне?

Итак, что такое алгоритм хеширования в блокчейне и как он работает? Алгоритм хеширования принимает бесконечное количество битов, выполняет над ними вычисления и выводит фиксированное количество битов. Независимо от длины входных данных, выходные данные всегда будут представлены в нужном виде. В результате исходные данные называются входными , а окончательное преобразование -  хешем . Сегодня многие алгоритмы хеширования различаются только способом обработки информации.

Чтобы полностью понять, что такое хеширование, важно сначала понять структуру данных. Структура данных - это особый способ хранения данных, который состоит из двух ключевых элементов: указателей и связанных списков. 

Указатели - это переменные, относящиеся к другим переменным, поэтому они действуют как индикаторы, указывающие путь в нужное место. Кроме того, они предоставляют адрес следующего блока в цепочке. Связанные списки составляют последовательность узлов, которые связаны с помощью указателей.

Благодаря хешированию в цепочке блоков каждому блоку присваивается исходный идентификатор, что повлечет за собой необратимые последствия изменения цепочки блоков. Блок идентифицируется по информации, содержащейся в заголовке блока. Он состоит из таких деталей, как:

  • номер версии блокчейна;
  • отметка времени UNIX;
  • хеш-указатели;
  • nonce - значение, необходимое майнерам для создания блока;
  • хеш корня Меркла.

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

Как решить хеш?

Решение хэша начинается с решения сложных математических задач, содержащих данные в заголовке блока. Но прежде чем майнер инициирует процесс, ему нужно будет провести метод проб и ошибок, чтобы решить, какую строку использовать в качестве одноразового номера. Когда одноразовый идентификатор распознан, майнеры будут сосредоточены на одноразовом номере (строковом номере), который связан с хешированным содержимым предыдущего блока. Чтобы хэш был успешным, значение нового хеша должно быть меньше или равно целевому хешу. В свою очередь, майнер получит комиссионное вознаграждение за добавление блока в цепочку блоков.

Связь доказательства работы при хешировании

Алгоритм Proof of Work (PoW) связан с хешем блокчейна, поскольку этот алгоритм нужен для подтверждения транзакций и создания новых блоков в цепочке.

как работает хеш функция

Как работает PoW?

Децентрализация – одно из главных отличительных особенностей блокчейна, но в ней содержится некая уязвимость. Если участник хочет загрузить копию цепочки блоков, как другой пользователь может узнать, что цепочка блоков правильная? Допустим, в сети тысячи компьютеров - что может помешать им вступить в сговор?

Вот тогда-то и появляется алгоритм PoW. Он дает возможность всем участникам сети блокчейн узнать, действительна информация или нет.

История - это все в сети, где вам нужно знать, кто тратит деньги и кто их получает. Раньше было невозможно достичь полного консенсуса в децентрализованной сети без контроля третьей стороны. Но благодаря хэш-функции, поскольку она предоставляет уникальный цифровой отпечаток фрагмента данных, это стало возможным.

Концепция PoW была разработана для противодействия DDoS-атакам, в результате которых система зависает и отказывается обрабатывать запросы пользователей. Наряду с этим, PoW также эффективно противостоит спаму и защищает всю сеть. 

доказательство работы POW

Почему обман сети невыгоден майнерам?

Хэш пригодится, чтобы лучше регулировать систему, но за него приходится платить. Поэтому, когда майнеры создают новый блок для цепочки блоков, они должны предоставить сети два хэша:

  • Хеш всех транзакций в блоке.
  • Хеш, который доказывает, что майнеры потратили определенное количество энергии на создание блока.

С учетом договизны ресурсов, затрачиваемых на поиск хешей, искажение данных становится невыгодным. 

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

Подтверждение транзакций

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

Транзакции такого типа могут накапливаться как в большом общем пуле, так и в  небольших локальных пулах. Майнеры выбирают транзакции из майнинговых пулов и преобразуют их в новые блоки. В этот блок входят транзакции, ожидающие подтверждения с дополнительными метаданными. В итоге каждый майнер формирует отдельный блок. И одни и те же транзакции могут поступать в блоки разных майнеров. 

Майнер должен убедиться, что каждая данная транзакция отвечает требованиям выполнения. Если у отправителя достаточно ресурсов на балансе, транзакция становится действительной и может быть добавлена ​​в блок. Для более быстрой обработки отправитель может увеличить комиссию за майнинг. Обычно майнеры используют более высокую стоимость транзакций, выбирая наиболее прибыльные сделки; следовательно, время обработки сокращается.

У каждой транзакции есть свой хэш, который хранится в древовидной структуре. Эти хеши также хешируются для формирования корня Меркла . Эта технология содержит информацию обо всех транзакциях.

Что такое криптографические хеш-функции?

Для лучшего понимания криптографических хеш-функций рассмотрим их некоторые свойства: 

  • Результат хеш-функции всегда идентичен. Эта характеристика называется  детерминированной . Независимо от того, сколько раз вы вводите одно и то же сообщение, результат будет таким же после применения хеш-функции. Однако малейшее изменение входных данных («статЬя» вместо «статья») полностью меняет результат.
  • Они отличается быстрым вычислением, так как низкая скорость сделает систему неэффективной.
  • Функция сопротивления прообразу в хэш-функциях делает невозможным с вычислительной точки зрения определение входных данных по хеш-значению. Следовательно, майнеры могут сравнивать результат только до тех пор, пока не будет найдено совпадение.

Единицы скорости хеширования

скорость хеширования

Хешрейт относится к общей вычислительной мощности майнингового оборудования (асиков, видеокарт или процессоров), задействованного в майнинге криптовалюты. К единицам измерения относятся:

  • Хеш / сек (H / s)
  • Килохеш / сек (KH/s) (приставка «кило» означает умножение исходной единицы на 1000)
  • Мегахеш / сек (MH/s) (приставка «мега» означает умножение на 1 млн)
  • Гигахеш / сек (GH/s) (приставка «гига» означает умножение исходной единицы на 1 млрд)
  • Терахеш / сек (TH/s) (приставка «тера» означает умножение исходной единицы на 1 трлн)

Например, что такое скорость 20 MH/s? Это значит, что процессор может сгенерировать 20 миллионов различных комбинаций чисел за одну секунду, чтобы найти хэш, который будет соответствовать всем параметрам, установленным сетью.

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

Однако существуют разные факторы, определяющие хешрейт. На параметр влияет даже выбор алгоритма майнинга. Также важно знать, как другие устройства реагируют на разные алгоритмы. 

Как защищаются хешированные данные

Каждый блок содержит хеш предыдущего блока (родительского блока), кроме блока Genesis . Представьте себе цепочку блоков с хешами родительских блоков. Если информация в одном из этих блоков изменяется, это влияет на все остальные блоки цепочки. Однако по мере роста сети изменение хешей во всех блоках становится практически невозможным. Следовательно, для блокчейна необходим процесс хеширования, обеспечивающий уникальность и оригинальность каждого элемента системы.

Неизменяемые и надежные данные - одно из основных свойств блокчейна, которое делает их ценными и дает колоссальный потенциал блокчейну. Информация всегда остается достоверной, что определяет целостность цепочки блоков.  

Как измерить хешрейт сети Биткойн?

Скорость хеширования биткойнов представляет собой общую вычислительную мощность всех узлов по всему миру, что способствует майнингу биткойнов . Однако определить это проблематично, поскольку майнинговым машинам, которые вносят вклад в сеть, не хватает идентификации, и они связываются с сетью только после обнаружения блока.

Однако скорость хеширования оценивается ежедневно путем сравнения блоков, найденных за последние 24 часа, с числом 144, которое является ожидаемой скоростью нахождения блока. По алгоритму скорость майнинга должна остаться прежней (600 секунд). Таким образом, формула хеш-мощности Биткойна следующая:  

Hashpower = ((БЛОКИ, найденные за 24 часа / ожидаемое КОЛИЧЕСТВО БЛОКОВ) x РАБОТА) / 600

Чем выше хешрейт биткойнов, тем сложнее параметр майнинга. Поскольку он всегда корректировался, чтобы поддерживать его в соответствии с общей хеш-работой. Регулировка сложности важна для безопасности. Поэтому для протокола естественно избегать монополизации. Во избежание инфляции необходимо сохранять ту же скорость майнинга криптовалюты. В противном случае майнеры будут быстрее генерировать больше биткойнов, и криптовалюта потеряет свою ценность.

Как хеширование влияет на майнинг биткойнов?

Майнинг остается децентрализованным, потому что два майнера не могут хешировать одни и те же блоки. Майнеры получают транзакции по сети в разном порядке. Из-за этого и индивидуальных предпочтений в отношении комиссии каждый майнер обрабатывает блок немного по-своему.

Хотя все блоки могли быть проверены правильно, только один блок может входить в цепочку блоков одновременно. Всем майнерам придется продолжать хеширование, пока они не найдут число, дающее результат, который сеть соглашается принять как действительный при добавлении в их блок в цепочке блоков.

Кроме того, сеть должна гарантировать создание нового блока каждые десять минут, чтобы поддерживать финансовую политику Биткойна. Сеть делает это, регулируя сложность майнинга каждые две недели. Следовательно, если блоки проверяются слишком быстро из-за увеличения количества новых майнеров, сеть будет увеличивать сложность, чтобы снизить инфляцию.

Поскольку хеширование блокчейна является случайностью, даже майнер с самым мощным компьютером не всегда может выигрыть - принцип похож на лотерею. Конечно, у него будет больше шансов на выигрыш, но нет гарантии выигрывать каждый раз.

Как правило, майнер создает блок действительных транзакций, а затем запускает Proof of Work для этого блока, надеясь найти хэш, установленный сетевыми правилами, раньше других майнеров. Если процесс проходит успешно, этот блок попадает в цепочку блоков, и майнер получает вознаграждение. Технические характеристики оборудования также имеют значение, поэтому этот фактор также следует учитывать при покупке оборудования для майнинга.