Введение в технологию Блокчейн

Тимур Сергеевич Машнин, 2021

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

Оглавление

Стимулы и доказательства работы

Теперь у нас есть базовое представление консенсусного алгоритма Биткойна и представление, почему мы считаем, что это безопасно.

Но вспомним, что децентрализация Боткойна — это с одной стороны технический механизм, а с другой стороны умная стимуляция.

До сих пор мы в основном рассматривали технический механизм.

Теперь давайте поговорим о стимулах, которые применяются в Биткойне.

Также вспомним, что мы сделали предположение, что мы можем выбрать случайный узел и, возможно, более проблематично, что, по крайней мере, в 50 процентов случаев, при этом мы выберем честный узел.

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

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

Рассмотрим снова попытку двойной траты после одного подтверждения.

Можем ли мы каким-то образом наказывать узел, который создал блок с транзакцией с двумя тратами?

Ответ — не совсем.

Как я говорил ранее, трудно понять, что является морально легитимной сделкой.

Но даже если бы мы это сделали, все равно трудно наказывать узлы, так как у них нет идентификаторов.

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

И, опять же, поскольку эти узлы не раскрывают свою реальную идентичность, мы не можем отправить им наличные на их домашние адреса.

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

Вероятно, вы уже видите, к чему я иду.

Другими словами, мы собираемся использовать биткойны, чтобы стимулировать узлы, которые создали эти блоки.

Давайте на мгновение остановимся.

Все, что мы описали до сих пор, является абстрактным алгоритмом для достижения распределенного консенсуса и не является специфичным для приложения.

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

В частности, мы собираемся стимулировать узлы вести себя честно, платя им в единицах этой валюты.

Как это делается?

В Биткойне есть два отдельных механизма стимулирования.

Первое стимулирование — это награда за блок.

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

Эта транзакция представляет собой транзакцию создания монет, аналогичную CreateCoins в Scroogecoin, и узел также может выбрать адрес получателя этой транзакции.

Конечно, этот узел, как правило, выбирает адрес, принадлежащий самому себе.

Вы можете думать об этом как о плате узлу в обмен на услугу создания блока в консенсусной цепочке.

На сегодняшний момент значение вознаграждения блока фиксировано на уровне 12.5 биткойнов.

Но на самом деле это вознаграждение делится пополам при добавлении каждых 210 000 блоков.

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

Сейчас мы находимся в третьем периоде.

В течение первых четырех лет существования Биткойна награда за блок составляла 50 биткойнов.

Теперь она равна 12.5 биткойнов.

Это имеет некоторые интересные последствия, которые мы увидим.

Возможно, будет интересно понять, почему вознаграждение в блоке стимулирует честное поведение.

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

Это не так!

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

Это ключевая идея этого механизма стимулирования.

Так как большая часть сети следит за самой длинной действующей ветвью, этот стимул побуждает узлы быть честными.

Это первый механизм стимулирования Биткойна.

Я уже сказал, что каждые 210 000 блоков (или примерно четыре года) вознаграждение за блок сокращается вдвое.

На слайде наклон этой кривой постоянно уменьшается вдвое, пока не уменьшится до нуля в 2140 году.

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

Важно отметить, что майнинг, это единственный способ создания новых биткойнов.

Не существует другого механизма генерации монет, и именно поэтому 21 млн — это окончательное и общее число (такие сейчас правила), сколько биткойнов может когда-либо быть.

Поэтому вознаграждение за создание нового блока закончится в 2140 году.

Означает ли это, что система остановит свою работу в 2140 году и станет небезопасной, потому что у узлов больше не будет стимула вести себя честно?

Не совсем.

Награда за блок является лишь первым из двух механизмов стимулирования в Биткойне.

Второй механизм стимулирования называется комиссией за транзакцию.

Создатель любой транзакция может выбрать комиссию или разницу между общим значением транзакционных выходов и общим значением транзакционных входов.

Тот, кто создает блок и который первым помещает эту транзакцию в цепочку блоков, получает эту разницу, которая действует как транзакционная плата.

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

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

В определенной степени это уже сейчас происходит.

Но пока неясно, как будет развиваться система.

Это интересная область открытых исследований в Биткойне.

И по-прежнему остается несколько проблем с консенсусным механизмом, который мы описали.

Первой проблемой является предположение, что мы можем выбрать случайный узел.

Во-вторых, мы создали новую проблему, предоставив узлам стимулы для участия.

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

И третья — более сложная версия этой проблемы, которая заключается в том, что злоумышленник может создать большое количество узлов Сибиллы, чтобы попытаться подорвать консенсусный процесс.

Оказывается, все эти проблемы связаны, и все они имеют решение, которое называется доказательством работы.

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

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

В качестве альтернативы это может быть пропорционально владению валютой, и это называется системой доказательства ставки.

Хотя эта система не используется в биткойне, доказательства ставки является альтернативной моделью, и такая система используется в других криптовалютах.

Мы рассмотрим доказательства ставки и другие варианты доказательства работы позже.

Вернемся к доказательству работы.

Давайте попробуем лучше понять, что значит выбирать узлы пропорционально их вычислительной мощности.

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

Еще один взгляд на доказательство работы заключается в том, что создание нового идентификатора узла будет умеренно тяжелым.

Это своего рода налог на создание идентичности и, следовательно, на атаку Сибиллы.

Это может показаться немного расплывчатым, поэтому давайте посмотрим на детали системы доказательства работы, которые используются в биткойне, чтобы прояснить эту систему.

Биткойн получает доказательства работы с использованием головоломок.

Чтобы создать новый блок, узел, который предлагает этот блок, должен найти номер или nonce.

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

Мы можем определить такое целевое пространство или диапазон, как любое значение, которое попадает ниже определенного целевого значения. В этом случае nonce должен будет удовлетворять неравенству.

Как мы видели ранее, обычно блок содержит ряд транзакций, которые предлагает узел.

Кроме того, блок также содержит указатель хеша на предыдущий блок.

И кроме того, теперь мы требуем, чтобы блок также содержал nonce.

Идея состоит в том, что мы хотим сделать сложной задачу нахождения nonce, которое удовлетворяет определенному свойству, состоящему в том, что хеширование всего блока вместе, в том числе и nonce, приведет к определенному типу результата.

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

Так что конкретно, если целевое пространство для результата составляет всего один процент от общего объема выходных данных, вам нужно попробовать около 100 nonce, прежде чем вы попадете в диапазон.

В реальности, размер этого целевого пространства намного меньше одного процента выходного пространства.

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

Вместо этого узлы просто самостоятельно конкурируют, чтобы все время решать головоломки.

Время от времени одному из них везет, и он находит случайный нонс, который удовлетворяет этому свойству.

Затем этот удачливый узел предлагает следующий блок.

Вот каким образом система полностью децентрализована.

Никто не решает, какой узел получает возможность предложить следующий блок.

Существует три важных свойства головоломки.

Во-первых, ее довольно сложно вычислить.

И эта сложность меняется со временем.

По состоянию на конец 2014 года уровень сложности составлял около 10 в 20 степени хэшей на блок.

Другими словами, размер целевого пространства составлял всего 1/(10 в 20 степени) от размера выходного пространства хэш-функции.

Это очень много вычислений — например, это за пределами возможности обычного ноутбука.

Из-за этого далеко не все узлы пытаются конкурировать в этом процессе создания блока.

Этот процесс повторяющихся попыток и решений этих головоломок хэша известен как майнинг биткойна и участвующие в этом процессе узлы называются майнерами.

Хотя технически кто угодно может быть майнером, для этого сейчас высокая стоимость входа в этот процесс.

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

То, как это делается, заключается в том, что все узлы в одноранговой сети Bitcoin автоматически пересчитывают размер целевого пространства в виде доли выходного пространства, каждые 2016 блоков.

Они пересчитывают диапазон таким образом, чтобы среднее время между последовательными блоками, создаваемыми в сети Биткойн, составляла около 10 минут.

С 10-минутным среднем временем между блоками, 2016 блоков работают до двух недель.

Другими словами, пересчет целевого пространства происходит примерно раз в две недели.

Давайте подумаем, что это значит.

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

Таким образом, узлы будут автоматически перенастраивать диапазон головоломки, и объем работы, которую вы должны будете сделать, чтобы найти блок, будет увеличиваться.

Поэтому, если вы вложили фиксированный объем инвестиций в оборудование, скорость, с которой вы находите блоки, фактически зависит от того, что делают другие майнеры.

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

Это означает, что, если у Alice есть оборудование для майнинга, которое составляет около 0,1 процента от общей хэш-мощности экосистемы, она будет добывать примерно один из каждых 1000 блоков.

Какая цель у этой корректировки сложности головоломки?

Почему мы хотим сохранить этот 10-минутный интервал между новыми блоками?

Причина довольно проста.

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

Нет ничего волшебного в отношении числа 10.

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

Но, несмотря на некоторые разногласия относительно идеальной задержки, все согласны с тем, что это должна быть фиксированная величина.

Вот почему у нас есть функция автоматического пересчета целевого пространства или сложности головоломки.

Способ настройки доказательства работы позволяет нам переформулировать наше предположение о безопасности.

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

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

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

Это тот же подход, которому следовали и мы, за исключением того, что мы взвешиваем узлы по хэш-мощности при определении большинства узлов.

В исходном документе Биткойн также содержится этот тип анализа.

Но теория игр дает совершенно другой, и, возможно, более сложный и реалистичный способ определения того, как будет себя вести система.

В этом представлении мы не разделяем узлы на честные и злонамеренные.

Вместо этого мы предполагаем, что каждый узел действует в соответствии со своими стимулами.

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

Если протокол и стимулы разработаны хорошо, то большинство узлов будут следовать правилам большую часть времени.

«Честное» поведение — это всего лишь одна стратегия из многих.

Исходя из теории игр, большой вопрос заключается в том, является ли поведение майнера по умолчанию «равновесием Нэша», то есть представляет ли оно стабильную ситуацию, в которой ни один майнер не может реализовать более высокий выигрыш, отклонившись от честного поведения.

Этот вопрос по-прежнему спорный и является активной областью исследований.

Равнове́сие Нэ́ша — одно из ключевых понятий теории игр. Так называется набор стратегий в игре для двух и более игроков, в котором ни один участник не может увеличить выигрыш, изменив свою стратегию, если другие участники своих стратегий не меняют.

Решение головоломок-хэшей вероятностно, потому что никто не может предсказать, какой из nonce приведет к решению головоломки.

Единственный способ сделать это — попробовать nonce один за другим и надеяться, что это удастся.

Математически этот процесс называется испытаниями Бернулли.

Испытание Бернулли — это эксперимент с двумя возможными результатами, и вероятность получения каждого результата зафиксирована между последовательными испытаниями.

Здесь два результата: попадает ли хэш в целевое пространство или нет.

И, предполагая, что функция хэша ведет себя как случайная функция, вероятность этих исходов фиксирована.

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

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

Это называется экспоненциальным распределением.

Вблизи 10 минут, если существует небольшая вероятность того, что блок будет найден сейчас, следующий блок будет найден очень скоро, скажем, в течение нескольких секунд или минуты.

И существует также небольшая вероятность того, что потребуется целый час, чтобы найти следующий блок.

Но в целом сеть автоматически регулирует сложность, так что межблочное время поддерживается в среднем, в течение 10 минут.

Если вы майнер, вам, вероятно, интересно, сколько времени вам понадобится, чтобы найти блок.

Как выглядит эта функция плотности вероятности?

Она будет иметь ту же форму, но просто будет иметь другой масштаб по оси x.

Опять же, это может быть представлено уравнением.

Для конкретного майнера это будет зависеть от его хэш-мощности.

Если у вас есть 0,1 процента от общей хэш-мощности сети, это уравнение говорит нам, что вы будете находить блоки каждые 10 000 минут, что составляет примерно одну неделю.

Мало того, что ваше среднее время между нахождениями блоков будет очень высоким, но дисперсия времени между найденными вами блоками также будет очень высокой. Это имеет некоторые важные последствия, которые мы рассмотрим позже.

Перейдем теперь к третьему важному свойству головоломки или функции доказательства работы, которое позволяет легко проверить, что узел действительно правильно вычислил доказательство работы.

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

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

Это важное свойство, потому что, опять же, оно позволяет нам избавиться от централизации.

Нам не нужна никакая центральная власть, которая проверяет, что майнеры выполняют свою работу правильно.

Любой узел или любой майнер может мгновенно проверить, что блок, найденный другим майнером, удовлетворяет этому свойству проверки доказательства работы.

Давайте теперь посмотрим на экономику майнинга.

Все мы уже слышали, что быть майнером, это довольно дорого.

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

Эти цифры позволяют легко вычислить, выгодно ли это для меня, и мы можем определить это решение простым выражением:

Если

вознаграждение за добычу> стоимость добычи

тогда майнеров быть выгодно

где

вознаграждение за добычу = вознаграждение за блок + комиссия за транзакции

при этом, стоимость добычи = стоимость оборудования + эксплуатационные расходы (электричество, охлаждение и т. д.)

Награда за майнинг, которую получает майнер, состоит из вознаграждения за блок и транзакционных сборов.

Майнер должен сравнить это с общими расходами, а именно стоимостью оборудования и электроэнергии.

Но для этого простого уравнения есть некоторые сложности.

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

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

Третья сложность состоит в том, что затраты, которые несет майнер, обычно выражаются в долларах или какой-то другой традиционной валюте, но их вознаграждение выражено в биткойне.

Таким образом, это уравнение имеет скрытую зависимость от обменного курса Биткойна в любой момент времени.

И, наконец, до сих пор мы предполагали, что майнер заинтересован честно следовать протоколу.

Но майнер может выбрать какую-то другую стратегию добычи биткойнов, а не пытаться продлить самую длинную действующую ветвь.

Таким образом, это уравнение не отражает все нюансы различных стратегий, которые может использовать майнер.

На самом деле анализ того, имеет ли смысл добыча, — сложная проблема теории игр, на которую нелегко ответить.

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

Теперь соединим все это вместе, чтобы получить лучшее понимание.

Начнем с идентификаторов.

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

Любой пользователь может создать пару псевдонимных ключей в любой момент, любое их количество.

Когда Алиса хочет заплатить Бобу за биткойны, в протоколе биткойнов не указано, как Алиса узнает адрес Боба.

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

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

Биткойн не имеет фиксированных номиналов, так как доллары США, и, в частности, нет специального обозначения «1 биткойн».

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

Наименьшее возможное значение — 0.000 000 01 BTC (биткойны), которое называется 1 Satoshi.

Целью одноранговой сети Bitcoin является распространение всех новых транзакций и новых блоков на все одноранговые узлы Bitcoin.

Но сеть крайне несовершенна и делает попытки ретрансляции этой информации с максимальной эффективностью.

Безопасность системы не основывается на совершенстве одноранговой сети.

Вместо этого безопасность основывается на цепочки блоков и консенсусного протокола.

Когда мы говорим, что транзакция включена в цепочку блоков, мы имеем в виду, что транзакция получила многочисленные подтверждения.

Нет фиксированного числа, сколько требуется подтверждений, прежде чем мы достаточно убедимся о включении транзакции, но шесть подтверждений — это обычная практика.

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

Также существуют сиротские блоки или блоки, которые не включаются в консенсусную цепочку.

Существует множество причин, которые могут привести к появлению сиротских блоков.

Блок может содержать недопустимую транзакцию или попытку двойной траты.

Это также может быть просто результатом латентности сети.

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

Поэтому оба этих блока будут транслироваться почти одновременно в сеть, и один из них неизбежно останется сиротой.

Наконец, мы рассмотрели хэш головоломку и добычу.

Майнеры — это специальные типы узлов, которые решают конкурировать в игре по созданию новых блоков.

Они вознаграждаются за это новыми биткойнами (как вознаграждение за новый блок) и существующими биткойнами (как транзакционные сборы).

Далее, тонкий, но важный момент: скажем, что Алиса и Боб — два разных майнера, и у Алисы в 100 раз больше вычислительной мощности, чем у Боба.

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

Вместо этого Алиса и Боб имеют коэффициент вероятности нахождения следующего блока в пропорции 100 к 1.

В долгосрочной перспективе Боб найдет в среднем один процент от числа блоков, которые находит Алиса.

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

Потому что, если майнер будет постоянно в убытке, он, вероятно, прекратит добычу.

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

Тогда увеличенная скорость хэширования приведет к увеличению сложности, и ожидаемая награда каждого майнера упадет.

Понятие распределенного консенсуса пронизывает Биткойн довольно глубоко.

В традиционной валюте консенсус работает в определенной мере.

В частности, существует консенсусный процесс, который определяет обменный курс валюты.

Это, также, верно и в биткойне.

Здесь нам также нужен консенсус относительно ценности биткойна.

Но в Биткойне, кроме того, нам нужен консенсус относительно состояния книги или реестра, который утверждает цепочки блоков.

Другими словами, даже подсчет того, как много биткойнов у вас есть, подчиняется консенсусу.

Когда мы говорим, что Алисе принадлежит определенная сумма или количество биткойнов, мы фактически имеем в виду, что одноранговая сеть Bitcoin, согласно записи в блокчейне, считает, что общему количеству всех адресов Алисы принадлежит данное число биткойнов.

Это и есть природа биткойна.

Владение биткойнами — это не что иное, согласие других узлов с тем, что данная сторона владеет этими биткойнами.

И наконец, нам нужен консенсус относительно правил системы, потому что изредка правила системы должны меняться.

Существует два типа изменений в правилах биткойнов, известные как мягкий форк и жесткий форк.

Мы рассмотрим форки позже.

Еще одна тонкая концепция — это процесс начальной загрузки.

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

Мы, очевидно, хотим, чтобы блок-цепочка была безопасной для Биткойна, чтобы биткойн был жизнеспособной валютой.

И чтобы блокчейн был безопасным, злоумышленник не должен нарушать консенсусный процесс.

Это, в свою очередь, означает, что противник не может создать много узлов для майнинга и забрать себе более 50 % создания новых блоков.

Необходимым условием безопасности биткойна является наличие здоровой экосистемы майнинга, состоящей, в основном, из честных, следующих протоколу узлов.

Но когда большое количество майнеров будет вкладывать много вычислительной мощности в решение головоломки с хэшем?

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

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

Теперь, что обеспечивает высокую и стабильную стоимость валюты?

Это может произойти только в том случае, если пользователи в целом доверяют безопасности цепочки блоков.

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

Таким образом, у вас есть взаимозависимость между безопасностью цепочки блоков, здоровой экосистемой майнинга и обменным курсом.

Из-за цикличности этой трехсторонней зависимости существование каждой из этих вещей основано на существовании других.

Когда Биткойн был впервые создан, ни одно из этих трех свойств не существовало.

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

Биткойн не имел большой ценности в качестве валюты.

И цепочка блоков была, по сути, небезопасной, потому что не было много майнеров, и кто-то мог легко перегрузить этот процесс.

Нет простого объяснения тому, как Биткойн перешел от неимения ни одного из этих свойств, чтобы иметь все три из них.

Внимание средств массовой информации было частью истории — чем больше людей слышат о Биткойне, тем больше они будут заинтересованы в майнинге.

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

Кстати, каждый новый Altcoin, который хочет добиться успеха, также должен как-то решать эту проблему самораскрутки.

Наконец, давайте рассмотрим, что произойдет, если консенсус потерпит неудачу, и появится 51-процентный злоумышленник, который будет контролировать 51 % или более мощности майнинга в сети Bitcoin.

Мы рассмотрим несколько возможных атак и посмотрим, какие из них действительно могут быть выполнены таким злоумышленником.

Прежде всего, может ли этот злоумышленник украсть монеты из существующего адреса?

Как вы, возможно, догадались, ответ отрицательный, потому что кража из существующего адреса невозможна, если вы не взломаете криптографию.

Недостаточно подорвать консенсусный процесс.

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

Нападавший может притворяться, что это действительная транзакция и продолжать строить блокчейн на основе этого блока.

Злоумышленник может даже добиться успеха в создании самой длинной ветки.

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

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

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

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

Узел Боба отклонит эту ветвь как недействительную, так как она содержит недействительную транзакцию.

Эта ветка недействительна, потому что подписи не проходят проверку.

Поэтому узел Боба просто игнорирует самую длинную ветвь, потому что это недействительная ветка.

И из-за этого, недостаточное подорвать консенсус.

Вы должны подорвать криптографию, чтобы украсть биткойны.

Таким образом, мы делаем вывод, что эта атака невозможна для 51-процентного злоумышленника.

Следует отметить, что все это всего лишь мысленный эксперимент.

Если бы были фактические признаки 51-процентной атаки, то, вероятно, разработчики заметят это и отреагируют на это.

Они будут обновлять программное обеспечение Bitcoin, и мы могли бы ожидать, что правила системы, включая одноранговую сеть, могут измениться в той или иной форме, чтобы затруднить успешную атаку.

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

Давайте рассмотрим еще одну атаку.

Может ли 51-процентный злоумышленник сдерживать некоторые транзакции?

Скажем, есть некий пользователь, Кэрол, которого нападающий очень не любит.

Злоумышленник знает некоторые адреса Кэрол и хочет сделать так, чтобы монеты, принадлежащие одному из этих адресов, не смогли быть потрачены.

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

Злоумышленник может также отказаться не только от создания, но и от использования блоков, содержащих такие транзакции.

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

Злоумышленник не может остановить передачу транзакции большинству узлов.

Может ли злоумышленник изменить вознаграждение блока?

То есть, может ли злоумышленник притвориться, что награда за блок, вместо 12.5 биткойнов, составляет 100 биткойнов?

Это изменение правил системы, и поскольку злоумышленник не контролирует копии программного обеспечения Bitcoin, на котором работают все честные узлы, это также невозможно.

Это похоже на то, почему злоумышленник не может включать недопустимые транзакции.

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

Наконец, может ли атакующий каким-то образом уничтожить доверие к Биткойну?

Давайте представим, что произойдет.

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

Люди потеряют уверенность в валюте, и мы можем ожидать, что обменный курс биткойнов резко упадет.

На самом деле, если будет известно, что существует сторона, которая контролирует 51 % хэш-мощности, тогда возможно, что люди потеряют уверенность в биткойне, даже если злоумышленник не обязательно попытается атаковать.

Таким образом, это не только возможно, но и на самом деле вероятно, что 51-процентный злоумышленник любого типа уничтожит доверие к валюте.

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

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

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

Дальше мы будет рассматривать детали и нюансы биткойна.

Смотрите также

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