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"
|
"github.com/cosmos/cosmos-sdk/version"
|
||||||
authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands"
|
authcmd "github.com/cosmos/cosmos-sdk/x/auth/commands"
|
||||||
bankcmd "github.com/cosmos/cosmos-sdk/x/bank/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/app"
|
||||||
"github.com/cosmos/cosmos-sdk/examples/basecoin/types"
|
"github.com/cosmos/cosmos-sdk/examples/basecoin/types"
|
||||||
|
@ -64,6 +65,11 @@ func main() {
|
||||||
client.PostCommands(
|
client.PostCommands(
|
||||||
coolcmd.SetTrendTxCmd(cdc),
|
coolcmd.SetTrendTxCmd(cdc),
|
||||||
)...)
|
)...)
|
||||||
|
basecliCmd.AddCommand(
|
||||||
|
client.PostCommands(
|
||||||
|
ibccmd.IBCTransferCmd(cdc),
|
||||||
|
)...)
|
||||||
|
)
|
||||||
|
|
||||||
// add proxy, version and key info
|
// add proxy, version and key info
|
||||||
basecliCmd.AddCommand(
|
basecliCmd.AddCommand(
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package main
|
zRckage main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"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"
|
"github.com/cosmos/cosmos-sdk/x/ibc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
flagTo = "to"
|
||||||
|
flagAmount = "amount"
|
||||||
|
flagChain = "chain"
|
||||||
|
)
|
||||||
|
|
||||||
func IBCTransferCmd(cdc *wire.Codec) *cobra.Command {
|
func IBCTransferCmd(cdc *wire.Codec) *cobra.Command {
|
||||||
cmdr := sendCommander{cdc}
|
cmdr := sendCommander{cdc}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "send",
|
Use: "send",
|
||||||
RunE: cmdr.runIBCTransfer,
|
RunE: cmdr.runIBCTransfer,
|
||||||
|
@ -33,19 +38,18 @@ type sendCommander struct {
|
||||||
cdc *wire.Codec
|
cdc *wire.Codec
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c sendCommander) runIBCTransfer(cmd *cobra.Command, args []string) error {
|
func (c commander) sendIBCTransfer(cmd *cobra.Command, args []string) error {
|
||||||
address := getAddress()
|
from, err := builder.GetFromAddress()
|
||||||
msg, err := buildMsg(address)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
txBytes, err := buildTx(c.cdc, msg)
|
msg, err := buildMsg(from)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := builder.BroadcastTx(txBytes)
|
res, err := builder.SignBuildBroadcast(msg, c.cdc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -66,15 +70,10 @@ func buildMsg(from sdk.Address) (sdk.Msg, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
to := sdk.Address(bz)
|
to := sdk.Address(bz)
|
||||||
|
|
||||||
return ibc.IBCTransferMsg{
|
msg := ibc.NewIBCPacket(from, to, coins, viper.GetString(client.FlagNode),
|
||||||
IBCPacket: ibc.IBCPacket{
|
viper.GetString(flagChain))
|
||||||
SrcAddr: from,
|
return msg, nil
|
||||||
DestAddr: to,
|
|
||||||
Coins: coins,
|
|
||||||
SrcChain: viper.GetString(client.FlagNode),
|
|
||||||
DestChain: viper.GetString(flagChain),
|
|
||||||
},
|
|
||||||
}, nil
|
|
||||||
}
|
}
|
|
@ -19,6 +19,18 @@ type IBCPacket struct {
|
||||||
DestChain string
|
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
|
// IBCTransferMsg
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue