private void ResetMigrationIndexIfNeeded() { ReceiptsRecovery recovery = new ReceiptsRecovery(_api.EthereumEcdsa, _api.SpecProvider); if (_receiptStorage.MigratedBlockNumber != long.MaxValue) { long blockNumber = _blockTree.Head?.Number ?? 0; while (blockNumber > 0) { var level = _chainLevelInfoRepository.LoadLevel(blockNumber); var firstBlockInfo = level?.BlockInfos.FirstOrDefault(); if (firstBlockInfo != null) { var receipts = _receiptStorage.Get(firstBlockInfo.BlockHash); if (receipts?.Length > 0) { if (recovery.NeedRecover(receipts)) { _receiptStorage.MigratedBlockNumber = long.MaxValue; } break; } } blockNumber--; } } }