ORDAO (Optimistic Respect-based DAO) is a toolset for type of DAOs which use non-transferrable reputation token (Respect). Core of ORDAO is Optimisti Respect-based executive contract (OREC), which enables DAOs to execute actions onchain in a democratic way while avoiding voter-apathy problem. Broadly speaking ORDAO is OREC smart contract plus necessary tooling around it (off-chain services, libraries and frontend apps).
More specifically these are currently the main components of ORDAO:
- Contracts
- OREC (specification and implementation);
- Respect1155 - Respect token contract based on ERC-1155 standard;
- Services
- ornode - API service for storing OREC proposals and Respect token metadata;
- Libraries for interfacing with OREC
- Apps
- Dev - tools, scripts and tests for development, deployment and system administration of ordao;
- Docs - documentation;
---
title: Dependency graph
---
flowchart TD
apps/gui --> libs/orclient
apps/console --> libs/orclient
apps/gui --> libs/ortypes
apps/console --> libs/ortypes
libs/orclient --> libs/ortypes
services/ornode --> libs/ortypes
libs/ortypes --> contracts/respect1155
libs/ortypes --> contracts/orec
ORDAO came about as an upgrade to Optimism Fractal. Here you can find comparison with older Optimism Fractal software and proposed upgrade path.
Based on suggestion from here.
- Setup verdaccio (standard setup, no need to change defaults);
- In a project in which you want to test the packages add .npmrc file with this line:
registry=http://localhost:4873
; - Run
npm run local-publish
script from ordao root; - Test the packages in external project
- Checkout out a new branch;
- Run
npm update <pkg>...
for packages which got updated and need testing. See that required packages got updated; - Do the tests;
- If packages work as expected
- Run
npm run local-unpublish-all
to cleanup verdacio registry; - Discard changes to ordao repo that
local-publish
script made (should be changes to lerna.json and package-lock.json); - Run
npm run publish
to publish changes to public npmjs registry; - In the external project
- Merge changes from the test branch into the main branch except for package-lock.json;
- Comment out registry setting in .npmrc
- Do
npm update <pkg>...
; - Test again;
- Commit and push if needed;
- If packages do not work as expected;
- Make required changes in the packages;
- Commit them without commiting
lerna.json
andpackage-lock.json
(or anything else that references the new versions); - Go back to step 3;