Голосование за Делегатов - Требования

Описание проблемы

Необходимо обеспечить справедливое голосование Владельцев земли за Кандидатов в делегаты в том Фонде, где они получили право стать Кандидатами в делегаты.

Цели контракта

  • Обеспечить механизм становления Кандидата Делегатом;
  • Дать возможность Владелец Репутации влиять на выбор Делегата своей Репутацией;
  • В итоге выбирать список из 7 Делегатов которые получают наибольшие суммы Репутации;
  • обеспечить возможность каждому Владелец Репутации проголосовать частью своей Репутацией за нескольких Делегатов;

Основные требования:

  • Обеспечить корректную работу в условиях наличия нескольких Cмежных фондов: на каждый Фонд нужно свое голосование.
  • Если список Кандидатов меньше 7, то считать голосование неудавшимся и не назначать Делегатов.

Общие положения

Выборы Делегатов происходят Раундами выборов по 27 дней.

Введем термин Голос - целое число, измеряемое в пунктах, которое соответствует Репутации Владелец Репутации, которую тот назначил одному или нескольким Кандидатам в делегаты.

Сценарий контракта

Сценарий 1: Выборы Кандидатов в делегаты

  1. В течении 27 дней Владелец Репутации голосуют за Кандидатов в делегаты. Маппинг адреса Владелец Репутации к адресу Кандидата в делегаты:
Номер Раунда Адрес Владелец Репутации Адрес кандидата
0 0x477...b65 0x466...n12
0 0x477...h23 0x466...n12
0 0x477...89j 0x477...lol

Маппинг адреса Кандидата в делегаты к сумме всех голосов Репутацией за Кандидата в делегаты.

Номер Раунда Адрес кандидата Сумма голосов Репутацией
0 0x466...n12 1000
0 0x488...123 500
0 0x477...lol 700
  1. Владельцы Репутации могут проголосовать частью своей Репутации за одного Кандидата в делегаты и частью Репутации за другого Кандидата в делегаты, в таком случае сумма всех Репутаций голосов Владельцев Репутации не должна превышать его суммарную Репутацию на текущий момент. Например, у Пользователя 300 пунктов Репутации. Соответственно он может назначить не более 300 пунктов Репутации одному или нескольким Кандидатам в делегаты.

Кандидатам в делегаты, за которых проголосовал Владелец земли записываются в массив. Нельзя проголосовать больше чем за 7-х Кандидатов в делегаты.

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

  1. На 28 день - в течении дня Кандидаты в делегаты должны зафиксировать свои результаты отправив транзанкции, голосовать в этот день уже нельзя. Результат выполнения функции фиксирования своих результатов от нескольких Делегатов на основе маппинга адресов Кандидатов в делагаты к сумме Голосов голосующих:
Номер Раунда Место в топе кандидатов Адрес кандидата
0 1 0x466...n12
0 2 0x477...lol
0 3 0x488...123
0 4 0x499...345
0 5 0x400...678
0 6 0x411...910
0 7 0x422...160
  1. После 28 дней, по окончании раунда голосования - любой может выполнить транзанкцию finishVoting, чтобы результаты голосования сохранились как новый список делегатов. Пример сохранения результата голосования в виде массива: [0x466...n12, 0x477...lol, 0x488...123, 0x499...345, 0x400...678, 0x411...910, 0x422...160]
  2. В это же время, после окончания раунда в 28 дней - начинается новый раунд и идет независимо от того - успели зафиксировать результаты прошлого раунда или нет. См. пример в п.1

Особенности реализации на Solidity

Особенности реализации на TypeScript

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

Неоднозначные вопросы и ответы на них

Q: Период контракта Голосования тесно соприкасается с периодом ManagmentFee, в нем тоже за 28 дней выдается оплата делегатам, но в первый день 28-дневного периода фиксируется список кандидатов, чтобы в конце периода выплатить делегатам их заработную плату. Нужно ли периоды этих двух контрактов явно синхронизировать, чтобы эти 28-ми дневные периоды проходили одновременно?

A: Да

Q: Есть потребность в голосовании за делегатов частью своей репутации, чтобы свою репутацию можно было распределить среди нескольких кандидатов. Возможно ли это на Solidity?

A: Проблема решена.

Q: Если пользователь 1 после голосования своей репутацией - передал пользователю 2 свой участок с репутацией, то пользователь 2 может той же репутацией проголосовать за того-же кандидата, но значение голосов у него увеличится. Примерно таже ситуация и с арендой участков.

A: Проблема решена.

Q: Возможно ли реагирование на каждое изменение репутации пользователя(включая SmartSpace), в условиях множества фондов, и вызов функции перерасчета голосов от голосовавшего в отдельно взятом контракте определенного фонда?

A: Проблема решена.

results matching ""

    No results matching ""