internal ConsensusPayload[] GetCommitPayloadsFromRecoveryMessage(ConsensusContext context, ConsensusPayload payload) { return(CommitMessages.Values.Select(p => new ConsensusPayload { Version = payload.Version, PrevHash = payload.PrevHash, BlockIndex = payload.BlockIndex, ValidatorIndex = p.ValidatorIndex, ConsensusMessage = new Commit { ViewNumber = p.ViewNumber, Signature = p.Signature }, Witness = new Witness { InvocationScript = p.InvocationScript, VerificationScript = Contract.CreateSignatureRedeemScript(context.Validators[p.ValidatorIndex]) } }).ToArray()); }
internal ConsensusPayload[] GetChangeViewPayloads(ConsensusContext context, ConsensusPayload payload) { return(ChangeViewMessages.Values.Select(p => new ConsensusPayload { Version = payload.Version, PrevHash = payload.PrevHash, BlockIndex = payload.BlockIndex, ValidatorIndex = p.ValidatorIndex, ConsensusMessage = new ChangeView { ViewNumber = p.OriginalViewNumber, Timestamp = p.Timestamp }, Witness = new Witness { InvocationScript = p.InvocationScript, VerificationScript = Contract.CreateSignatureRedeemScript(context.Validators[p.ValidatorIndex]) } }).ToArray()); }
internal ConsensusPayload GetPrepareRequestPayload(ConsensusContext context, ConsensusPayload payload) { if (PrepareRequestMessage == null) { return(null); } if (!PreparationMessages.TryGetValue((int)context.Block.ConsensusData.PrimaryIndex, out RecoveryMessage.PreparationPayloadCompact compact)) { return(null); } return(new ConsensusPayload { Version = payload.Version, PrevHash = payload.PrevHash, BlockIndex = payload.BlockIndex, ValidatorIndex = (ushort)context.Block.ConsensusData.PrimaryIndex, ConsensusMessage = PrepareRequestMessage, Witness = new Witness { InvocationScript = compact.InvocationScript, VerificationScript = Contract.CreateSignatureRedeemScript(context.Validators[context.Block.ConsensusData.PrimaryIndex]) } }); }