Ejemplo n.º 1
0
        public async Task Execute_Block_NonCancellable()
        {
            var blockHeader = new BlockHeader
            {
                Height            = 2,
                PreviousBlockHash = Hash.Empty,
                Time = DateTime.UtcNow.ToTimestamp()
            };
            var txs = BuildTransactions(5);

            var block = await _blockExecutingService.ExecuteBlockAsync(blockHeader, txs);

            var allTxIds = txs.Select(x => x.GetHash()).ToList();

            block.Body.TransactionsCount.ShouldBe(txs.Count);

            var binaryMerkleTree = new BinaryMerkleTree();

            binaryMerkleTree.AddNodes(allTxIds);
            var merkleTreeRoot = binaryMerkleTree.ComputeRootHash();

            block.Header.MerkleTreeRootOfTransactions.ShouldBe(merkleTreeRoot);

            block.Body.Transactions.ShouldBe(allTxIds);
            block.Body.TransactionList.ShouldBe(txs);
        }
Ejemplo n.º 2
0
        public async Task Execute_Block_NonCancellable_Without_SystemTransactionCount()
        {
            var chain = await _smartContractExecutionHelper.CreateChainAsync();

            var blockHeader      = _kernelTestHelper.GenerateBlock(chain.BestChainHeight, chain.BestChainHash).Header;
            var transactions     = GetTransactions();
            var blockExecutedSet = await _blockExecutingService.ExecuteBlockAsync(blockHeader, transactions);

            await CheckBlockExecutedSetAsync(blockExecutedSet, 2);
        }
Ejemplo n.º 3
0
        public async Task Execute_Block_NonCancellable()
        {
            var txs         = BuildTransactions(5);
            var blockHeader = _kernelTestHelper.GenerateBlock(1, Hash.Empty).Header;

            var block = await _blockExecutingService.ExecuteBlockAsync(blockHeader, txs);

            var allTxIds = txs.Select(x => x.GetHash()).ToList();

            block.Body.TransactionsCount.ShouldBe(txs.Count);

            var binaryMerkleTree = BinaryMerkleTree.FromLeafNodes(allTxIds);
            var merkleTreeRoot   = binaryMerkleTree.Root;

            block.Header.MerkleTreeRootOfTransactions.ShouldBe(merkleTreeRoot);

            block.Body.TransactionIds.ShouldBe(allTxIds);
        }