Skip to content

YuryYa/dash-efficient-voting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Распределение предложений и оценка эффективности принятых решений в Dash Governance System

Аннотация

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

Авторы

Содержание

Введение

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

Криптовалюта Dash[2][3], основанная на исходном коде Bitcoin[4], это одна из первых криптовалют, которая оплачивает свое развитие напрямую из Blockchain. Dash имеет систему децентрализованного самофинансирования и принятия решений — Dash Governance System[5]. Проблема текущей реализации Dash Governance System в том, что она не поощряет вдумчивое и эффективное голосование, что в свою очередь может приводить к неоптимальному принятию решений.

В данной работе будет рассмотрена модификация Dash Governance System, которая создает мотивацию для более эффективного голосования и снижает нагрузку на ее участников.

Криптовалюта Dash

В отличие от Bitcoin, где все создаваемые монеты распределяются между майнерами, сеть Dash вознаграждает тех, кто принимает важные для сети решения и тех, кто выполняет полезную работу — не только майнеров, но и, например, разработчиков или других специалистов[6]. В мае 2018 годовой бюджет самофинансирования Dash превышал $30 миллионов[7].

Masternode Network

Пользователи могут запустить так называемую мастерноду, сформировав возвратный залог 1000 DASH. Сеть мастернод позволяет проводить мгновенные (InstantSend) и анонимные (PrivateSend) транзакции, что отличает Dash от Bitcoin. В январе 2018 года стоимость одной мастерноды превышала $1 миллион[8]. Несмотря на то, что число мастернод не постоянно, как правило, в течении короткого отрезка времени оно меняется незначительно. В данной работе для простоты будем считать, что количество мастернод постоянно. Поскольку эмиссия DASH ограничена, то суммарное количество мастернод можно оценить сверху.

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

Эмиссия
Proof-of-Work Mining 45%
Masternode Network 45%
Governance Budget 10%

Proposals

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

  1. Название
  2. URL-адрес описания
  3. Дата начала финансирования
  4. Дата окончания финансирования
  5. Адрес для финансирования
  6. Сумма финансирования

В целях предотвращения спама, внесение каждого предложения стоит 5 DASH. После отправки предложения сеть мастернод голосует «Yes» или «No». До окончания голосования голос можно поменять или отменить (более точно — поменять на «воздержаться»). Предложение о финансировании или о принятии какого-либо решения считается одобренным сетью, если голосов «Yes» больше чем голосов «No» на 10% от общего числа мастернод.

Superblocks

Итоги голосования автоматически подводятся примерно раз в месяц (более точно — раз в 16616 блоков) во время формирования так называемого суперблока. Суперблок — это блок из Blockchain, который помимо вознаграждения для майнеров распределяет бюджет самофинансирования.

Вознаграждение мастернод

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

,

где Emission — это созданные за данный период времени монеты DASH.

Эффективность голосования

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

  • С развитием сети и ростом цены Dash, количество предложений для голосования может значительно увеличиваться. Это дополнительно снижает эффективность голосования, ведь доскональное изучение каждого предложения очень затратно по времени. Несмотря на то, что Dash Governance System защищена от спама, количество реальных предложений может быть слишком велико для должного рассмотрения каждого предложения со стороны всех владельцев мастернод[9].

Распределение предложений

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

Функция voters(p) определяет случайное подмножество мастернод, которые могут участвовать в голосовании предложения p.

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

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

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

Некоторые люди могут владеть значительным количеством мастернод[11]. Пропорциональная зависимость числа выбираемых мастернод также усложняет атаку, при которой владелец большого числа мастернод голосует за предложение, созданное им самим. Если владелец создаст предложение с небольшой суммой финансирования, то вероятность того, что подконтрольные ему мастерноды попадут в группу голосующих мастернод невелика. А если предложение будет запрашивать значительное финансирование, то голоса подконтрольных ему мастернод будут незначительными. Это требование также распределяет и снижает нагрузку на владельцев мастернод при голосовании, позволяя сконцентрироваться на небольшом количестве предложений.

Оценка эффективности голосования

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

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

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

Первое голосование

Введем фиксированный платеж 1 DASH за голосование мастерноды в каждом предложении. Сохраним при этом критерий одобрения предложения p с поправкой на группу выбранных для голосования мастернод voters(p).

В случае, если предложение не получило одобрения, проголосовавшие мастерноды получают 1 DASH обратно. Также необходимо сохранить возможность отмены голоса. Это позволит избежать мотивации изменения голоса с «Yes» на «No», в случае, если владелец мастерноды захочет вернуть обратно 1 DASH.

Второе голосование

Среди участвующих в первом голосовании мастернод для оценки результатов предложения проводится повторное голосование. В этом бесплатном и закрытом голосовании мастерноды оценивают результат предложения. Каждая мастернода ставит свою оценку в процентах: 100% — это наилучший возможный результат реализации предложения, а 0% — это наихудший возможный результат реализации предложения. При этом 50% — это граница, которая отделяет удовлетворительные результаты от неудовлетворительных. Если мастернода не голосует во втором голосовании, она не получает никакого вознаграждения и как следствие теряет 1 DASH.

Вознаграждение мастерноды

Пусть в первом голосовании всего проголосовало n мастернод, из них «Yes» проголосовало k, а «No» проголосовало m > 0. Таким образом суммарный залог данного предложения составляет k DASH + m DASH = n DASH. Предположим, что предложение было одобрено сетью и все n мастернод также приняли участие во втором голосовании. Для определения справедливого вознаграждения необходимо распределить n DASH обратно между k + m = n мастернодами в соответствии с изначальными голосами мастернод («Yes» или «No») и результатом второго голосования. Также, необходимо создать мотивацию голосовать непредвзято, чтобы голос во втором голосовании не был мотивирован голосом в первом голосовании.

ProposalScore

Для определения результата реализации предложения введем соответствующую оценку ProposalScore как среднее арифметическое всех голосов мастернод во втором голосовании.

MasternodeReward

Имея оценку результата реализации предложения (ProposalScore) и исходные голоса мастернод («Yes» или «No»), мы можем оценить эффективность первого голосования. Стоит отметить, что мы хотим оценить именно исходный голос мастерноды, поскольку во время первого голосования нужно проделать самую сложную работу по изучению предложения.

В случае наилучшего возможного результата реализации предложения, потребуем, чтобы мастерноды, проголосовавшие «Yes» получали поровну весь залог данного предложения.

В случае, если предложение получило оценку 50%, потребуем, чтобы исходный платеж 1 DASH был возвращен всем проголосовавшим мастернодам.

В случае наихудшего возможного результата реализации предложения, потребуем чтобы мастерноды, проголосовавшие «No» получали поровну весь залог данного предложения.

Расположим эти точки на плоскости с осями ProposalScore и MasternodeReward. Для получения промежуточных значений вознаграждения мастернод проголосовавших «Yes» или «No», соединим соответствующие точки прямыми.

Таким образом, чем больше ProposalScore, тем больше вознаграждение тех мастернод, которые изначально проголосовали «Yes». Аналогично, чем меньше ProposalScore, тем больше вознаграждение тех мастернод, которые изначально проголосовали «No». Более формально, размер вознаграждения мастерноды MasternodeReward вычисляется по одной из следующих формул:

Покажем, что такое распределение вознаграждения не изменяет эмиссию при ProposalScore ≤ 50%.

Аналогично при ProposalScore > 50%.

MasternodePenalty

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

MasternodePayout

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

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

Выгодно играть по правилам

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

  • В случае, если исходный голос оправдался, то он получит вознаграждение MasternodeReward. В его интересах минимизировать штраф MasternodePenalty — отправить объективную оценку реализации предложения. Более того, если он попадет в половину мастернод с наименьшими штрафами, то его штраф будет компенсирован еще большим вознаграждением.
  • В случае, если исходный голос не оправдался, то владелец мастерноды может попробовать сместить ProposalScore в нужную сторону за счет необъективной оценки MasternodeScore. Однако в таком случае он рискует не получить пусть и небольшое вознаграждение MasternodeReward из-за большого штрафа MasternodePenalty. Гораздо более выгодной стратегией будет минимизировать штраф чтобы попасть в половину мастернод с наименьшими штрафами, получив значительное вознаграждение в дополнение к MasternodeReward.

Примечания

Голосов «Yes» всегда больше

Второе голосование возможно только если предложение p было одобрено, а значит голосов «Yes» всегда больше, чем голосов «No».

Таким образом потенциальное вознаграждение мастернод, которые голосуют «No» всегда больше и может показаться, что голосовать «No» всегда выгоднее. На самом деле это не так, поскольку в соотношении голосов достигается рыночное равновесие — чем больше голосов «Yes», тем больше потенциальное вознаграждение при голосе «No», и наоборот. Другими словами, большее потенциальное вознаграждение компенсируется большими рисками.

Несмотря на то, что случай при котором голосов «No» нет вообще маловероятен, он, безусловно, возможен. В таком случае зафиксируем MasternodeReward = 1. Несмотря на отсутствие голосов «No» проводить второе голосование имеет смысл для оценки результата реализации предложения.

Старт второго голосования

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

Закрытое голосование

Реализовать закрытое голосование в открытом Blockchain можно за счет хеширования голоса с секретной строкой.

,

где X11() — это хеш-функция, используемая алгоритмом Proof-of-Work в Dash.

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

Заключение

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages