コード例 #1
0
            public TestContext(bool forSealing, ReportingContractBasedValidator.Cache cache = null, Address[] initialValidators = null)
            {
                BlockHeader        parentHeader      = Build.A.BlockHeader.TestObject;
                IValidatorContract validatorContract = Substitute.For <IValidatorContract>();

                Address[] validators = initialValidators ?? new[] { MaliciousMinerAddress, NodeAddress };
                validatorContract.GetValidators(parentHeader).Returns(validators);

                ContractBasedValidator = new ContractBasedValidator(
                    validatorContract,
                    Substitute.For <IBlockTree>(),
                    Substitute.For <IReceiptFinder>(),
                    Substitute.For <IValidatorStore>(),
                    Substitute.For <IValidSealerStrategy>(),
                    Substitute.For <IAuRaBlockFinalizationManager>(),
                    parentHeader,
                    LimboLogs.Instance,
                    0,
                    PosdaoTransition,
                    forSealing);

                ContractBasedValidator.Validators ??= validators;

                ReportingValidatorContract = Substitute.For <IReportingValidatorContract>();
                ReportingValidatorContract.NodeAddress.Returns(NodeAddress);

                TxSender = Substitute.For <ITxSender>();
                ITxPool        txPool        = Substitute.For <ITxPool>();
                IStateProvider stateProvider = Substitute.For <IStateProvider>();
                ISpecProvider  specProvider  = Substitute.For <ISpecProvider>();

                stateProvider.GetNonce(ReportingValidatorContract.NodeAddress).Returns(UInt256.One);

                Validator = new ReportingContractBasedValidator(
                    ContractBasedValidator,
                    ReportingValidatorContract,
                    PosdaoTransition,
                    TxSender,
                    txPool,
                    new MiningConfig(),
                    stateProvider,
                    cache ?? new ReportingContractBasedValidator.Cache(),
                    specProvider,
                    Substitute.For <IGasPriceOracle>(),
                    LimboLogs.Instance);
            }