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); }
public override ProposalOutput GetProposal(Hash proposalId) { var proposal = State.Proposals[proposalId]; Assert(proposal != null, "Proposal not found."); var result = new ProposalOutput { ProposalId = proposalId, ContractMethodName = proposal.ContractMethodName, ExpiredTime = proposal.ExpiredTime, OrganizationAddress = proposal.OrganizationAddress, Params = proposal.Params, Proposer = proposal.Proposer, ToAddress = proposal.ToAddress, }; return(result); }
public override ProposalOutput GetProposal(Hash proposalId) { var proposal = State.Proposals[proposalId]; Assert(proposal != null, "Not found proposal."); var organization = State.Organisations[proposal.OrganizationAddress]; var minerList = GetCurrentMinerList(); var readyToRelease = IsReadyToRelease(proposal, organization, minerList); var result = new ProposalOutput { ProposalId = proposalId, ContractMethodName = proposal.ContractMethodName, ExpiredTime = proposal.ExpiredTime, OrganizationAddress = proposal.OrganizationAddress, Params = proposal.Params, Proposer = proposal.Proposer, ToAddress = proposal.ToAddress, ToBeReleased = readyToRelease }; return(result); }
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."); }