Esempio n. 1
0
        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);
    }
Esempio n. 3
0
 public ChainLevelInfo FindLevel(long number) => _blockTree.FindLevel(number);
Esempio n. 4
0
 public ChainLevelInfo FindLevel(long number) => _wrapped.FindLevel(number);
Esempio n. 5
0
 public ChainLevelInfo GetLevelInfo(long number)
 {
     return(_blockTree.FindLevel(number));
 }