Integrate IBC more and more into basecli
This commit is contained in:
parent
8a99041512
commit
1447bcf139
|
@ -17,6 +17,7 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/version"
|
||||
authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands"
|
||||
bankcmd "github.com/cosmos/cosmos-sdk/x/bank/commands"
|
||||
ibccmd "github.com/cosmos/cosmos-sdk/x/ibc/commands"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/examples/basecoin/app"
|
||||
"github.com/cosmos/cosmos-sdk/examples/basecoin/types"
|
||||
|
@ -64,6 +65,11 @@ func main() {
|
|||
client.PostCommands(
|
||||
coolcmd.SetTrendTxCmd(cdc),
|
||||
)...)
|
||||
basecliCmd.AddCommand(
|
||||
client.PostCommands(
|
||||
ibccmd.IBCTransferCmd(cdc),
|
||||
)...)
|
||||
)
|
||||
|
||||
// add proxy, version and key info
|
||||
basecliCmd.AddCommand(
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
zRckage main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
|
|
|
@ -1,10 +0,0 @@
|
|||
package commands
|
||||
|
||||
const (
|
||||
flagTo = "to"
|
||||
flagAmount = "amount"
|
||||
flagChain = "chain"
|
||||
flagChain1 = "chain1"
|
||||
flagChain2 = "chain2"
|
||||
flagSequence = "sequence"
|
||||
)
|
|
@ -1,61 +0,0 @@
|
|||
package commands
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/client"
|
||||
"github.com/cosmos/cosmos-sdk/client/keys"
|
||||
sdk "github.com/cosmos/cosmos-sdk/types"
|
||||
wire "github.com/cosmos/cosmos-sdk/wire"
|
||||
)
|
||||
|
||||
func buildTx(cdc *wire.Codec, msg sdk.Msg) ([]byte, error) {
|
||||
keybase, err := keys.GetKeyBase()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
name := viper.GetString(client.FlagName)
|
||||
|
||||
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 := cdc.MarshalBinary(tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return txBytes, nil
|
||||
}
|
||||
|
||||
func getAddress() []byte {
|
||||
keybase, err := keys.GetKeyBase()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
name := viper.GetString(client.FlagName)
|
||||
info, err := keybase.Get(name)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
return info.Address()
|
||||
}
|
|
@ -16,9 +16,14 @@ import (
|
|||
"github.com/cosmos/cosmos-sdk/x/ibc"
|
||||
)
|
||||
|
||||
const (
|
||||
flagTo = "to"
|
||||
flagAmount = "amount"
|
||||
flagChain = "chain"
|
||||
)
|
||||
|
||||
func IBCTransferCmd(cdc *wire.Codec) *cobra.Command {
|
||||
cmdr := sendCommander{cdc}
|
||||
|
||||
cmd := &cobra.Command{
|
||||
Use: "send",
|
||||
RunE: cmdr.runIBCTransfer,
|
||||
|
@ -33,19 +38,18 @@ type sendCommander struct {
|
|||
cdc *wire.Codec
|
||||
}
|
||||
|
||||
func (c sendCommander) runIBCTransfer(cmd *cobra.Command, args []string) error {
|
||||
address := getAddress()
|
||||
msg, err := buildMsg(address)
|
||||
func (c commander) sendIBCTransfer(cmd *cobra.Command, args []string) error {
|
||||
from, err := builder.GetFromAddress()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
txBytes, err := buildTx(c.cdc, msg)
|
||||
msg, err := buildMsg(from)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
res, err := builder.BroadcastTx(txBytes)
|
||||
res, err := builder.SignBuildBroadcast(msg, c.cdc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -66,15 +70,10 @@ func buildMsg(from sdk.Address) (sdk.Msg, error) {
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
to := sdk.Address(bz)
|
||||
|
||||
return ibc.IBCTransferMsg{
|
||||
IBCPacket: ibc.IBCPacket{
|
||||
SrcAddr: from,
|
||||
DestAddr: to,
|
||||
Coins: coins,
|
||||
SrcChain: viper.GetString(client.FlagNode),
|
||||
DestChain: viper.GetString(flagChain),
|
||||
},
|
||||
}, nil
|
||||
msg := ibc.NewIBCPacket(from, to, coins, viper.GetString(client.FlagNode),
|
||||
viper.GetString(flagChain))
|
||||
return msg, nil
|
||||
}
|
|
@ -19,6 +19,18 @@ type IBCPacket struct {
|
|||
DestChain string
|
||||
}
|
||||
|
||||
func NewIBCPacket(srcAddr sdk.Address, destAddr sdk.Address, coins sdk.Coins,
|
||||
srcChain string, destChain string) IBCPacket {
|
||||
|
||||
return IBCPacket{
|
||||
SrcAddr: srcAddr,
|
||||
DestAddr: destAddr,
|
||||
Coins: coins,
|
||||
SrcChain: srcChain,
|
||||
DestChain: destChain,
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------
|
||||
// IBCTransferMsg
|
||||
|
||||
|
|
Loading…
Reference in New Issue