Майнинг и как он работает: матчасть



Здравствуйте %username%!

Я объясню и покажу вам, как работает основа для заработка денег в криптовалютах — майнинг. Как сделан первый блок, новые блоки и как деньги берутся из ниоткуда.

Чтобы было проще разобраться, напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.

Познакомьтесь и оцените Самый Быстрый и и самый удобный Браузер!
6 часов назад
Красный Циркуль – это образование в финансовой области. Платформа начала работу в 2016 году. Расскажем про финансовые инструменты, как их использовать, как на них зарабатывать...
8 часов назад

Во-первых, конечно, упрощенное либретто.

Кошельки

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

Транзакция

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

Подтверждение

Чтобы транзакция была известна и зафиксирована всеми, ее необходимо подтвердить, что достигается созданием нового блока.

Это служебные данные + список транзакций + номер кошелька майнера + магический номер.

Цепочка блоков

Последовательность, в которой каждый последующий блок содержит предыдущий идентификатор.

Начало

Итак, есть определенное количество людей, мы можем иметь одного. Назовем его Хаброша. Он решает запустить собственную криптовалютную систему HabraCoin.

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

  1. Безотзывность сделки.
  2. Проверить их достоверность может каждый.

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

Кроме того, алгоритм HabraCoin определяет следующее.

  1. В идеале новые блоки должны создаваться каждые 10 минут. Если через какое-то время мы посмотрим и окажется, что блоков больше, чем должно быть, то мы посчитаем новую сложность их генерации через каждые 100 блоков
  2. За создание правильного блока он получает вознаграждение в размере 50 ХабраКоинов + комиссия
  3. Победителем становится блок с наибольшим количеством сделок

Ограничение скорости

Как видите, сам факт создания блока доказывает, что его создатель получает за это вознаграждение. А чтобы это имело смысл, нужно ограничить скорость и сложность блокировки. Иначе сами понимаете, тонны блоков из ничего и бессмысленны.

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

Если кто-то не знает, хэш вроде f7c9f52d1ebf8c6aef8986fb127ba7bdeec58521f7eb46f026b708df26a40912 — это какое-то число. В десятичном виде это выглядит как 1120781020043743780422848848262422804062840220424884848628408208468422468268028. То есть хеши можно сравнивать, складывать, вычитать, и все.

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

Например, хеш у нас 4 байта, его максимально возможное значение FFFFFFF

16

. И сложность, скажем, 100

10

. Вычтите одно из другого, чтобы наш хэш был меньше FFFFFF9B.

16

Познакомьтесь и оцените Самый Быстрый и и самый удобный Браузер!
9 часов назад
Новейшая разработка торговых роботов SCALPER DUO GX3.
6 часов назад

Как мы можем этого добиться?

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

Если нет, мы модифицируем этот массив байтов, пока не получим желаемое значение. А именно:

В каждом блоке есть поле, называемое nonce. Это число в несколько байтов, которое нужно увеличить на единицу, добавить к блоку и снова прочитать из него. Поскольку хорошие хеш-функции дают более или менее равные значения вероятности, мы не знаем заранее, сколько раз нам придется повторить процесс. Может в 1-2 раза, может в миллиарды.

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

Блок1->.
Блок2->.
Блок3А

Блок1->.
Блок2->.
Блок3B

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

Комиссия

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

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

Давайте смоделируем ситуацию и поможем Habrosz создать блок.

Вот ломаная программа (как тест Junit), которая ради приличия генерирует 2 рандомные пары ключей, формирует некое подобие транзакции (даже подписывает ее, все честно!), а потом ищет надстройку к это то, что первые 2 байта хеша равны нулю. Это немного сложно. Он работает несколько минут, а затем действительно генерирует хэш, который можно быстро проверить, объединив байты транзакции и счетчика.

Пример блока результатов:

1824B9ADF09908222CF65069FDE226D32F165B3CF71B7AA0039FDFEF75EAA61610909EBFFBAC023480FC87FCF640C4A

009B82C4A6D25A0F4B8A732AE54EF733E792681137BA378577DFDC2732D192DAF323966EAD4ADC9635D7A12EDD50E34

9F660622D186AF3C03BF7D265F2AA7EB125056F4BF45BE519E8B22B845B28065110000006400000142E5D667CB01CEE

EDD0AC15EC4C491819A99030BD5FEF7CD2B469F2B90BA13D7981EDCD0708353D13390B8564F496C44FAC2777B0AF79D

C94CBF36D0CC0F047E807889F34C4DC5FEB724699C257391F84F3DDD70B84F841D115F4EFEAF4E58779042F35257E5C

035046037DE740718D199A8F06AD7A58E37CCCD4CC5E95295DCC2C5F3C70847BD59FA57BCC5FF4B208F93948FCFD763

EC1E5C85B61C43EB64B77A9F53B28785D7DE2335333003260A0839D53927976751A8D8967B2BB325909D86E82BC4125

2A28ECF6F0E7476BB99B29585EB0E75410000

000008ACF935A8E3E453AC538706F560155943C6B0A77E5F5FCA7939D5FFE589676A6B3CD7AC78845786C50449D1A6F

91003ЭДКА7Б5Д8Б12АК36ККА36А00844А

Вот мы и заработали несколько хабракоинов для Хаброша. Статья конечно поверхностная, так что готов к вашим вопросам.

Мы ускорили работу старого компьютера более, чем в 30 раз и сделали его неуязвимым...
7 часов назад
Познакомьтесь и оцените Самый Быстрый и и самый удобный Браузер!
10 часов назад

Читайте также