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); }
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)); }
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)); }