func (msg MsgLinkChainAccount) GetSigners() []sdk.AccAddress {
	signer, _ := sdk.AccAddressFromBech32(msg.Signer)
	return []sdk.AccAddress{signer}
}
GetSigners defines whose signature is required
package types
import (
	"fmt"
	"strings"
	codectypes "github.com/cosmos/cosmos-sdk/codec/types"
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
func NewMsgLinkChainAccount(
	chainAddress AddressData,
	proof Proof,
	chainConfig ChainConfig,
	signer string,
) *MsgLinkChainAccount {
	addressAny, err := codectypes.NewAnyWithValue(chainAddress)
	if err != nil {
		panic("failed to pack public key to any type")
	}
	return &MsgLinkChainAccount{
		ChainAddress: addressAny,
		Proof:        proof,
		ChainConfig:  chainConfig,
		Signer:       signer,
	}
}
func (msg MsgLinkChainAccount) Route() string { return RouterKey }
func (msg MsgLinkChainAccount) Type() string {
	return ActionLinkChainAccount
}
func (msg MsgLinkChainAccount) ValidateBasic() error {
	if msg.ChainAddress == nil {
		return fmt.Errorf("source address cannot be nil")
	}
	if err := msg.Proof.Validate(); err != nil {
		return err
	}
	if err := msg.ChainConfig.Validate(); err != nil {
		return err
	}
	if _, err := sdk.AccAddressFromBech32(msg.Signer); err != nil {
		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid destination address: %s", msg.Signer)
	}
	return nil
}
func (msg MsgLinkChainAccount) GetSignBytes() []byte {
	return sdk.MustSortJSON(AminoCdc.MustMarshalJSON(&msg))
}
func (msg *MsgLinkChainAccount) UnpackInterfaces(unpacker codectypes.AnyUnpacker) error {
	var address AddressData
	if err := unpacker.UnpackAny(msg.ChainAddress, &address); err != nil {
		return err
	}
	if err := msg.Proof.UnpackInterfaces(unpacker); err != nil {
		return err
	}
	return nil
}