This has been updated to work with Wallaby FEVM network
It's recommended that you've gone through the hardhat getting started documentation before proceeding here.
- git
- You'll know you did it right if you can run
git --version
and you see a response likegit version x.x.x
- You'll know you did it right if you can run
- Nodejs
- You'll know you've installed nodejs right if you can run:
node --version
and get an ouput like:vx.x.x
- You'll know you've installed nodejs right if you can run:
- Yarn instead of
npm
- You'll know you've installed yarn right if you can run:
yarn --version
And get an output like:x.x.x
- You might need to install it with npm
- You'll know you've installed yarn right if you can run:
This project uses v0.8 of the Zondax API Mocks. With more functions coming to the mock contracts, the contracts in this repo should be updated, too. See Packages used for more information.
- Clone this repo:
git clone https://github.com/mme022/datadao-boilerplate
cd datadao-boilerplate
- Install dependencies
yarn
or
npm i
If you want to deploy to wallaby:
3. Add a .env
file with the same contents of .env.example
, but replaced with your variables.
WARNING
DO NOT PUSH YOUR PRIVATE_KEY TO GITHUB
- Get the Deployer Address
Run this command:
yarn hardhat get-address
The f4address is the filecoin representation of your Ethereum address. This will be needed for the faucet in the next step.
The Ethereum address will be used otherwise.
5.Fund the Deployer Address
Go to the Wallaby faucet, and paste in the f4 address we copied in the previous step. This will send some wallaby testnet FIL to the account.
6.Deploy the Governance Contracts and the Filecoin Mock APIs
Type in the following command in the terminal:
yarn hardhat deploy --network wallaby
This will compile the contract and deploy it to the Wallaby network automatically!
Keep note of the deployed contract address for the next step.
If you just want to deploy the DAO structure, see the tags inside the deploy scripts.
Here is the rundown of what the test suite does.
- We will deploy an ERC20 token that we will use to govern our DAO.
- We will deploy a Timelock contract that we will use to give a buffer between executing proposals.
- Note: The timelock is the contract that will handle all the money, ownerships, etc
- We will deploy our Governence contract
- Note: The Governance contract is in charge of proposals and such, but the Timelock executes!
- We will deploy a simple Box contract, which will be owned by our governance process! (aka, our timelock contract).
- We will propose a new value to be added to our Box contract.
- We will then vote on that proposal.
- We will then queue the proposal to be executed.
- Then, we will execute it!
Additionally, you can do it all manually on your own local network like so:
- Setup local blockchain
yarn hardhat node
- Call a Market function defined in helper-hardhat-config.ts
In a second terminal (leave your blockchain running)
yarn hardhat run scripts/propose.ts --network localhost
- Vote on that proposal
yarn hardhat run scripts/vote.ts --network localhost
- Queue & Execute proposal!
yarn hardhat run scripts/queue-and-execute.ts --network localhost
You can also use the Openzeppelin contract wizard to get other contracts to work with variations of this governance contract.
Distributed under the MIT License. See LICENSE.txt
for more information.