示例#1
0
        public override Empty ReleaseCodeCheckedContract(ReleaseContractInput input)
        {
            var contractProposingInput = State.ContractProposingInputMap[input.ProposedContractInputHash];

            Assert(
                contractProposingInput != null && contractProposingInput.Status == ContractProposingInputStatus.PreCodeChecked &&
                contractProposingInput.Proposer == Context.Sender, "Invalid contract proposing status.");
            contractProposingInput.Status = ContractProposingInputStatus.CodeChecked;
            State.ContractProposingInputMap[input.ProposedContractInputHash] = contractProposingInput;
            State.ParliamentAuthContract.Release.Send(input.ProposalId);
            return(new Empty());
        }
示例#2
0
        public override Empty ReleaseApprovedContract(ReleaseContractInput input)
        {
            var contractProposingInput = State.ContractProposingInputMap[input.ProposedContractInputHash];

            Assert(
                contractProposingInput != null &&
                contractProposingInput.Status == ContractProposingInputStatus.Proposed &&
                contractProposingInput.Proposer == Context.Sender, "Invalid contract proposing status.");
            contractProposingInput.Status = ContractProposingInputStatus.Approved;
            State.ContractProposingInputMap[input.ProposedContractInputHash] = contractProposingInput;
            Context.SendInline(State.ContractDeploymentController.Value.ContractAddress,
                               nameof(AuthorizationContractContainer.AuthorizationContractReferenceState.Release),
                               input.ProposalId.ToByteString());
            return(new Empty());
        }