diff --git a/cmd/downloader/main.go b/cmd/downloader/main.go index 09cbb2cf2b3..fbab911e3c1 100644 --- a/cmd/downloader/main.go +++ b/cmd/downloader/main.go @@ -7,6 +7,7 @@ import ( "net" "os" "path/filepath" + "strings" "time" "github.com/anacrolix/torrent/metainfo" @@ -45,6 +46,7 @@ var ( torrentVerbosity int downloadRateStr, uploadRateStr string torrentDownloadSlots int + staticPeersStr string torrentPort int torrentMaxPeers int torrentConnsPerFile int @@ -67,6 +69,7 @@ func init() { rootCmd.Flags().IntVar(&torrentMaxPeers, "torrent.maxpeers", utils.TorrentMaxPeersFlag.Value, utils.TorrentMaxPeersFlag.Usage) rootCmd.Flags().IntVar(&torrentConnsPerFile, "torrent.conns.perfile", utils.TorrentConnsPerFileFlag.Value, utils.TorrentConnsPerFileFlag.Usage) rootCmd.Flags().IntVar(&torrentDownloadSlots, "torrent.download.slots", utils.TorrentDownloadSlotsFlag.Value, utils.TorrentDownloadSlotsFlag.Usage) + rootCmd.Flags().StringVar(&staticPeersStr, utils.TorrentStaticPeersFlag.Name, utils.TorrentStaticPeersFlag.Value, utils.TorrentStaticPeersFlag.Usage) rootCmd.Flags().BoolVar(&disableIPV6, "downloader.disable.ipv6", utils.DisableIPV6.Value, utils.DisableIPV6.Usage) rootCmd.Flags().BoolVar(&disableIPV4, "downloader.disable.ipv4", utils.DisableIPV4.Value, utils.DisableIPV6.Usage) @@ -141,9 +144,10 @@ func Downloader(ctx context.Context) error { if err != nil { return fmt.Errorf("invalid nat option %s: %w", natSetting, err) } + staticPeers := strings.Split(staticPeersStr, ",") version := "erigon: " + params.VersionWithCommit(params.GitCommit) - cfg, err := downloadercfg2.New(dirs.Snap, version, torrentLogLevel, downloadRate, uploadRate, torrentPort, torrentConnsPerFile, torrentDownloadSlots) + cfg, err := downloadercfg2.New(dirs.Snap, version, torrentLogLevel, downloadRate, uploadRate, torrentPort, torrentConnsPerFile, torrentDownloadSlots, staticPeers) if err != nil { return err } diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 2d60266b689..57eab187215 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -669,6 +669,11 @@ var ( Value: 3, Usage: "amount of files to download in parallel. If network has enough seeders 1-3 slot enough, if network has lack of seeders increase to 5-7 (too big value will slow down everything).", } + TorrentStaticPeersFlag = cli.StringFlag{ + Name: "torrent.staticpeers", + Usage: "Comma separated enode URLs to connect to", + Value: "", + } NoDownloaderFlag = cli.BoolFlag{ Name: "no-downloader", Usage: "to disable downloader component", @@ -1475,7 +1480,7 @@ func SetEthConfig(ctx *cli.Context, nodeConfig *nodecfg.Config, cfg *ethconfig.C } log.Info("torrent verbosity", "level", lvl.LogString()) version := "erigon: " + params.VersionWithCommit(params.GitCommit) - cfg.Downloader, err = downloadercfg2.New(cfg.Dirs.Snap, version, lvl, downloadRate, uploadRate, ctx.Int(TorrentPortFlag.Name), ctx.Int(TorrentConnsPerFileFlag.Name), ctx.Int(TorrentDownloadSlotsFlag.Name)) + cfg.Downloader, err = downloadercfg2.New(cfg.Dirs.Snap, version, lvl, downloadRate, uploadRate, ctx.Int(TorrentPortFlag.Name), ctx.Int(TorrentConnsPerFileFlag.Name), ctx.Int(TorrentDownloadSlotsFlag.Name), ctx.StringSlice(TorrentDownloadSlotsFlag.Name)) if err != nil { panic(err) } diff --git a/go.mod b/go.mod index 56eee19940a..a18f54dbbd4 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/ledgerwatch/erigon go 1.18 require ( - github.com/ledgerwatch/erigon-lib v0.0.0-20230307090953-5df4a6c9dccd + github.com/ledgerwatch/erigon-lib v0.0.0-20230308041845-4c8d077fd597 github.com/ledgerwatch/erigon-snapshot v1.1.1-0.20230306083105-1391330d62a3 github.com/ledgerwatch/log/v3 v3.7.0 github.com/ledgerwatch/secp256k1 v1.0.0 diff --git a/turbo/cli/default_flags.go b/turbo/cli/default_flags.go index c31aa481f71..100cde2b3a6 100644 --- a/turbo/cli/default_flags.go +++ b/turbo/cli/default_flags.go @@ -89,6 +89,7 @@ var DefaultFlags = []cli.Flag{ &utils.TorrentMaxPeersFlag, &utils.TorrentConnsPerFileFlag, &utils.TorrentDownloadSlotsFlag, + &utils.TorrentStaticPeersFlag, &utils.TorrentUploadRateFlag, &utils.TorrentDownloadRateFlag, &utils.TorrentVerbosityFlag,