Ejemplo n.º 1
0
        private async Task OnEnqueueAsync(PartialValidationItem item, CancellationToken cancellationtoken)
        {
            ValidationContext result = await this.consensusRules.PartialValidationAsync(item.ChainedHeader, item.Block).ConfigureAwait(false);

            try
            {
                await item.PartialValidationCompletedAsyncCallback(result).ConfigureAwait(false);
            }
            catch (Exception exception)
            {
                this.logger.LogCritical("Partial validation callback threw an exception: {0}.", exception.ToString());
                throw;
            }
        }
Ejemplo n.º 2
0
        private async Task OnEnqueueAsync(PartialValidationItem item, CancellationToken cancellationtoken)
        {
            this.logger.LogTrace("({0}:'{1}')", nameof(item), item);

            var validationContext = new ValidationContext {
                Block = item.ChainedHeaderBlock.Block
            };

            // TODO: pass the tip.
            await this.consensusRules.PartialValidationAsync(validationContext, null).ConfigureAwait(false);

            var partialValidationResult = new PartialValidationResult
            {
                ChainedHeaderBlock = item.ChainedHeaderBlock,
                BanDurationSeconds = validationContext.BanDurationSeconds,
                BanReason          = validationContext.Error != null ? $"Invalid block received: {validationContext.Error.Message}" : string.Empty,
                Succeeded          = validationContext.Error != null
            };

            await item.PartialValidationCompletedAsyncCallback(partialValidationResult).ConfigureAwait(false);

            this.logger.LogTrace("(-)");
        }