Giter Club home page Giter Club logo

dao-templates's People

Contributors

anthonyakentiev avatar enkogu avatar ryzhak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

ryzhak

dao-templates's Issues

DAICO template

Основная идея DAICO шаблона в том, что он совершает пошаговые выплаты на основании прошедшего ревью. Есть эксперты, которые и проводят такое ревью. Если проект не выполнил предыдущий этап, то выплаты прекращаются.

Логика работы

TODO (пока не готово)

DevZenDao - Voting bug

вообщем так и не поправил этот баг
when "add new group member" voting is created then on the last vote, that would add team member, metamask consumes huge amount of gas so there is smth wrong

после создания голосования на добавление нового участника через daoBaseAuto.addGroupMemberAuto(), если к примеру есть 3 участника в группе и первый голосует "за", то при голосовании второго выскакивает revert

truffle debug ссылается на:


263:   * @dev this function issue tokens for address _to
264:   */
265:   function issueTokens(address _tokenAddress, address _to, uint _amount) public isCanDo(ISSUE_TOKENS) {
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

debug(development:0x79ba65ba...)> 

Transaction halted with a RUNTIME ERROR.

This is likely due to an intentional halting expression, like assert(), require() or revert(). It can also be due to out-of-gas exceptions. Please inspect your transaction parameters and contract code to determine the meaning of this error.```
насколько я понимаю isCanDo возвращает false и поэтому выскакивает revert, но причем здесь permission на ISSUE_TOKENS я так и не понял, в теории чтобы добавить нового участника в группу этот permission вообще не нужен

вполне возможно, что в core то же самое, так как нет функциональных тестов, которые проверяют "полный круг" голосования: создание => голосование => проверка результатов, такие тесты по идее должны быть тут https://github.com/Thetta/Thetta-DAO-Framework/blob/master/test/daobase_auto.functional.tests.js

был такой таск https://github.com/Thetta/Thetta-DAO-Framework/issues/277, но он теперь закрыт, вероятно следует его открыть заново

из полезного поправил небольшие косяки на фронте DevZenDao и добавил читабельные параметры для каждого предложения

DevZenDAO frontend improvements

в тулбаре данные не сразу подгрузились
пока не сделал F5

"параметры"

в http://localhost:4200/dashboard/dao-param-page
нужно подгружать сюда текущие данные
params

“команда”

http://localhost:4200/dashboard/team-page

  1. поля желательно сделать на всю ширину, как в окне "параметры". Сейчас адрес не войдет по ширине -

team

  1. "Следующий организатор" -> "Установить следующего ведущего"
  2. "Гость пришел" -> "Начислить репутацию гостю"
  3. "Вывод всех ETH" -> "Вывести собранные ETH на адрес:"
  4. "Запустить следующий эпизод" -> "Текущий эпизод завершился"
  5. Не понятно, чем "Сменить гостя" отличается от "Экстренно сменить гостя"
    Было бы круто сделать панель с подсказками (текстом)
  6. "Сжечь DZT гостя" - насколько я помню, _burnGuestStake() это internal и вызываться напрямую не должна

"патрон"

  1. Лучше разделить на 2 отдельных вкладки: "Для слушателя" и "Для рекламодателя"

Для слушателя:
"Стать следующим гостем"
"Купить DZT"

Для рекламодателя:
"Купить рекламное место"

  1. Нужно убрать "Прошла ли 1 неделя" вообще
  2. Нужно убрать "Аппрув DZT", а делать это автоматически. То есть спрашивать юзера "Чтобы стать гостем, вам нужно положить в стейк N токенов. Вы уверены?"
    и далее автоматом делать 2 транзы: approve + вызов метода

Minimize for deployment

чтобы уменьшить размер байт кода, нужно уменьшить кол-во кода из import'ов

конкретно для HierarchyDao можно попробовать:

  • создать токены в отдельной миграции
  • импортировать абстрактные классы, без реализации
  • в конструктор добавить адреса токенов

вообщем можно создать таск вроде "prepare contracts for deployment in test networks" и повесить мне

Holacracy template

Holacracy template для ребят
https://hackmd.io/s/BkM44rvcm

Они используют холакратию, но не в “полном” виде, а в весьма урезанном. Поэтому не нужно делать шаблон со всеми фичами холакратии (их очень много и это целый бизнес процесс), а нужно сделать шаблон только для их конкретного use case’а.

TODO

  1. Сделать текстовое описание (hackmd файл) логики работы такого DAO шаблона. После этого мне показать текстовый файл, чтобы я мог подтвердить, что все ОК.
  2. Сделать сам шаблон (кодом) в DAO-templates

DevZenDao: implement becomeTheNextShowGuest(), burnGuestStake()

"To become a guest, a listener has to become a patron first (i.e., they have to buy some DevZen tokens), then they must stake S tokens for D days. After the show has ended, S tokens are returned to the patron. If the guest missed the show (that is bad), the tokens are burned. "

DevZenDao frontend: should work with different networks

TODO

  1. Config file format should support different networks:
export const environment = {
	production: false,
  	devZenDaoFactoryAddress: {
             "kovan": "0x42276e2ef62c41580b0c00c5b9566d60ef3a9309",
             "ropsten": "0x4546546545646545646545640121312311231a",
             "rinkeby": "0x24289081092831243243242342342342342341",
             "mainnet": "0x12312398128739012830918239081290381920"
        }
  1. Dapp should automatically detect the current MetaMask network and use param from config accordingly

DevZenDao - bug with votings

From Slack:

вообщем так и не поправил этот баг
when "add new group member" voting is created then on the last vote, that would add team member, metamask consumes huge amount of gas so there is smth wrong

после создания голосования на добавление нового участника через daoBaseAuto.addGroupMemberAuto(), если к примеру есть 3 участника в группе и первый голосует "за", то при голосовании второго выскакивает revert

truffle debug ссылается на:


263:   * @dev this function issue tokens for address _to
264:   */
265:   function issueTokens(address _tokenAddress, address _to, uint _amount) public isCanDo(ISSUE_TOKENS) {
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

debug(development:0x79ba65ba...)> 

Transaction halted with a RUNTIME ERROR.

This is likely due to an intentional halting expression, like assert(), require() or revert(). It can also be due to out-of-gas exceptions. Please inspect your transaction parameters and contract code to determine the meaning of this error.```
насколько я понимаю isCanDo возвращает false и поэтому выскакивает revert, но причем здесь permission на ISSUE_TOKENS я так и не понял, в теории чтобы добавить нового участника в группу этот permission вообще не нужен

вполне возможно, что в core то же самое, так как нет функциональных тестов, которые проверяют "полный круг" голосования: создание => голосование => проверка результатов, такие тесты по идее должны быть тут https://github.com/Thetta/Thetta-DAO-Framework/blob/master/test/daobase_auto.functional.tests.js

DevZenDAO - connect with frontend

Frontend source code is here - https://github.com/Thetta/DAO-FrontendBase

===================================

  1. Change theme and components library
  • I will take the same theme as we used for CFD project
  • I will remove NgMaterial and will use PrimeNg componets(the same library was used for CFD project)
    The reason is that it will take more time to finish and maintain the project with NgMaterial than it would be with PrimeNg
  1. Pages structure
  • main
    • next episode details
    • dao parameters details
  • DAO params where params can be changed(with voting)
  • team
    • withdraw ether(creates voting)
    • select the next host(creates voting)
    • change the guest(creates voting)
    • emergency change the guest(creates voting)
    • move to next episode(creates voting)
  • advertiser
    • run ads
  • listener
    • become the next show guest
    • buy tokens
  • group
    • add group member(creates voting)
    • remove group member(creates voting)
  • proposals
    • vote

DevZenDAO - frontend

Repo to use - https://github.com/Thetta/DAO-FrontendBase

Лучше, если сделаешь в https://github.com/Thetta/DAO-FrontendBase
какой-то базовый код сначала, от которого потом можно наследоваться другим репозиториям
то есть потом заведем какой-то уже более конкретный https://github.com/Thetta/DevZenDAO от него

По архитектуре я бы делал так:
1) Сначала давай разберемся с фронтом, то есть там должна быть верстка, сборка, логика фронта https://github.com/Thetta/DAO-FrontendBase
2) (УЖЕ ПОСЛЕ ПОСЛЕ)) туда же добавим truffle файлы, чтобы фронт + контракты уже лежали в https://github.com/Thetta/DevZenDAO

то есть чтобы можно было взять потом https://github.com/Thetta/DAO-FrontendBase
и там сразу собирать контракты + тесты + миграции
и собрать фронт опять же оттуда же

сильно не парься с “базовым кодом“, возможно он будет сто раз меняться еще
но в идеале именно такая ситуация, чтобы потом была у нас

Voting bug - DevZenDao

when "add new group member" voting is created then on the last vote, that would add team member, metamask consumes huge amount of gas so there is smth wrong

после создания голосования на добавление нового участника через daoBaseAuto.addGroupMemberAuto(), если к примеру есть 3 участника в группе и первый голосует "за", то при голосовании второго выскакивает revert

truffle debug ссылается на:


263:   * @dev this function issue tokens for address _to
264:   */
265:   function issueTokens(address _tokenAddress, address _to, uint _amount) public isCanDo(ISSUE_TOKENS) {
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

debug(development:0x79ba65ba...)> 

Transaction halted with a RUNTIME ERROR.

This is likely due to an intentional halting expression, like assert(), require() or revert(). It can also be due to out-of-gas exceptions. Please inspect your transaction parameters and contract code to determine the meaning of this error.```
насколько я понимаю isCanDo возвращает false и поэтому выскакивает revert, но причем здесь permission на ISSUE_TOKENS я так и не понял, в теории чтобы добавить нового участника в группу этот permission вообще не нужен

вполне возможно, что в core то же самое, так как нет функциональных тестов, которые проверяют "полный круг" голосования: создание => голосование => проверка результатов, такие тесты по идее должны быть тут https://github.com/Thetta/Thetta-DAO-Framework/blob/master/test/daobase_auto.functional.tests.js

DevZenDAO frontend: No Metamask msg

msg

Should be:

  1. Если Metamask установлен, но не загружен:
    "Пожалуйста, войдите в MetaMask"
  2. Если Metamask вообще не установлен:
    "Пожалуйста, установите MetaMask (ссылка)"

и еще лучше это не диалогом показывать, а сделать отдельные страницы вроде:
/metamask_not_installed
/metamask_not_logged

DevZenDao: inherit DevZenDaoFactoryTestable from DevZenDaoFactory

  1. Add createNewContract() to DevZenDaoFactory which creates instance of DevZenDao
  2. Inherit DevZenDaoFactoryTestable from DevZenDaoFactory and rewrite createNewContract() which should create instance of DevZenDaoTestable

Notice: if DevZenDaoFactoryTestable is inherited from DevZenDaoFactory the error "Error: The contract code couldn't be stored, please check your gas amount" appears on testing

contract DevZenDaoFactory {
    DevZenDaoCore dao;

     function createDao(){
         createNewContract(); 
         ...
     }

     function createNewContract() internal{
         dao = new DevZenDao();
     }
}

contract DevZenDaoFactoryTestable is DevZenDaoFactory {
    // переопредел только этот метод (то есть 1 строчка!)
    // все остальные методы оставлены такими же
     function createNewContract()  internal {
         dao = new DevZenDaoTestable();
     }
}

DevZenDao: separate to DevZenDaoLogics and DevZenDao

contract DevZenDaoLogics {
   // открыто только для наследников! 
   function _moveToNextEpisode() onlyOwner internal {
         ...
    }
}

contract DevZenDao is DevZenDaoLogics {
    function moveToNextEpisode() isCanDo("DevZen_moveToNextEpisode") public{
          super._moveToNextEpisode();
    }
}

contract DevZenForTests is DevZenDaoLogics {
    // открыли для тестов! 
    function moveToNextEpisode() public{
          super._moveToNextEpisode();
    }
}

Refactoring: move DAO examples from the core to https://github.com/Thetta/DAO-Templates.git

These folders:

https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/contracts/dao_examples

https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/test/dao_examples

  1. DAO-Templates should be the 'truffle' repo
# Use this command to init repo ))))
truffle init
  1. Move files/tests to https://github.com/Thetta/DAO-Templates to contract and test folders respectively
  2. DAO-Templates should use Thetta DAO Frameworks (add 'thetta-dao-core' module to package.json) and put it into node_modules files
# Use this command to install Thetta DAO core
npm install --save thetta-dao-core
  1. All links to Thetta DAO Framework contracts should look like this -
    import "thetta-dao-core/contracts/DaoBase.sol";

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.