public static int GetTransactionCount(RPC.Eth.DTOs.Block block) { if (block is BlockWithTransactions b) { return(b.Transactions?.Length ?? 0); } if (block is BlockWithTransactionHashes bh) { return(bh.TransactionHashes?.Length ?? 0); } return(0); }
public async Task UpsertBlockAsync(RPC.Eth.DTOs.Block source) { await _lock.WaitAsync(); try { var blockEntity = MapBlock(source, new Block(source.Number.Value.ToString())); await UpsertAsync(blockEntity).ConfigureAwait(false); } finally { _lock.Release(); } }
public async Task UpsertBlockAsync(RPC.Eth.DTOs.Block source) { await _lock.WaitAsync(); try { await InitialiseMaxBlock(); var blockEntity = MapBlock(source, new Block(source.Number.Value.ToString())); await UpsertAsync(blockEntity); await UpdateMaxBlockNumber(blockEntity); } finally { _lock.Release(); } }
public Block MapBlock(RPC.Eth.DTOs.Block blockSource, Block blockOutput) { blockOutput.SetBlockNumber(blockSource.Number); blockOutput.SetDifficulty(blockSource.Difficulty); blockOutput.SetGasLimit(blockSource.GasLimit); blockOutput.SetGasUsed(blockSource.GasUsed); blockOutput.SetSize(blockSource.Size); blockOutput.SetTimeStamp(blockSource.Timestamp); blockOutput.SetTotalDifficulty(blockSource.TotalDifficulty); blockOutput.ExtraData = blockSource.ExtraData ?? string.Empty; blockOutput.Hash = blockSource.BlockHash ?? string.Empty; blockOutput.ParentHash = blockSource.ParentHash ?? string.Empty; blockOutput.Miner = blockSource.Miner ?? string.Empty; blockOutput.Nonce = string.IsNullOrEmpty(blockSource.Nonce) ? 0 : (long)new HexBigInteger(blockSource.Nonce).Value; blockOutput.TransactionCount = blockSource.TransactionCount(); return(blockOutput); }