This project implements a basic voting DAO smart contract for research purposes to understand its inner workings. This is by no means a complete implementation. It also includes an ERC-20 contract to be used as a DAO governance token.
- Solidity
- Truffle
- Ganache-cli
- Unit/Integration tests
- Chai (expect)
- truffle-assertions (revert assertions)
- openzeppelin/test-helpers (time and block manipulation)
- eth-gas-reporter
- solidity-coverage (code coverage)
- coveralls (code coverage report)
- solhint (linter for Solidity)
- slither (vulnerability analyzer)
- Full contract documentation (NatSpec Format)
- Solidity coding conventions
- Deposit governance tokens to be able to create a proposal.
- Create a proposal.
- Vote a proposal (only one time an in a time period).
- Withdraw the tokens.
NOTE: For more information see code comments in
MyDAO.sol
.
solhint 'contracts/**/*.sol' -f table
truffle test
truffle run coverage
truffle test --reporter eth-gas-reporter
slither --exclude-dependencies .