This commit splits the eth package, separating the handling of eth and snap protocols. It also includes the capability to run snap sync (https://github.com/ethereum/devp2p/blob/master/caps/snap.md) , but does not enable it by default. Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de> Co-authored-by: Martin Holst Swende <martin@swende.se>
		
			
				
	
	
		
			167 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Copyright 2016 The go-ethereum Authors
 | |
| // This file is part of go-ethereum.
 | |
| //
 | |
| // go-ethereum is free software: you can redistribute it and/or modify
 | |
| // it under the terms of the GNU General Public License as published by
 | |
| // the Free Software Foundation, either version 3 of the License, or
 | |
| // (at your option) any later version.
 | |
| //
 | |
| // go-ethereum is distributed in the hope that it will be useful,
 | |
| // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| // GNU General Public License for more details.
 | |
| //
 | |
| // You should have received a copy of the GNU General Public License
 | |
| // along with go-ethereum. If not, see <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| package main
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"runtime"
 | |
| 	"strconv"
 | |
| 	"strings"
 | |
| 
 | |
| 	"github.com/ethereum/go-ethereum/cmd/utils"
 | |
| 	"github.com/ethereum/go-ethereum/consensus/ethash"
 | |
| 	"github.com/ethereum/go-ethereum/params"
 | |
| 	"gopkg.in/urfave/cli.v1"
 | |
| )
 | |
| 
 | |
| var (
 | |
| 	VersionCheckUrlFlag = cli.StringFlag{
 | |
| 		Name:  "check.url",
 | |
| 		Usage: "URL to use when checking vulnerabilities",
 | |
| 		Value: "https://geth.ethereum.org/docs/vulnerabilities/vulnerabilities.json",
 | |
| 	}
 | |
| 	VersionCheckVersionFlag = cli.StringFlag{
 | |
| 		Name:  "check.version",
 | |
| 		Usage: "Version to check",
 | |
| 		Value: fmt.Sprintf("Geth/v%v/%v-%v/%v",
 | |
| 			params.VersionWithCommit(gitCommit, gitDate),
 | |
| 			runtime.GOOS, runtime.GOARCH, runtime.Version()),
 | |
| 	}
 | |
| 	makecacheCommand = cli.Command{
 | |
| 		Action:    utils.MigrateFlags(makecache),
 | |
| 		Name:      "makecache",
 | |
| 		Usage:     "Generate ethash verification cache (for testing)",
 | |
| 		ArgsUsage: "<blockNum> <outputDir>",
 | |
| 		Category:  "MISCELLANEOUS COMMANDS",
 | |
| 		Description: `
 | |
| The makecache command generates an ethash cache in <outputDir>.
 | |
| 
 | |
| This command exists to support the system testing project.
 | |
| Regular users do not need to execute it.
 | |
| `,
 | |
| 	}
 | |
| 	makedagCommand = cli.Command{
 | |
| 		Action:    utils.MigrateFlags(makedag),
 | |
| 		Name:      "makedag",
 | |
| 		Usage:     "Generate ethash mining DAG (for testing)",
 | |
| 		ArgsUsage: "<blockNum> <outputDir>",
 | |
| 		Category:  "MISCELLANEOUS COMMANDS",
 | |
| 		Description: `
 | |
| The makedag command generates an ethash DAG in <outputDir>.
 | |
| 
 | |
| This command exists to support the system testing project.
 | |
| Regular users do not need to execute it.
 | |
| `,
 | |
| 	}
 | |
| 	versionCommand = cli.Command{
 | |
| 		Action:    utils.MigrateFlags(version),
 | |
| 		Name:      "version",
 | |
| 		Usage:     "Print version numbers",
 | |
| 		ArgsUsage: " ",
 | |
| 		Category:  "MISCELLANEOUS COMMANDS",
 | |
| 		Description: `
 | |
| The output of this command is supposed to be machine-readable.
 | |
| `,
 | |
| 	}
 | |
| 	versionCheckCommand = cli.Command{
 | |
| 		Action: utils.MigrateFlags(versionCheck),
 | |
| 		Flags: []cli.Flag{
 | |
| 			VersionCheckUrlFlag,
 | |
| 			VersionCheckVersionFlag,
 | |
| 		},
 | |
| 		Name:      "version-check",
 | |
| 		Usage:     "Checks (online) whether the current version suffers from any known security vulnerabilities",
 | |
| 		ArgsUsage: "<versionstring (optional)>",
 | |
| 		Category:  "MISCELLANEOUS COMMANDS",
 | |
| 		Description: `
 | |
| The version-check command fetches vulnerability-information from https://geth.ethereum.org/docs/vulnerabilities/vulnerabilities.json, 
 | |
| and displays information about any security vulnerabilities that affect the currently executing version.
 | |
| `,
 | |
| 	}
 | |
| 	licenseCommand = cli.Command{
 | |
| 		Action:    utils.MigrateFlags(license),
 | |
| 		Name:      "license",
 | |
| 		Usage:     "Display license information",
 | |
| 		ArgsUsage: " ",
 | |
| 		Category:  "MISCELLANEOUS COMMANDS",
 | |
| 	}
 | |
| )
 | |
| 
 | |
| // makecache generates an ethash verification cache into the provided folder.
 | |
| func makecache(ctx *cli.Context) error {
 | |
| 	args := ctx.Args()
 | |
| 	if len(args) != 2 {
 | |
| 		utils.Fatalf(`Usage: geth makecache <block number> <outputdir>`)
 | |
| 	}
 | |
| 	block, err := strconv.ParseUint(args[0], 0, 64)
 | |
| 	if err != nil {
 | |
| 		utils.Fatalf("Invalid block number: %v", err)
 | |
| 	}
 | |
| 	ethash.MakeCache(block, args[1])
 | |
| 
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // makedag generates an ethash mining DAG into the provided folder.
 | |
| func makedag(ctx *cli.Context) error {
 | |
| 	args := ctx.Args()
 | |
| 	if len(args) != 2 {
 | |
| 		utils.Fatalf(`Usage: geth makedag <block number> <outputdir>`)
 | |
| 	}
 | |
| 	block, err := strconv.ParseUint(args[0], 0, 64)
 | |
| 	if err != nil {
 | |
| 		utils.Fatalf("Invalid block number: %v", err)
 | |
| 	}
 | |
| 	ethash.MakeDataset(block, args[1])
 | |
| 
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func version(ctx *cli.Context) error {
 | |
| 	fmt.Println(strings.Title(clientIdentifier))
 | |
| 	fmt.Println("Version:", params.VersionWithMeta)
 | |
| 	if gitCommit != "" {
 | |
| 		fmt.Println("Git Commit:", gitCommit)
 | |
| 	}
 | |
| 	if gitDate != "" {
 | |
| 		fmt.Println("Git Commit Date:", gitDate)
 | |
| 	}
 | |
| 	fmt.Println("Architecture:", runtime.GOARCH)
 | |
| 	fmt.Println("Go Version:", runtime.Version())
 | |
| 	fmt.Println("Operating System:", runtime.GOOS)
 | |
| 	fmt.Printf("GOPATH=%s\n", os.Getenv("GOPATH"))
 | |
| 	fmt.Printf("GOROOT=%s\n", runtime.GOROOT())
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| func license(_ *cli.Context) error {
 | |
| 	fmt.Println(`Geth is free software: you can redistribute it and/or modify
 | |
| it under the terms of the GNU General Public License as published by
 | |
| the Free Software Foundation, either version 3 of the License, or
 | |
| (at your option) any later version.
 | |
| 
 | |
| Geth is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License
 | |
| along with geth. If not, see <http://www.gnu.org/licenses/>.`)
 | |
| 	return nil
 | |
| }
 |