Майниг — основные понятия, термины и определения. Разбираемся, что такое биткоин nonce и хеши | CoinRadio
Главная Основы Что такое майнинг?
  • 25 октября 2017 09:40

    Что такое майнинг?

    Proof of work, хеш, nonce - разбираем процесс майнинга на простых примерах
    Поезд

    Я слышал, что майнинг связан с блокчейном, так?

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

    Коротко говоря, создание таких блоков и есть майнинг.

    Какая информация содержится в блоках?

    Говоря о биткоине, информация - это транзакции, платежи пользователей друг другу.

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

    Помимо этих платежей каждый блок содержит важную техническую информацию:

    • Ссылку на предыдущий блок
    • Хеш блока
    • Хеш всех транзакций этого блока
    • Nonce

    Постойте, а что такое хеш и nonce?

    Чтобы понять, что такое хеш, для начала расскажем о хешировании.

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

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

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

    Важно заметить, что предугадать результат хеширования невозможно!

    Существует множество различных алгоритмов хеширования. В биткоине используется криптографический алгоритм, который называется SHA-256. Вы сами можете проверить, как он работает, например, на этом сайте www.movable-type.co.uk

    Скрин с Movable

    Алгоритм хеширования www.movable-type.co.uk

    Зачем нужно криптографическое шифрование?

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

    Proof of work

    Чтобы остальные участники сети биткоин признали блок подходящим для добавления в цепочку, он должен отвечать условиям. Хеш этого блока должен начинаться с большого количества нулей (То есть, хеш должен быть меньше определённого значения). На момент написания статьи это 18 нулей.

    Чтобы найти такой хеш требуется громадное количество проб и ошибок.

    Хеш

    Поиск хеша. Источник: blockchain.info

    Как же получить удовлетворяющий требованиям хеш, если мы уже знаем, что для одного и того же входного текста всегда будет получаться одинаковый хеш? Тут на сцене появляется специальное число, которое называется nonce. Майнер вписывает в поле nonce цифру “1” и хеширует блок. Если полученный хеш не удовлетворяет условиям, nonce меняется на “2” и блок ещё раз хешируется. И так до тех пор, пока мы не получим хеш, отвечающий требованиям. Тут нет какого-либо алгоритма, используется обычный перебор.

    Этот подход называется proof of work - доказательство работы. И полученный хеш как раз и служит доказательством затраченных усилий майнера на нахождение хеша.

    Proof of work используется как метод для достижения согласия между участниками сети Биткоин по поводу признания блока соответствующим требованиям. Майнер предъявляет рассчитанный им хеш, на нахождение которого было затрачено большое количество ресурсов, остальные участники с лёгкостью проверяют этот результат проведя повторное хеширование с указанным числом nonce. После прохождения проверки, блок добавляется в цепочку блокчейн.

    Этим перебором и занимаются все майнеры (точнее, их оборудование). Работа требует больших вычислительных мощностей и громадных энергетических затрат. На текущий момент вся сеть майнеров биткоина тратит объём электроэнергии, сравнимый с потребностями среднего города.

    Почему блоки должны появляться раз в 10 минут?

    Период в 10 минут выбран как компромисс между надёжностью и удобством.

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

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

    Что такое “Двойная трата”?

    Двойная трата (double spending) это попытка потратить одни и те же монетки два раза. В сети биткоин у каждой монеты есть история - можно проследить откуда взялась монета, какой путь она прошла за время существования и какому кошельку принадлежит в данный момент. Когда злоумышленник пытается провести атаку “двойной траты” он создаёт две (или несколько) транзакций для одной и той же монеты и платит разным получателям. Пока транзакции не подтверждены, они обладают равной силой, но после записи транзакции в блок (это может быть любая из этих транзакций) корректной станет только подтверждённая транзакция, остальные будут отклоняться майнерами как “двойные траты”.

    Зачем майнерам заниматься этой работой?

    Все просто. За каждый смайненный блок майнер получает плату, в 2017 году это 12.5 BTC за блок.

    В следующей статье мы поговорим о том, как зарабатывают майнеры.

Нас удобно читать и смотреть здесь:
Подпишитесь на интересную еженедельную рассылку: