62 lines
1.2 KiB
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()
|
|
}
|