209 похожих чатов

Кто делал или видел релализации голосования токенходеров (ERC20) в смарт

контракте на Ethereum по принципу "один токен - один голос"?
Хотелось бы посмотреть на существующие решения. В частности как быть с тем фактом что во время голосования токены могут переходить от одного токенхолдера другому?

4 ответов

11 просмотров

это может в jobs?

Самый простой вариант имхо фиксировать распределение токенов на конечный момент времени голосования. я бы так делал

Viktor-Ageyev Автор вопроса

я вот думаю следующее: 1) тот кто ставит вопрос на голование обозначает в каком блоке будут результаты (можно на фротенде примерно расчитывать что через 3 суток будет блок номер такой-то), голосованию присваваем порядковый номер. 2) каждый у кого есть токены может голосовать если номер текущего блока меньше блока окончания голосования 3) заводим счетчик проголосовавших "за", кто не проголосовал за считается проголосовавшим против. Голоса записываем в mapping (uint256=>address), где uint256 - номер проголосовашего "за", address - его адрес. У нас в итоге получится mapping (uint256=>mapping(uint256=address)) - где каждому номеру голосования (первый uint256) будет соотвествовать mapping c номерами и адресами прголосовавших за. Также сделаекм mapping(uint256=>uint256) где номеру голосования соотвествует количество проголосовавших "за", и mapping(uint256=>uint256) где номеру голосования будет сответвовать блок с результатами. 4) для определения результатов голосования внешним скритом (web3js) берем количество проголосовавших, циклом вытягиваем все адреса проголосовавшие "за", при этом по каждому адресу берем его баланс в токенах в блоке окончания результатов голосования, для этого в web3js вместо дефолтного "latest" указываем номер блока из которого мы берем состояние. myContractInstance.balanceOf.call(tokenHolderAddress, blockNumber) Таким образом получаем балансы в токенах всех адресов проголосовавших "за" по состоянию на момент окончания голосования, т.е. в блоке в котором голосование окончилось. Эти балансы складываем получаем количество голосов "за" Этот внешний скрипт, естественно, выкладываем в open source также как и код контракта, так чтобы каждый мог проверить. Ну и на фронтенде реализовать.

Посмотри что Polymath делает: https://github.com/PolymathNetwork/polymath-core/blob/dev-3.1.0/contracts/tokens/SecurityToken.sol Там идея чекпоинтов: можно узнать баланс на момент любого чекпоинта. И реализация голосовалки тоже где-то в этой репе лежит.

Похожие вопросы

Обсуждают сегодня

@Benzenoid can you tell me the easiest, and safest way to bu.y HEX now?
Živa Žena
20
This is a question from my wife who make a fortune with memes 😂😂 About the Migration and Tokens: 1. How will the old tokens be migrated to the new $LGCYX network? What is th...
🍿 °anton°
2
What is the Dex situation? Agora team started with the Pnetwork for their dex which helped them both with integration. It’s completed but as you can see from the Pnetwork ann...
Ben
1
Anyone knows where there are some instructions or discort about failed bridge transactions ?
Jochem
21
@lozuk how do I get my phex copies of my ehex from a atomic wallet, to move to my rabby?
Justfrontin 👀
11
Hello, Is iExec also part of the "inception program" or another one ? Would it be a name to qualified the nature of the relationship between iExec and Nvidia? And does Secret ...
Ñïķøłäś
8
Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
any reference of this implementation?
BitBuddha
29
Also, why can’t the community have a vote/ say when it comes to initiatives like buybacks. Isn’t the point of crypto decentralisation? Don’t we deserve input as long term supp...
👨🏽‍🦰
13
Hi guys, any problem with Pulsebrige? Trying to transfer from wETH to ETH. First it tells me to connect my metamask "through mobile app" not desktop. Then I did and confirmed ...
Snowflakecrypto
13
Карта сайта