Голосование ноды Tradisys ЗА/ПРОТИВ доп. эмиссии

В связи с небывалым (и неслучайно) интересом к вопросу о включении механизма эмиссии, о котором можно почитать тут и тут, а послушать тут, хочу заявить о следующем:

  1. Мы дождёмся обновлённого пропоузала от Waves Team, в котором они предложат скорректированную модель по эмиссии.
  2. После изучения нового предложения мы проведём ещё один раунд обсуждения с сообществом как в целом, так и ноды, относительно предложения.
  3. Вне зависимости от того, что предложат в итоге Waves Team на голосование, нода Tradisys проголосует за/против только при согласии большинства лизеров.

В прошлом у нас уже была практика голосования ноды. До и с тех пор мы были и остаёмся единственной нодой, которая практиковала подобные истории. Что ж, пора снова провести голосование :slight_smile:

С момента прошлого голосования платформа обросла возможностями, так что мы устроим всё немного круче и гораздо проще/интереснее, чем в прошлый раз.

  1. В какой-то из грядущих дней мы снимем снапшот с лизингов на нашей ноде.
  2. Мы выпустим токен для голосования в соотношении 1 к 1 к генбалансу ноды на момент снапшота.
  3. За сутки до старта голосования мы разошлём всем лизерам из снапшота токены для голосования в соотношении 1к1. Т.е. за каждый 1 WAVES в лизинге вы получите 1 токен для голосования.
  4. Вместе с токеном мы пришлём на каждый адрес из списка лизеров дополнительно 0.005 WAVES.
  5. На специальной странице со стартом голосования у всех обладателей голосующего токена появится возможность при помощи Waves Keeper отдать свой голос ЗА или ПРОТИВ в 1 клик.
  6. Мы намеренно не стали ограничивать передачу токенов, чтобы люди могли голосовать с любых адресов. Это будет удобно тем, кто не хочет вводить свой сид в Waves Keeper.
  7. Нам совершенно неинтересно, что именно вы будете делать с голосами-токенами. Можете голосовать, сжигать, продавать, отправлять. Это ваши токены, ваш голос, ваше право распоряжаться ими.
  8. Само голосование будет работать на смарт контракте, код которого будет опубликован в этом разделе чуть позднее.
  9. На обозначенной выше страницу в режиме онлайн можно будет наблюдать за ходом голосования и процентным распределением голосов.
  10. На голосование будет отведено 7200 блоков (примерно 5 дней).
  11. Нода Tradisys проголосует за то решение, которое наберёт больше 50% голосов.
  12. Исходя из заявлений на стриме, новый пропоузал будет объявлен на следующей неделе, а значит старт голосования мы назначим примерно через 10 дней. Дата, возможно, будет изменена.
  13. Дата снапшота для определения кому будут выданы токены для голосования, также будет объявлена чуть позднее.

Смарт-контракт и фронт-энд для голосований будут выложены в открытый доступ, т.е. каждая нода сможет проводить подобные мероприятия после того, как мы это протестируем.

Ждём ваших идей, вопросов и предложений.

3 Симпатий

Голосование хорошо, но стоит продумать вопрос “карусели”. О чем речь, предположим идею голосования поддержат другие ноды, но снимки сделают в разное время, я так понимаю, заранее объявленное. Что мне помешает после снимка, перевести на другую ноду волны, где еще снимок не сделан… И на нескольких нодах получить голосующий токен. Т.е. я теоретически получаю право голосовать за/против на разных нодах.

Ну, думаю в будущем ноды синхронизируются, пока что в любом случае мы будем одни в этой истории.

Предварительный смарт-контракт для голосования:

{-# STDLIB_VERSION 3 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
# INJECTED VALUES
let VoteAssetId = fromBase58String("${VoteAssetId}")
let finish = ${VotingStartingHeight} + ${VotingDuration}

# CONSTANTS
let KeyVoteFor = "$voteFor"
let KeyVoteAgainst = "$voteAgainst"

func getIntValue(key: String) = {
    let valOpt = getInteger(this, key)
    if (isDefined(valOpt)) then extract(valOpt) else throw(key + " was not initialized before contract deployment")
}

func vote(voteKey: String, inv: Invocation) = {
    let currVoteVal = getIntValue(voteKey)
    let callerBalance = assetBalance(inv.caller, VoteAssetId)
    let pmt = if (isDefined(inv.payment)) then extract(inv.payment) else throw("Impossible to Vote without attached payment")
    let pmtAssetId = if (isDefined(pmt.assetId)) then extract(pmt.assetId) else throw("Impossible to use WAVES for Voting")
    if (finish < height) then throw("Voting finished") else
    if (pmtAssetId != VoteAssetId) then throw("Impossible to use " + toBase58String(pmtAssetId) + " for voting") else
    if (callerBalance != pmt.amount) then throw("All Voting token from balance must be attached") else
    WriteSet([DataEntry(voteKey, currVoteVal + pmt.amount)])
}

@Callable(i)
func voteFor() = {
    vote(KeyVoteFor, i)
}

@Callable(i)
func voteAgainst() = {
    vote(KeyVoteAgainst, i)
}

@Verifier(tx)
func verify() = {
    false
}

Пример “голосующей” транзакции".

Добрый вечер! TradisysVote#2 - это голосующий токен или липа? Начислен, а что к чему не нашел.

1 Симпатия

Привет. Это настоящий токен. Подробности тут: https://forum.wavesplatform.com/t/tradisys-node/1125/66

Кстати, а почему инфа о голосовании не висела на сайте Tradisys в разделе лизинга?

Привет, в период голосования висела огромная жирная кнопка в самом верху сайта на главной странице, как и информация о лизинге :slight_smile:

Странно, на сайт часто вроде заходил, так и не заметил. Видимо подслеповат стал… А вообще мне кажется, нужно давать выбор людям, кипером или трансфером голосовать, не все кипер ставят.

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

А вот и нет, многие не пользуются, бутылочка с водичкой и биде - конкурентные изобретения))) Хотя эта демагогия только засоряет форум, как и новоиспеченные боты… Ладно хоть пореже писать стали.