Идея управляемых токенами реестров (TCR) зародилась в блокчейн-сообществе не менее года назад. По крайней мере, эта статья была опубликована автором еще в сентябре 2017 года. А недавно я был на конференции DappCon 2018 в Берлине и увидел большой интерес к этой теме, а также несколько ранних набросков на основе TCR. Поэтому предполагаю, что пик интереса еще впереди.
Мне TCR-контракты представляются крайне интересными, поскольку они являют собой пример наиболее простой замкнутой системы, управляемой децентрализованно и на основе экономических стимулов. Если немного пофантазировать, становится понятно, что на основе этой идеи можно децентрализовать очень многое, возможно даже всё в нашей социально-экономической жизни. И это уже не просто галлюцинации сумасшедших криптанов, а вполне неплохо сформулированный протокол. Более подробно читайте под катом.
Управляемые токенами реестры (token-curated registries, TCR) — это криптосистемы, которые всё шире применяются для решения различных задач. В этой статье мы представим более формальный взгляд на управляемые токенами реестры, но без математики.
В заголовке проставлена версия 1.0, потому что TCR и система стимулирования, описанные ниже, наверняка будут улучшены. Надеемся, этот документ станет отправной точкой для обсуждений, как улучшить TCR. Многие подобные реестры, развёртываемые сегодня, схожи, но применяют разные механики. Мы верим в «правильный» способ создания реестров, управляемых токенами, и в то, что возможно полностью переиспользовать устоявшуюся реализацию.
Применение реестров, управляемых токенами
Результат работы TCR — это список. У людей тяга к их составлению, и мы повсюду видим списки: покупок, «хороших» вузов, самых разыскиваемых преступников. Некоторые списки можно классифицировать как белые или чёрные. В любом случае содержимое списков удовлетворяет каким-то критериям (товары, которые нужно купить; вузы, чьи выпускники расплачиваются с долгами за учёбу в среднем за 10 лет; люди, за информацию о которых ФБР назначило награду более 100 000 долларов).
Полезные списки кто-то формирует. Список покупок обычно создаёт один человек. А за список лучших вузов, вероятно, отвечает комиссия. Если такой список сможет пополнять кто угодно, то скоро мы получим бесполезный перечень всех вузов, ведь любой ректор захочет, чтобы его заведение там упоминалось.
В TCR для назначения прав управления (curation rights) используются внутренние токены пропорционально их условному весу у субъектов — держателей токенов. Если есть компании, которые хотят попасть в список, то возникнет и рынок, где материальные интересы рациональных держателей токенов приведут к созданию качественного списка. TCR — это списки с децентрализованным управлением, они финансово стимулируют держателей токенов взвешенно формировать содержимое списков.
Точки зрения пользователей
Выделим три типа пользователей TCR: потребители, кандидаты, держатели токенов. У каждого типа — свои интересы, мотивы и способы взаимодействия с реестром. Потребители ищут качественные списки. Кандидаты стремятся туда попасть. Держатели токенов хотят повысить стоимость своих токенов.
Потребителям нужна качественная информация. Если школьник выбирает вуз на основании списка заведений, чьи выпускники расплачиваются с долгами за учёбу в среднем за 10 лет, то будет очень разочарован, обнаружив, что вуз ошибочно отнесли к такой категории.
Кандидаты желают добиться внимания потребителей. Вуз — участник списка (listee), допущенный в реестр, вероятно, получит больше заявок на поступление, чем если бы он не входил в список. Благодаря этому он сможет даже повысить оплату за обучение.
Держатели токенов хотят сохранить высокий спрос на токены, поскольку это увеличивает их стоимость. В противном случае держатели не будут заинтересованы в качественном содержимом управляемых ими списков. В примере с вузами держатели не должны быть ни потребителями реестра, ни кандидатами на включение в него. Чтобы спрос на токены не падал, держателям нужно сохранять высокое качество списков. Если реестр качественный, кандидаты захотят попасть в него, а потребители — ознакомиться с ним.
Держатели токенов, мастерски управляя списком, могут получить прибыль. Её размер зависит от качества управления и роста интереса потребителей и кандидатов.
Система стимулирования в TCR
Держатели токенов — это двигатель криптоэкономической игры, которая регулирует TCR. Чтобы реестр работал, кандидаты должны внести депозиты во внутренних токенах реестра, и тогда их заявки на включение в список рассмотрят. Если кандидат «хороший», он вносится в список, его депозит сохраняется. Решив покинуть список, участник может отозвать свой депозит. Если кандидат «плохой», держатели оспаривают его заявку, и после её отклонения депозит будет конфискован и поделён в качестве награды среди держателей токенов, которые участвовали в оспаривании. Кандидаты не будут подавать заявки в реестр, если не соответствуют его требованиям: это приведёт к финансовым потерям. Вуз, который не предлагает ничего путного и требует 50 000 долларов в год, вряд ли примут в реестр вузов, чьи выпускники расплачиваются с долгами за обучение в среднем за 10 лет, поэтому не стоит и пытаться. Держатели токенов могут увеличить свои накопления благодаря такому кандидату. Скорее всего, его заявку оспорят, но есть ненулевая вероятность, что заявку примут.
У держателей токенов есть тактический стимул отклонить каждого кандидата, чтобы увеличить свои накопления. Но это глупо, поскольку стратегическая задача — увеличить стоимость накоплений. Пустой список не нужен потребителям, поэтому кандидаты не будут стремиться в него. От кандидатов зависит фундаментальный спрос на внутренний токен реестра. Действуя тактически, а не стратегически, держатели токенов понесут серьёзные финансовые потери. В их интересах — достичь стратегической цели и создать качественный список.
Параметры TCR
Раздел можно использовать как справочник, поскольку в дальнейшем мы не раз упомянем перечисленные здесь параметры. Мы будем называть их снимками (snapshot) параметров и текущими обязательными (current canonical) параметрами. Снимок фиксирует значения текущих обязательных параметров в некий момент времени, они «застывают» в снимке и не меняются, даже если текущие обязательные параметры изменились. Если не указано иное, упомянутый в тексте параметр — это именно текущий обязательный параметр.
MIN_DEPOSIT
Столько токенов кандидат должен внести в качестве депозита за принятие в список и нахождение в нём.
APPLY_STAGE_LEN
За это время включение кандидата в список можно оспорить. Измеряется в блоках или эпохах. Если оспаривания не было, кандидат попадает в список.
COMMIT_PERIOD_LEN
За это время держатели токенов могут проголосовать за оспаривание. Измеряется в блоках или эпохах.
REVEAL_PERIOD_LEN
За это время держатели токенов могут огласить голоса за конкретное оспаривание. Измеряется в блоках или эпохах.
DISPENSATION_PCT
Доля конфискованного депозита, которая присуждается победителю в качестве особого разрешения (special dispensation), компенсирующего финансовые риски.
VOTE_QUORUM
Обнародованная доля общего количества токенов, необходимая для того, чтобы оспоренный кандидат попал в список / оспоренный участник остался в списке. VOTE_QUORUM
не подсчитывает токены, которые не голосовали, а необнародованные токены считаются неголосовавшими. К примеру, VOTE_QUORUM 50
означает, что все оспаривания решаются простым большинством.
Позиции (listings)
Позиция — элемент из единого набора перечисленных в списке элементов, которые содержатся в TCR. В примере с вузами позиция может быть простым строковым значением, идентифицирующим вуз по его хорошо известному названию, например Foo University. Выбирая форму позиции, помните, что она будет аутентифицировать реальный объект. В случае с вузами достаточно взять их названия, поскольку подделка физической и социальной организации перечисленных в списке вузов ради обмана потребителей потребует слишком серьёзных усилий (фальшивые кампусы, персонал, удостоверения и т. д.).
Средства аутентификации, насколько это возможно, оставляйте на усмотрение пользователей. Скажем, пользователи реестра доменных имён могут аутентифицировать свои подключения к доменам с помощью сертификата HTTPS, сети доверия (web-of-trust) или хешированных секретных значений, которые хранятся в метаданных списка и предоставляются в качестве подтверждения от оракула. Важно, чтобы участники списка и потребители де-факто приняли как минимум одно средство аутентификации, поддерживаемое обеими сторонами, в противном случае реестр будет бесполезен.
Подача заявки
Когда кандидат на включение в список TCR подаёт заявку, он должен внести депозит во внутренних токенах реестра. Минимальный размер — MIN_DEPOSIT
, столько токенов будет выставлено в качестве депозита при оспаривании заявки. Заявка будет рассмотрена (resolved) спустя APPLY_STAGE_LEN
. Если за это время заявку никто не оспорил, кандидат становится участником списка. В противном случае статус кандидата определяется по результатам оспаривания.
Заявка содержит снимок текущих обязательных параметров, и все действия с заявкой ссылаются на её зафиксированные в снимке параметры.
Оспаривание заявки
Оспаривание инициируется применительно либо к кандидатам, которые ожидают рассмотрения заявки, либо к участникам списка. Допускается лишь одно активное оспаривание по отношению к каждому кандидату или участнику. Инициатор оспаривания выставляет депозит в размере MIN_DEPOSIT
против позиции списка или заявки, чей депозит превышает MIN_DEPOSIT
либо равняется ему. (Об оспаривании позиций с депозитом меньше MIN_DEPOSIT
мы поговорим в разделе «Краевая ситуация: touch-and-remove».)
Когда оспаривание инициировано, создаётся снимок текущих обязательных параметров реестра и начинается голосование (см. раздел «Голосование»), в котором может участвовать любой держатель токенов. После голосования конфискуется депозит либо кандидата, либо инициатора оспаривания. Победившая сторона получает часть конфискованного депозита (DISPENSATION_PCT
) в качестве компенсации за финансовый риск. Оставшаяся часть депозита распределяется между участниками голосовавшего большинства в соответствии с весом их токенов. Участники голосовавшего меньшинства ничего не теряют и не получают.
Примечание. DISPENSATION_PCT
, по существу, даёт инициатору оспаривания уверенность в возможности выиграть голосование. В результате выигрыша фактически произойдёт публикация (issue) оспаривания. Если особое разрешение (special dispensation) определено, например, на уровне 50 %, то оспаривающий должен быть более чем на 66 % уверен в возможности победы. Почему 66 %? Потому что существует 33%-я вероятность полностью потерять депозит и 66%-я вероятность заработать половину депозита: (0,33)(–1) + (0,66)(0,5) = 0.
Если оспорена заявка, то она удаляется, а кандидат может стать или не стать участником списка. Если оспорена позиция списка, то позиция может быть удалена или не удалена.
Краевая ситуация: touch-and-remove
Если кандидат внёс депозит, стал участником, а позже значение текущего обязательного MIN_DEPOSIT
увеличилось, то депозит участника окажется меньше MIN_DEPOSIT
. Если оспорена такая позиция, она немедленно убирается из списка, а депозиты оспаривающего и участника списка возвращаются владельцам. Это и есть touch-and-remove.
Почему и зачем нужен такой подход? Примем, что размеры депозитов при оспариваниях должны быть одинаковыми, чтобы на действия голосующих не влияло желание поделить самый большой депозит (это даст им наибольшую прибыль). Тогда почему бы нам не приравнять размеры депозитов при оспариваниях к размерам депозитов самих оспариваемых позиций? Возможна ситуация, когда депозит из-за колебаний рыночной цены токена стал дешевле газа и альтернативных издержек (opportunity cost). Участники понесут эти издержки, если инициируют оспаривание или поучаствуют в голосовании. Подход touch-and-remove снижает возможность отравить реестр записями, чьи депозиты слишком малы для оспаривания: активные держатели токенов просто удалят такие позиции с минимальными затратами.
Чтобы защититься от touch-and-remove после повышения MIN_DEPOSIT
, участники списка могут сколько угодно увеличивать свои депозиты, причём любой объём сверх обязательного MIN_DEPOSIT
можно в любое время отозвать. При оспаривании размер текущего MIN_DEPOSIT
фиксируется в снимке, и только это количество разрешается поставить на кон.
Голосование
Голосование в TCR должно быть token-weighted и проходить по схеме commit-reveal. Иных особых требований к голосованию нет, главное, чтобы механизм был эффективен с точки зрения ликвидности токенов.
Характеристика token-weighted (условный вес токенов) важна для держателей, которые вложили больше всего токенов, а значит, их голос при управлении реестром наиболее весомый. Такие держатели будут самыми осмотрительными. А благодаря схеме commit-reveal голосование стимулирует участников исключительно к наибольшей продуктивности. Ликвидность токенов нужно максимизировать, чтобы поощрять участников голосовать.
PLCR-голосование (Partial Lock Commit Reveal Voting) — самый эффективный механизм голосования на основе токенов для TCR.
Параметризация
Параметры реестра должны адаптироваться к динамике изменения рыночной цены внутреннего токена реестра. Например, цена падает, появляются сотни кандидатов на включение в реестр, и держатели токенов не могут эффективно обработать все заявки. Тогда нужно увеличить MIN_DEPOSIT
.
Пока нет однозначного ответа, как лучше всего выполнять параметризацию, т. е., по сути, управлять реестром. К примеру, в AdChain принципы параметризации те же, что и принципы обработки заявок на включение в реестр. Здесь используется другой набор тех же параметров, поэтому для предложения о репараметризации MIN_DEPOSIT
может быть куда более высоким, чем если бы речь шла о включении новой позиции. Предложения о репараметризации тоже оспариваются с помощью токен-депозитов, их размещают и предлагающий, и оспаривающий. Держатели токенов могут голосовать за репараметризацию параметров реестра или параметров самого репараметризатора.
Интересные свойства TCR
Внутренние токены реестров — необходимый элемент самодостаточных систем для публичного использования. Сами TCR — главные враги капитализма, они выполняют полезную функцию при минимально возможных маржинальных издержках.
Управляемые токенами реестры удовлетворяют принципам Mike’s Cryptosystems Manifesto
Для TCR нужны внутренние токены. Использование чего-либо другого вместо них нарушит нормальную работу системы. Держатели токенов должны понимать плюсы и минусы своей хорошей или плохой работы, тогда у них появится мотивация для основной задачи — управления реестром. К примеру, на цену биткоина не повлияет снижение спроса на него в списках реестров. Значит, держатели захотят собрать с кандидатов как можно больше биткоинов с помощью ложных оспариваний и сговоров на голосованиях, отодвинув интересы управления реестром на второй план. А если единственное назначение токена — использование при подаче заявок в реестр, его цена будет меняться в зависимости от спроса на участие в списках. На спрос влияет то, насколько качественно держатели управляют списками. Принцип необходимости токена (token-necessity) в TCR соблюдён.
Система самодостаточна, если она нормально функционирует без участия своих создателей. В TCR ни у одной записи нет особых привилегий. Все токены равноценны, и лишь вес токена определяет вес привилегий его держателя в реестре. Создатель реестра может исчезнуть, а замкнутая система стимулирования от этого никак не пострадает. TCR — настоящие децентрализованные системы. Принцип самодостаточности соблюдён.
Система публично используема (public utility), если она не требует разрешений, свободна от арендной платы и приносит пользу. TCR не требуют разрешений, полностью децентрализованы, а привилегии в них определяются лишь условным весом токенов. Такие реестры не требуют арендной платы, поскольку никогда не будут поставлены на кон ради стимулирования кого-то выполнить задачу или удержания от атаки. TCR генерируют полезный результат в виде списков. Принцип публичного использования соблюдён.
Главные враги капитализма
Системы, создающие полезный результат при минимальных маржинальных издержках, — это и есть главные враги капитализма. Результат работы TCR бесплатен: списки хранятся в блокчейне, любая сторона может их считать. Вместо того чтобы отдавать деньги вендору за составление списка, потребители TCR бесплатно получают продукт всех вендоров. Те соперничают друг с другом в создании лучшего списка, какой только может появиться на свободном рынке.
Желающие улучшить качество TCR могут купить токены по рыночной цене, качественно управлять реестром, подогреть интерес потребителей, увеличить спрос кандидатов на токен — а затем продать свои токены, заработав на тех, кто хочет улучшить реестр. Держатель токена, который хорошо умеет выдвигать оспаривания и голосовать, обеспечит себе постоянный доход, продавая полученные от конфискованных депозитов токены и не теряя основной капитал.
Таким образом, на эффективном рынке внутренние токены реестров со временем оптимально распределятся среди субъектов, которые используют их наиболее продуктивно. В TCR прибыльность и продуктивность тесно взаимосвязаны.
Атаки и защита от них
TCR теоретически возможно атаковать. Кроме того, наверняка ещё не все разновидности атак сформулированы и зафиксированы. Ниже мы обсудим известные атаки и защиту от них.
Простой троллинг
Тролль пытается добавить в «хороший» реестр «плохие» позиции, которые не удовлетворяют критериям реестра. Если за реестром хорошо следят, такие атаки дороги и неэффективны: тролль теряет депозит, когда рациональный держатель токенов успешно оспаривает заявку. Чтобы преодолеть рациональность голосующих, простая троллинг-атака должна превратиться в атаку сумасшедшего.
Атака сумасшедшего
У обеспеченного ресурсами злоумышленника могут быть рациональные причины потратить много средств на уничтожение реестра. Если полезный список при почти нулевых маржинальных затратах разрушает бизнесы, то пострадавшим компаниям это наверняка не понравится. Злоумышленник скупит по рыночной цене большинство защищённых от оспаривания токенов с правом голоса и заполнит реестр низкокачественными позициями. Реестр будет испорчен, стоимость токенов обрушится.
К счастью, управляемые токенами реестры имеют свойства защиты от подобных атак, довольно похожие на те, что характерны для Casper. С точки зрения финансов при атаке 51 % оружие злоумышленников можно уничтожить с помощью хардфорка. Как говорит Виталик, «задача в том, чтобы сделать атаку 51 % крайне дорогой, чтобы даже большинство совместно работающих валидаторов не могли откатить финализированные блоки без крайне тяжёлых финансовых потерь. Настолько тяжёлых, что даже успешная атака наверняка приведёт к увеличению цены на базовую валюту, поскольку на сокращение общего предложения монет рынок будет реагировать сильнее, чем на экстренный хардфорк для ослабления атаки». В TCR валидаторы — это держатели токенов.
Вероятно, на практике в любое время лишь меньшая часть токенов будет активно участвовать в голосовании (см. раздел «Bootstrapping»), поэтому атаки сумасшедшего окажутся не столь дороги, как подразумевает ярлык «атака на большинство валидаторов». Уменьшение пассивности держателей токенов — важный открытый вопрос в TCR.
Отравление реестра (registry poisoning)
Отравлением реестра занимается не держатель токена, а участник списка. В реестр вносится позиция, а после её качество ухудшается. Например, вуз, включённый в список высококачественных учебных заведений, благодаря этому повышает стоимость обучения, но его выпускники позднее обнаруживают, что не могут расплатиться с долгами за обучение через 10 лет.
Рациональные держатели токенов должны выявлять такое поведение и оспаривать позиции, отравляющие реестр. Малоизученный аспект: отравление может быть относительно дешёвым, если позиция списка только ждёт, пока MIN_DEPOSIT увеличится во время действия списка, а если неправомерные действия обнаружат — то можно покинуть список по процедуре touch-and-remove. В этом случае позиция списка не теряет депозита, однако сам субъект теряет репутацию и больше не вернётся в список.
Бросание монеты и мемизация голосования
Голосующих не наказывают за плохие решения, поэтому держатели токенов могут обнаружить, что проще «бросать монету», чем тратить время на взвешенные оценки. Защититься от атаки можно при долгосрочной заинтересованности голосующих в максимизации спроса на токен. Но неизвестно, в какой мере эти соображения повлияют на возникновение критической массы голосующих, нивелирующих безответственное поведение других.
Бросание монеты — атака не слишком опасная: предположив равномерное распределение голосов в результате бросания монеты, немногочисленные активисты — держатели токенов при любом оспаривании склонят чашу весов в пользу рациональности.
Мемизация голосования (vote memeing) происходит, когда участники голосуют лишь ради того, чтобы оказаться в большинстве. С точки зрения мотивации аналогично бросанию монеты, но результат хуже: меньшинство активистов — держателей токенов не склонит чашу весов в пользу рациональности.
Бросание монеты и мемизация голосования — комплексные атаки, потому что они нацелены на пределы рациональности держателей токенов (см. «Пределы рациональности»).
Открытые вопросы
Пределы рациональности
Бывают стратегии, рациональные «здесь и сейчас», но вредные в долгосрочной перспективе. Пассивное держание токенов само по себе нежелательно, бросание монеты и мемизация голосования рациональны, но со временем ухудшают качество реестра. Каких оптимальных стратегий будут придерживаться участники? Может ли возникнуть ситуация, когда кто-то действует тактически, а кто-то стратегически, и в результате качество списков окажется средненьким, ниже, чем если бы список управлялся централизованно?
Bootstrapping
TCR свойственна дилемма первичности курицы и яйца. Потребителей не привлекает пустой список, а кандидаты не хотят участвовать в списке, который неинтересен потребителям. В целом реестру трудно будет обрести интерес любой из групп участников, чтобы достичь устойчивого самодостаточного состояния. Есть разные мнения об оптимальном подходе к созданию управляемого токеном реестра, и пока ни один из подходов не превратился в чёткий паттерн, которому нужно следовать.
Один подход: группа кандидатов в сотрудничестве с «устаревшими» руководящими органами (отраслевыми лобби, консультативными советами) формирует начальный набор участников. Мотивация: использовать проверенных отраслевых кураторов для создания убедительного базового набора позиций в реестре.
Другой подход: первоначально токены реестра распределяются среди потенциальных потребителей и кандидатов. Это даёт сторонам (в противном случае незаинтересованным) осязаемую мотивацию для самостоятельного взращивания системы.
Минимальный размер экономики
Каков минимальный размер экономики, необходимой для децентрализованного управления списком? Выгодно ли экономически децентрализованно управлять списком покупок? Будет ли рационально для производителя фасованных товаров и продуктов подавать заявки на включение в реестр позиций, которые необходимо приобретать в продуктовом магазине? Смогут ли голосующие управлять списком, который полезен для покупателей? Откуда голосующим узнать, достаточно ли покупателю сыра? Какой минимальный интерес потребителей нужен для децентрализованного управления списком?
Параметризация
Параметризация реестров на сегодняшний день не проработана хорошо. Возможно, тот же параметризатор AdChain можно довести до постоянной нестабильности. К примеру, задав нулевое значение для MIN_DEPOSIT параметризатора. Тогда тролли без особых усилий неограниченное время станут сохранять нулевое значение MIN_DEPOSIT, поскольку после успешной первоначальной атаки можно создать множество предложений, которые позднее будут обработаны и активированы в любое время. Защита от подобной атаки на параметризатор AdChain зависит от осмотрительности держателей токенов. Реестры оправятся от последствий недосмотра держателей и отравлений средствами оспаривания, но параметризаторы могут быть безвозвратно повреждены даже после одной успешной атаки.
P.S. К сожалению, в статье автор оставил в стороне тему запуска TCR-системы, то есть вопрос первичного распределения токена и наполнения реестра первичными данными. Этот вопрос мы сейчас прорабатываем и планируем поставить ряд экспериментов. Если не хотите пропустить — подписывайтесь на наш блог и другие соцсети.
Автор: Yuvasee