tezos-commons / baseDAO

BaseDAO - a generic smart contract framework for DAOs on Tezos
57 stars 15 forks source link

BaseDAO

BaseDAO is a generic smart contract on Tezos that enables a community to collectively govern resources, registries, or rules.

The contract enables the creator to customize their DAO based on a number of attributes, and uses a ‘decision callback’ to specify arbitrary code that can be governed by a DAO’s proposals. BaseDAO also includes Permit (TZIP-17) to enable off-chain voting.

Documentation and configurations

The specification document contains more details and is used as a basis for the smart contract development.

BaseDAO uses a build time configuration to generate the required variant of the BaseDAO.

Aside from the specification, that contains detail about the configuration as well, there are also the included DAOs below.

Getting/Building

BaseDAO is implemented in LIGO, you can obtain the compiled contract as well as the initial storage for all the included DAOs from the latest release or build them from source by following the building instructions.

Included DAOs

TrivialDAO

The simplest DAO, has no real logic configured but what's common to every DAO. This has only demonstration purposes.

RegistryDAO

Registry DAO is a decentralized key-value storage of arbitrary data. Much like Treasury DAO it can also hold XTZ and FA2 tokens that its users can decide on how to spend.

TreasuryDAO

Treasury DAO is a DAO that holds XTZ and FA2 tokens and lets its users decide how to spend its XTZ and tokens.

Deploying/Originating

The contract can be originated with tezos-client:

tezos-client originate contract baseDAO transferring 0 from alice running BaseDAO.tz --init "$(<storage)" --burn-cap 17.0

Instructions on how to install tezos-client can be found at official Tezos installation page or in our tezos-packaging repository.

Typescript API

This contract includes a TypeScript API, based on Taquito, to interact with DAO contracts.

For more informations on its features and usage see its documentation.

Testing

Tests for this contract are implemented in Haskell using the cleveland framework.

For more detail about the test suite and how to execute it, check out its README.

For Contributors

Please see CONTRIBUTING.md for more information.

License

MIT License Copyright (c) 2022 Tezos Commons