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; } }
public static bool HasStateForBlock(this IStateReader stateReader, BlockHeader header) { RootCheckVisitor rootCheckVisitor = new(); stateReader.RunTreeVisitor(rootCheckVisitor, header.StateRoot); return(rootCheckVisitor.HasRoot); }
public ResultWrapper <UInt256> analytics_verifySupply() { SupplyVerifier supplyVerifier = new SupplyVerifier(_logManager.GetClassLogger()); _stateReader.RunTreeVisitor(supplyVerifier, _blockTree.Head.StateRoot); return(ResultWrapper <UInt256> .Success(supplyVerifier.Balance)); }
private bool HasStateForBlock(BlockHeader header) { RootCheckVisitor rootCheckVisitor = new(); if (header.StateRoot == null) { return(false); } _stateReader.RunTreeVisitor(rootCheckVisitor, header.StateRoot !); return(rootCheckVisitor.HasRoot); }
public void RunTreeVisitor(ITreeVisitor treeVisitor, Keccak stateRoot) { _stateReader.RunTreeVisitor(stateRoot, treeVisitor); }
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); }