aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/geth/main.go
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2015-05-27 19:43:49 +0800
committerFelix Lange <fjl@twurst.com>2015-05-28 07:09:26 +0800
commit651030c98d0173db272aaee814c99f0a664d992b (patch)
treeaa93109429fdc1c4f7f5d096d2d1fbf1913a3de3 /cmd/geth/main.go
parent62671c93c4672a8853c1193286d59f60e7065bbe (diff)
downloadgo-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar.gz
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar.bz2
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar.lz
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar.xz
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.tar.zst
go-tangerine-651030c98d0173db272aaee814c99f0a664d992b.zip
cmd/geth: move blockchain commands to chaincmd.go
Diffstat (limited to 'cmd/geth/main.go')
-rw-r--r--cmd/geth/main.go153
1 files changed, 7 insertions, 146 deletions
diff --git a/cmd/geth/main.go b/cmd/geth/main.go
index f849063fa..9bf0fe610 100644
--- a/cmd/geth/main.go
+++ b/cmd/geth/main.go
@@ -24,28 +24,23 @@ import (
"fmt"
"io"
"io/ioutil"
+ _ "net/http/pprof"
"os"
"path/filepath"
"runtime"
"strconv"
"strings"
- "time"
"github.com/codegangsta/cli"
"github.com/ethereum/ethash"
"github.com/ethereum/go-ethereum/accounts"
"github.com/ethereum/go-ethereum/cmd/utils"
"github.com/ethereum/go-ethereum/common"
- "github.com/ethereum/go-ethereum/core"
- "github.com/ethereum/go-ethereum/core/state"
- "github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/eth"
"github.com/ethereum/go-ethereum/logger"
- "github.com/ethereum/go-ethereum/logger/glog"
"github.com/mattn/go-colorable"
"github.com/mattn/go-isatty"
)
-import _ "net/http/pprof"
const (
ClientIdentifier = "Geth"
@@ -69,7 +64,12 @@ func init() {
app.Action = run
app.HideVersion = true // we have a command to print the version
app.Commands = []cli.Command{
- blocktestCmd,
+ blocktestCommand,
+ importCommand,
+ exportCommand,
+ upgradedbCommand,
+ removedbCommand,
+ dumpCommand,
{
Action: makedag,
Name: "makedag",
@@ -195,15 +195,6 @@ nodes.
},
},
{
- Action: dump,
- Name: "dump",
- Usage: `dump a specific block from storage`,
- Description: `
-The arguments are interpreted as block numbers or hashes.
-Use "ethereum dump 0" to dump the genesis block.
-`,
- },
- {
Action: console,
Name: "console",
Usage: `Geth Console: interactive JavaScript environment`,
@@ -222,26 +213,6 @@ The JavaScript VM exposes a node admin interface as well as the Ðapp
JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Console
`,
},
- {
- Action: importchain,
- Name: "import",
- Usage: `import a blockchain file`,
- },
- {
- Action: exportchain,
- Name: "export",
- Usage: `export blockchain into file`,
- },
- {
- Action: upgradeDb,
- Name: "upgradedb",
- Usage: "upgrade chainblock database",
- },
- {
- Action: removeDb,
- Name: "removedb",
- Usage: "Remove blockchain and state databases",
- },
}
app.Flags = []cli.Flag{
utils.IdentityFlag,
@@ -508,103 +479,6 @@ func accountImport(ctx *cli.Context) {
fmt.Printf("Address: %x\n", acct)
}
-func importchain(ctx *cli.Context) {
- if len(ctx.Args()) != 1 {
- utils.Fatalf("This command requires an argument.")
- }
- chain, blockDB, stateDB, extraDB := utils.GetChain(ctx)
- start := time.Now()
- if err := utils.ImportChain(chain, ctx.Args().First()); err != nil {
- utils.Fatalf("Import error: %v\n", err)
- }
- flushAll(blockDB, stateDB, extraDB)
- fmt.Printf("Import done in %v", time.Since(start))
-}
-
-func exportchain(ctx *cli.Context) {
- if len(ctx.Args()) != 1 {
- utils.Fatalf("This command requires an argument.")
- }
- chain, _, _, _ := utils.GetChain(ctx)
- start := time.Now()
- if err := utils.ExportChain(chain, ctx.Args().First()); err != nil {
- utils.Fatalf("Export error: %v\n", err)
- }
- fmt.Printf("Export done in %v", time.Since(start))
-}
-
-func removeDb(ctx *cli.Context) {
- confirm, err := utils.PromptConfirm("Remove local databases?")
- if err != nil {
- utils.Fatalf("%v", err)
- }
-
- if confirm {
- fmt.Println("Removing chain and state databases...")
- start := time.Now()
-
- os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain"))
- os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "state"))
-
- fmt.Printf("Removed in %v\n", time.Since(start))
- } else {
- fmt.Println("Operation aborted")
- }
-}
-
-func upgradeDb(ctx *cli.Context) {
- glog.Infoln("Upgrading blockchain database")
-
- chain, blockDB, stateDB, extraDB := utils.GetChain(ctx)
- v, _ := blockDB.Get([]byte("BlockchainVersion"))
- bcVersion := int(common.NewValue(v).Uint())
- if bcVersion == 0 {
- bcVersion = core.BlockChainVersion
- }
-
- // Export the current chain.
- filename := fmt.Sprintf("blockchain_%d_%s.chain", bcVersion, time.Now().Format("20060102_150405"))
- exportFile := filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), filename)
- if err := utils.ExportChain(chain, exportFile); err != nil {
- utils.Fatalf("Unable to export chain for reimport %s\n", err)
- }
- flushAll(blockDB, stateDB, extraDB)
- os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "blockchain"))
- os.RemoveAll(filepath.Join(ctx.GlobalString(utils.DataDirFlag.Name), "state"))
-
- // Import the chain file.
- chain, blockDB, stateDB, extraDB = utils.GetChain(ctx)
- blockDB.Put([]byte("BlockchainVersion"), common.NewValue(core.BlockChainVersion).Bytes())
- err := utils.ImportChain(chain, exportFile)
- flushAll(blockDB, stateDB, extraDB)
- if err != nil {
- utils.Fatalf("Import error %v (a backup is made in %s, use the import command to import it)\n", err, exportFile)
- } else {
- os.Remove(exportFile)
- glog.Infoln("Import finished")
- }
-}
-
-func dump(ctx *cli.Context) {
- chain, _, stateDB, _ := utils.GetChain(ctx)
- for _, arg := range ctx.Args() {
- var block *types.Block
- if hashish(arg) {
- block = chain.GetBlock(common.HexToHash(arg))
- } else {
- num, _ := strconv.Atoi(arg)
- block = chain.GetBlockByNumber(uint64(num))
- }
- if block == nil {
- fmt.Println("{}")
- utils.Fatalf("block not found")
- } else {
- state := state.New(block.Root(), stateDB)
- fmt.Printf("%s\n", state.Dump())
- }
- }
-}
-
func makedag(ctx *cli.Context) {
args := ctx.Args()
wrongArgs := func() {
@@ -647,16 +521,3 @@ func version(c *cli.Context) {
fmt.Printf("GOPATH=%s\n", os.Getenv("GOPATH"))
fmt.Printf("GOROOT=%s\n", runtime.GOROOT())
}
-
-// hashish returns true for strings that look like hashes.
-func hashish(x string) bool {
- _, err := strconv.Atoi(x)
- return err != nil
-}
-
-func flushAll(dbs ...common.Database) {
- for _, db := range dbs {
- db.Flush()
- db.Close()
- }
-}