Когда речь заходит о майнинге, то обычно говорят, что майнеры каким-то образом добывают биткоины. На самом деле, майнеры обеспечивают надежность блокчейна, и невозможность взлома. За эту очень важную и полезную работу они получают биткоины.
Чтобы разобраться в сути майнинга, нужно немного поговорить о криптографии и понять, что такое «хеш-функция».
«Хеш-функция» — это способ преобразования любой информации.
Это алгоритм, который получает на входе любые данные (текст, картинка, код):

а затем генерирует из этих данных последовательность букв и цифр строго фиксированной длины.

Получение такой последовательности называется «хеширование», а сама последовательность – «хеш». Хеширование выполняется компьютером или другим вычислительным устройством.
Хеш-функция имеет следующие особенности:
1. Одинаковые исходные данные всегда дают одинаковый хеш, разные исходные данные – разный;
2. Малейшее изменение входных данных (например, лишний пробел) всегда приводит к необратимому и непредсказуемому изменению хеша;
3. Хеширование работает только в одну сторону. Получить хеш из исходных данных можно, получить исходные данные из хеша можно только решив математическую задачу по подбору ключа хеш-функции. По сложности, это сравнимо с майнингом.
Различных видов хеш-функций имеется множество, однако блокчейн биткоина построен на одной из них с названием SHA-256.
Алгоритм работы блокчейна с применением хеш-функции
Как для создания блокчейна используется хеш-функция?
Для начала, у нас есть самый первый, стартовый блок. В нем хранится информация — записи о переводах средств:

Пропуская этот блок через алгоритм хеширования, мы получаем хеш этого блока:

Этот хеш мы ставим в начало следующего блока. Информация в начале блока, до списка переводов, называется «заголовок» блока.

Второй блок тоже хешируем, ставим получившийся хеш в заголовок третьего блока, и так далее:

Все! Блокчейн получен!
Теперь цепь неразрывно связана, и любое, самое малейшее изменение информации в каком-либо блоке приведет к необратимому изменению всех дальнейших хешей в цепочке.
Алгоритм майнинга биткоинов
Теперь давайте разберемся в алгоритме майнинга биткоинов.
Итак, в процессе майнинга биткоинов в среднем через каждые 10 минут к блокчейну биткоина добавляется новый блок с записями транзакций – переводов биткоина. Чтобы система присоединила его к блокчейну, добавляемый блок должен быть «правильным» и «красивым».
«Правильность» блока означает, что все транзакции в блоке проверены. «Красивость» блока означает, что хеш этого блока удовлетворяет определенным требованиям.
Например, начинается с трех нулей:

Как получить такой блок?
Дело в том, что в блоке биткоина, кроме заголовка блока и информации о транзакциях, есть еще параметр, называемый «nonce». Это – какое-то число:

Число «nonce» может быть любым – от нуля до нескольких миллиардов.
При изменении этого числа изменяется информация в блоке, а значит, изменяется хеш блока. Это означает, что при каких-то значениях этого параметра, выполнив хеширование блока, мы получим нужный, красивый хеш. Задача майнеров – найти именно такой «красивый» блок.
Эту задачу майнеры решают методом перебора значения параметра «nonce». Например, подставим вместо «nonce» единицу, вычислим хеш блока. Получили «красивый» блок? Нет!

Подставим двойку, вычислим хеш. Получили «красивый» блок? Нет!

Подставим тройку:

Ну и так далее, пока не будет найден нужный параметр:

Именно этим занимаются майнеры по всему миру. Чтобы присоединить новый блок с биткоин-переводами к цепочке блокчейна, нужно, чтобы он был «красивым». Поэтому майнеры постоянно вычисляют хеш этого блока, подставляя все новые и новые значения параметра «nonce» в надежде получить «красивый» блок.
Кто нашел первый – тот присоединил к цепочке новый блок. Когда система видит, что присоединен новый блок — она выдает награду сделавшему это майнеру. Чем выше вычислительная мощность майнера – тем быстрее он производит вычисления, тем больше шансов быть первым.
Чем больше общая мощность майнерской сети, тем быстрее она производит вычисления, тем проще найти «красивый» блок.
Однако, у системы есть требование: новый блок в цепочке должен появляться в среднем один раз в 10 минут. Поэтому, чем больше вычислительная мощность сети майнеров – тем больше требования системы к «красивости» блока. То есть система будет требовать, например, чтобы хеш нового блока начинался не с трех нулей, а с четырех, пяти и так далее, чтобы для его нахождения нужно было сделать больше вычислений.
Система автоматически подстраивается под вычислительную мощность майнеров. Поэтому, сколько бы майнеров не подключалось к сети, «добыть» монет больше, чем запрограммировано системой, не получится!
И все же — зачем майнеры, можно сказать, “просеивают пустую породу”? Для чего все-таки необходимо это огромное количество громоздких вычислений? Какая от них практическая польза?
Суть майнинга биткоинов
Представим себе, что кто-то хочет переписать историю транзакций и вносит изменение в блок. Он хочет стереть запись в «Блоке 1» о том, что ему отправили 2 биткоина. Он влезает в систему, вносит изменения в «Блок 1». Но, поскольку в информацию внесены изменения, хеш блока меняется! Вычисляется новый хеш, и… теперь он не начинается с трех нулей! Система не принимает блок 1, исключая его из цепочки блокчейна — ведь он «некрасивый» и его хеш не начинается с трех нулей.
Значит, чтобы обмануть систему и оставить в цепочке блокчейна блок c “подчищенным” переводом, нужно сделать его «красивым». Значит, нужно заново пересчитывать хеш этого блока, меняя значения параметра «nonce». Считать придется до тех пор, пока вновь не будет получен «красивый» блок. Наконец, методом перебора, наден искомый хеш, получен «красивый» блок. Теперь «Блок 1» снова можно подставить в цепочку блокчейна.
Но теперь у «подчищенного» блока 1 новый хеш, ведь информация изменилась. Этот хеш, хоть и «красивый», но отличается от того, который был раньше. Поэтому в заголовок следующего блока записывается новый хеш.
Это значит, что следующий за «Блоком 1» «Блок 2» тоже изменился. А значит, поменялся и его хеш. Теперь он не начинается с трех нулей.
В результате, система не принимает «Блок 2» в цепь блокчейна. Как вы уже, наверное, поняли, чтобы сжульничать и внести нужное изменение в информацию в «Блоке 1» необходимо перевычислить, «перемайнить» всю цепочку от этого блока и до последнего.
Для этого нужно иметь вычислительную мощность, превышающую совокупную вычислительную мощность всей сети майнеров. А мощность сети майнеров в настоящий момент в 4 000 000 раз превышает мощность ведущего мирового суперкомпьютера.
Именно так майнеры защищают блокчейн биткоина от внесения любых изменений. На страже системы стоит вся их вычислительная мощность. За это майнеры и получают вознаграждение.
Откуда берутся биткоины при майнинге?
Одновременно с присоединением к блокчейну нового блока, система выпускает определенное количество новых биткоинов.
Сатоши Накамото программно заложил что всего может быть создано 21млн биткоинов. Если в начале истории биткоина за добавление в блокчейн нового блока майнеры могли заработать 50 BTC, через каждые 210 тысяч блоков, то есть раз в 4 года происходит халвинг (halving, «уполовинивание») — это уменьшение в два раза размера вознаграждения майнерам за добавление ими нового блока в блокчейн — вплоть до того момента, когда с добычей последнего сатоши (предположительно в 2140 году) эмиссия криптовалюты будет закончена. До мая 2020 года эта эмиссия составляла 12,5 биткоинов за блок, теперь эта величина будет составлять 6,25 биткоина за блок. Именно эти вновь выпущенные монеты и достаются майнерам.
Также майнеры получают комиссии, которые пользователи уплачивают при переводе. Так что даже после добычи всех BTC, майнеры все равно будут получать вознаграждение за свою работу, обеспечивая работу сети блокчейн.
По материалам novmir.info
Чтобы разобраться в сути майнинга, нужно немного поговорить о криптографии и понять, что такое «хеш-функция».
«Хеш-функция» — это способ преобразования любой информации.
Это алгоритм, который получает на входе любые данные (текст, картинка, код):

а затем генерирует из этих данных последовательность букв и цифр строго фиксированной длины.

Получение такой последовательности называется «хеширование», а сама последовательность – «хеш». Хеширование выполняется компьютером или другим вычислительным устройством.
Хеш-функция имеет следующие особенности:
1. Одинаковые исходные данные всегда дают одинаковый хеш, разные исходные данные – разный;
2. Малейшее изменение входных данных (например, лишний пробел) всегда приводит к необратимому и непредсказуемому изменению хеша;
3. Хеширование работает только в одну сторону. Получить хеш из исходных данных можно, получить исходные данные из хеша можно только решив математическую задачу по подбору ключа хеш-функции. По сложности, это сравнимо с майнингом.
Различных видов хеш-функций имеется множество, однако блокчейн биткоина построен на одной из них с названием SHA-256.
Алгоритм работы блокчейна с применением хеш-функции
Как для создания блокчейна используется хеш-функция?
Для начала, у нас есть самый первый, стартовый блок. В нем хранится информация — записи о переводах средств:

Пропуская этот блок через алгоритм хеширования, мы получаем хеш этого блока:

Этот хеш мы ставим в начало следующего блока. Информация в начале блока, до списка переводов, называется «заголовок» блока.

Второй блок тоже хешируем, ставим получившийся хеш в заголовок третьего блока, и так далее:

Все! Блокчейн получен!
Теперь цепь неразрывно связана, и любое, самое малейшее изменение информации в каком-либо блоке приведет к необратимому изменению всех дальнейших хешей в цепочке.
Алгоритм майнинга биткоинов
Теперь давайте разберемся в алгоритме майнинга биткоинов.
Итак, в процессе майнинга биткоинов в среднем через каждые 10 минут к блокчейну биткоина добавляется новый блок с записями транзакций – переводов биткоина. Чтобы система присоединила его к блокчейну, добавляемый блок должен быть «правильным» и «красивым».
«Правильность» блока означает, что все транзакции в блоке проверены. «Красивость» блока означает, что хеш этого блока удовлетворяет определенным требованиям.
Например, начинается с трех нулей:

Как получить такой блок?
Дело в том, что в блоке биткоина, кроме заголовка блока и информации о транзакциях, есть еще параметр, называемый «nonce». Это – какое-то число:

Число «nonce» может быть любым – от нуля до нескольких миллиардов.
При изменении этого числа изменяется информация в блоке, а значит, изменяется хеш блока. Это означает, что при каких-то значениях этого параметра, выполнив хеширование блока, мы получим нужный, красивый хеш. Задача майнеров – найти именно такой «красивый» блок.
Эту задачу майнеры решают методом перебора значения параметра «nonce». Например, подставим вместо «nonce» единицу, вычислим хеш блока. Получили «красивый» блок? Нет!

Подставим двойку, вычислим хеш. Получили «красивый» блок? Нет!

Подставим тройку:

Ну и так далее, пока не будет найден нужный параметр:

Именно этим занимаются майнеры по всему миру. Чтобы присоединить новый блок с биткоин-переводами к цепочке блокчейна, нужно, чтобы он был «красивым». Поэтому майнеры постоянно вычисляют хеш этого блока, подставляя все новые и новые значения параметра «nonce» в надежде получить «красивый» блок.
Кто нашел первый – тот присоединил к цепочке новый блок. Когда система видит, что присоединен новый блок — она выдает награду сделавшему это майнеру. Чем выше вычислительная мощность майнера – тем быстрее он производит вычисления, тем больше шансов быть первым.
Чем больше общая мощность майнерской сети, тем быстрее она производит вычисления, тем проще найти «красивый» блок.
Однако, у системы есть требование: новый блок в цепочке должен появляться в среднем один раз в 10 минут. Поэтому, чем больше вычислительная мощность сети майнеров – тем больше требования системы к «красивости» блока. То есть система будет требовать, например, чтобы хеш нового блока начинался не с трех нулей, а с четырех, пяти и так далее, чтобы для его нахождения нужно было сделать больше вычислений.
Система автоматически подстраивается под вычислительную мощность майнеров. Поэтому, сколько бы майнеров не подключалось к сети, «добыть» монет больше, чем запрограммировано системой, не получится!
И все же — зачем майнеры, можно сказать, “просеивают пустую породу”? Для чего все-таки необходимо это огромное количество громоздких вычислений? Какая от них практическая польза?
Суть майнинга биткоинов
Представим себе, что кто-то хочет переписать историю транзакций и вносит изменение в блок. Он хочет стереть запись в «Блоке 1» о том, что ему отправили 2 биткоина. Он влезает в систему, вносит изменения в «Блок 1». Но, поскольку в информацию внесены изменения, хеш блока меняется! Вычисляется новый хеш, и… теперь он не начинается с трех нулей! Система не принимает блок 1, исключая его из цепочки блокчейна — ведь он «некрасивый» и его хеш не начинается с трех нулей.
Значит, чтобы обмануть систему и оставить в цепочке блокчейна блок c “подчищенным” переводом, нужно сделать его «красивым». Значит, нужно заново пересчитывать хеш этого блока, меняя значения параметра «nonce». Считать придется до тех пор, пока вновь не будет получен «красивый» блок. Наконец, методом перебора, наден искомый хеш, получен «красивый» блок. Теперь «Блок 1» снова можно подставить в цепочку блокчейна.
Но теперь у «подчищенного» блока 1 новый хеш, ведь информация изменилась. Этот хеш, хоть и «красивый», но отличается от того, который был раньше. Поэтому в заголовок следующего блока записывается новый хеш.
Это значит, что следующий за «Блоком 1» «Блок 2» тоже изменился. А значит, поменялся и его хеш. Теперь он не начинается с трех нулей.
В результате, система не принимает «Блок 2» в цепь блокчейна. Как вы уже, наверное, поняли, чтобы сжульничать и внести нужное изменение в информацию в «Блоке 1» необходимо перевычислить, «перемайнить» всю цепочку от этого блока и до последнего.
Для этого нужно иметь вычислительную мощность, превышающую совокупную вычислительную мощность всей сети майнеров. А мощность сети майнеров в настоящий момент в 4 000 000 раз превышает мощность ведущего мирового суперкомпьютера.
Именно так майнеры защищают блокчейн биткоина от внесения любых изменений. На страже системы стоит вся их вычислительная мощность. За это майнеры и получают вознаграждение.
Откуда берутся биткоины при майнинге?
Одновременно с присоединением к блокчейну нового блока, система выпускает определенное количество новых биткоинов.
Сатоши Накамото программно заложил что всего может быть создано 21млн биткоинов. Если в начале истории биткоина за добавление в блокчейн нового блока майнеры могли заработать 50 BTC, через каждые 210 тысяч блоков, то есть раз в 4 года происходит халвинг (halving, «уполовинивание») — это уменьшение в два раза размера вознаграждения майнерам за добавление ими нового блока в блокчейн — вплоть до того момента, когда с добычей последнего сатоши (предположительно в 2140 году) эмиссия криптовалюты будет закончена. До мая 2020 года эта эмиссия составляла 12,5 биткоинов за блок, теперь эта величина будет составлять 6,25 биткоина за блок. Именно эти вновь выпущенные монеты и достаются майнерам.
Также майнеры получают комиссии, которые пользователи уплачивают при переводе. Так что даже после добычи всех BTC, майнеры все равно будут получать вознаграждение за свою работу, обеспечивая работу сети блокчейн.
По материалам novmir.info
Комментарий