График средних показателей лимита газа. Источник: Etherscan.io
Можно заметить, что кривая немного напоминает другой график, возможно, хорошо вам знакомый:
И тот и другой похожи на магические числа, которые создает и систематически пересматривает довольно централизованная группа людей, сидящих в одной комнате. Что происходит в первом случае? Чаще всего майнеры выбирают одобренный сообществом путь, который, как и в случае хардфорков, определяется социальным консенсусом (поддержка главных разработчиков, оценки на Reddit и прочее; в Ethereum вопрос лимита газа никогда не был настолько спорным, чтобы решать его серьезными мерами вроде голосования монетами).
Следовательно, не совсем ясно, может ли голосование быть действительно децентрализованным, если из-за недостатка технических знаний избиратели просто полагаются на слова одной доминирующей группы экспертов. Опять же, эта критика в равной степени актуальна и для тесно, и для слабо связанных голосований.
Максимальная ставка подоходного налога: 1913–2003
Еще один способ борьбы с риском появления опасных и неконтролируемых алгоритмов управления – так называемые цифровые конституции, которые математически определяют желаемые свойства протокола и требуют, чтобы любые изменения кода сопровождались проверяемым компьютером доказательством того, что они удовлетворяют этим свойствам. На первый взгляд звучит неплохо, но и здесь, на мой взгляд, не помешает доля скепсиса.
В целом идея создавать нормы свойств протокола и использовать эти нормы в качестве координирующих флажков – замечательная. Так мы можем обозначить самые важные и ценные для нас свойства протокола и усложнить их изменение. Однако это именно тот способ, который подходит для слабо связанной формы (второй слой), но не для тесно связанной (первый слой).
Любую значимую норму трудно исчерпывающе сформулировать; этим отчасти сложна проблема ценности. Это верно даже для чего-то, казалось бы, совершенно недвусмысленного вроде лимита в 21 миллион монет[46]. Конечно, можно добавить строку кода assert total_supply <= 21000000 с комментарием «не удалять ни при каких обстоятельствах», но есть множество обходных путей. Например, кто-то может догадаться сделать софтфорк, который добавляет обязательную комиссию за транзакцию, пропорциональную стоимости монеты, умноженной на время с момента последней отправки монет, и это будет эквивалентно демереджу[47], что, в свою очередь, эквивалентно дефляции. Также можно внедрить другую валюту под названием «бпткойн» с 21 миллионом новых единиц и добавить функцию, при которой майнер может перехватить отправленную биткойн-транзакцию и потребовать биткойн, взамен отдав получателю бпткойн. В таком случае биткойны и бпткойны быстро станут взаимозаменяемыми, увеличив «общее предложение» до 42 миллионов без изменений той строчки кода. Обеспечить соблюдение «более мягких» норм вроде невмешательства в состояние приложения еще труднее.
Мы
Однако я вовсе не хочу идти другим путем и утверждать, что голосования монетами или другие схемы, подобные голосованию внутри блокчейна, вообще не стоит применять в управлении. Главной альтернативой здесь кажется консенсус главных разработчиков, но и это, на мой взгляд, может представлять серьезную угрозу в тех случаях, когда режим отказа контролируют «интеллектуалы в башне из слоновой кости», которые больше заботятся об абстрактных философских вопросах и изящных технических решениях, чем о реальных повседневных проблемах вроде взаимодействия с пользователем и транзакционных сборов.
Как же решить эту дилемму? Для начала можем прислушаться к тому, что slatestarcodex[48] говорит в контексте традиционной политики:
Кажется, в управлении блокчейном это тоже самый подходящий путь. Я выступаю за подход «многофакторного консенсуса», при котором учитываются различные координирующие флажки, механизмы и группы и окончательное решение зависит от общего результата. К таким флажкам могут относиться:
▒ дорожная карта (то есть набор идей о направлениях развития проекта, озвученных на его ранних стадиях);
▒ консенсус между доминирующими основными командами разработчиков;
▒ голосование держателей монет;
▒ голосование пользователей с помощью системы голосования, устойчивой к атакам Сивиллы;
▒ установленные правила (например, невмешательство в приложения, лимит в 21 миллион монет).
На мой взгляд, голосование монетами за то или иное предложение может стать одним из нескольких координационных институтов. Это несовершенный и нерепрезентативный сигнал, но он
И в основе всего этого лежит ключевое отличие блокчейнов от традиционных систем, которое делает блокчейны такими интересными: «первый уровень» – то есть фундамент всей системы – требует, чтобы пользователи соглашались на любые изменения протокола, и при этом дает им свободу пригрозить форком, если кто-то попытается навязать враждебные, на их взгляд, изменения.
Тесно связанное голосование также допустимо в некоторых ограниченных контекстах – например, несмотря на недостатки, возможность майнеров голосовать за лимит газа неоднократно доказывала свою эффективность. Риск того, что майнеры попытаются злоупотребить своей властью, может быть ниже риска того, что какой-либо конкретный лимит газа или ограничение размера блока, жестко закодированные в протокол в самый первый день его существования, в конечном итоге приведут к серьезным проблемам. В этом случае позволять майнерам голосовать за лимит газа будет полезно. Однако «разрешение майнерам или валидаторам голосовать по нескольким конкретным параметрам, которые время от времени необходимо срочно изменить» очень далеко от предоставления им произвольного контроля над правилами протокола или позволения через голосование контролировать валидацию. И в теории, и на практике такие широкие полномочия управления внутри блокчейна могут иметь печальные последствия.
О сговорах
VITALIK.CA
3 апреля 2019 года
В последние годы наблюдается все больший интерес к координации поведения участников различных систем с помощью специально подобранных экономических стимулов и дизайна механизмов. В блокчейне дизайн механизмов прежде всего обеспечивает безопасность самой системы, подталкивая майнеров или, в случае proof of stake, валидаторов к честному поведению, но в последнее время этот подход встречается также в рынках предсказаний, «регистрах, контролируемых токенами» и других контекстах. Зарождающееся движение RadicalxChange плодит эксперименты с налогами Харбергера[51], квадратичным голосованием и квадратичным финансированием, а совсем недавно возрос интерес к идее вознаграждать пользователей токенами за создание качественного контента в социальных сетях. В теории все это звучит неплохо, но на практике возникает ряд проблем, с которыми нужно считаться и с которыми, на мой взгляд, справляться мы еще не научились.
Например, недавно китайская платформа Bihu опробовала такую модель: чтобы мотивировать пользователей создавать контент, она запустила механизм вознаграждения лучших постов монетами. Работает это примерно так: если пользователь платформы держит токены KEY, он может голосовать ими за статьи. «Проголосовать» можно k раз в день, и «вес» каждого голоса пропорционален количеству токенов, которыми проголосовал пользователь. Статьи с наибольшим количеством голосов попадают на более заметные места платформы, а их авторы получают вознаграждение в KEY, примерно пропорциональное количеству голосов, поддержавших статью. Это очень упрощенное описание, и в действительности механизм содержит некоторые нелинейности, но на его базовый принцип работы они существенно не влияют. Ценность KEY определяется тем, что его можно по-разному использовать внутри платформы, но особенно тем, что часть доходов от рекламы уходит на покупку и сжигание KEY (именно за такой подход – вместо создания еще одного внутреннего токена – проект заслуживает особой похвалы!).
Подобный дизайн далеко не уникален: многие прибегают и к похожим, и к совершенно другим механизмам, чтобы подтолкнуть пользователей к созданию онлайн-контента. И в данном случае эту конкретную платформу уже активно используют.
Несколько месяцев назад в сабреддите /r/ethtrader, посвященном трейдингу на Ethereum, появилась схожая экспериментальная функция: за популярные комментарии пользователи еженедельно получают токены – так называемые пончики. Сумма награды пользователя пропорциональна количеству голосов у его комментариев. На эти пончики можно купить право определять содержимое баннера в шапке сабреддита, а также голосовать в опросах сообщества. Однако здесь есть отличия от схемы с KEY: когда A поддерживает Б и Б получает за это вознаграждение, оно не будет пропорционально запасу монет А, и голоса всех аккаунтов Reddit будут весить одинаково.
Такого рода эксперименты, цель которых – мотивировать пользователей создавать качественный контент, избегая при этом известных проблем, типичных для донатов/микропожертвований, крайне ценны. Недостаточное поощрение пользовательского интернет-контента – серьезная проблема общества в целом, и то, что с помощью дизайна механизмов криптосообщества делаются попытки ее решить, не может не радовать. Но, к сожалению, эти системы также уязвимы для атак.
Описанную выше модель можно было бы «взломать» следующим образом. Предположим, какой-либо богатый пользователь приобретает N токенов, и в результате каждый из k голосов этого пользователя дает получателю вознаграждение в размере n × q (вероятно, q – очень небольшое число вроде 0,000001). Этот пользователь создает сокпаппетов[52] и голосует за них, получая через них вознаграждение в размере N × k × q. Затем система просто сворачивается вокруг каждого пользователя с «процентной ставкой» k × q за этот период, и больше механизм ничего не выполняет.
Разработчики Bihu, по-видимому, предвидели это и добавили к механизму суперлинейную логику, по которой статьи, поддержанные бóльшим количеством KEY, получают непропорционально бóльшую награду. Предположительно это должно стимулировать продвижение самых популярных постов вместо голосования за себя. Такая практика – добавлять суперлинейности, чтобы голосование за себя не подрывало всю систему, – характерна для систем управления с голосованием монетами. Большинство схем DPoS имеют ограниченное количество слотов для делегатов, и пользователи, не набравшие достаточного количества голосов для попадания в один из слотов, получают нулевое вознаграждение, что дает аналогичный эффект. Но и у таких решений есть два слабых места.
▒ Они субсидируют плутократию, поскольку у очень богатых людей и картелей будет все еще достаточно средств для раскрутки своих постов голосованием за себя.
▒ Их можно обойти, подкупив других пользователей, чтобы они массово голосовали за конкретного кандидата.
Сценарий с подкупом может звучать надуманно (кто здесь хоть раз брал взятку в реальной жизни?), но в зрелой экосистеме он гораздо реалистичнее, чем кажется. Как правило, подкуп в среде блокчейна прикрывается эвфемизмами: для операторов это не взятка, а «пул ставок», который «делится дивидендами». В иных случаях взятки просто выдают за что-то другое: представьте себе криптовалютную биржу, которая предлагает нулевую комиссию и тратит силы на создание невероятно качественного пользовательского интерфейса, но при этом даже не пытается получить прибыль; вместо этого она использует средства, внесенные пользователями, для участия в различных системах голосования монетами. Также неизбежно найдутся люди, для которых внутригрупповой сговор – совершенно нормальное явление. Вспомним хотя бы недавний скандал с участием EOS DPoS.
Наконец, возможна «негативная взятка», когда участников шантажом или угрозами вынуждают действовать внутри механизма определенным образом.
В рамках эксперимента /r/ethtrader сообщество опасалось, что люди начнут
Некоторые системы пытаются смягчить плутократические аспекты голосования монетами за счет системы идентификации. В случае системы пончиков /r/ethtrader, хотя
Лень сооружать огромный стеллаж с телефонами? Пожалуйста, есть и такой вариант.
Не лишним будет напомнить: сомнительные сайты могут вас обмануть (а могут и не обмануть). Изучайте их как можно внимательнее
Пожалуй, провести атаку через тысячи поддельных марионеточных аккаунтов
С учетом того, как часто механизмы дают сбой при появлении множественных идентификаций или даже ликвидных рынков, напрашивается вопрос: не связаны ли все эти проблемы с какой-либо общей глубинной особенностью? Я бы ответил «да», и вот в чем эта особенность: создавать механизмы с желаемыми свойствами очень сложно (если вообще возможно) в тех моделях, где участники могут вступать в сговор (верно и обратное). Вероятно, большинство примерно понимает суть этого принципа; на его базе складываются нормы и даже законы, способствующие развитию конкурентных рынков, а также пресекающие создание ценовых картелей, покупку и продажу голосов и взяточничество. Но на деле все гораздо глубже и глобальнее.
В версии теории игр, которая фокусируется на индивидуальном выборе – то есть на предположении, что каждый участник принимает решения независимо от других и что группы агентов не способны действовать как единое целое на взаимовыгодных условиях, – существуют математические доказательства, что в любой игре должно быть хотя бы одно устойчивое равновесие Нэша – это обеспечивает разработчикам механизмов весьма широкие возможности для «настройки» игр под нужные результаты. Но другая версия, которая допускает возможность взаимодействия коалиций, – она же
К этим изначально нестабильным играм относятся
Факт нестабильности игр большинства в рамках теории кооперативных игр, пожалуй, сильно недооценивается, а ведь это – упрощенная общая математическая модель, которая объясняет, почему в политике, возможно, не может быть никакого «конца истории» и удовлетворяющей всех системы. Но лично я нахожу ее более полезной, чем, например, теорема Эрроу[54].
Обойти эту проблему можно двумя путями. Первый – попытаться ограничиться классом игр, которые «
Набор игр, которые не требуют идентификации личности и не допускают сговоров, весьма широк. Даже proof of work защищен от сговоров до тех пор, пока у одного участника не будет ~23,21 % от общей хеш-мощности, и этот предел при грамотном проектировании можно увеличить до 50 %. Конкурентные рынки тоже защищены от сговоров в достаточно высоких пределах, которых в одних случаях достигнуть легко, а в других – сложно.
Для
Еще один возможный пример футархии – система управления для проекта с токеном, при которой любой голосующий за решение в случае его победы обязан купить некоторое количество токенов проекта по цене на начало голосования. Таким образом, голосовать за плохое решение невыгодно, и если это плохое решение побеждает, то все, кто его поддержал, по сути дела выкупают токены у всех остальных участников проекта. Это делает голосование за «неправильное» решение очень затратным, исключая возможность принять выгодное для себя решение за относительно небольшую взятку.
Графическое описание одной из форм футархии, которая создает два рынка, представляющих два «возможных будущих мира», и выбирает тот, который обойдется дешевле
Однако спектр возможностей у механизмов такого типа ограничен. В приведенном выше примере курирования контента мы на самом деле не решаем проблему управления, а просто расширяем функциональность механизма управления, который уже считается надежным. Можно было бы попытаться заменить комиссию модерации рынком предсказаний цены токенизированного рекламного пространства, но на практике цены – показатель со слишком высоким уровнем шума, который подходит только для очень крупных и разовых решений. И часто ценность, которую мы стремимся максимально увеличить, имеет мало общего с максимальной стоимостью токена.
Давайте рассмотрим подробнее, почему в более распространенных ситуациях, когда ценность управленческого решения сложно определить по его влиянию на цену токена, хорошие механизмы идентификации общественных благ и зол, к сожалению, не могут обойтись без идентификации и не могут быть защищены от сговоров. Если попытаться исключить из игры необходимость в идентификации, создав систему, где важна будет не идентификация, а только монеты, то придется делать недопустимый выбор между невозможностью стимулировать создание законных общественных благ или чрезмерным субсидированием плутократии.
Суть заключается в следующем. Предположим, есть некий автор, который создает общественное благо (например, серию постов в блоге), ценное для каждого члена сообщества из 10 000 человек. Предположим, существует некий механизм, который позволяет членам сообщества совершить действие, в результате которого автор получит вознаграждение в размере $1. Чтобы механизм работал, стоимость выполнения этого действия должна быть намного ниже $1, ведь в противном случае выгода для членов сообщества от поддержки автора будет намного меньше стоимости его поддержки (если только они не
Аналогичная проблема возникает, когда цель заключается не в финансировании, а в определении того, какой контент должен быть наиболее заметным. Как вы думаете, какой контент получил бы больше поддержки в долларах: неоспоримо качественная статья в блоге, полезная для тысяч людей, но каждому отдельному человеку приносящая относительно небольшую пользу, или это?
Или, может быть, это?[55]
Те, кто следит за политикой «реального мира», могут также указать на еще один вид контента, выгодный для крайне централизованных игроков: манипуляции социальными сетями со стороны враждебных правительств. В конечном счете как централизованные, так и децентрализованные системы сталкиваются с одной и той же фундаментальной проблемой того, что «рынок идей» (и общественных благ в целом) очень далек от «эффективного рынка» в том смысле, в каком экономисты обычно используют этот термин, и это приводит к недостаточному производству общественных благ даже в «мирное время», не говоря уже об уязвимости к активным атакам. Это слишком сложная проблема.
Вышесказанное также объясняет, почему системы голосования на основе монет (вроде Bihu) имеют одно важное преимущество перед системами, основанными на идентификации (вроде Gitcoin CLR или эксперимента с пончиками /r/ethtrader): здесь, по крайней мере, нет никакой выгоды от массовой скупки аккаунтов, поскольку эффективность ваших действий пропорциональна вашему количеству монет, скольким бы аккаунтам вся эта сумма ни принадлежала. Однако механизмы, которые не используют идентификацию и полагаются только на монеты, принципиально не способны решить проблему вытеснения разрозненных сообществ, пытающихся поддерживать общественные блага, узкими группами интересов: механизм без идентификации, который расширяет возможности распределенных сообществ, не может помешать централизованным плутократам, притворяющимся распределенными сообществами, обрести еще более широкие возможности.
Но играм по созданию общественных благ угрожают не только проблемы с идентификацией, но и взятки. Чтобы понять почему, вернемся к примеру выше, но теперь представим, что вместо «фейкового сообщества» из 10 001 сокпаппета у злоумышленника есть только один аккаунт, получающий финансирование, а остальные 10 000 аккаунтов – реальные пользователи, каждый из которых получает взятку в размере $0,01 за совершение действия, благодаря которому злоумышленник получит $1. Как упоминалось выше, подобную систему взяток можно отлично замаскировать, например с помощью сторонних кастодиальных сервисов[56], которые голосуют от имени пользователя в обмен на удобство. В случае «голосования монетами» замаскировать взятку еще проще: достаточно арендовать монеты на бирже и с их помощью участвовать в голосованиях. Следовательно, если некоторые виды игр, особенно основанные на рынках предсказаний или страховых депозитах, и можно обезопасить от сговоров и избавить от идентификации, то общее финансирование общественных благ, по-видимому, относится к классу проблем, где подходы, не требующие идентификации и не допускающие сговоров, к сожалению, работать не будут.
Есть и другой подход – попытаться разобраться с проблемой идентификации напрямую. Как сказано выше, переход на более безопасные централизованные системы идентификации, то есть паспорта и другие государственные удостоверения личности, в крупных масштабах нежизнеспособен. В условиях серьезного стимулирования такой подход очень уязвим, причем опасность исходит даже от самих правительств! Скорее стоит говорить об «идентификации» в виде многофакторного набора утверждений о том, что субъект, идентифицируемый некоторым набором сообщений, действительно является уникальной личностью. Одной из первых протомоделей такого рода сетевой идентификации стало социальное восстановление в блокчейн-телефоне HTC.
Идея в том, что ваш приватный ключ находится в секретном общем доступе для пяти доверенных контактов и есть математическая гарантия, что трое из них могут восстановить исходный ключ, а двое или меньше – нет. Это квалифицируется как «система идентификации» – именно пять ваших друзей определяют, действительно ли тот, кто пытается восстановить вашу учетную запись, – это и есть вы. Однако эта система идентификации имеет специальное назначение и работает именно с проблемой безопасности личной учетной записи, которая отличается от проблемы идентификации уникальных людей (и намного проще ее!). Тем не менее общую модель, где люди что-то друг о друге заявляют, вполне можно встроить в некую более надежную модель идентификации. При желании эти системы можно было бы дополнить за счет механизма «футархии», описанного выше: если кто-то утверждает, что другой – некий уникальный человек, а третий с этим не согласен и обе стороны готовы внести залог для разбирательства по этому вопросу, система может созвать судебную коллегию, которая вынесет окончательное решение.