diff --git a/cmd/basecoin/cmd.go b/cmd/basecoin/cmd.go index e5fb7d2a42..750b44b174 100644 --- a/cmd/basecoin/cmd.go +++ b/cmd/basecoin/cmd.go @@ -15,8 +15,7 @@ var ( Flags: []cli.Flag{ addrFlag, eyesFlag, - eyesDBFlag, - genesisFlag, + dirFlag, inProcTMFlag, chainIDFlag, ibcPluginFlag, diff --git a/cmd/basecoin/flags.go b/cmd/basecoin/flags.go index 7e349933f9..c724d8be48 100644 --- a/cmd/basecoin/flags.go +++ b/cmd/basecoin/flags.go @@ -18,19 +18,13 @@ var ( Usage: "MerkleEyes address, or 'local' for embedded", } - eyesDBFlag = cli.StringFlag{ - Name: "eyes-db", - Value: "merkleeyes.db", - Usage: "MerkleEyes db name for embedded", - } - // TODO: move to config file // eyesCacheSizePtr := flag.Int("eyes-cache-size", 10000, "MerkleEyes db cache size, for embedded") - genesisFlag = cli.StringFlag{ - Name: "genesis", - Value: "", - Usage: "Path to genesis file, if it exists", + dirFlag = cli.StringFlag{ + Name: "dir", + Value: ".", + Usage: "Root directory", } inProcTMFlag = cli.BoolFlag{ diff --git a/cmd/basecoin/ibc.go b/cmd/basecoin/ibc.go index a991e28fd1..a0bab12997 100644 --- a/cmd/basecoin/ibc.go +++ b/cmd/basecoin/ibc.go @@ -110,7 +110,7 @@ func cmdIBCPacketCreateTx(c *cli.Context) error { ibc.IBCTx `json:"unwrap"` }{ibcTx})) - return appTx(c.Parent(), "IBC", data) + return appTx(c.Parent().Parent(), "IBC", data) } func cmdIBCPacketPostTx(c *cli.Context) error { @@ -148,7 +148,7 @@ func cmdIBCPacketPostTx(c *cli.Context) error { ibc.IBCTx `json:"unwrap"` }{ibcTx})) - return appTx(c.Parent(), "IBC", data) + return appTx(c.Parent().Parent(), "IBC", data) } func getIBCSequence(c *cli.Context) (uint64, error) { diff --git a/cmd/basecoin/start.go b/cmd/basecoin/start.go index 687685d12b..4a68a0c175 100644 --- a/cmd/basecoin/start.go +++ b/cmd/basecoin/start.go @@ -2,6 +2,8 @@ package main import ( "errors" + "os" + "path" "github.com/urfave/cli" @@ -30,7 +32,7 @@ func cmdStart(c *cli.Context) error { // Connect to MerkleEyes var eyesCli *eyes.Client if c.String("eyes") == "local" { - eyesCli = eyes.NewLocalClient(c.String("eyes-db"), EyesCacheSize) + eyesCli = eyes.NewLocalClient(path.Join(c.String("dir"), "merkleeyes.db"), EyesCacheSize) } else { var err error eyesCli, err = eyes.NewClient(c.String("eyes")) @@ -51,9 +53,10 @@ func cmdStart(c *cli.Context) error { } - // If genesis file was specified, set key-value options - if c.String("genesis") != "" { - err := basecoinApp.LoadGenesis(c.String("genesis")) + // If genesis file exists, set key-value options + genesisFile := path.Join(c.String("dir"), "genesis.json") + if _, err := os.Stat(genesisFile); err == nil { + err := basecoinApp.LoadGenesis(genesisFile) if err != nil { return errors.New(cmn.Fmt("%+v", err)) } diff --git a/cmd/basecoin/tx.go b/cmd/basecoin/tx.go index 43e5a8e2e2..3057572086 100644 --- a/cmd/basecoin/tx.go +++ b/cmd/basecoin/tx.go @@ -59,7 +59,7 @@ func cmdSendTx(c *cli.Context) error { fmt.Println(string(wire.JSONBytes(tx))) // broadcast the transaction to tendermint - if err := broadcastTx(c, tx); err != nil { + if _, err := broadcastTx(c, tx); err != nil { return err } return nil @@ -104,7 +104,7 @@ func appTx(c *cli.Context, name string, data []byte) error { fmt.Println("Signed AppTx:") fmt.Println(string(wire.JSONBytes(tx))) - if err := broadcastTx(c, tx); err != nil { + if _, err := broadcastTx(c, tx); err != nil { return err } @@ -134,7 +134,7 @@ func cmdCounterTx(c *cli.Context) error { } // broadcast the transaction to tendermint -func broadcastTx(c *cli.Context, tx types.Tx) error { +func broadcastTx(c *cli.Context, tx types.Tx) ([]byte, error) { tmResult := new(ctypes.TMResult) tmAddr := c.String("node") clientURI := client.NewClientURI(tmAddr) @@ -144,15 +144,16 @@ func broadcastTx(c *cli.Context, tx types.Tx) error { txBytes := []byte(wire.BinaryBytes(struct { types.Tx `json:"unwrap"` }{tx})) - _, err := clientURI.Call("broadcast_tx_sync", map[string]interface{}{"tx": txBytes}, tmResult) + _, err := clientURI.Call("broadcast_tx_commit", map[string]interface{}{"tx": txBytes}, tmResult) if err != nil { - return errors.New(cmn.Fmt("Error on broadcast tx: %v", err)) + return nil, errors.New(cmn.Fmt("Error on broadcast tx: %v", err)) } - res := (*tmResult).(*ctypes.ResultBroadcastTx) - if !res.Code.IsOK() { - return errors.New(cmn.Fmt("BroadcastTxSync got non-zero exit code: %v. %X; %s", res.Code, res.Data, res.Log)) + res := (*tmResult).(*ctypes.ResultBroadcastTxCommit) + if !res.DeliverTx.Code.IsOK() { + r := res.DeliverTx + return nil, errors.New(cmn.Fmt("BroadcastTxCommit got non-zero exit code: %v. %X; %s", r.Code, r.Data, r.Log)) } - return nil + return res.DeliverTx.Data, nil } // if the sequence flag is set, return it;