Пример #1
0
        protected virtual void RunPruning(IPruningContext pruning, Keccak statRoot)
        {
            try
            {
                pruning.MarkStart();
                using CopyTreeVisitor copyTreeVisitor = new(pruning, _logManager);
                VisitingOptions visitingOptions = new() { MaxDegreeOfParallelism = _pruningConfig.FullPruningMaxDegreeOfParallelism };
                _stateReader.RunTreeVisitor(copyTreeVisitor, statRoot, visitingOptions);

                if (!pruning.CancellationTokenSource.IsCancellationRequested)
                {
                    void CommitOnNewBLock(object o, BlockEventArgs e)
                    {
                        _blockTree.NewHeadBlock -= CommitOnNewBLock;
                        // ReSharper disable AccessToDisposedClosure
                        pruning.Commit();
                        _lastPruning = DateTime.Now;
                        pruning.Dispose();
                        // ReSharper restore AccessToDisposedClosure
                    }

                    _blockTree.NewHeadBlock += CommitOnNewBLock;
                    copyTreeVisitor.Finish();
                }
                else
                {
                    pruning.Dispose();
                }
            }
            catch (Exception)
            {
                pruning.Dispose();
                throw;
            }
        }
Пример #2
0
        public static bool HasStateForBlock(this IStateReader stateReader, BlockHeader header)
        {
            RootCheckVisitor rootCheckVisitor = new();

            stateReader.RunTreeVisitor(rootCheckVisitor, header.StateRoot);
            return(rootCheckVisitor.HasRoot);
        }
Пример #3
0
        public ResultWrapper <UInt256> analytics_verifySupply()
        {
            SupplyVerifier supplyVerifier = new SupplyVerifier(_logManager.GetClassLogger());

            _stateReader.RunTreeVisitor(supplyVerifier, _blockTree.Head.StateRoot);
            return(ResultWrapper <UInt256> .Success(supplyVerifier.Balance));
        }
Пример #4
0
        private bool HasStateForBlock(BlockHeader header)
        {
            RootCheckVisitor rootCheckVisitor = new();

            if (header.StateRoot == null)
            {
                return(false);
            }
            _stateReader.RunTreeVisitor(rootCheckVisitor, header.StateRoot !);
            return(rootCheckVisitor.HasRoot);
        }
Пример #5
0
 public void RunTreeVisitor(ITreeVisitor treeVisitor, Keccak stateRoot)
 {
     _stateReader.RunTreeVisitor(stateRoot, treeVisitor);
 }
Пример #6
0
 public void Accept(ITreeVisitor visitor, Keccak stateRoot)
 {
     _stateReader.RunTreeVisitor(visitor, stateRoot);
 }
 public void Accept(ITreeVisitor visitor, Keccak stateRoot, VisitingOptions?visitingOptions)
 {
     _stateReader.RunTreeVisitor(visitor, stateRoot, visitingOptions);
 }