Moloch
DAO URI resolves to multiple sub URIs
Members URI
{
"@context": "http://www.daostar.org/schemas",
"type": "DAO",
"name": "<name of the DAO>",
"members": [
{
"type": "MolochDAOMember",
"address": "<address>",
"votingShares",
"nonVotingShares",
"joinDate",
"status": "Jailed" | "Kicked",
"delegation"
},
{
"type": "EthereumAddress",
"address": "<address>"
}
]
}
Proposals URI
Note that
executionData
is blank because Moloch v2 DAOs do not have arbitrary external interaction abilities without using minion helper contracts.{
"@context": {
"@vocab": "http://daostar.org/"
},
"proposals": [
{
"metadata": {
"proposalId": "[CONTRACT_ADDRESS][PROPOSAL_COUNTER]",
"title": "<Proposal Title>",
Â
{
"@context": "http://www.daostar.org/schemas",
"type": "DAO",
"name": "<name of the DAO>",
"proposals": [
{
"type": "proposal",
"id": "<proposal ID>",
"name": "<name or title of proposal>",
"contentURI": "<URI to content or discussion>",
"status": "<status of proposal>",
"sponsor",
"votes",
.... other stuff from the DAOHaus subgraph
"calls": [
{
"type": "CallDataEVM",
"operation": "<call or delegate call>",
"from": "<EthereumAddress>",
"to": "<EthereumAddress>",
"value": "<value>",
"data": "<call data>"
}
]
}
]
}
Constitution URI
Constitution URI leads to an IPFS hosted markdown file with information about the DAO’s purpose.
Activity Log
{
"@context": {
"@vocab": "http://daostar.org/"
},
"activity": [
{
"interactionType": "vote",
"voter": {
"@value": "0xabc123",
"@type": "ethereum-address"
},
"proposal": "[DAO_CONTRACT_ADDRESS][PROPOSAL_COUNTER]",
"result": {
"choice": "yes",
"weight": {
"@type": "shares",
"@value": 150
}
},
"timestamp": "2021-01-01"
}
]
}
This expands to...
[
{
"http://daostar.org/activity": [
{
"http://daostar.org/interactionType": [
{
"@value": "vote"
}
],
"http://daostar.org/proposal": [
{
"@value": "[DAO_CONTRACT_ADDRESS][PROPOSAL_COUNTER]"
}
],
"http://daostar.org/result": [
{
"http://daostar.org/choice": [
{
"@value": "yes"
}
],
"http://daostar.org/weight": [
{
"@type": "http://daostar.org/shares",
"@value": 150
}
]
}
],
"http://daostar.org/timestamp": [
{
"@value": "2021-01-01"
}
],
"http://daostar.org/voter": [
{
"@type": "http://daostar.org/ethereum-address",
"@value": "0xabc123"
}
]
}
]
}
]
Â
Moloch v2.1++
In Moloch V2 we extend the concept of proposal flags to include a URI proposal type. The DAO URI is queried via a standard interface. It is changed through submitting, sponsoring, voting on, and processing DAO URI change proposals
Â
interface IEIP_TBD {
function daoURI() external view returns (string memory);
}
function submitUriProposal(string memory newURI) public nonReentrant returns (uint256 proposalId);
function processUriProposal(uint256 proposalIndex) public nonReentrant;
// EVENTS
event ProcessUriProposal(uint256 indexed proposalIndex, uint256 indexed proposalId, bool didPass);
Moloch v3++
In Moloch V3 we have generic action proposals so all we need to add is a URI state variable and a setter. This can then be updated through standard governance flows.
Â
interface IEIP_TBD {
function daoURI() external view returns (string memory);
}
function setDaoUri(string memory _newUri) external baalOnly;
Legacy Adapter Minion
For Moloch DAOs that were launched pre-DAOstar they can use and EIP_TBD minion contract with a DAO URI field. This works very similarly to the Moloch V3 example above
Â
interface IEIP_TBD {
function daoURI() external view returns (string memory);
}
function setDaoUri(string memory _newUri) external minionOnly;
Â