cmd: add makecache cmd, use caches during import cmd
This commit is contained in:
		
							parent
							
								
									bc0e6a5e68
								
							
						
					
					
						commit
						4a260dc1f2
					
				| @ -157,6 +157,7 @@ func init() { | |||||||
| 		attachCommand, | 		attachCommand, | ||||||
| 		javascriptCommand, | 		javascriptCommand, | ||||||
| 		// See misccmd.go:
 | 		// See misccmd.go:
 | ||||||
|  | 		makecacheCommand, | ||||||
| 		makedagCommand, | 		makedagCommand, | ||||||
| 		versionCommand, | 		versionCommand, | ||||||
| 		bugCommand, | 		bugCommand, | ||||||
|  | |||||||
| @ -18,9 +18,7 @@ package main | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" |  | ||||||
| 	"os" | 	"os" | ||||||
| 	"path/filepath" |  | ||||||
| 	"runtime" | 	"runtime" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
| @ -33,14 +31,27 @@ import ( | |||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	makedagCommand = cli.Command{ | 	makecacheCommand = cli.Command{ | ||||||
| 		Action:    utils.MigrateFlags(makedag), | 		Action:    utils.MigrateFlags(makecache), | ||||||
| 		Name:      "makedag", | 		Name:      "makecache", | ||||||
| 		Usage:     "Generate ethash DAG (for testing)", | 		Usage:     "Generate ethash verification cache (for testing)", | ||||||
| 		ArgsUsage: "<blockNum> <outputDir>", | 		ArgsUsage: "<blockNum> <outputDir>", | ||||||
| 		Category:  "MISCELLANEOUS COMMANDS", | 		Category:  "MISCELLANEOUS COMMANDS", | ||||||
| 		Description: ` | 		Description: ` | ||||||
| The makedag command generates an ethash DAG in /tmp/dag. | 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. | This command exists to support the system testing project. | ||||||
| Regular users do not need to execute it. | Regular users do not need to execute it. | ||||||
| @ -65,33 +76,33 @@ The output of this command is supposed to be machine-readable. | |||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | // 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 { | func makedag(ctx *cli.Context) error { | ||||||
| 	args := ctx.Args() | 	args := ctx.Args() | ||||||
| 	wrongArgs := func() { | 	if len(args) != 2 { | ||||||
| 		utils.Fatalf(`Usage: geth makedag <block number> <outputdir>`) | 		utils.Fatalf(`Usage: geth makedag <block number> <outputdir>`) | ||||||
| 	} | 	} | ||||||
| 	switch { | 	block, err := strconv.ParseUint(args[0], 0, 64) | ||||||
| 	case len(args) == 2: | 	if err != nil { | ||||||
| 		blockNum, err := strconv.ParseUint(args[0], 0, 64) | 		utils.Fatalf("Invalid block number: %v", err) | ||||||
| 		dir := args[1] |  | ||||||
| 		if err != nil { |  | ||||||
| 			wrongArgs() |  | ||||||
| 		} else { |  | ||||||
| 			dir = filepath.Clean(dir) |  | ||||||
| 			// seems to require a trailing slash
 |  | ||||||
| 			if !strings.HasSuffix(dir, "/") { |  | ||||||
| 				dir = dir + "/" |  | ||||||
| 			} |  | ||||||
| 			_, err = ioutil.ReadDir(dir) |  | ||||||
| 			if err != nil { |  | ||||||
| 				utils.Fatalf("Can't find dir") |  | ||||||
| 			} |  | ||||||
| 			fmt.Println("making DAG, this could take awhile...") |  | ||||||
| 			ethash.MakeDataset(blockNum, dir) |  | ||||||
| 		} |  | ||||||
| 	default: |  | ||||||
| 		wrongArgs() |  | ||||||
| 	} | 	} | ||||||
|  | 	ethash.MakeDataset(block, args[1]) | ||||||
|  | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1093,7 +1093,10 @@ func MakeChain(ctx *cli.Context, stack *node.Node) (chain *core.BlockChain, chai | |||||||
| 
 | 
 | ||||||
| 	engine := ethash.NewFaker() | 	engine := ethash.NewFaker() | ||||||
| 	if !ctx.GlobalBool(FakePoWFlag.Name) { | 	if !ctx.GlobalBool(FakePoWFlag.Name) { | ||||||
| 		engine = ethash.New("", 1, 0, "", 1, 0) | 		engine = ethash.New( | ||||||
|  | 			stack.ResolvePath(eth.DefaultConfig.EthashCacheDir), eth.DefaultConfig.EthashCachesInMem, eth.DefaultConfig.EthashCachesOnDisk, | ||||||
|  | 			stack.ResolvePath(eth.DefaultConfig.EthashDatasetDir), eth.DefaultConfig.EthashDatasetsInMem, eth.DefaultConfig.EthashDatasetsOnDisk, | ||||||
|  | 		) | ||||||
| 	} | 	} | ||||||
| 	config, _, err := core.SetupGenesisBlock(chainDb, MakeGenesis(ctx)) | 	config, _, err := core.SetupGenesisBlock(chainDb, MakeGenesis(ctx)) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user