If you're seeing this message, it means we're having trouble loading external resources on our website.

Если вы используете веб-фильтр, пожалуйста, убедитесь, что домены *.kastatic.org и *.kasandbox.org разблокированы.

Основное содержание

Биткоин: блокчейн

Механика блокчейнов — цепочек блоков, создаваемых майнерами и служащих рестром хранения и проверки достоверности биткоинов. Создатели: Zulfikar Ramzan.

Хотите присоединиться к обсуждению?

Пока нет ни одной записи.
Знаете английский? Нажмите здесь, чтобы увидеть обсуждение, которое происходит на английской версии сайта.

Транскрипция к видео

Давайте обсудим еще один важный аспект работы системы Биткоин — цепочка блоков транзакций. В прошлых видео мы разбирали пример с пользователем Элис, которая хочет перевести n-ое количество биткоинов другому пользователю, Бобу. Для этого Элис нужно было создать транзакцию, запись в своего рода гроссбухе, содержащую информацию, которую Элис заверяет при помощи своего закрытого ключа. Но запись содержит и открытый ключ Элис, а также открытый ключ Боба. Сообщение о транзакции отправляется в сеть другим узлам системы, каждый из которых независимо, обрабатывает сообщение. Это узлы распределённой, децентрализованной сети, которые получают информацию о данной транзакции. Но одновременно они получают информацию о множестве других транзакций, происходящих одномоментно. Далее каждый узел начинает встраивать эту транзакцию в отчет обо всех транзакциях, когда-либо происходивших в системе. Для начала берутся данные обо всех неучтенных транзакциях, которые получает узел. Имеются в виду все транзакции происходящие за определенный промежуток времени. Обозначим их таким образом. Узлы сети Биткоин или майнеры получают данные обо всех транзакциях и начинают производить их обработку. Первым делом они начинают группировать транзакции в специальные структуры или блоки. Если вспомнить нашу аналогию с гроссбухом, то транзакция соответствует одной записи в нем. В таком случае блок будет соответствовать одной странице, на которой есть целый ряд подобных записей. И цель майнера — сделать так, чтобы именно его страница была добавлена в общий сетевой гроссбух. Для этого каждый узел берет данные обо всех транзакциях, отправленных в сеть. Допустим, сейчас есть данные о четырех транзакциях. Далее они попарно хэшируются и получается некая древовидная структура. Каждые две транзакции хэшируются, и полученные дайджесты снова преобразуются при помощи хэш-функции, чтобы получить один-единственный дайджест. В котором закодированы детали всех ранее неучтенных транзакций, о которых стало известно каждому узлу. Затем этот дайджест нужно объединить с хэшэм предыдущего блока, подтвержденного участниками сети. То есть, имеется серия принятых ранее блоков. Кстати, каждый блок включает в себя предыдущий блок. То есть, этот блок включает в себя предыдущий, который тоже включает предыдущий блок. Цепочка начинается с момента начала работы системы Биткоин, с точки отсчёта для системы Биткоин. В итоге, новый блок нужно будет присоединить ко всем предыдущим. Как вы понимаете, каждый блок включает в себя предшествующий блок. Так что мы имеем дело не с отдельным блоком транзакций, а, скорее, с цепочкой, непрерывной с момента начала работы системы Биткоин. В конце концов, в результате криптографического хэширования получается последовательность чисел. Эта последовательность чисел основана на сочетании всех данных блоков. Затем эта последовательность чисел будет преобразована в сложную вычислительную задачу для получения подтверждения. Подробно я говорил об этом в прошлом видео. Вкратце, майнер или узел в системе Биткоин, должен решить задачу, то есть подобрать некую последовательность чисел или решение, и это решение должно иметь определенные математические свойства. То есть, если взять задачу или запрос и решение или подтверждение, объединить их и хэшировать, то выходные данные должны содержать в начале определенное количество нулей. Это не будут сплошь нули, но вначале будет много нулей. С учетом того, что результат применения криптографической хэш-функции выглядит довольно бессвязно, незакономерно, то вряд ли вы с самого начала получите нужное число нулей. Как правило, майнер вынужден перепробовать множество вариантов решений, пока, в конце концов, ему не посчастливится найти правильный, статистически редкий вариант. И трудность нахождения этого числа прямо пропорциональна количеству нулей в начале. Чем больше должно быть нулей, тем дольше считать. Сложность вычислительной задачи подбирается самой сетью Биткоин. Чем меньше в начале нулей, тем меньше времени займет решение. В среднем, решение находится один раз за 10 минут. То есть, 10 минут для одного узла. Но нужно иметь в виду, что над задачей параллельно работает много узлов. После получения ответа, об этом нужно будет объявить. Майнер отправляет в сеть доказательство проделанных вычислений. И все видят, что кто-то, наконец, нашел решение. Тогда все узлы начинают формировать новые блоки на основе последнего, получившего подтверждение. Помните, что этот новый блок включает в себя информацию обо всех предыдущих. Все начинают работать с обновленной цепочкой блоков. Все новые, неучтенные транзакции будут далее включаться в обновленную цепочку блоков. За учет транзакций и создание новых блоков, майнеры получают определенное вознаграждение. Оно оформляется как особая транзакция в том же самом блоке. Это вознаграждение они получают, если… Отмечу его зеленым… При регистрации первой транзакции в блоке они, как бы, переводят полученные при создании блока биткоины самим себе. Эта сумма меняется. Таким образом происходит добывание биткоин-монет посредством создания нового блока. Так новые биткоины появляются в системе. Так что, когда майнер предъявляет доказательство проделанных вычислений и создает новый блок транзакций, то за все усилия по поиску решения задачи и за учет транзакций и создание нового блока, он получает вознаграждение — определенное количество биткоинов. По-моему, это логично. Поскольку пользователи задействовали вычислительный ресурс своих компьютеров, а значит, кто-то где-то платил за электричество и тому подобное. Вдобавок к новым биткоинам, полученным за создание блока, майнеры получают еще и комиссионный сбор. Как вы помните, лицо, осуществляющее транзакцию, может заплатить биткоин или часть биткоина тому узлу, который первым решает вычислительную задачу и, следовательно, получает право добавить эту транзакцию к общей цепочке блоков. Узел, который справился с работой, получает вознаграждение. Оно может быть вполне приличным, потому что узел получает сбор не за одну транзакцию. Можно получить сбор за все новые транзакции блока. И еще кое-что. Иногда возникает ситуация, когда два узла одновременно решают одну задачу. И оба добавляют блок к цепочке. Возникает раздвоение. Считается, что каждая из ветвей равноправна до тех пор, пока одна из них не получит более длинное продолжение. Под длинным подразумевается не большее количество транзакций, а то, где на решение вычислительной задачи потребовалось больше усилий. То есть, важно количество вычислений, которое потребовалось для обновления цепочки блоков. Вся сеть принимает тот блок, на присоединение которого к цепи потребовалось больше усилий. Есть еще другие варианты решения этой проблемы, но, в общем, все разрешается довольно быстро, при условии, что большинство узлов придерживается правил. Если майнеры создают биткоины, возникает вопрос: как этот процесс происходит и каким образом регулируется? Об это мы поговорим в следующем видео. Subtitles by the Amara.org community