Synthetix Grants DAO
Usage
Voting
createProposal
This function allows proposers, which can be team or community members, the ability to create a prposal for funding of a receiver address for a specified amount. When the proposal is created, it is automatically counted as voted on by the proposer and assigned a unique number. Proposals remain in a submission phase for 2 days before they can be voted on.
voteProposal
After a proposal has been in the submission phase for 2 days, it enters the voting phase for the next 7 days. While in the voting phase, proposers may vote on the proposal. Community members may wish to withhold their votes in order to vote against a proposal. If a team member votes against a proposal, it is automatically deleted. Each proposal needs at least one team member to approve in order for the proposal to execute.
deleteProposal
If a proposal did not receive enough votes within the voting phase, this function may be called in order to clean up the smart contract's storage and to unlock the funds associated with the proposal.
Team Only
withdraw
If extra tokens need to be withdrawn from the contract, this method may be used to retrieve them. This can only be called by team members and will not allow balances to be pulled out which are locked in proposals.
addCommunityMember
Community members may be added to the contract so that new addresses can propose funding and vote on existing proposals.
removeCommunityMember
Community members may be removed by a team member from being able to vote or propose grants. An array of proposals may also be specified to have that member's vote removed.
addTeamMember
Team members may be added to the contract since all proposals need at least one team approving vote.
removeTeamMember
Team members may also be removed from the contract, but a team member cannot remove themself. This prevents a scenario where no team members are on the contract, which would mean no proposals could be executed and no tokens could be withdrawn.
updateToPass
This function allows the number of votes required to pass a proposal to be updated. It should be noted that all proposals still require approval by at least one team member, even if this number has been met.
Views
getCommunityMembers
Returns the addresses of the community members.
getTeamMembers
Returns the addresses of hte team members.
getProposals
Returns the IDs of active proposals.
getCompleteProposals
Returns an array of the completed proposal IDs.
completeProposals
Returns the proposal for a given Proposal ID which has been executed.
withdrawable
Returns the amount of tokens which may be withdrawn from the contract by team members. This excludes the amount locked in proposals.
totalBalance
Returns the total balance of tokens on the contract, including locked and withdrawable balances.
voted
This function may be used to check if an address has voted on a proposal, regardless if they voted true
or false
.
votingPhase
This function may be used to check if a proposal is in the voting phase. It will return true
if it is, false
if not.
Install
npm install
Test
npm test