November 27, 2018

Введение в криптоэкономику

Очень полезная статья от Анами Нгуен — убеждённого блокчейн-энтузиаста. Нгуен успела окончить Школу бизнеса Леонарда Н. Штерна и поработать аналитиком в крупнейшем финансовом холдинге JP Morgan.

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

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

Даже если вы никогда не слышали термин «децентрализованная p2p-сеть», вы, скорее всего, пользовались такими сетями или слышали, например, о файлообменных сетях Napster и BitTorrent. В целом, это системы, где люди взаимодействуют друг с другом и обмениваются ценностью. Ценностью может быть что угодно, что мы коллективно считаем ценным, например, материальный предмет или услуга. Большинство людей считают ценной фиатную валюту, потому что её принимают как таковую и мы доверяем её стабильности и долговечности. Сегодня эту роль отчасти выполняют также и криптовалюты, такие как биткойн.

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

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

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

Общественный договор и криптовалюты

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

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

В государствах безопасность обеспечивается за счёт государственной монополии на насилие посредством полиции и армии. Такое насилие используется для поддержания безопасности и, следовательно, ценности нашего общества для нас (по крайней мере, теоретически…). Например, государство обеспечивает соблюдение законов посредством способности наказывать, то есть применять насилие (например, заковывать в наручники или помещать в тюрьму). Таким образом, принадлежа к обществу, вы частично отказываетесь от своей власти ради стремления к совершенствованию общества. Вы делаете это, потому что доверяете, что правительство и система действительно обеспечат безопасность и дополнительную ценность в сравнении с тем, если бы каждый был сам за себя. Разумеется, всё это теоретически, так как большинство из нас не принимает самостоятельного решения о том, хотим ли мы жить в государстве; мы рождаемся в нём. Мы также не даём прямого согласия на отказ от своих прав и не всегда доверяем правительству свою защиту.

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

  • Никто не может принудить вас к участию;
  • Нет центрального органа (такого как правительство), способного злоупотреблять своей монополией на власть (вспомните ужасные деяния коррумпированных и неэтичных правительств, такие как геноцид, рабство, дискриминация);
  • Для обеспечения соблюдения участниками правил не используется физическое насилие;
  • Безопасность обеспечивает открытый код.

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

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

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

Цели

Общие цели цифровой децентрализованной p2p-сети – обеспечить безопасность и ценность. Если более конкретно:

Что мы приветствуем:

  • Надёжное выполнение (можно быть уверенным, что твоя транзакция будет проведена);
  • Открытый доступ (любой может получить доступ и прочитать код; ничто не скрыто от всех, кроме нескольких избранных);
  • Быстрое завершение (транзакции производятся быстро и необратимо);
  • Децентрализованный контроль (нет центрального органа, контролирующего протокол и сеть);
  • Дешевизна (способствует большому числу транзакций).

Чего мы хотим избежать:

  • Нарушение безопасности (например, кража токенов);
  • Цензура (например, кто-то решает запретить определённой группе людей проводить транзакции);
  • Медленное завершение (противоположность быстрого завершения);
  • Централизованный контроль (противоположность децентрализованного контроля);
  • Дороговизна (тут всё понятно).

На более глубоком уровне этих целей можно достичь с помощью следующего:

  • Конвергенция (блоки следуют друг за другом в цепочке – блокчейне);
  • Доступность данных (открытый доступ способствует децентрализации);
  • Действительность (каждая транзакция подтверждена, что помогает избежать двойного расходования);
  • Доступность сети для всех, что равносильно устойчивости к цензуре;
  • Метка времени (что помогает определить последовательность блоков, действительность транзакций и пр.);
  • Высокая эффективность при нескольких криптоэкономических моделях безопасности.

Модели безопасности

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

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

Я не стану слишком в них углубляться, вот лишь краткий обзор:

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

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

В рамках модели Нескоординированного Выбора можно предположить Модель Честного Большинства, где ни у одного участника нет больше 50% вычислительной мощности. Безопасность оказывается под угрозой, когда у кого-то становится больше 50% вычислительной мощности. Такой участник сможет осуществить форк в блокчейне и включить поддельные транзакции. (В действительности, завладение 50% мощности сети имеет больше нюансов). Модель честного большинства – очень оптимистичное допущение, а следовательно, не слишком жизнеспособное в реальном мире.

Более реалистично, как было доказано, что безопасность блокчейна Биткойна может оказаться под угрозой, если злоумышленник получит лишь чуть больше 1/3 вычислительной мощности. (Подробнее об этом можно прочитать в статье Эмина Гюн Сирера из Корнеллского университета).

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

Модель скоординированного выбора: Противоположность модели нескоординированного выбора. Здесь допускается, что большинство или все участники договариваются посредством какого-нибудь агента или коалиции.

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

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

Два столпа криптоэкономики

Как уже упоминалось, криптоэкономика стоит на двух столпах:

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

Криптографические инструменты

Ещё раз повторим, что криптографические инструменты – это методы, обеспечивающие безопасность и неизменность сообщений. Они являются неотъемлемой частью Биткойна и других блокчейнов, а следовательно, и криптоэкономики. В числе основных криптографических инструментов (называемых криптографическими примитивами) – хеш-функции и цифровые подписи. Учитывая фундаментальное значение этих криптографических примитивов для блокчейна, я изложу их основы.

Хеш-функции

Хеш-функция – это такая функция, которая для входа произвольного размера x выдаёт выход фиксированного размера H(x). Биткойн использует хеш-функцию SHA-256, разработанную Агентством национальной безопасности США на основе функции Меркла – Дамгора.

Она обладает тремя важными свойствами:

  1. Устойчивость к коллизиям: Хеш-функция устойчива к коллизиям, если сложно найти два разных входа, дающих одинаковый выход. То есть, мы хотим избежать следующего: H(x) = H(y), если x≠ y. Без устойчивости к коллизиям злоумышленник сможет заменить исходное сообщение «a» поддельным сообщением «b», если оно даёт тот же хеш: H(a) = H(b).
  2. Необратимость: Хеш-функция необратима, если не существует эффективного способа найти вход x для выхода H(x). Проблема в том, что если вход взят из очень небольшого массива, например, может иметь одно из двух возможных значений, то кто-то может просто хешировать возможные значения и легко выяснить вход x. Поэтому, если можно скрыть вход x, присоединив к нему другой вход из очень большого массива, то поиск x будет неэффективным. H (r||x) – необратимая функция, где r – случайное значение.
  3. Сложность. Хеш-функция сложна, когда мы знаем случайную часть входа x и знаем хеш H(x), но остальную часть входа найти сложно. Чтобы найти остальную часть входа, необходимо случайно перебирать все варианты. Это свойство необходимо для майнинга Биткойна – майнеры пытаются решить криптографические задачи, чтобы получить следующий блок.

Цифровые подписи

Цифровая подпись – это подражание ручной подписи. Подпись связывает сообщение с нашими идентификационными данными (например, показывает, что это действительно Анами Нгуен выписала вам чек). Цифровая подпись в децентрализованной p2p-сети выполняет практически ту же функцию. Она помогает удостовериться, что определённые сообщения (транзакции) действительно исходят от определённого субъекта. Цифровая подпись удовлетворяет следующим трём требованиям:

  1. Только вы можете поставить свою подпись. (Аналогия из реальной жизни: когда я пишу своё имя определённым образом, я надеюсь, что никто не сможет написать его так же).
  2. Любой может проверить вашу подпись. (Аналогия из реальной жизни: случайный банковский служащий должен быть способен удостовериться, что подпись действительно принадлежит Анами Нгуен. В противном случае подпись практически бесполезна).
  3. Подпись привязана к конкретному документу. (Аналогия из реальной жизни: мою подпись нельзя отрезать от выписанного мною чека и приклеить к другому документу).

Цифровая подпись включает три алгоритма:

1. (sk, pk):=generateKeys(keysize)

Метод generateKeys использует в качестве входа размер ключа и генерирует пару ключей:

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

Применение: Публичный ключ – это ваши публичные идентификационные данные (или ваш адрес в Биткойне). Чтобы выступать от имени pk, необходимо знать секретный ключ sk. Это можно сравнить с именем пользователя и паролем. Так никто не может выдать себя за другого и отправлять сообщения (и совершать транзакции) от его имени.

2. sig:=sign(​sk​, ​message​)

Метод sign использует в качестве входа сообщение и секретный ключ sk. На выходе получаем подпись для сообщения с ключом sk.

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

3. isValid:=verify(​pk​, ​message​, ​sig​)

Метод verify использует в качестве входа сообщение, подпись и публичный ключ pk. На выходе получаем булево значение (истинно/ложно) isValid, которое будет истинно, если sig – действительная подпись для сообщения с публичным ключом pk, и ложно в противном случае.

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

Таким образом, действительная подпись должна показывать:

verify(pk, message, sig(sk, message))== true

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

Экономические инструменты

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

Основные экономические инструменты – это использование токенов и механизмы консенсуса.

Токены

Токены – это подлежащие обмену товары в децентрализованной p2p-сети. Самый известный токен в криптомире – биткойн.

Токены могут обмениваться на различные товары и услуги. Например, в сети Golem можно сдавать в аренду неиспользуемую мощность CPU/GPU и получать в качестве вознаграждения за свои услуги GNT (токены сети Golem). Наличие токенов создаёт для участников сети общую ценность, благодаря чему децентрализованные p2p-сети напоминают самостоятельные экономики или экосистемы.

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

Вознаграждение за блок

Представьте, что вы – узел, создавший новый блок, который включается в блокчейн Биткойна. В качестве вознаграждения за вашу работу вы получаете право включить в блок специальную транзакцию (транзакцию coinbase). Эта транзакция позволяет вам отправить на собственный адрес вознаграждение блока. На данный момент (2018 г.) майнеры получают вознаграждение за нахождение блока в размере 12,5 биткойнов. (Вознаграждение за блок сокращается через заданные интервалы, что можно отслеживать здесь).

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

Транзакционные комиссии

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

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

Механизмы консенсуса

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

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

Рассмотрим механизм консенсуса Биткойна – доказательство выполнения работы (Proof-of-Work). Если в двух словах, то майнеры должны потратить большое количество вычислительной мощности, чтобы доказать, что они что-то поставили на кон, после чего им разрешается предложить новый блок. Они тратят эту вычислительную мощность, решая задачи, основанные на свойствах хеш-функций, которые упоминались ранее. Не стану углубляться в технические подробности этих задач, но с точки зрения криптоэкономики важно отметить, что майнеры должны потратить фиатную валюту, чтобы приобрести вычислительную мощность (сегодня в виде высокоспециализированных и высокопроизводительных микросхем ASIC). Следовательно, они тратят существенные ресурсы, которые будут потрачены впустую, если блок не будет включён в блокчейн.

Ещё один популярный механизм консенсуса – доказательство владения долей (Proof-of-stake). В целом, в этом механизме консенсуса ряд валидаторов по очереди предлагают и голосуют за следующий блок, и вес голоса каждого валидатора зависит от размера поставленного на кон депозита. Они теряют свою долю, если блок не включён в блокчейн, и поэтому мотивированы голосовать за блоки, содержащие только действительные транзакции.

Возможные атаки на сеть

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

Атака 51% (уровень честного большинства)

Один из самых прямолинейных способов сделать возможным двойное расходование или поддельные транзакции – это осуществить форк блокчейна, после чего включить или исключить определённые транзакции из блоков новой цепочки. Для этого узлы должны принять новый блок, включающий поддельные транзакции и дальше добавлять к нему последующие блоки. Отколовшийся в результате форка блокчейн должен обойти изначальный блокчейн, увеличиваясь быстрее и становясь длиннее, потому что узлы обычно присоединяют новые блоки к самому длинному блокчейну. Такая атака возможна, если у кого-то будет большинство – свыше 50% – вычислительной мощности. Мы считаем блокчейн Биткойна безопасным, потому что принимаем модель честного большинства, где больше 50% участников честны. Это самая известная теоретическая атака на блокчейн Биткойна. В действительности необходимо учитывать множество нюансов. В частности, атака может сработать, даже если у злоумышленника меньше 50% вычислительной мощности.

Теоретически злоумышленник, преследующий исключительно экономическую выгоду, должен быть не мотивирован на проведение атаки 51%, потому что сразу же после атаки сетевая стоимость (обменный курс биткойн/фиат) обвалится. Злоумышленник фактически навредит сам себе. Однако кто-то может желать уничтожить блокчейн Биткойна по идеологическим или политическим соображениям. Или же кто-то может открыть короткие позиции по биткойну и затем запустить атаку, чтобы выиграть на обвале. Есть много других факторов, требующих учёта и анализа… к сожалению, они выходят за рамки настоящей статьи.

Атака P + эпсилон

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

Атака P+ε позволяет подкупить участников сети без издержек. Допустим, нужно проголосовать, истинно ли 2+2=4, и все голосуют «да» или «нет». Конечно, честный голос – «да». Если вы голосуете так, как большинство участников, вы получаете вознаграждение P. Если ваш голос принадлежит к меньшинству, вы получаете 0. Каждый думает, что остальные проголосуют «да», и поэтому все голосуют «да». Мы наблюдаем так называемое равновесие Нэша, где каждый получает то, что хочет.

Но представьте, что злоумышленник хочет, чтобы вы проголосовали «нет». Для вас это глупо, потому что все остальные проголосуют «да», следовательно, ваш голос окажется в меньшинстве и вы не получите вознаграждение P. Однако злоумышленник надёжным способом (например, с помощью контракта Эфириума) обязуется заплатить вам P+ε (изначальное вознаграждение плюс небольшой бонус), если вы проголосуете «нет» и окажетесь в меньшинстве. Вдруг в ваших лучших интересах становится проголосовать «нет»: если вы окажетесь в большинстве, то выиграете P, а если в меньшинстве, выиграете P+ε. С другой стороны, проголосовав «да», вы выиграете, только если окажетесь в большинстве, но проиграете, если окажетесь в меньшинстве. Теперь, из-за подкупа, все проголосуют «нет». Проголосовавшие «нет» неожиданно оказываются в большинстве, и поэтому злоумышленник не обязан им платить.

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

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

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

Заключение

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

Что касается экономических стимулов, мы можем использовать токены и механизмы консенсуса (такие как доказательство выполнения работы), чтобы обезопасить сеть и мотивировать участников что-то в неё вкладывать, например, тратя доллары на вычислительную мощность для майнинга Биткойна. Существует много способов атаковать децентрализованную p2p-сеть, таких как атака 51% и атака P + эпсилон. Будучи новой и фактически неакадемической областью в рамках криптосообщества, криптоэкономика постоянно развивается и зависит от теоретизирования и навыков решения задач всех участников криптосообщества. Сочетание криптографии и экономических стимулов делает децентрализованные p2p-сети безопасными, ценными и надёжными.