コード例 #1
0
        public void SetAndGetSystemTransactionCountTest()
        {
            var blockHeader = new BlockHeader();

            _systemTransactionExtraDataProvider.TryGetSystemTransactionCount(blockHeader, out var systemTransactionCount).ShouldBeFalse();
            systemTransactionCount.ShouldBe(0);

            var count = 10;

            _systemTransactionExtraDataProvider.SetSystemTransactionCount(count, blockHeader);

            _systemTransactionExtraDataProvider.TryGetSystemTransactionCount(blockHeader, out systemTransactionCount).ShouldBeTrue();
            systemTransactionCount.ShouldBe(count);
        }
コード例 #2
0
 public async Task <BlockExecutedSet> ExecuteBlockAsync(BlockHeader blockHeader,
                                                        List <Transaction> nonCancellableTransactions)
 {
     _systemTransactionExtraDataProvider.TryGetSystemTransactionCount(blockHeader,
                                                                      out var systemTransactionCount);
     return(await ExecuteBlockAsync(blockHeader, nonCancellableTransactions.Take(systemTransactionCount),
                                    nonCancellableTransactions.Skip(systemTransactionCount),
                                    CancellationToken.None));
 }
コード例 #3
0
        private async Task CheckMiningResultAsync(BlockExecutedSet blockExecutedSet, Timestamp blockTime,
                                                  int transactionCount)
        {
            var chain = await _blockchainService.GetChainAsync();

            var pubkey = await _accountService.GetPublicKeyAsync();

            blockExecutedSet.Block.Header.PreviousBlockHash.ShouldBe(chain.BestChainHash);
            blockExecutedSet.Block.Header.Height.ShouldBe(chain.BestChainHeight + 1);
            blockExecutedSet.Block.Header.Time.ShouldBe(blockTime);
            blockExecutedSet.Block.Header.SignerPubkey.ShouldBe(ByteString.CopyFrom(pubkey));
            blockExecutedSet.Block.VerifySignature().ShouldBeTrue();
            blockExecutedSet.Block.Body.TransactionsCount.ShouldBe(1 + transactionCount);

            _systemTransactionExtraDataProvider.TryGetSystemTransactionCount(blockExecutedSet.Block.Header,
                                                                             out var systemTransactionCount);
            systemTransactionCount.ShouldBe(1);
        }
 public Task <bool> ValidateBeforeAttachAsync(IBlock block)
 {
     return(Task.FromResult(_systemTransactionExtraDataProvider.TryGetSystemTransactionCount(block.Header,
                                                                                             out var systemTransactionCount) && systemTransactionCount > 0));
 }