Технологии криптовалют

Практика использования Биткоин в разных областях

Показывать лекцию целиком

Биткойн как журнал только для добавления данных

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

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

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

Чтобы не раскрывать x, можно публиковать хэш – H(X).

Свойства хеш-функции гарантируют, что нельзя найти какое-то другое значение Х’, которое имеет такое же значение хэш, что и Х. При этом хэш не должен раскрывать информацию об X – это будет верно только в случае действительно большого пространства возможных X. Итак, идея безопасного штампа времени с помощью журнала – публикация обязательства (commitment) в виде хэша X. Поэтому если кто-то публикует в блокчейне в момент времени t хэш данных X, то в дальнейшем любой может убедиться, что опубликовавший знал X в момент времени t (или ранее), так как эти данные невозможно подделать.

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

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

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

Несколько лет назад во время финала Кубка мира, кто-то фальсифицировал, что предугадал результаты. Он попытался доказать, что ФИФА, которая организует Кубок, является коррумпированной. Для этого он показал свою учетную запись в Twitter с результатами матча. На секунду можно поверить в то, что он знал данные результаты. Но на самом деле он записывал каждый возможный ход игры и результаты до начала матча, а за некоторое время до его конца удалил все предсказания, оказавшиеся неправдой.

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

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

Итак, это действительно простое решение, оно отлично работает в автономном режиме, то есть без Интернета. Вопрос в том, как и где можно поставить хеш-обязательство в биткойне; какое место в блокчейне или в транзакциях будет занимать хэш информации, знание которой необходимо доказать в будущем? Самый простой способ – отправка денег не на хэш открытого ключа, который является адресом, а на хеш данных, знание которых нужно подтвердить. Так как это хэш данных, а не реальный адрес, отправленные деньги нельзя будет потратить. Поэтому имеет смысл отправлять минимальную сумму – 1 сатоши. Недостатком этого метода является то, что фактически создаются недействительные транзакции, которые являются метками времени. И сообщество вынуждено их отслеживать и поддерживать в блокчейне.

Есть более сложный способ поставить штамп времени - КомитКойн (CommitCoin). Это небольшой протокол для поиска открытых ключей и подписей, при котором фиксируемые данные вставляются в биты открытого ключа и подписи. Для того чтобы найти специальный открытый ключ, формируется множество открытых ключей и множество подписей. Хэш данных, которые необходимо подтвердить, будет "встроен" в искомый открытый ключ. Для постороннего наблюдателя эта операция будет выглядеть как обычное формирование открытого ключа. При этом не создаются непередаваемые транзакционные выходы. У данного метода один недостаток – он сложнее и, как следствие, дороже. Подробнее с протоколом можно ознакомиться в статье по ссылке: https://issuu.com/ptmannion/docs/bitcoin_protocol.

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

Единственным недостатком является то, что это все еще не стандартная транзакция, поэтому она не будет передаваться по умолчанию узлами сети. Но это предпочтительный способ зафиксировать данные в цепочке блоков. И на самом деле есть куча стартапов, которые фактически запускают небольшие веб-сайты, которые собирают множество обязательств людей в большое дерево Merkle. В конце дня все обязательства публикуются с помощью OP_RETURN. Это способ уменьшить стоимость публикации OP_RETURN и ограничить раздувание блокчейна нетрадиционными транзакциями.

В один скрипт OP_RETURN можно записать 40-байтное обязательство по стоимости 1 транзакционной комиссии, которая составляет около 0,0001 биткоина или 0,05 долларов США. Это достаточно низкая цена, которая приводит к основному недостатку данной схемы – злоупотреблению. Люди могут записывать любой, в том числе незаконный, контент в блокчейн.

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

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

Самая известная оверлейная валюта – Mastercoin (Мастеркоин). Она построена поверх биткоина, все транзакции Mastercoin записываются в цепочку блоков биткойнов, и она поддерживает гораздо более расширенный набор функций, чем биткойн. Главная идея оверлейной валюты – не нужно разрабатывать новый консеснусный механизм. И поскольку майнерам биткойна не нужно знать о правилах Mastercoin, она может поддерживать гораздо более специфические функции, более сложные интеллектуальные свойства, интеллектуальные контракты, определяемые пользователем валюты. По сути, API во много раз больше, чем API Биткойна, потому что майнерам это не нужно понимать. Они готовы просто вслепую написать что-либо в цепочку блоков, которая отформатирована как действительная транзакция Bitcoin. И сообщество Mastercoin должно посмотреть на все эти данные и собрать вместе действительное владение Mastercoin на основе того, что написано в блочной цепочке биткойнов. Таким образом, можно развивать валюту, не создавая собственную систему консенсуса. Не требуются новые майнеры, можно просто добавить больше возможностей и развивать их быстрее. Но оверлейная валюта полагается на Биткоин. Это может быть неэффективно, так как нет возможности предотвратить запись недействительных транзакций в блокчейн. Мастеркойн более подробно будет рассмотрен в лекции 11.

Практические применения свойств биткоина

Рассмотрим еще одно альтернативное применение биткоин.

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

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

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

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

Если просто написать что-то на банкноте, это не будет иметь никакой ценности. Нужно, чтобы метаданные были привязаны к конкретной купюре, и никто не смог бы это подделать. Для этого кто-то, обладающий авторитетом и имеющий ключ, должен подписать комбинацию метаданных и серийного номера банкноты. Предположим, что футбольная команда "Динамо" хочет начать использовать долларовые купюры в качестве билетов. Они утверждают, что конкретный серийный номер банкноты теперь представляет собой билет на определенную игру, возможно, с определенным местом. Тот, кто владеет этой банкнотой, может прийти на матч и посмотреть его. Для обеспечения аутентичности будет использован закрытый ключ "Динамо". Им будет подписано сообщение с указанием номера конкретной игры, даты и всей информации вместе с серийным номером банкноты. Эту информацию можно наклеить на банкноту в виде 2D штрих-кода.

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

Валюта может быть не только билетом на спортивный матч. Есть множество практических приложений рассмотренной схемы.

Банкнота имеет определенные анти-поддельные свойства. В каждом государстве есть специалисты, которые следят за уникальностью банкнот, так как это важно для поддержания любой валютной системы. Итак, если анти-поддельные свойства банкноты высоки, можно просто привязывать ее серийный номер к любым метаданным. При этом базовая стоимость купюры сохраняется. В рассмотренном примере с футбольной командой "Динамо", после того, как владелец купюры зашел на стадион, он может потратить ее на покупку мороженного.

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

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

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

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

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

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

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

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

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

Для того чтобы начать выпуск цветных биткоинов, не нужно обращаться в какой-то центральный орган. Недостатки этой схемы заключаются в том, что приходится ставить вывод непереносимого маркера в каждую транзакцию, которая включает в себя цветные монеты. Из-за этого добавляются небольшие накладные расходы в виде регулярных биткойнов каждый раз, когда необходимо торговать цветными монетами. И поскольку выход этого маркера является особенным , для проверки владения цветными монетами, необходимо проверить всю историю транзакций. Недостаточно просто покрасить монету в какой-то цвет, так как майнеры не работают с цветными монетами. Это является плюсом системы, так как майнеры не могут на нее влиять. С другой стороны у работающего с цветными монетами не может быть слабого клиента, так как ему необходимо проверять весь блокчейн. Это исключает работу с цветными монетами на ограниченных платформах, например, на телефонах, так как они не смогут хранить всю цепочку и поддерживать ее обновленную копию. Ранее был рассмотрен пример применения цветных монет в качестве билетов на какое-то мероприятие. Другой распространенный пример применения – цветные монеты, представляющие акции компании. Каждый раз, когда необходимо опубликовать новую акцию, биткоины передаются через хэш-адрес pay-to-script, который окрашивает их в определенный цвет. После этого люди могут начать торговать ими. Для выпуска акций в таком формате не нужна биржа или какая-либо инфраструктура, которая используется в автономном мире, можно просто обменять акции в обмен на обычные биткойны. Покупатели должны верить эмитенту акций. При этом цветные монеты могут фактически отображать факты в реальном мире – например, владение автомобилем или домом. В лекции 11 будет рассказано о некоторых трудностях, как юридических, так и социальных, возникающих при работе с цветными монетами, представляющими недвижимость .

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

Безопасные многопартийные лотереи в биткойне

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

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

При создании лотереи в онлайн-мире необходимо решить обе обозначенные проблемы.

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

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

Решение состоит в том, чтобы использовать обязательства хэша данных Х. Ранее было рассмотрено, как можно создать обязательство, не раскрывая самих данных X.

Допустим, в онлайн-лотерее участвует три стороны - Алиса, Боб и Кэрол. Для начала все они выберут случайное число, часто называемое nonce в криптографии, и сохранят его. При этом каждый должен верить в то, что конечный результат является случайным. В этом протоколе будет два раунда коммуникации.

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

Второй раунд наступает строго после завершения первого – каждый участник показывает свое число. Для того чтобы определить, кто выигрывает лотерею, есть довольно простая программа. Она берет все три случайных числа (Х данные) и смешивает их в битах. Затем берет хэш данных, делит его на mod 3, и выдает случайным образом один из трех результатов. Затем можно назначить каждый результат одному из участников, и это определит, кто станет победителем: Алиса, Боб или Кэрол. При этом каждый участник сам может проверить справедливость лотереи. Поэтому важным свойством хэш-функции является то, что она гарантирует случайность. Никто не смог бы выбрать свое случайное число таким образом, чтобы оно стало более вероятным, и чтобы конечный результат являлся победой. Особенно учитывая то, что участники не знают случайных чисел других участников. Не вдаваясь в длинное формальное определение случайности, псевдослучайности и хеш-функций, можно с уверенностью сказать, что в настоящее время хеш-функции работают корректно. Нет лучшей стратегии, чем просто выбор случайного числа, что дает одну треть шансов на победу.

Итак, что произойдет, если кто-то не сможет раскрыть свои обязательства? Рассмотрим второй раунд протокола и предположим, что Алиса и Боб публикуют свои обязательства, а Кэрол анализирует их, и говорит: "Если я опубликую свое обязательство, я проиграю. Я вижу случайные числа, которые выбрали Алиса и Боб, я понимаю, какое случайное число я выбрала, и могу запустить этот сценарий сказав, что я не выиграю."

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

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

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

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

Таким образом, биткоин с помощью своих встроенных сценариев предоставляет механизм для того, чтобы требовать оплату. В одном случае транзакция будет подписана Алисой и Бобом – и все деньги уйдут Бобу. Боб не сможет потребовать выплаты облигации до некоторого времени t, которое задается с помощью параметра n_lock_time, о котором было рассказано в предыдущих лекциях. Это является страховкой от того, что Алиса откажется участвовать в лотерее. Если она в определенный момент времени ничего не сделает, все деньги уйдут Бобу. В качестве альтернативы Алиса может опубликовать транзакцию до момента t, вернув деньги себе, но если она это сделает, то ей нужно не только подписать ее, но и раскрыть Х данные.

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

Итак, для того, чтобы участники не могли выйти из лотереи, вместо простых хэшированных обязательств используются приуроченные обязательства. Если вернуться к ситуации с третьим участником Кэрол, после того, как она видит случайные числа двух других игроков и понимает свой проигрыш, у нее не будет стимула не публиковать свои данные – она всё равно потеряет деньги, поставленные в облигации. Это будет работать, если облигация выше стоимости, поставленной на карте в лотерее.

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

Биткойн как источник случайности

Для создания лотереи с большим количеством участников необходим публичный протокол случайности, который гарантирует случайность выбора у каждого из участников. В настоящее время уже есть практика применения подобных протоколов. Один из примеров – лотерея НБА, которая происходит каждую весну. 30 команд NBA собираются вместе и случайным образом выбирают, опираясь на результаты предыдущего сезона, кто станет победителем среди игроков-любителей в стране и вступит в лигу.

В 1985 году возникло небольшое недоразумение. Лотерею выиграла команда "Нью-Йорк Никс", прогнозируемо выбравшая игрока Патрика Юинга, который был наиболее перспективен. Сразу после этого пошли слухи о том, что лотерея была фальсифицирована так, чтобы "Нью-Йорк Никс" смогла выбрать лучшего игрока. В Интернете можно найти всевозможные теории заговора о том, как NBA сфальсифицировал этот процесс, например, знаменитую теорию Bent Corner, которая говорит, что они вытащили конверт с изогнутым углом из чаши конвертов с разными именами команд. И даже сегодня, когда они открывают эту лотерею каждый год, существует целая куча теорий заговора в Интернете, которые каждый раз утверждают, что процесс прошел несправедливо. Еще один пример – призывная лотерея 1969 года в США, целью которой было определить, какие молодые люди присоединятся к Вооруженным силам, а затем отправятся воевать во Вьетнам. Члены конгресса сбрасывали капсулы с именами участников в пластиковый барабан и далее по очереди протягивали руку и вытаскивали. Участникам присваивался номер, определявший вероятность их присоединения к Вооруженным силам США.

Это был первый случай создания лотереи в национальном масштабе. Важно было поддерживать справедливость и случайность этой лотереи. Но специалисты по статистике проанализировали результаты в течение следующей недели после проведения лотереи и заметили интересный момент, который маловероятно произошел в следствие случайности: большинство дней в конце года получали очень низкие предварительные числа. Причина, по которой это произошло, заключается в том, что, когда специалисты вернулись и посмотрели на ленту, некоторые капсулы, которые были наверху, как правило, так и оставались в том же положении, т.е. смешивания не произошло. Создавалась только видимость смешения капсул. Оба примера показывают, насколько важно создать публичную случайность, которой могут поверить люди. Рассмотрим применение криптографического маяка. Этот маяк похож на реальный маяк, регулярно мигающий. Криптографический маяк будет генерировать новые случайные данные с постоянной скоростью. Цель его заключается в том, что он будет "излучать" единую случайность, которую никто не сможет предсказать заранее, поэтому все согласятся с тем, что маяк выводит случайные данные.

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

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

Национальный институт стандартов и технологий, НИСТ, в течение последних нескольких лет проводит эксперимент, целью которого является запуск собственного маяка. Для генерации случайных чисел используется сложная настройка с участием двух запутанных фотонов, что дает гарантии случайности, порожденной квантовомеханическим явлением. И если верить принципу неопределенности Гейзенберга и другим основным принципам физики, тогда это должно быть случайным, и никто не сможет это фальсифицировать. НИСТ в Интернете публикует каждые 60 секунд множество случайных данных и подписывает их. Любой может использовать эти данные, если доверяет НИСТ и его эксперименту.

Для того чтобы решить проблему доверия, можно было бы использовать некоторые природные явления, за которыми все могут наблюдать и которые сложно подделать. Например, солнечные пятна, солнечная активность, скорость ветра или температура на определенное число и т.п. Проблема такого подхода в том, что он довольно медленный – температура и солнечная активность меняются не так часто. Вторая проблема – может возникнуть необходимость в доверенной стороне. Допустим, в качестве источника случайного сигнала будут сведения о температуре завтра в Москве. При этом у одного термометр покажет 25 градусов, а у другого – 26. И разница между этими двумя значениями будет означать победу в лотерее для одного из участников.

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

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

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

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

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

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

Поэтому, если бы была возможность предсказать, каким будет следующее случайное число, с вероятностью, превышающей 1 / d, где d – трудность поиска блока, тогда появится более быстрый способ добычи блока, чем просто случай. И помните, что d довольно высокое значение сейчас. Каждый блок, должен иметь 66 бит случайности, которые невозможно предсказать. По крайней мере, если биткойн безопасен, ни один из майнеров или кто-либо еще не сможет предсказать, какими будут эти случайные биты.

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

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

Насколько дорого стоило бы манипулировать этим? Любой майнер имеет возможность, если он найдет блок, не публиковать его в сеть, при этом не позволяя ему быть следующим блоком в последовательности. Майнер может сделать это, если блок будет сгенерирован с маяковым выходом, который его не устраивает. Также возможна ситуация, когда кто-то пытается заставить маяк вывести определенный выход. Тогда он может подкупать майнеров, которые находят "нежелательные" блоки и предлагать им вознаграждение, большее, чем вознаграждение за блок в обмен на то, что эти блоки не будут опубликованы. Допустим, необходимо застать какой-то маяковый выход с вероятностью p. Для этого нужно отбросить несколько блоков, пока не будет найден нужный блок. И ожидаемое количество блоков, которые придется отбросить, - 1 / p-1, а с одним флагом монет p является всего лишь половиной.

Отбрасывать блок довольно дорого, так как при этом теряется награда за блок в 25 биткоинов или около 15 000 долларов США.

В среднем нужно будет отказаться от одного блока и потерять всего 25 биткойнов. И если есть лотерея N-party, где это справедливо между всеми N-сторонами, это будет 25 раз n-1 биткойнов. Таким образом, процесс будет безопасным, пока выигрыш лотереи будет меньше, чем стоимость манипулирования. Если два человека хотят сделать ставку на равные шансы, и они хотят использовать Биткойн в качестве источника случайности, это будет безопасно, если их ставки будут менее 25 биткоинов.

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

Недостаток использования Биткойна в качестве маяка по сравнению с некоторыми альтернативами заключается в том, что время появления нового блока немного неточно. Предположим, что нужно просчитать стоимость маяка завтра в полдень. Для этого нужно будет просто угадать, основываясь на распределении, и рассчитать в среднем, какой блок-индекс будет опубликован завтра в полдень. Но это даст немного разногласий. И также придется откладывать время на подтверждение блока (примерно 6 секунд), прежде чем будет принято решение, что это действительно последний выход маяка.

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

Рынки прогнозирования и реально существующий поток данных

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

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

Это позволяет иметь долю в некоторых событиях в будущем. Например, в том, что "Динамо" выиграет чемпионат России в 2015 году. Доля будет стоить некоторой цены X, если это произойдет на самом деле, и ничего не стоить, если это событие не произойдет. До фактического наступления этого события у актива будет некоторая цена, отражающая то, насколько вероятным все видят это событие. Давайте посмотрим на чемпионат мира 2014 года в Бразилии. И, допустим, у нас был рынок, где можно было покупать и продавать акции в командах. В конечном итоге акции будут стоить дорого у той команды, которая победит чемпионат. Перед началом турнира акции каждой из пяти команд имеют ненулевую цену, которая отражает мнение рынка о шансах на победу каждой команды. Например, у команды Германии это число будет 0,12 – это значит, что рынок верит в 12% шанс на победу. И так далее для каждой команды. По мере продолжения турнира эти цены будут колебаться, и это будет отражать меняющуюся убежденность рынка в том, насколько вероятна победа каждой команды.

После группового этапа Англия, которая до начала чемпионата торговалась на 0,05, то есть имела 5% -ный шанс выигрыша, ушла в ноль. Англия была выбита после группового этапа. И так как у команды Англии нет возможности выиграть в этот момент, цена отражает то, что их акции сейчас бесполезны. В это же время команда США, у которой акции в начале турнира стоили 0,01, по результатам группового этапа подняла свой рейтинг и цена стала 0, 06 - то есть у рынка выросла уверенность в вероятности их победы.

Получается тот, кто купил акции команды США в начале турнира по 0,01, после проведения группового этапа может их продать по 0,06, не дожидаясь окончательных результатов турнира. То есть он может извлечь выгоду не из-за того, что команда США выиграла турнир, а из-за того, что вера людей в возможность выигрыша турнира командой США выросла после сильного выступления на групповом этапе.

Турнир будет продолжаться. По результатам полуфинала команда США выбывает, и стоимость их акций становится нулевой. Остается 4 команды с относительно высокими ценами за акцию. Но самая высокая цена у акций команды Бразилии, так как многие верят, что именно у нее самые высокие шансы на победу.

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

В результате в финале турнира остаются команды Германии и Аргентины. Команда Германии выигрывает, и с этого момента только ее акции имеют ценность. Одной из стратегий получения прибыли в этом примере была покупка акций команды Германии по 0,12 доллара и продажа по 1 доллару в конце турнира. Этот способ эквивалентен традиционным ставкам в спорте. Но на рынке прогнозов есть много других способов получить прибыль. Не нужно просто делать ставки на правильную команду и надеяться, что они выиграют. Можно инвестировать в любую команду в любое время или же занять короткую позицию, и получить прибыль только от способности предсказать, как будет меняться уверенность рынка в победе той или иной команды.

Еще один пример с реального рынка прогнозов – выборы президента США в 2008 году. В начале выборов шансы Барака Обамы оценивались как очень высокие, шансы Джона Маккейна – как очень низкие. В ходе предвыборной компании с кандидатами происходили разные события (дебаты, удачные и неудачные интервью и прочее), и верования людей в их победу менялись. За два месяца до фактических выборов Джон Маккейн почти добрался до пятидесяти процентов шансов на победу – в тот момент люди действительно не знали, кто победит выборы.

Но к тому времени, когда на самом деле произошли выборы, Обаме дали 90%-й шанс выигрыша за день до выборов.

Таким образом, рынок прогнозов был хорошо осведомлен о результатах выборов. Выборы были почти закончены до того, как были поданы голоса. По крайней мере, было очень маловероятно, что Обама проиграет выборы. Это демонстрирует всю мощь рынков прогнозирования. Можно читать газеты, новости в Интернете, смотреть телевидение – и там будет множество противоречивых мнений различных экспертов. Но если вместо этого посмотреть на рынок прогнозов, то можно увидеть, что за неделю до выборов вероятность выигрыша барака Обамы была равна 90 процентам. Вот почему экономисты любят рынки прогнозов – они раскрывают все знания и представления, которые участники имеют о событиях в будущем.

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

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

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

И он столкнулся с различными проблемами регулирования в США. Не вдаваясь во все юридические детали, отметим, что в конечном InTrade закрылся в 2013 году.

Можно ли построить рынок децентрализованных прогнозов на основе Биткоина? Есть несколько задач, которые придется децентрализовать. Нужно обеспечить оплату и выполнение ставок, которые делают люди. Все это должно быть децентрализованным. Необходим децентрализованный арбитраж. Арбитраж - это процесс утверждения того, какие результаты на самом деле произошли. В случае спортивного матча он не нужен – так как всегда очевидно, кто выиграл, а кто проиграл. Но есть случаи, когда арбитраж необходим. Также нужно децентрализовать книги заказов, которые позволят продавцам и покупателям взаимодействовать без участия централизованных клиринговых домов.

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

Лучшим решением было бы построить альткоин, который имел явную поддержку для рынков прогнозирования. Есть предложение сделать это под названием FutureCoin. Он будет иметь дополнительные типы транзакций, ориентированные на рынки прогнозов. Например, можно покупать портфель возможных результатов. Допустим, в чемпионате мира участвует 32 команды и за 1 FutureCoin можно купить акции каждой из них.

Затем можно продать долю в каждом результате и получить FutureCoin обратно. Можно купить долю в каждом результате, а затем продать акции, которые посчитаете бесперспективными. Это будет одним из способов получения прибыли. Можно купить портфель, дождаться изменения цен и продать его напрямую за FutureCoins. А можно купить портфель и играть на цене акций внутри портфеля. После фактического совершения события происходит специальное закрытие, и тогда для получения прибыли достаточно иметь одну долю в выигрышном результате. Как можно вести арбитраж, который позволит зафиксировать результат исхода события и получить прибыль тем, кто поставил на выигрышный вариант развития событий? Самая простая модель - доверенные арбитры. Любой может стать арбитром. Но для того, чтобы люди доверили арбитру свои выигрыши, они должны ему доверять. Для этого арбитр создает себе репутацию, работая на рынке долго и честно. Но всегда есть риск, что арбитр может скрыться или трактовать результаты в свою пользу. Есть несколько способов организации децентрализованного арбитража. Один из них заключается в том, чтобы все люди, владеющие акциями на рынке, голосовали за победителей, то есть за то, что произойдет на самом деле. И есть различные способы, которыми можно попытаться стимулировать пользователей правильно голосовать. Можно заставить пользователей размещать облигации или поддерживать репутацию, и, если они голосуют в направлении, отличном от большинства, накладывать штраф. В результате их репутация снижается. Можно создать аналогичную систему, в которой вместо голосования пользователей будет криптовалютное голосование майнеров. Если они будут голосовать неправильно, они получат меньшую награду за блок или не получат ее совсем.

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

Следует отметить, что иногда реальность сложна. Для некоторых событий бывает трудно однозначно определить результат. Есть традиция выливать на тренера победившей в Super Bowl (футбольный чемпионат) команды напиток Gatorade. Победившая команда выбирает цвет напитка самостоятельно. Люди делают ставки на то, какой цвет выберет та или иная команда. Оранжевый и желтый цвета всегда были фаворитами, как самые популярные у команд цвета. В результате на одном Super Bowl выиграла команда Seattle Seahawks, и они вылили на голову тренеру оранжевую Gatorade. Затем несколько игроков взяли и вылили на голову тренеру желтую Gatorade. На рынке прогнозов случилась неразбериха, так как совершенно непонятно, кто победил – те, кто ставил на оранжевый, или те, кто ставил на желтый цвет. Организации, которые принимали реальные ставки, чтобы сохранить свою репутацию объявили о том, что они выплатят выигрыш тем, кто поставил на желтый и тем, кто поставил на оранжевый. То есть они согласились понести убытки, чтобы не испортить себе репутацию. На децентрализованном рынке прогнозирования это было бы невозможным, так как нельзя создать деньги из воздуха – выигрыш формируется только из тех денег, которые изначально поставлены. Есть несколько решений. Одно из них – побеждают оба цвета, и каждый поставивший на них, получает половину выигрыша.

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

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

Традиционно это делается централизованно в одной книге заказов. В ней собирают все заказы, хранят их в секрете и делят разницу пополам. Цена, которую в итоге получает участник, находится посередине между самой низкой ценой, за которую готовы были продать и самой высокой ценой, за которую готовы были купить. И это сопряжено с несколькими рисками. Те, кто организовывает централизованную книгу, могут заранее поставить свои заказы и попытаться совершить лучшую сделку. Это называется front-running и считается серьезным преступлением. Централизованные книги заказов регулируются на правовом уровне, чтобы избежать этой проблемы. В децентрализованной книге заказов нельзя добиться такого сильного правового обеспечения. Поэтому front-running объявляется особенностью, а не преступлением. Каждый может подавать заказы майнерам, а майнеры могут соответствовать любой возможной торговле, и вместо того, чтобы раскалываться посередине, майнер фактически удерживает все распространение в качестве комиссии за транзакцию. И красота этого заключается в том, что майнеры теперь получают комиссионный сбор за транзакцию, и у них нет стимулов для работы по схеме front-running, потому что это никогда не будет более выгодным, чем просто захват распространения в качестве платы за транзакцию. Единственный недостаток заключается в том, что необходимо заплатить потенциально высокую плату майнеру. В результате эта схема станет менее эффективной,. Люди, возможно, не захотят объявлять заранее свою готовность платить, потому что это может привести к большому распространению, которое майнер получает для захвата. Так что пока неизвестно, как это будет работать на практике, но, похоже, это очень перспективный подход.

Если подвести итоги всему вышесказанному, Биткоин не позволяет в полной мере реализовать рынок прогнозов. Нельзя реализовать полностью децентрализованные сделки, децентрализованный арбитраж и нет встроенной в Биткоин концепции книги заказов. Поэтому возникает идея о создании совершенно новой валюты с учетом накопленного с 2008 года опыта работы с Биткоином – Альткоинс (Altcoins). Следующая лекция посвящена новой криптовалюте, перспективам и проблемам ее развития.

Вернуться к учебному плану