diff --git a/Makefile b/Makefile
index a2cf9828cc01e30957d0c910c10660e20985ba62..36fbbae810ff0b63b986a7451f374d91ff643c47 100644
--- a/Makefile
+++ b/Makefile
@@ -85,6 +85,9 @@ db-tools:
 	cp libmdbx/mdbx_stat $(GOBIN)
 	@echo "Run \"$(GOBIN)/mdbx_stat -h\" to get info about mdbx db file."
 
+torrent_hashes_update:
+	./cmd/downloader/auto_update.sh mainnet
+
 test:
 	$(GOTEST) --timeout 30m
 
diff --git a/cmd/downloader/torrent_hashes_update.sh b/cmd/downloader/torrent_hashes_update.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1b859cc1d61b0b8c1de69f5256db775d51fa0b9a
--- /dev/null
+++ b/cmd/downloader/torrent_hashes_update.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env bash
+
+network=$1
+datadir=$2
+
+git reset --hard
+git checkout devel
+git pull
+# it will return only .seg of 500K (because Erigon send to Downloader only such files)
+go run -trimpath ./cmd/downloader torrent_hashes --datadir="$datadir" >./../erigon-snpshots/"$network".toml
+cd ./../erigon-snapshots
+git add "$network".toml
+git commit -m "cd: $network"
+git push
+# update Erigon submodule
+cd ./../erigon
+cd turbo/snapshotsync/snapshothashes/erigon-snapshots
+git checkout main
+git pull
+cd ../../../../
+git add turbo/snapshotsync/snapshothashes/erigon-snapshots
+git commit -m "cd: $network snapshots"
+git push
diff --git a/go.mod b/go.mod
index ed4548f0a6eb99c5f1b15ba21c7b4461a4502ac5..afb146c54bf599fd924dfc38b2b3db5e337d9725 100644
--- a/go.mod
+++ b/go.mod
@@ -40,7 +40,7 @@ require (
 	github.com/json-iterator/go v1.1.12
 	github.com/julienschmidt/httprouter v1.3.0
 	github.com/kevinburke/go-bindata v3.21.0+incompatible
-	github.com/ledgerwatch/erigon-lib v0.0.0-20220320161426-7939c56571cc
+	github.com/ledgerwatch/erigon-lib v0.0.0-20220321040948-b3cbcf709805
 	github.com/ledgerwatch/log/v3 v3.4.1
 	github.com/ledgerwatch/secp256k1 v1.0.0
 	github.com/magiconair/properties v1.8.6 // indirect
diff --git a/go.sum b/go.sum
index 54d41b0afe59f7ee71faae462c45dc778716fe9a..7b1a1f2b9673b4e98b4479536674b7d96e0cfaa8 100644
--- a/go.sum
+++ b/go.sum
@@ -615,8 +615,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P
 github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c=
 github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8=
-github.com/ledgerwatch/erigon-lib v0.0.0-20220320161426-7939c56571cc h1:kXIBqOMownH+1eUNqrwVLtcPmfREwPBCYwwsMCNF/s0=
-github.com/ledgerwatch/erigon-lib v0.0.0-20220320161426-7939c56571cc/go.mod h1:1Ao0yXNx7956h1fm/3A8AOB2pzckvlpBvxdYvJNfgl8=
+github.com/ledgerwatch/erigon-lib v0.0.0-20220321040948-b3cbcf709805 h1:U0M5S3dFFdSm3BHfXdrvxmIFRXmAdbx9oRc6UZN05NQ=
+github.com/ledgerwatch/erigon-lib v0.0.0-20220321040948-b3cbcf709805/go.mod h1:1Ao0yXNx7956h1fm/3A8AOB2pzckvlpBvxdYvJNfgl8=
 github.com/ledgerwatch/log/v3 v3.4.1 h1:/xGwlVulXnsO9Uq+tzaExc8OWmXXHU0dnLalpbnY5Bc=
 github.com/ledgerwatch/log/v3 v3.4.1/go.mod h1:VXcz6Ssn6XEeU92dCMc39/g1F0OYAjw1Mt+dGP5DjXY=
 github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=
diff --git a/turbo/snapshotsync/block_snapshots.go b/turbo/snapshotsync/block_snapshots.go
index f7560d7bea55212fc2f5de5d96031addc11b9f8a..b07f5a74100f88e621b3b39d4804321150edcbf3 100644
--- a/turbo/snapshotsync/block_snapshots.go
+++ b/turbo/snapshotsync/block_snapshots.go
@@ -675,22 +675,6 @@ func latestSegment(dir string, ofType Type) (uint64, error) {
 	}
 	return maxBlock - 1, nil
 }
-func latestIdx(dir string, ofType Type) (uint64, error) {
-	files, err := idxFilesOfType(dir, ofType)
-	if err != nil {
-		return 0, err
-	}
-	var maxBlock uint64
-	for _, f := range files {
-		if maxBlock < f.To {
-			maxBlock = f.To
-		}
-	}
-	if maxBlock == 0 {
-		return 0, nil
-	}
-	return maxBlock - 1, nil
-}
 
 // FileInfo - parsed file metadata
 type FileInfo struct {
@@ -813,6 +797,7 @@ func segmentsOfType(dir string, ofType Type) (res []FileInfo, err error) {
 	return noGaps(noOverlaps(res))
 }
 
+// nolint
 func idxFilesOfType(dir string, ofType Type) (res []FileInfo, err error) {
 	files, err := IdxFiles(dir)
 	if err != nil {
@@ -1385,12 +1370,11 @@ func TransactionsHashIdx(ctx context.Context, chainID uint256.Int, txsSegment *T
 	if err != nil {
 		return err
 	}
+	txnHashIdx.LogLvl(log.LvlDebug)
+	txnIdIdx.LogLvl(log.LvlDebug)
+	txnHash2BlockNumIdx.LogLvl(log.LvlDebug)
 
 RETRY:
-	txnHashIdx.NoLogs(true)
-	txnIdIdx.NoLogs(true)
-	txnHash2BlockNumIdx.NoLogs(true)
-
 	ch := forEachAsync(ctx, d)
 	type txHashWithOffet struct {
 		txnHash   [32]byte
@@ -1675,6 +1659,7 @@ func Idx(ctx context.Context, d *compress.Decompressor, firstDataID uint64, tmpD
 	if err != nil {
 		return err
 	}
+	rs.LogLvl(log.LvlDebug)
 
 RETRY:
 	ch := forEachAsync(ctx, d)