private bool IsReleaseThresholdReached(ProposalOutput proposal, DAOProposalReleaseThreshold proposalReleaseThreshold) { var isRejected = IsProposalRejected(proposal, proposalReleaseThreshold); if (isRejected) { return(false); } var isAbstained = IsProposalAbstained(proposal, proposalReleaseThreshold); return(!isAbstained && CheckEnoughVoteAndApprovals(proposal, proposalReleaseThreshold)); }
private bool CheckEnoughVoteAndApprovals(ProposalOutput proposal, DAOProposalReleaseThreshold proposalReleaseThreshold) { var isApprovalEnough = proposal.ApprovalCount >= proposalReleaseThreshold.MinimalApprovalThreshold; if (!isApprovalEnough) { return(false); } var isVoteThresholdReached = proposal.ApprovalCount.Add(proposal.AbstentionCount).Add(proposal.RejectionCount) >= proposalReleaseThreshold.MinimalVoteThreshold; return(isVoteThresholdReached); }
private bool IsProposalAbstained(ProposalOutput proposal, DAOProposalReleaseThreshold proposalReleaseThreshold) { return(proposal.AbstentionCount > proposalReleaseThreshold.MaximalAbstentionThreshold); }
private bool IsProposalRejected(ProposalOutput proposal, DAOProposalReleaseThreshold proposalReleaseThreshold) { return(proposal.RejectionCount > proposalReleaseThreshold.MaximalRejectionThreshold); }
private void AssertReleaseThresholdReached(ProposalOutput proposal, DAOProposalReleaseThreshold proposalReleaseThreshold) { Assert(IsReleaseThresholdReached(proposal, proposalReleaseThreshold), "No approved by certain members."); }
public override Empty AdjustProposalReleaseThreshold(DAOProposalReleaseThreshold input) { Assert(State.DAOInitialMemberList.Value.Value.Contains(Context.Sender), "No permission."); State.DAOProposalReleaseThreshold.Value = input; return(new Empty()); }