|
|
|
@ -18,9 +18,7 @@ package main |
|
|
|
|
|
|
|
|
|
import ( |
|
|
|
|
"fmt" |
|
|
|
|
"io/ioutil" |
|
|
|
|
"os" |
|
|
|
|
"path/filepath" |
|
|
|
|
"runtime" |
|
|
|
|
"strconv" |
|
|
|
|
"strings" |
|
|
|
@ -33,14 +31,27 @@ import ( |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
var ( |
|
|
|
|
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 DAG (for testing)", |
|
|
|
|
Usage: "Generate ethash mining DAG (for testing)", |
|
|
|
|
ArgsUsage: "<blockNum> <outputDir>", |
|
|
|
|
Category: "MISCELLANEOUS COMMANDS", |
|
|
|
|
Description: ` |
|
|
|
|
The makedag command generates an ethash DAG in /tmp/dag. |
|
|
|
|
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. |
|
|
|
@ -65,33 +76,33 @@ The output of this command is supposed to be machine-readable. |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
func makedag(ctx *cli.Context) error { |
|
|
|
|
// makecache generates an ethash verification cache into the provided folder.
|
|
|
|
|
func makecache(ctx *cli.Context) error { |
|
|
|
|
args := ctx.Args() |
|
|
|
|
wrongArgs := func() { |
|
|
|
|
utils.Fatalf(`Usage: geth makedag <block number> <outputdir>`) |
|
|
|
|
if len(args) != 2 { |
|
|
|
|
utils.Fatalf(`Usage: geth makecache <block number> <outputdir>`) |
|
|
|
|
} |
|
|
|
|
switch { |
|
|
|
|
case len(args) == 2: |
|
|
|
|
blockNum, err := strconv.ParseUint(args[0], 0, 64) |
|
|
|
|
dir := args[1] |
|
|
|
|
block, err := strconv.ParseUint(args[0], 0, 64) |
|
|
|
|
if err != nil { |
|
|
|
|
wrongArgs() |
|
|
|
|
} else { |
|
|
|
|
dir = filepath.Clean(dir) |
|
|
|
|
// seems to require a trailing slash
|
|
|
|
|
if !strings.HasSuffix(dir, "/") { |
|
|
|
|
dir = dir + "/" |
|
|
|
|
utils.Fatalf("Invalid block number: %v", err) |
|
|
|
|
} |
|
|
|
|
_, err = ioutil.ReadDir(dir) |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("Can't find dir") |
|
|
|
|
ethash.MakeCache(block, args[1]) |
|
|
|
|
|
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
fmt.Println("making DAG, this could take awhile...") |
|
|
|
|
ethash.MakeDataset(blockNum, dir) |
|
|
|
|
|
|
|
|
|
// 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>`) |
|
|
|
|
} |
|
|
|
|
default: |
|
|
|
|
wrongArgs() |
|
|
|
|
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 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|