thetta / dao-templates Goto Github PK
View Code? Open in Web Editor NEWDAO Templates are built on top of Thetta DAO Framework
License: MIT License
DAO Templates are built on top of Thetta DAO Framework
License: MIT License
Основная идея DAICO шаблона в том, что он совершает пошаговые выплаты на основании прошедшего ревью. Есть эксперты, которые и проводят такое ревью. Если проект не выполнил предыдущий этап, то выплаты прекращаются.
TODO (пока не готово)
await store.allowActionByAddress(await devZenDao.DEV_ZEN_MOVE_TO_NEXT_EPISODE(), accounts[0]);
await store.allowActionByAddress(await devZenDao.DEV_ZEN_UPDATE_DAO_PARAMS(), accounts[0]);```
вообщем так и не поправил этот баг
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 и добавил читабельные параметры для каждого предложения
в тулбаре данные не сразу подгрузились
пока не сделал F5
в http://localhost:4200/dashboard/dao-param-page
нужно подгружать сюда текущие данные
http://localhost:4200/dashboard/team-page
Для слушателя:
"Стать следующим гостем"
"Купить DZT"
Для рекламодателя:
"Купить рекламное место"
All params (like contract address) should be set in ENV.VARIABLES and then read from config (if no ENV.VARIABLE is set)
https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/test/dao_examples
i don’t think this variable is needed - https://github.com/Thetta/DAO-Templates/blob/master/contracts/3-DevZenDao/DevZenDaoCore.sol#L40
Because:
https://github.com/Thetta/Thetta-DAO-Framework/blob/master/contracts/DaoClient.sol
See these changes:
Thetta/Thetta-DAO-Framework#102
Thetta/Thetta-DAO-Framework#147 (should be used in DevZenDao template)
чтобы уменьшить размер байт кода, нужно уменьшить кол-во кода из import'ов
конкретно для HierarchyDao можно попробовать:
вообщем можно создать таск вроде "prepare contracts for deployment in test networks" и повесить мне
Holacracy template для ребят
https://hackmd.io/s/BkM44rvcm
Они используют холакратию, но не в “полном” виде, а в весьма урезанном. Поэтому не нужно делать шаблон со всеми фичами холакратии (их очень много и это целый бизнес процесс), а нужно сделать шаблон только для их конкретного use case’а.
"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. "
export const environment = {
production: false,
devZenDaoFactoryAddress: {
"kovan": "0x42276e2ef62c41580b0c00c5b9566d60ef3a9309",
"ropsten": "0x4546546545646545646545640121312311231a",
"rinkeby": "0x24289081092831243243242342342342342341",
"mainnet": "0x12312398128739012830918239081290381920"
}
вообщем так и не поправил этот баг
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
See this as example: https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2
See moveToNextEpisode() method.
...
// TODO: implement daoBase.getMemberByIndex() method
address member = 0x0;
...
daoBase.getMemberByIndex is already implemented. You can use it.
Frontend source code is here - https://github.com/Thetta/DAO-FrontendBase
===================================
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
и там сразу собирать контракты + тесты + миграции
и собрать фронт опять же оттуда же
сильно не парься с “базовым кодом“, возможно он будет сто раз меняться еще
но в идеале именно такая ситуация, чтобы потом была у нас
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
createNewContract()
to DevZenDaoFactory which creates instance of DevZenDaocreateNewContract()
which should create instance of DevZenDaoTestableNotice: 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();
}
}
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();
}
}
TODO
https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/test/dao_examples
https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/contracts/dao_examples
https://github.com/Thetta/Thetta-DAO-Framework/tree/dev2/test/dao_examples
# Use this command to init repo ))))
truffle init
# Use this command to install Thetta DAO core
npm install --save thetta-dao-core
https://github.com/Thetta/DAO-Templates/blob/master/contracts/3-DevZenDao/DevZenDao.sol
Each method with isCanDo() should have the auto caller:
function updateDaoParams(Params _params) isCanDo("DevZen_updateDaoParams") public {
super._updateDaoParams(_params);
}
// TODO
contract DevZenDaoAuto is DevZenDao {
// TODO
function updateDaoParamsAuto(Params _params) public {}
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.