Откуда берутся биткоины?

Откуда берутся биткоины?

Откуда берутся биткоины?Для любой валюты, а тем более молодой, важен вопрос: как создавать новые деньги? Кто их получит и как будет ими распоряжаться?
Для традиционных валют ответ стоит искать в законах соответствующих государств. Как правило, за выпуск отвечает центральный банк, а решения о выпуске производятся совместно с правительством.
В цифровой валюте Bitcoin всё совсем не так.
Процесс создания биткоинов называется добычей (англ. mining, майнинг), то есть так же, как и добыча, скажем, золота. Аналогию с золотом можно продолжить: максимальное количество биткоинов ограничено 21 миллионом, то есть это «исчерпаемый» ресурс (однако это уже тема для другой статьи).
Чтобы пояснить, как происходит добыча, нам потребуется знакомство с понятием хеш-функций. Хеш-функция предназначена для преобразования входных данных произвольной длины в данные определённой длины, но не произвольные, а вычисляемые по определённому алгоритму, который обладает некоторыми полезными свойствами. Популярными хеш-фунакциями являются MD5, SHA-1, SHA-256. Вначале рассмотрим пример работы функции SHA-256.
Пусть наши входные данные — строка «Блог про Биткоин», тогда результат выполнения функции равен:
SHA-256(«Блог про Биткоин») =
2d0c1f4725e6323cd6a7bfbb861e37175ad674d59249ed0f597f10df264a3fd1
После знака равно стоит шестнадцатеричное представление 256-битного (32-байтного) числа, называемого «хеш» (результат хеш-функции).
Какими же полезными для нас свойствами обладает такая функция?
Во-первых, она очень «сильно» реагирует на изменение входных данных, если они изменятся хотя бы немного (например, поменяется одна буква), то результат получится совершенно непохожим (говоря правильнее — непредсказуемым). Пример говорит сам за себя:
SHA-256(«Блог про Биткойн») =
b4c87ff2ef5526ee3735d8626164e39c3d483cc70a2270b41cf2c14f916d4fea
Во-вторых, такая функция вычисляется достаточно быстро.
В-третьих, имея результат хеш-функции, определить, какими были входные данные, теоретически невозможно. Если два набора различных входных данных дают один и тот же хеш, то такая ситуация называется коллизией. Так вот, вычислить данные, которые будут создавать коллизию для произвольного хеша, у функции SHA-256 пока не удалось. А если когда-нибудь и удастся, то такие входные данные уж точно не будут являться словами русского языка, как в нашем примере.
Теперь вернёмся к майнингу. В самых общих чертах суть добычи заключается в том, чтобы подобрать такие входные данные, чтобы результат двукратного применения SHA-256 был меньше определённого числа. Для подбора необходимо входные данные разбить на две части: постоянная, несущая некоторую смысловую нагрузку, и изменяемая, за счёт которой мы будем осуществлять подбор.
Постоянная часть в Биткоине содержит служебную информацию и данные обо всех недавних транзакциях (переводах биткоинов из одного кошелька в другой). Переменная (называется nonce) содержит число, которое во время подбора увеличивается, начиная с нуля. Подбор завершается, когда полученный результат меньше какого-то числа (называемого target, цель), которое сейчас равно
0000000000000C2A120000000000000000000000000000000000000000000000
Пояснение технических подробностей завершу примером. Пусть постоянная часть — «Блог про Биткоин», а к ней справа будем дописывать числа по порядку до тех пор, пока не получится хеш, у которого слева стоят 5 нулей. Перебор занял примерно минуту и остановится на числе 1983039, причём полученный двукратный хеш равен
000004b169dd11104a9a20a7797cb671714f529beea686a6a81fb30d619816d2
В Биткоине, после обнаружения подходящей случайной части, добытчик получает 50 BTC (иногда чуть больше), хотя в будущем это количество будет делиться пополам, чтобы ограничивать скорость роста количества валюты. Служебная информация (включая nonce) и информация о транзакциях называется в совокупности блоком (block). В служебную информацию входит и хеш предыдущего блока, таким образом выстраивается цепочка блоков (block chain). Учитывая, что проверить правильность блока несложно (достаточно вычислить двукратный хеш), все участники сети Биткоин твёрдо уверены, что каждый блок получен по общим для всех правилам.
Скорость, с которой добываются новые биткоины, остаётся примерно постоянной, даже с учётом того, что всё больше мощных компьютеров в этом задействованы. Для этого target пересчитывается каждые две недели так, чтобы в среднем скорость майнинга составляла 1 блок в 10 минут.
Постоянная скорость генерации вкупе с растущим числом работающих компьютеров означает, что чем раньше начать добывать биткоины, тем больше их можно найти.
На поверхности остаётся ещё один интересный вопрос. Если в добыче участвуют разные компьютеры, то выполняют ли они одну и ту же работу (а значит, что находить всегда будет наиболее мощный компьютер)? Оказывается, что нет, и дело в том, что в служебной информации есть такие данные, которые почти наверняка разные у всех компьютеров, а это значит, что все компьютеры имеют одинаковые шансы на успех.
Подведу итог этой большой и технически-ориентированной статьи. Генерация биткоинов происходит за счёт вычислительной мощности компьютеров так, чтобы общая средняя скорость составляла 1 успешную находку в 10 минут.