Native DAO Contract
Details of the features in the Native DAO Contract to be deployed on Openwork Chain
The Native DAO references the Main DAO for verification of key data like member details. It is mainly responsible to kick-start Skills/Oracles and enact other key decisions related to Athena like adding/penalizing members.
Table (describes all features of Native DAO in detail)
The nativeDAO proposals will have to be 80% majority approved with 20% token votes to be executed.
propose() function identical to the one on the MainDAO contract (which is also the standard implementation in OpenZeppelin Governor pattern) will be implemented to achieve this with the same quorum requirements. All the functions in this contract will be called by Governance Only.
Ability to update majority approval, threshold and voting period.
updateMajority(), updateThreshold, updateVotingPeriod() These functions call the internal Governor functions to update the corresponding values.
Add and remove “skills” on OpenWork through Governance(i.e.Voting). [bulk]
Struct: AllSkills {
skillName1 : hash, skillName2 : hash,... } Functions: addSkills ([array of skill_names and their hashes])
removeSkills ([array of skill names])
Creation of skill oracles for skills added through Governance.
Struct: Oracles { skillName : [members], isActive } Function: addOracle(skillName)
Creation of a general skill oracle through Governance[this will happen through same process].
addOracle("General") Adds a new oracle called "General"
100k tokens need to be locked/staked for Skill Oracle membership.
Function: addMembertoSkillOracle(oracleName, member adress) { getStake() [from Ethereum] check if vote is in favour add member to the Skill Oracle if more than 20 members set Oracle to active } Note: The tokens are staked on Ethereum, the above functions calls Ethereum to verify stake.
Ability to update minimum tokens needed for Skill Oracle Membership
updateMinimumStake() Updates minimum stake required to join an Oracle
For initiating any general Athena related proposals, a member needs to stake 100k too.
propose() Initiate a proposal which Athena can vote on
Ability to update minimum tokens needed for Skill Oracle Governance Proposals
updateProposalStake() Updates minimum stake needed to make a Governance proposal on Athena
Removing members. [bulk]
removeMember/s(oracleName, member_address) Removes the member from the said Oracle. This is called through a Governance proposal
Once 20 active members are part of a skill oracle, the skill oracle will be marked as active. Once active it itself can add or remove members and also function for dispute resolution. Active would be defined initially as those who have participated in voting as part of the oracle (including marking themselves active) for the last 30 days (or another parameter that makes sense). For now, it’s just if 20 are part of the oracle.
setOracleActive(oracleName) { checks if there are 20 members is yes, sets Oracle as active }
Ability to update minimum members needed for Skill Oracle Activation
updateMinimumMembers() Updates the condition for an oracle to be considered active
Potentially in the future if not now, the ability to perform super-admin actions like resolving disputes, assigning skills, overruling the skill oracle.
All functions in this contract should be accessible by the Main DAO, in case of emergencies.
Remove stake of member as a penalty
removeStake(address, amount) { remove the stake of the mentioned member by the mentioned amount }
Should interface with the MainDAO to validate things like stakes tokens and other essential data.
For verifying stake : Call getStake() function in mainDAO For verifying member : Call isMember() function The Main DAO contract needs to be referenced in this contract so that DAO can call functions on this contract.
All rules here must be upgradable: Upgrade the governance of the skill oracles.
According to the UUPS standard this contract will have proxy and implementation contract. The overall logic of this contract can be changed by calling the upgrade function and changing the Implementation contract.
Last updated