cosmos-sdk/x/ibc/commands/helpers.go

62 lines
1.2 KiB
Go

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()
}