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.
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.
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.
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.
Community members may be added to the contract so that new addresses can propose funding and vote on existing proposals.
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.
Team members may be added to the contract since all proposals need at least one team approving vote.
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.
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.
Returns the addresses of the community members.
Returns the addresses of hte team members.
Returns the IDs of active proposals.
Returns an array of the completed proposal IDs.
Returns the proposal for a given Proposal ID which has been executed.
Returns the amount of tokens which may be withdrawn from the contract by team members. This excludes the amount locked in proposals.
Returns the total balance of tokens on the contract, including locked and withdrawable balances.
This function may be used to check if an address has voted on a proposal, regardless if they voted true
or false
.
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.
npm install
npm test