From 8c290c3a6b60b8ea8917849d3a48f845f64669d5 Mon Sep 17 00:00:00 2001 From: mossid Date: Thu, 15 Mar 2018 18:01:33 +0100 Subject: [PATCH] make relay.go compiled --- examples/basecoin/cmd/basecli/main.go | 1 - examples/basecoin/cmd/basecoind/main.go | 2 +- x/ibc/commands/ibctx.go | 11 +++- x/ibc/commands/relay.go | 74 ++++++++----------------- 4 files changed, 31 insertions(+), 57 deletions(-) diff --git a/examples/basecoin/cmd/basecli/main.go b/examples/basecoin/cmd/basecli/main.go index f36c814f77..f7333870bc 100644 --- a/examples/basecoin/cmd/basecli/main.go +++ b/examples/basecoin/cmd/basecli/main.go @@ -69,7 +69,6 @@ func main() { client.PostCommands( ibccmd.IBCTransferCmd(cdc), )...) - ) // add proxy, version and key info basecliCmd.AddCommand( diff --git a/examples/basecoin/cmd/basecoind/main.go b/examples/basecoin/cmd/basecoind/main.go index 5c92a380b4..44ea00fbba 100644 --- a/examples/basecoin/cmd/basecoind/main.go +++ b/examples/basecoin/cmd/basecoind/main.go @@ -1,4 +1,4 @@ -zRckage main +package main import ( "encoding/json" diff --git a/x/ibc/commands/ibctx.go b/x/ibc/commands/ibctx.go index 287e9e67e2..aa51e81019 100644 --- a/x/ibc/commands/ibctx.go +++ b/x/ibc/commands/ibctx.go @@ -26,7 +26,7 @@ func IBCTransferCmd(cdc *wire.Codec) *cobra.Command { cmdr := sendCommander{cdc} cmd := &cobra.Command{ Use: "send", - RunE: cmdr.runIBCTransfer, + RunE: cmdr.sendIBCTransfer, } cmd.Flags().String(flagTo, "", "Address to send coins") cmd.Flags().String(flagAmount, "", "Amount of coins to send") @@ -38,7 +38,7 @@ type sendCommander struct { cdc *wire.Codec } -func (c commander) sendIBCTransfer(cmd *cobra.Command, args []string) error { +func (c sendCommander) sendIBCTransfer(cmd *cobra.Command, args []string) error { from, err := builder.GetFromAddress() if err != nil { return err @@ -73,7 +73,12 @@ func buildMsg(from sdk.Address) (sdk.Msg, error) { to := sdk.Address(bz) - msg := ibc.NewIBCPacket(from, to, coins, viper.GetString(client.FlagNode), + packet := ibc.NewIBCPacket(from, to, coins, viper.GetString(client.FlagNode), viper.GetString(flagChain)) + + msg := ibc.IBCTransferMsg{ + IBCPacket: packet, + } + return msg, nil } diff --git a/x/ibc/commands/relay.go b/x/ibc/commands/relay.go index 5d1cf76ca4..865523067b 100644 --- a/x/ibc/commands/relay.go +++ b/x/ibc/commands/relay.go @@ -10,26 +10,35 @@ import ( "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/builder" + sdk "github.com/cosmos/cosmos-sdk/types" wire "github.com/cosmos/cosmos-sdk/wire" "github.com/cosmos/cosmos-sdk/x/ibc" ) +const ( + flagChain1 = "chain1" + flagChain2 = "chain2" +) + func IBCRelayCmd(cdc *wire.Codec) *cobra.Command { - cmdr := relayCommander{cdc, "ibc"} + cmdr := relayCommander{ + cdc: cdc, + ibcStore: "ibc", + } cmd := &cobra.Command{ Use: "relay", Run: cmdr.runIBCRelay, } - cmd.Flags().String(flagTo, "", "Address to send coins") - cmd.Flags().String(flagAmount, "", "Amount of coins to send") - cmd.Flags().Int64(flagSequence, 0, "Sequence number to sign the tx") + cmd.Flags().String(flagChain1, "", "Chain ID to relay IBC packets") + cmd.Flags().String(flagChain2, "", "Chain ID to relay IBC packets") return cmd } type relayCommander struct { cdc *wire.Codec + address sdk.Address ibcStore string } @@ -37,6 +46,12 @@ func (c relayCommander) runIBCRelay(cmd *cobra.Command, args []string) { chain1 := viper.GetString(flagChain1) chain2 := viper.GetString(flagChain2) + address, err := builder.GetFromAddress() + if err != nil { + panic(err) + } + c.address = address + go c.loop(chain1, chain2) go c.loop(chain2, chain1) } @@ -64,13 +79,13 @@ func (c relayCommander) refine(bz []byte, sequence int64) []byte { if err := c.cdc.UnmarshalBinary(bz, &packet); err != nil { panic(err) } - address := getAddress() + msg := ibc.IBCReceiveMsg{ IBCPacket: packet, - Relayer: address, + Relayer: c.address, Sequence: sequence, } - res, err := buildTx(c.cdc, msg) + res, err := builder.SignAndBuild(msg, c.cdc) if err != nil { panic(err) } @@ -124,48 +139,3 @@ OUTER: processed = egressLength } } - -/* -func (c relayCommander) buildTx() ([]byte, error) { - keybase, err := keys.GetKeyBase() - if err != nil { - return nil, err - } - - name := viper.GetString(client.FlagName) - info, err := keybase.Get(name) - if err != nil { - return nil, fmt.Errorf("No key for: %s, name") - } - from := info.PubKey.Address() - - msg, err := buildMsg(from) - if err != nil { - return nil, err - } - - bz := msg.GetSignBytes() - buf := client.BufferStdin() - prompt := fmt.Sprintf("Password to sign with '%s':", name) - passphrase, err := client.GetPassword(prompt, buf) - if err != nil { - return nil, err - } - sig, pubkey, err := keybase.Sign(name, passphrase, bz) - if err != nil { - return nil, err - } - sigs := []sdk.StdSignature{{ - PubKey: pubkey, - Signature: sig, - Sequence: viper.GetInt64(flagSequence), - }} - - tx := sdk.NewStdTx(msg, sigs) - - txBytes, err := c.cdc.MarshalBinary(tx) - if err != nil { - return nil, err - } - return txBytes, nil -}*/