Отличительной особенностью общественных благ является то, что выгоду от пользования ими получает значительное количество людей, а ограничение их пользования невозможно или нецелесообразно. В качестве примеров можно привести общедоступные дороги, обеспечение безопасности, научные исследования и программное обеспечение с открытым исходным кодом. Производство таких благ, как правило, не выгодно отдельным людям, что нередко приводит к недостаточному их производству (эффект безбилетника). В некоторых случаях государства и другие организации (такие как благотворительные фонды) берут их производство на себя, но отсутствие полной информации о предпочтениях потребителей общественных благ и другие проблемы, связанные с централизованным принятием решений, приводят к неэффективному расходованию средств. В таких случаях более целесообразным было бы создание системы, где у потребителей общественных благ была бы возможность прямо голосовать за те или иные варианты их предоставления. Однако при голосовании по принципу «один человек — один голос» голоса всех участников равны и они не могут показать, насколько для них важен тот или иной вариант, что также может приводить к неоптимальному производству общественных благ.
Квадратичное финансирование (или CLR-финансирование) было предложено в 2018 году в работе Liberal Radicalism: A Flexible Design For Philanthropic Matching Funds как возможное решение перечисленных проблем финансирования общественных благ. Этот подход сочетает в себе преимущества рыночных механизмов и демократического управления, но при этом в меньшей степени подвержен их недостаткам. В его основе лежит идея встречного финансирования (софинансирования), при котором люди делают прямые пожертвования различным проектам, которые они считают общественно полезными, а некий крупный спонсор (например, благотворительный фонд) берёт на себя обязательство добавить пропорциональную сумму к каждому пожертвованию (например, удвоить его). Это создаёт дополнительный стимул для участия и позволяет спонсору эффективно распределить денежные средства, не имея экспертных знаний в той области, которая финансируется.
Особенность квадратичного финансирования заключается в том, что расчёт добавляемых сумм производится аналогично подсчёту результатов при квадратичном голосовании. Этот вид голосования подразумевает, что участники могут покупать голоса и распределять их на различные варианты решений, причём стоимость покупки возрастает пропорционально квадрату количества покупаемых голосов:
Это позволяет участникам выразить силу своих предпочтений, что невозможно при голосовании по принципу «один человек — один голос». И в то же время, такой подход не наделяет чрезмерным влиянием участников, располагающих значительными ресурсами, как это происходит при голосовании по принципу пропорциональности (который часто применяется при голосовании акционеров).
При квадратичном финансировании каждое индивидуальное пожертвование участника какому-либо проекту считается покупкой голосов за распределение средств в пользу этого проекта из общего фонда встречного финансирования. Предположим, что участник сделал пожертвование проекту в размере . Тогда вес его голоса будет равен квадратному корню из размера его индивидуального вклада:
Сумма встречного финансирования , которую получит проект , затем подсчитывается исходя из суммы голосов за этот проект среди всех участников:
Если в результате подсчёта голосов общий объём финансирования превышает фиксированный бюджет , то сумма встречного финансирования для каждого проекта корректируется в соответствии с его долей среди всех проектов:
Авторы работы показывают, что такой механизм обеспечивает оптимальное финансирование общественных благ. Даже небольшие пожертвования, если их совершает большое количество людей, приводят к значительной сумме встречного финансирования (такой результат характерен для общественных благ), в то время как крупные вклады от небольшого количества доноров приводят к получению меньшей суммы встречного финансирования (такой результат указывает на то, что благо, скорее всего, является частным).
Для ознакомления с работой механизма можно воспользоваться калькулятором: https://qf.gitcoin.co/.
Gitcoin
Впервые механизм квадратичного финансирования был испытан в начале 2019 года в рамках программы Gitcoin Grants на платформе Gitcoin, которая специализируется на поддержке проектов с открытым исходным кодом. В первом раунде финансирования 132 донора сделали пожертвования в криптовалюте на развитие 26 инфраструктурных проектов экосистемы Ethereum. Общая сумма пожертвований составила 13242 доллара США, в дополнение к которым из фонда встречного финансирования, созданного несколькими крупными спонсорами, было выделено 25000 долларов. В дальнейшем участие в программе было открыто для всех желающих, а критерии проектов, попадающих под определение общественных благ экосистемы Ethereum, были расширены, появилось разделение по категориям, таким как «технологии» и «медиа». По состоянию на июль 2020 года было проведено уже 6 раундов, в ходе которых более 700 проектов получили в общей сумме более 2 млн долларов финансирования, а медианное значение суммы пожертвования составило 4.7 долларов.
Программа Gitcoin Grants показала, что механизм квадратичного финансирования работает в соответствии с теоретическими построениями и обеспечивает финансирование общественных благ согласно предпочтениям участников сообщества. Однако этот механизм, как и многие системы электронного голосования, уязвим для некоторых атак, с которыми разработчикам платформы пришлось столкнуться в ходе экспериментов:
Атака Сивиллы. Для осуществления этой атаки злоумышленник может зарегистрировать множество учётных записей и, голосуя с каждой из них, перераспределить средства из фонда встречного финансирования в свою пользу.
Подкуп. Для подкупа пользователей необходима возможность контроля за соблюдением ими договорённости, что становится возможным благодаря открытости всех транзакций в публичном блокчейне Ethereum. Так же как и атака Сивиллы, подкуп пользователей может быть использован для перераспределения средств из общего фонда в пользу злоумышленника, при условии, что выгода от перераспределения превышает расходы на подкуп.
Для предотвращения атаки Сивиллы при регистрации пользователя требуется учётная запись GitHub, также рассматривалось введение верификации номера телефона с помощью SMS. Попытки подкупа отслеживались по объявлениям о покупке голосов в социальных сетях и по транзакциям в блокчейне (выявлялись группы доноров, получавших оплату из одного источника). Однако эти меры не гарантируют полной защиты, и при наличии достаточных экономических стимулов злоумышленники могут их обойти, поэтому разработчиками ведётся поиск других возможных решений.
Помимо этого, встала проблема курирования списка проектов, получающих финансирование. В некоторых случаях заявки на финансирование поступали от проектов, не являющихся общественными благами или не относящихся к допустимым категориям проектов. Также были зафиксированы случаи, когда мошенники размещали заявки от имени других проектов. Метод ручной проверки получателей финансирования хорошо работал при небольшом количестве заявок, но эффективность его падает с ростом популярности программы Gitcoin Grants. Ещё одной проблемой платформы Gitcoin является централизация, из которой следует необходимость доверия к её администраторам в части корректности проводимого ими подсчёта голосов.
clr.fund
Задачей проекта clr.fund, находящегося на стадии разработки, является создание защищённого и масштабируемого фонда квадратичного финансирования c учётом опыта программы Gitcoin Grants. Фонд будет работать в условиях минимального доверия к его администраторам и управляться децентрализованно. Для этого учёт пожертвований, расчёт сумм встречного финансирования и распределение средств должны выполняться с помощью смарт-контрактов. Покупка голосов будет затруднена благодаря использованию тайного голосования с возможностью подмены голоса, регистрация пользователей будет проводиться через систему социальной верификации, а реестр получателей финансирования будет управляться сообществом и иметь встроенный механизм разрешения споров.
Тайное голосование
Тайна голоса при голосовании с использованием публичного блокчейна может быть сохранена с помощью протоколов нулевого разглашения, позволяющим проверять корректность математических операций над зашифрованными данными без раскрытия этих данных. В clr.fund размеры индивидуальных пожертвований будут скрыты и для расчёта сумм встречного финансирования будет применяться система zk-SNARK под названием MACI (Minimum Anti-Collusion Infrastructure, минимальная инфраструктура для противодействия сговору). Она позволяет проводить тайное квадратичное голосование и защищает голосующих от подкупа и принуждения при условии, что обработка голосов и подсчёт результатов выполняются доверенным лицом, называемым координатором. Система устроена так, что координатор может способствовать подкупу, поскольку он имеет возможность расшифровывать голоса, но при этом он не может исключать или подменять голоса, и не может подделывать результаты подсчёта голосов.
Процесс начинается с того, что пользователи генерируют пару EdDSA ключей и регистрируются в смарт-контракте MACI, записывая свой публичный ключ. Затем начинается голосование, в ходе которого пользователи могут записывать в смарт-контракт два вида зашифрованных сообщений: сообщения, содержащие голос, и сообщения, меняющие ключ. Сообщения подписываются ключом пользователя и затем шифруются c использованием другого ключа, генерируемого по протоколу ECDH из специального одноразового ключа пользователя и публичного ключа координатора таким образом, что расшифровать их может только координатор или сам пользователь. Если злоумышленник пытается подкупить пользователя, то он может попросить его отправить сообщение с голосом и предоставить содержимое сообщения вместе с одноразовым ключом, с помощью которых злоумышленник восстановит зашифрованное сообщение и убедится, проверив транзакции в блокчейне, что оно действительно было отправлено. Однако перед отправкой голоса пользователь может тайно отправить сообщение, меняющее EdDSA ключ, и затем подписать сообщение с голосом старым ключом, сделав его недействительным. Поскольку доказать отсутствие замены ключа пользователь не может, у злоумышленника не будет уверенности в том, что голос в его пользу будет засчитан, и это делает подкуп бессмысленным.
После завершения голосования координатор расшифровывает сообщения, подсчитывает голоса и верифицирует через смарт-контракт два доказательства с нулевым разглашением: доказательство корректной обработки сообщений и доказательство корректного подсчёта голосов. В конце процедуры публикуются результаты голосования, но отдельные голоса сохраняются в тайне.
Социальная верификация
Хотя надёжная идентификация пользователей в распределённых сетях пока остаётся нерешённой задачей, для предотвращения атаки Сивиллы достаточно усложнить эту атаку настолько, что стоимость её проведения станет выше потенциальной выгоды. Одним из таких решений является система децентрализованной идентификации BrightID, которая работает как социальная сеть, в которой пользователи могут создавать профили и устанавливать контакты друг с другом, выбирая уровень доверия. В этой системе каждому пользователю присваивается уникальный идентификатор, информация о связях которого с другими идентификаторами записывается в графовую базу данных, которая хранится у вычислительных узлов сети BrightID и синхронизируется между ними. Никакие персональные данные в базе не хранятся, а только передаются между пользователями при установлении контактов, поэтому система может использоваться анонимно. Вычислительные узлы сети BrightID анализируют социальный граф и с помощью различных техник пытаются отличить настоящих пользователей от поддельных. В стандартной конфигурации используется алгоритм SybilRank, который для каждого идентификатора рассчитывает рейтинг, показывающий вероятность того, что ему соответствует уникальный пользователь. Однако техники идентификации могут варьироваться, и при необходимости разработчики приложений могут комбинировать результаты, полученные от разных узлов, либо запустить свой собственный узел, который будет использовать алгоритмы, оптимальные для их пользовательской базы.
Разрешение споров
Участие в квадратичном финансировании будет открытым, но для этого от проектов потребуется регистрация в специальном реестре. Для добавления в него представители проекта должны будут внести залог, который они смогут забрать по истечении некоторого срока. В случае, если проект не удовлетворяет критериям реестра, любой пользователь сможет оспорить его добавление. Удаление проекта из реестра будет рассмотрено арбитрами в децентрализованной системе разрешения споров и в случае положительного решения сообщивший о нарушении пользователь получит в награду часть залога. Такой механизм сделает реестр общественных благ саморегулируемым.
Для разрешения споров будет использована система Kleros, построенная с использованием смарт-контрактов. В ней любой желающий может стать арбитром, а справедливость выносимых решений достигается с помощью экономических стимулов. При инициации спора система автоматически выбирает нескольких арбитров методом жеребьёвки. Арбитры рассматривают предоставленные доказательства и голосуют в пользу одной из сторон с использованием схемы обязательства: голоса подаются в зашифрованном виде и раскрываются только после окончания голосования. Арбитры, оказавшиеся в большинстве, получают награду, а оказавшиеся в меньшинстве — платят штраф. Благодаря непредсказуемости состава жюри и сокрытию голосов координация между арбитрами затруднена и они вынуждены предугадывать действия друг друга и выбирать тот вариант, который вероятнее всего выберут другие, иначе они рискуют потерять деньги. Предполагается, что таким вариантом (фокальной точкой) станет наиболее справедливое решение, поскольку в условиях недостатка информации рациональным выбором будет принятие решения исходя из общеизвестных представлений о справедливости. Если одна из сторон спора не согласна с вынесенным решением, то назначаются апелляции, в ходе которых последовательно выбирается всё большее и большее число арбитров.
Автономные экосистемы
Перечисленные технологические решения должны сделать механизм менее зависимым от администраторов и гарантировать его надёжное функционирование при небольших объёмах распределяемых средств. По мере развития технологий некоторые компоненты могут быть заменены для обеспечения лучшей защиты от покупки голосов и других атак, а конечной целью является создание полностью автономного фонда квадратичного финансирования.
В существующих реализациях, таких как Gitcoin Grants, производство общественных благ субсидируется крупными спонсорами, однако вместо этого средства могут поступать из других источников. В некоторых криптовалютах, например Zcash и Decred, используется инфляционное финансирование: часть награды за создание блоков направляется команде разработчиков для поддержания дальнейшей их работы по улучшению инфраструктуры. Если будет создан механизм квадратичного финансирования, работающий надёжно и не требующий централизованного администрирования, то часть награды за блоки может направляться в него для последующего распределения с участием сообщества. Таким образом сформируется автономная экосистема, где производство общественных благ будет полностью самоподдерживающимся процессом и не будет зависеть от воли спонсоров и управляющих организаций.