func (ar AccountRetriever) GetAccountWithHeight(id types.AccountID) (exported.Account, int64, error) {
	bs, err := ModuleCdc.MarshalJSON(NewQueryAccountParams(id))
	if err != nil {
		return nil, 0, err
	}
	res, height, err := ar.querier.QueryWithData(fmt.Sprintf("custom/%s/%s", QuerierRoute, QueryAccount), bs)
	if err != nil {
		return nil, height, err
	}
	var account exported.Account
	if err := ModuleCdc.UnmarshalJSON(res, &account); err != nil {
		return nil, height, err
	}
	return account, height, nil
}
GetAccountWithHeight queries for an account given an address. Returns the
height of the query with the account. An error is returned if the query
or decoding fails.
package types
import (
	fmt "fmt"
	"github.com/KuChainNetwork/kuchain/chain/types"
	"github.com/KuChainNetwork/kuchain/x/account/exported"
)
type NodeQuerier interface {
	QueryWithData(path string, data []byte) ([]byte, int64, error)
}
type AccountRetriever struct {
	querier NodeQuerier
}
func NewAccountRetriever(querier NodeQuerier) AccountRetriever {
	return AccountRetriever{querier: querier}
}
func (ar AccountRetriever) GetAccount(id types.AccountID) (exported.Account, error) {
	account, _, err := ar.GetAccountWithHeight(id)
	return account, err
}