public async Task Test_Validate_Block_Before_Execute()
        {
            Block block = null;
            bool  validateResult;

            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block          = new Block();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Header   = new BlockHeader();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Body     = new BlockBody();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Body.TransactionIds.Add(Hash.Empty);
            block.Header   = _kernelTestHelper.GenerateBlock(9, Hash.FromString("PreviousBlockHash")).Header;
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeTrue();
        }
        public async Task Test_Validate_Block_Before_Execute()
        {
            Block block = null;
            bool  validateResult;

            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block          = new Block();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Header   = new BlockHeader();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Body     = new BlockBody();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeFalse();

            block.Body.Transactions.Add(Hash.Empty);
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header.Time = DateTime.UtcNow.ToTimestamp();
            block.Header.MerkleTreeRootOfTransactions = block.Body.CalculateMerkleTreeRoots();
            validateResult = await _blockValidationProvider.ValidateBlockBeforeExecuteAsync(block);

            validateResult.ShouldBeTrue();
        }
Example #3
0
        public async Task Test_Validate_Before_Attach()
        {
            Block block = null;
            bool  validateResult;

            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block          = new Block();
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header   = new BlockHeader();
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Body     = new BlockBody();
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Body.TransactionIds.Add(Hash.Empty);
            block.Header.ChainId = 1234;
            validateResult       = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header.ChainId = 0;
            validateResult       = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header.Height = AElfConstants.GenesisBlockHeight;
            validateResult      = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header           = _kernelTestHelper.GenerateBlock(9, HashHelper.ComputeFrom("PreviousBlockHash")).Header;
            block.Header.Signature =
                ByteString.CopyFrom(CryptoHelper.SignWithPrivateKey(_kernelTestHelper.KeyPair.PrivateKey,
                                                                    block.GetHash().ToByteArray()));
            validateResult = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header.MerkleTreeRootOfTransactions = block.Body.CalculateMerkleTreeRoot();
            block.Header.Time = TimestampHelper.GetUtcNow() + TimestampHelper.DurationFromMinutes(30);
            validateResult    = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeFalse();

            block.Header.Time = TimestampHelper.GetUtcNow();
            validateResult    = await _blockValidationProvider.ValidateBeforeAttachAsync(block);

            validateResult.ShouldBeTrue();
        }