Sarcophagus is a decentralized dead man's switch built on Ethereum and Arweave.
This repository contains the smart contracts (and corresponding deployment scripts) that power the Sarcophagus governance system (DAO).
App | Permission | Description | Grantee | Manager |
---|---|---|---|---|
Kernel | APP_MANAGER_ROLE | Manage apps | Voting | Voting |
ACL | CREATE_PERMISSIONS_ROLE | Create permissions | Voting | Voting |
EVMScriptRegistry | REGISTRY_ADD_EXECUTOR_ROLE | Add executors | Voting | Voting |
EVMScriptRegistry | REGISTRY_MANAGER_ROLE | Enable and disable executors | Voting | Voting |
Voting | CREATE_VOTES_ROLE | Create new votes | ANY_ENTITY | Voting |
Voting | MODIFY_SUPPORT_ROLE | Modify support | Voting | Voting |
Voting | MODIFY_QUORUM_ROLE | Modify quorum | Voting | Voting |
Finance | CREATE_PAYMENTS_ROLE | Create new payments | Voting | Voting |
Finance | EXECUTE_PAYMENTS_ROLE | Execute payments | Voting | Voting |
Finance | MANAGE_PAYMENTS_ROLE | Manage payments | Voting | Voting |
Agent | TRANSFER_ROLE | Transfer Agent's tokens | Voting | Voting |
Agent | EXECUTE_ROLE | Execute actions | Voting | Voting |
Agent | RUN_SCRIPT_ROLE | Run EVM Script | Voting | Voting |
First, ensure you're using the right npm version:
$ nvm install && nvm use
Then, install the necessary dependencies:
$ npm i
Finally, build everything!
$ npm run compile
To run tests:
$ nvm run test
First, build the contracts:
$ npm run compile
Then, configure your testnet accounts within ~/.aragon/rinkeby_key.json
:
{
"rpc": "https://rinkeby.infura.io/v3/${API_KEY}",
"keys": [
"d79...", // ADMIN
"c7a...", // STAKER_1
"653...", // STAKER_2
"9ac...", // STAKER_3
"7a0...", // NON_STAKER
"4f6..." // NON_STAKER
]
}
Next, configure the DAO within ./configs/rinkeby-dao-config.json
:
{
"name": "...", // Optional, if not present random name will be used
"supportRequiredPct": 50,
"minAcceptQuorumPct": 5,
"voteTimeDays": 7,
"sarcoVotingRights": "..."
}
If you've made any changes, deploy SarcophagusDaoTemplate.sol
to aragonPM:
$ npm run deploy:rinkeby
Finally, create a new DAO instance:
$ npm run create:rinkeby
- First, build the contracts.
- Configure your testnet accounts within
~/.aragon/mainnet_key.json
- Next, configure the DAO within
./configs/mainnet-dao-config.json
- Deploy to aragonPM via
npm run deploy:mainnet
- Finally,
npm run create:mainnet
to create a new instance of the DAO.
We can also be found on Telegram.
Made with 💀 and proudly decentralized.