arc_dx
Version:
A platform for building DAOs
80 lines (52 loc) • 5.69 kB
Markdown
Welcome to *DAOstack Arc* Docs!
*Arc* is the base layer of the [DAO stack](https://github.com/daostack/docs). It consists of a collection of smart contracts deployed on the Ethereum blockchain that define the basic building blocks and standard components that can be used to implement any DAO.
*Arc* is built from the ground up with these principles in mind:
1. **Scalable Decentralized Governance** - *Arc* implements game theoretic & economic techniques (such as: monetization of attention, staking on proposal results, and more...) that ensure high:
- **resilience** - resistance to a disproportionate decision power in the hands of minorities.
- **bandwidth** - decision making rate of the organization.
even as the number of the participants gets very large.
2. **Security** - *Arc* is community audited and embodies the best security guidelines and is very well tested.
3. **Interoperability & Compositionality** - *Arc* can integrate with any other ethereum based framework with ease. Organizations can interact with each other and form hierarchies and other complex structures.
4. **Modularity** - *Arc* is built in a modular way allowing anyone to extend and expand the ecosystem to support new use-cases.
5. **General purpose** - *Arc* provides a single unified simple model for building any DAO imaginable.
For more information [read the official DAOstack Whitepaper](https://github.com/daostack/docs/blob/master/DAOstack%20White%20Paper%20V1.0.pdf).
Check out:
- The [Contract docs](contracts/README.md) for explanation about each contract and the source tree.
- The [Generated docs](generated_docs/README.md) for detailed technical reference on every contract.
## An overview of the DAO stack
*Arc* is only a part of a larger tech stack built for decentralized governance at scale, which is collectively called the DAOstack. It is important to note the other projects in this stack and how *Arc* fits into this larger whole:

1. [Ethereum](https://www.ethereum.org/) - *Base blockchain.*
2. **Arc** - This project.
2. [Arc.js](https://github.com/daostack/*Arc*.js) - A *JavaScript library that interfaces with *Arc*, built on top of web3.js.*
3. Collaborative DApps, built on top of DAOstack using *Arc.js*. eg. [Vanille](https://github.com/daostack/vanille) & [Alchemy](https://github.com/daostack/alchemy)
For more information regarding the entire DAOstack project, check out the [docs repository](https://github.com/daostack/docs).
## The Structure of a DAO
Each DAO is a living entity on the blockchain that can own and manage resources. As such, it consists of the following “organs”:

* **[Native token](contracts/controller/DAOToken.md)** - *A Standard [ERC20 token](https://theethereum.wiki/w/index.php/ERC20_Token_Standard) that defines the value system of the DAO. Participants are rewarded for their contributions based on this token*.
* **[Reputation](contracts/controller/Reputation.md) system** - *Similar to native token but is **non-transferable**. The reputation system is used to assign weight the votes of participants*.
* **[Avatar](contracts/controller/Avatar.md)** - *This is the public-facing part of the DAO that handles the interaction of the DAO with the rest of the world(eg. interacing with other DAOs, paying third party participants, etc...)*.
* **Subscribed [Elements](#elements)** - *The set of [Schemes](contracts/universalSchemes/README.md) and [Global Constraints](contracts/globalConstraints/README.md) that comprise the DAO*.
For each DAO, the above components are organized in a single smart contract called a *[Controller](contracts/controller/Controller)*, which acts as the owner of those components.
## Elements
The main configurable and extendable building blocks of DAOs are:
*Schemes* and *Global Constraints*, which are collectively called *elements*.
* **[Schemes](contracts/universalSchemes/README.md)** *define the "dos" of the DAO, the rules under which actions are taken, based on the participants' input.* Examples of Schemes are:
* Rewarding contributions when other participants recognize them as worthy.
* Voting on proposals and automatically executing the chosen proposal.
* **[Global constraints](contracts/globalConstraints/README.md)** *define the "don'ts" of the DAO, the conditions that must always hold and can prevent an action from being taken if it violates these conditions.* Examples of Global Constraints are:
* Limiting the amount of tokens or reputation that can be minted per day.
* Blacklisting certain participants from performing certain actions.
## Contributing to Arc Docs
Same as [CONTIBUTING](https://github.com/daostack/Arc/blob/master/CONTRIBUTING.md), with the following additions:
1. Make sure your pages are registered in the `mkdocs.yml` file under `pages`.
2. Commands:
1. `npm run docs:update` - generate documentation to `docs/generated_docs`.
2. (*) `npm run docs:build` - update & build website to `site/`.
3. (*) `npm run docs:preview` - preview website locally.
4. (*) `npm run docs:deploy` - deploy website to `gh-pages` branch so it becomes live.
3. Check for broken links by using `npm run docs:preview` and checking for warnings.
4. Please use a spell checker in your IDE to avoid spelling errors.
5. In case of missing or incorrect documentation please open an issue with the label `documentation`, indicating the file, line number and any extra details.
(*) - The command requires [mkdocs](http://www.mkdocs.org/) & [mkdocs-material](https://squidfunk.github.io/mkdocs-material/), run `pip install --user mkdocs mkdocs-material`.