Майнинг – один из ключевых моментов, позволяющих децентрализованной одноранговой сети эффективно работать. С его помощью осуществляется как проверка достоверности транзакций, так и генерация новых монет, которые будут потом добавлены в общий пул.
Правда, данный способ применим исключительно в системах, работающих на основе алгоритма подтверждения Proof of Work.
За счёт чего это работает?
Основной участник процесса #майнинга – майнер. Его задача – собирать данные обо всех транзакциях внутри сети, объединять их в блоки и перепроверять достоверность и последовательность протекающих процессов.
Каждая транзакция в сети блокчейн хэшируется в общий пул памяти. Кроме того, каждый новый блок начинается с «транзакции-награды» - «coinbase». Эта транзакция идёт первой и подразумевает зачисление определённого количества биткойнов тому, кто первым подтвердит достоверность блока.
Каждая транзакция достаётся из общего пула памяти и отдельно хэшируется. Полученная совокупность, называемая деревом Меркла или хэш-деревом, объединяет отдельные хэши парами и снова пропускает их через алгоритм хэширования. И так до тех пор, пока не получится один результат – корневой хэш.
Этот корневой хэш кодирует большую часть текущих транзакций, однако расшифровать их содержимое с его помощью – реально, хоть и очень сложно. Этот элемент комбинируется с хэшем предыдущего блока блокчейна, а также – со случайным числом, называемым «одноразовым кодом» или «nonce». Все они формируют заголовок блока, который тоже хэшируется, превращаясь в идентификатор блока.
Что важно – эти идентификаторы должны быть меньше определённого значения, строго заданного условиями протокола. Поэтому для получения «рабочей длины», они дополняются последовательностью из нескольких нулей, которые определяют сложность хэширования. Чем больше нулей – тем сложнее подобрать хэш, что гарантирует стабильную и предсказуемую скорость генерации новых блоков, напрямую зависящую от общих мощностей сети. Несмотря на большую сложность процесса, возможна ситуация, когда два разных майнера одновременно находят правильное подтверждение и добавляют новые блоки. И вместо одного, в блокчейн встраивается два достоверных и подтверждённых блока. Однако сама структура алгоритма не позволяет существовать таким «развилкам». Поэтому тот блок, к которому первым добавят новый, станет основной веткой, а второй будет признан устаревшим или «осиротевшим», а потом – и вовсе отделится от общей цепочки. А те майнеры, что работали над информацией, содержащейся в нём, перейдут на актуальную цепочку, потеряв немного времени на не актуальную работу.
Пулы для майнинга
Проблема в том, что эффективность майнинга зависит исключительно от вычислительной мощности компьютера. А если учесть, что новые биткойны получают только те, кто первыми вычислят новые блоки, то у одиночной машины мало шансов, по сравнению с масштабными майнинг-фермами. Поэтому было придумано довольно эффективное решение данной проблемы, позволяющее даже новичкам получать небольшую прибыль – #майнинг-пулы.
Это дистанционное объединение нескольких различных машин для решения одной задачи – вычисления хэша. И в тех ситуациях, когда удаётся сделать это первыми – пропорциональное распределение полученной прибыли между участниками, исходя из вложенной вычислительной мощности.
Проще говоря, если ваша машина даёт 1 процент от мощности пула, то вы можете рассчитывать на 1 процент от полученного вознаграждения.