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

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

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

Биткоин. Безопасность блокчейнов

Подробное объяснение, как и чем защищены блокчейны транзакций биткоинов. Создатели: Zulfikar Ramzan.

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

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

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

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