private void OnNewHeadBlock(object?sender, BlockEventArgs e) { long toPrune = e.Block.Number - _followDistance; if (toPrune > 0) { var level = _blockTree.FindLevel(toPrune); if (level != null) { if (_logger.IsTrace) { _logger.Trace($"Pruning witness from blocks with number {toPrune}"); } for (int i = 0; i < level.BlockInfos.Length; i++) { var blockInfo = level.BlockInfos[i]; if (blockInfo.BlockHash != null) { _witnessRepository.Delete(blockInfo.BlockHash); } } } } }
private BlockInfo?GetBeaconMainChainBlockInfo(long startingPoint) { ChainLevelInfo?startingLevel = _blockTree.FindLevel(startingPoint); BlockInfo? beaconMainChainBlock = startingLevel?.BeaconMainChainBlock; if (beaconMainChainBlock == null) { if (_logger.IsTrace) { _logger.Trace($"Beacon main chain block for number {startingPoint} was not found"); } return(null); } return(beaconMainChainBlock); }
public ChainLevelInfo FindLevel(long number) => _blockTree.FindLevel(number);
public ChainLevelInfo FindLevel(long number) => _wrapped.FindLevel(number);
public ChainLevelInfo GetLevelInfo(long number) { return(_blockTree.FindLevel(number)); }