mirror of https://github.com/certusone/santa.git
62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/cosmos/cosmos-sdk/codec"
|
|
rpcclient "github.com/tendermint/tendermint/rpc/client"
|
|
|
|
sdk "github.com/cosmos/cosmos-sdk/types"
|
|
"github.com/cosmos/cosmos-sdk/x/auth"
|
|
)
|
|
|
|
// QueryAccount query account info
|
|
func (app SantaApp) QueryAccount(cdc *codec.Codec, accAddr sdk.AccAddress) (acc auth.Account, err error) {
|
|
bz, err := cdc.MarshalJSON(auth.NewQueryAccountParams(accAddr))
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
result, err := rpcclient.NewHTTP(app.Node, "/websocket").ABCIQueryWithOptions(
|
|
"custom/acc/account",
|
|
bz,
|
|
rpcclient.ABCIQueryOptions{},
|
|
)
|
|
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if !result.Response.IsOK() {
|
|
err = errors.New(result.Response.Log)
|
|
return
|
|
}
|
|
|
|
if err = cdc.UnmarshalJSON(result.Response.Value, &acc); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// BroadcastTx broadcast tx
|
|
func (app SantaApp) BroadcastTx(tx auth.StdTx) (txHash string, err error) {
|
|
txBytes, err := cdc.MarshalBinaryLengthPrefixed(tx)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
result, err := rpcclient.NewHTTP(app.Node, "/websocket").BroadcastTxSync(txBytes)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
if result.Code != 0 {
|
|
err = errors.New(result.Log)
|
|
return
|
|
}
|
|
|
|
txHash = result.Hash.String()
|
|
return
|
|
}
|