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.");
 }
Пример #6
0
 public override Empty AdjustProposalReleaseThreshold(DAOProposalReleaseThreshold input)
 {
     Assert(State.DAOInitialMemberList.Value.Value.Contains(Context.Sender), "No permission.");
     State.DAOProposalReleaseThreshold.Value = input;
     return(new Empty());
 }