private void OnPrepareResponseReceived(ConsensusPayload payload, PrepareResponse message) { if (context.Signatures[payload.ValidatorIndex] != null) { return; } Log($"{nameof(OnPrepareResponseReceived)}: height={payload.BlockIndex} view={message.ViewNumber} index={payload.ValidatorIndex}"); byte[] hashData = context.MakeHeader()?.GetHashData(); if (hashData == null) { context.Signatures[payload.ValidatorIndex] = message.Signature; } else if (Crypto.Default.VerifySignature(hashData, message.Signature, context.Validators[payload.ValidatorIndex].EncodePoint(false))) { context.Signatures[payload.ValidatorIndex] = message.Signature; CheckSignatures(); } }
private void OnPrepareResponseReceived(ConsensusPayload payload, PrepareResponse message) { Log($"{nameof(OnPrepareResponseReceived)}: height={payload.BlockIndex} view={message.ViewNumber} index={payload.ValidatorIndex}"); if (context.State.HasFlag(ConsensusState.BlockSent)) { return; } if (context.Signatures[payload.ValidatorIndex] != null) { return; } Block header = context.MakeHeader(); if (header == null || !Crypto.Default.VerifySignature(header.GetHashData(), message.Signature, context.Validators[payload.ValidatorIndex].EncodePoint(false))) { return; } context.Signatures[payload.ValidatorIndex] = message.Signature; CheckSignatures(); }