wormchain: remove redundant guardian key arg in register-account-as-guardian msg handler

This commit is contained in:
Nikhil Suri 2022-12-20 17:51:13 +00:00 committed by Conor Patrick
parent acc3ec14d8
commit 79d3013336
5 changed files with 47 additions and 126 deletions

View File

@ -3,7 +3,6 @@ package wormhole_foundation.wormchain.wormhole;
import "gogoproto/gogo.proto";
// this line is used by starport scaffolding # proto/tx/import
import "wormhole/guardian_key.proto";
option go_package = "github.com/wormhole-foundation/wormchain/x/wormhole/types";
@ -30,7 +29,6 @@ message MsgExecuteGovernanceVAAResponse {
message MsgRegisterAccountAsGuardian {
string signer = 1;
GuardianKey guardianPubkey = 2;
bytes signature = 3;
}

View File

@ -5,7 +5,6 @@ import (
"strconv"
"encoding/hex"
"encoding/json"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
@ -18,16 +17,11 @@ var _ = strconv.Itoa(0)
func CmdRegisterAccountAsGuardian() *cobra.Command {
cmd := &cobra.Command{
Use: "register-account-as-guardian [guardian-pubkey] [signature]",
Use: "register-account-as-guardian [signature]",
Short: "Register a guardian public key with a wormhole chain address.",
Args: cobra.ExactArgs(2),
Args: cobra.ExactArgs(1),
RunE: func(cmd *cobra.Command, args []string) (err error) {
argGuardianPubkey := new(types.GuardianKey)
err = json.Unmarshal([]byte(args[0]), argGuardianPubkey)
if err != nil {
return err
}
argSignature, err := hex.DecodeString(args[1])
argSignature, err := hex.DecodeString(args[0])
if err != nil {
return fmt.Errorf("malformed signature: %w", err)
}
@ -39,7 +33,6 @@ func CmdRegisterAccountAsGuardian() *cobra.Command {
msg := types.NewMsgRegisterAccountAsGuardian(
clientCtx.GetFromAddress().String(),
argGuardianPubkey,
argSignature,
)
if err := msg.ValidateBasic(); err != nil {

View File

@ -34,13 +34,7 @@ func (k msgServer) RegisterAccountAsGuardian(goCtx context.Context, msg *types.M
// hash the public key, and take the last 20 bytes of the hash
// (according to
// https://ethereum.org/en/developers/docs/accounts/#account-creation)
guardianKeyAddrFromSignature := common.BytesToAddress(crypto.Keccak256(guardianKey[1:])[12:])
guardianKeyAddr := common.BytesToAddress(msg.GuardianPubkey.Key)
// check the recovered guardian key matches the one in the message
if guardianKeyAddrFromSignature != guardianKeyAddr {
return nil, types.ErrGuardianSignatureMismatch
}
guardianKeyAddr := common.BytesToAddress(crypto.Keccak256(guardianKey[1:])[12:])
// next we check if this guardian key is in the most recent guardian set.
// we don't allow registration of arbitrary public keys, since that would

View File

@ -9,11 +9,10 @@ const TypeMsgRegisterAccountAsGuardian = "register_account_as_guardian"
var _ sdk.Msg = &MsgRegisterAccountAsGuardian{}
func NewMsgRegisterAccountAsGuardian(signer string, guardianPubkey *GuardianKey, signature []byte) *MsgRegisterAccountAsGuardian {
func NewMsgRegisterAccountAsGuardian(signer string, signature []byte) *MsgRegisterAccountAsGuardian {
return &MsgRegisterAccountAsGuardian{
Signer: signer,
GuardianPubkey: guardianPubkey,
Signature: signature,
Signer: signer,
Signature: signature,
}
}

View File

@ -117,9 +117,8 @@ func (m *MsgExecuteGovernanceVAAResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_MsgExecuteGovernanceVAAResponse proto.InternalMessageInfo
type MsgRegisterAccountAsGuardian struct {
Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"`
GuardianPubkey *GuardianKey `protobuf:"bytes,2,opt,name=guardianPubkey,proto3" json:"guardianPubkey,omitempty"`
Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"`
Signature []byte `protobuf:"bytes,3,opt,name=signature,proto3" json:"signature,omitempty"`
}
func (m *MsgRegisterAccountAsGuardian) Reset() { *m = MsgRegisterAccountAsGuardian{} }
@ -162,13 +161,6 @@ func (m *MsgRegisterAccountAsGuardian) GetSigner() string {
return ""
}
func (m *MsgRegisterAccountAsGuardian) GetGuardianPubkey() *GuardianKey {
if m != nil {
return m.GuardianPubkey
}
return nil
}
func (m *MsgRegisterAccountAsGuardian) GetSignature() []byte {
if m != nil {
return m.Signature
@ -471,45 +463,42 @@ func init() {
func init() { proto.RegisterFile("wormhole/tx.proto", fileDescriptor_55f7aa067b0c517b) }
var fileDescriptor_55f7aa067b0c517b = []byte{
// 594 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x95, 0x51, 0x6b, 0xd3, 0x5e,
0x18, 0xc6, 0x77, 0xfe, 0xed, 0x3a, 0xf6, 0xfe, 0xcb, 0x98, 0xb1, 0xcc, 0x18, 0x47, 0x3a, 0xa3,
0x8c, 0xdd, 0xd8, 0xc0, 0x26, 0x82, 0x28, 0x4a, 0xbb, 0x69, 0x29, 0x1a, 0x91, 0x14, 0x14, 0xf4,
0xa2, 0x9c, 0x26, 0xc7, 0xd3, 0xb0, 0x36, 0xa7, 0xe4, 0x9c, 0x6c, 0xcd, 0x95, 0x1f, 0x41, 0xbf,
0x80, 0xe0, 0x37, 0x10, 0xbf, 0x85, 0x97, 0xbb, 0xf4, 0x6a, 0x48, 0xfb, 0x31, 0xbc, 0x91, 0x93,
0x34, 0x69, 0x91, 0x46, 0x56, 0xe7, 0xdd, 0x79, 0xcf, 0xc9, 0xfb, 0x7b, 0x9e, 0x27, 0xe7, 0x6d,
0x03, 0x57, 0x4e, 0x59, 0x30, 0xe8, 0xb1, 0x3e, 0x31, 0xc5, 0xa8, 0x36, 0x0c, 0x98, 0x60, 0xca,
0x6e, 0xba, 0xd5, 0x79, 0xc7, 0x42, 0xdf, 0xc5, 0xc2, 0x63, 0x7e, 0x4d, 0xee, 0x39, 0x3d, 0xec,
0x25, 0x2b, 0x79, 0xaa, 0x55, 0x28, 0xa3, 0x2c, 0x6e, 0x31, 0xe5, 0x2a, 0xe9, 0xd6, 0x6e, 0x64,
0x40, 0x1a, 0xe2, 0xc0, 0xf5, 0xb0, 0xdf, 0x39, 0x26, 0x51, 0x72, 0x68, 0x1c, 0xc2, 0x35, 0x8b,
0xd3, 0x27, 0x23, 0xe2, 0x84, 0x82, 0x34, 0xd9, 0x09, 0x09, 0x7c, 0xec, 0x3b, 0xe4, 0x55, 0xbd,
0xae, 0x6c, 0x42, 0xe1, 0x04, 0x63, 0x15, 0xed, 0xa0, 0xbd, 0xb2, 0x2d, 0x97, 0xca, 0x16, 0x94,
0xb8, 0x47, 0x7d, 0x12, 0xa8, 0xff, 0xed, 0xa0, 0xbd, 0x75, 0x7b, 0x5a, 0x19, 0x37, 0xa1, 0x9a,
0x03, 0xb1, 0x09, 0x1f, 0x32, 0x9f, 0x13, 0xe3, 0x2b, 0x82, 0x6d, 0x8b, 0x53, 0x9b, 0x50, 0x8f,
0x0b, 0x12, 0xd4, 0x1d, 0x87, 0x85, 0xbe, 0xa8, 0xf3, 0xe6, 0xd4, 0xd2, 0x1c, 0x1b, 0xcd, 0xb3,
0x95, 0xb7, 0xb0, 0x91, 0xda, 0x7e, 0x19, 0x76, 0x8f, 0x49, 0x14, 0x6b, 0xff, 0xbf, 0x7f, 0x50,
0xbb, 0xd8, 0x4b, 0xa9, 0xa5, 0x0a, 0xcf, 0x48, 0x64, 0xff, 0x86, 0x52, 0xb6, 0x61, 0x5d, 0xca,
0x60, 0x11, 0x06, 0x44, 0x2d, 0xc4, 0x41, 0x67, 0x1b, 0xc6, 0x2e, 0xdc, 0xfe, 0x93, 0xe5, 0x2c,
0xdb, 0x10, 0xca, 0x16, 0xa7, 0x6d, 0xc1, 0x02, 0x72, 0xc8, 0x5c, 0x92, 0x1b, 0xe5, 0x1e, 0x6c,
0x9c, 0x62, 0x3e, 0xe8, 0x74, 0x23, 0x41, 0x3a, 0x0e, 0x73, 0x49, 0x1c, 0xa5, 0xdc, 0xd8, 0x1c,
0x9f, 0x57, 0xcb, 0xaf, 0xeb, 0x6d, 0xab, 0x11, 0x89, 0x98, 0x60, 0x97, 0xe5, 0x73, 0x69, 0x95,
0x5e, 0x44, 0x21, 0xbb, 0x08, 0xe3, 0x01, 0x54, 0xe6, 0x15, 0x53, 0x27, 0xca, 0x2d, 0x58, 0x93,
0xdc, 0x8e, 0xe7, 0xc6, 0xd2, 0xc5, 0x06, 0x8c, 0xcf, 0xab, 0x25, 0xf9, 0x48, 0xeb, 0xc8, 0x2e,
0xc9, 0xa3, 0x96, 0x6b, 0x7c, 0x40, 0xb0, 0x65, 0x71, 0xda, 0xf2, 0xb9, 0xc0, 0xbe, 0xf0, 0xb0,
0x54, 0xf1, 0x45, 0x80, 0x1d, 0x91, 0xeb, 0x7c, 0x8e, 0x5b, 0xc8, 0xe3, 0x2a, 0x15, 0x58, 0xed,
0xe3, 0x2e, 0xe9, 0xab, 0xc5, 0xb8, 0x37, 0x29, 0xa4, 0xf9, 0x01, 0xa7, 0xea, 0x6a, 0x62, 0x7e,
0xc0, 0x69, 0x1a, 0xa7, 0x34, 0x8b, 0xf3, 0x02, 0xf4, 0xc5, 0x86, 0xb2, 0x60, 0x2a, 0xac, 0x61,
0xd7, 0x0d, 0x08, 0xe7, 0x53, 0x67, 0x69, 0xa9, 0x28, 0x50, 0x74, 0xb1, 0xc0, 0xc9, 0xab, 0xb4,
0xe3, 0xf5, 0xfe, 0xcf, 0x22, 0x14, 0x2c, 0x4e, 0x95, 0xcf, 0x08, 0x2a, 0x0b, 0x47, 0xfb, 0xf1,
0x45, 0x87, 0x27, 0x67, 0xac, 0xb5, 0xe6, 0x25, 0x01, 0x59, 0xb0, 0x2f, 0x08, 0xae, 0xe7, 0xff,
0x28, 0x8e, 0x96, 0x90, 0xc9, 0xa5, 0x68, 0xcf, 0xff, 0x05, 0x25, 0x73, 0xfc, 0x1e, 0xd6, 0x67,
0xa3, 0x7e, 0x77, 0x09, 0x74, 0xd6, 0xa5, 0x3d, 0xfc, 0x9b, 0xae, 0xcc, 0xc0, 0x27, 0x04, 0x57,
0x17, 0x0d, 0xef, 0xa3, 0x25, 0xa8, 0x0b, 0xfa, 0xb5, 0xa7, 0x97, 0xeb, 0x4f, 0xfd, 0x35, 0xda,
0xdf, 0xc6, 0x3a, 0x3a, 0x1b, 0xeb, 0xe8, 0xc7, 0x58, 0x47, 0x1f, 0x27, 0xfa, 0xca, 0xd9, 0x44,
0x5f, 0xf9, 0x3e, 0xd1, 0x57, 0xde, 0xdc, 0xa7, 0x9e, 0xe8, 0x85, 0xdd, 0x9a, 0xc3, 0x06, 0x66,
0x4a, 0xbb, 0x33, 0xd3, 0x32, 0x33, 0x2d, 0x73, 0x64, 0xce, 0xbe, 0x02, 0xd1, 0x90, 0xf0, 0x6e,
0x29, 0xfe, 0xbb, 0x3e, 0xf8, 0x15, 0x00, 0x00, 0xff, 0xff, 0x58, 0x04, 0x5c, 0x24, 0x1e, 0x06,
0x00, 0x00,
// 550 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x94, 0xc1, 0x8a, 0xd3, 0x40,
0x18, 0xc7, 0x3b, 0xb6, 0xdb, 0xa5, 0x1f, 0x45, 0xd6, 0x58, 0xd6, 0x58, 0x96, 0x74, 0x8d, 0xb2,
0xec, 0xc5, 0x06, 0x54, 0x04, 0x51, 0x94, 0x76, 0x57, 0x4b, 0xc1, 0x78, 0x48, 0x45, 0xc1, 0x4b,
0x99, 0x26, 0xe3, 0x34, 0xd0, 0xce, 0x94, 0x99, 0xc9, 0x6e, 0x7b, 0xf2, 0x11, 0xf4, 0x05, 0x04,
0xdf, 0xc0, 0xd7, 0xf0, 0xb8, 0x47, 0x4f, 0x8b, 0xb4, 0x8f, 0xe1, 0x45, 0x26, 0xdd, 0x24, 0x3d,
0x34, 0x62, 0xdd, 0xbd, 0x7d, 0xdf, 0x24, 0xff, 0xdf, 0xff, 0xff, 0x0d, 0x1f, 0x03, 0x37, 0x4e,
0xb9, 0x18, 0x0f, 0xf9, 0x88, 0x38, 0x6a, 0xda, 0x9c, 0x08, 0xae, 0xb8, 0x71, 0x90, 0x1c, 0xf5,
0x3f, 0xf2, 0x88, 0x05, 0x58, 0x85, 0x9c, 0x35, 0xf5, 0x99, 0x3f, 0xc4, 0xe1, 0xb2, 0xd2, 0x5f,
0xeb, 0x35, 0xca, 0x29, 0x8f, 0x25, 0x8e, 0xae, 0x96, 0x6a, 0xfb, 0x08, 0x6e, 0xb9, 0x92, 0xbe,
0x9c, 0x12, 0x3f, 0x52, 0xa4, 0xc3, 0x4f, 0x88, 0x60, 0x98, 0xf9, 0xe4, 0x5d, 0xab, 0x65, 0xec,
0x40, 0xf1, 0x04, 0x63, 0x13, 0xed, 0xa3, 0xc3, 0xaa, 0xa7, 0x4b, 0x63, 0x17, 0xca, 0x32, 0xa4,
0x8c, 0x08, 0xf3, 0xda, 0x3e, 0x3a, 0xac, 0x78, 0x17, 0x9d, 0x7d, 0x07, 0x1a, 0x39, 0x10, 0x8f,
0xc8, 0x09, 0x67, 0x92, 0xd8, 0x6f, 0x61, 0xcf, 0x95, 0xd4, 0x23, 0x34, 0x94, 0x8a, 0x88, 0x96,
0xef, 0xf3, 0x88, 0xa9, 0x96, 0xec, 0x44, 0x58, 0x04, 0x21, 0x66, 0x2b, 0x68, 0xb4, 0x8a, 0x36,
0xf6, 0xa0, 0xa2, 0x2b, 0xac, 0x22, 0x41, 0xcc, 0x62, 0x1c, 0x25, 0x3b, 0xb0, 0x0f, 0xe0, 0xde,
0xdf, 0xa8, 0xa9, 0xfb, 0x04, 0xaa, 0xae, 0xa4, 0x3d, 0xc5, 0x05, 0x39, 0xe2, 0x01, 0xc9, 0x75,
0x7b, 0x0c, 0xd7, 0x4f, 0xb1, 0x1c, 0xf7, 0x07, 0x33, 0x45, 0xfa, 0x3e, 0x0f, 0x48, 0x3c, 0x68,
0xb5, 0xbd, 0x33, 0x3f, 0x6f, 0x54, 0xdf, 0xb7, 0x7a, 0x6e, 0x7b, 0xa6, 0x62, 0x82, 0x57, 0xd5,
0xff, 0x25, 0x5d, 0x72, 0x55, 0xc5, 0xf4, 0xaa, 0xec, 0xa7, 0x50, 0x5b, 0x75, 0x4c, 0x92, 0x18,
0x77, 0x61, 0x5b, 0x73, 0xfb, 0x61, 0x10, 0x5b, 0x97, 0xda, 0x30, 0x3f, 0x6f, 0x94, 0xf5, 0x2f,
0xdd, 0x63, 0xaf, 0xac, 0x3f, 0x75, 0x03, 0xfb, 0x33, 0x82, 0x5d, 0x57, 0xd2, 0x2e, 0x93, 0x0a,
0x33, 0x15, 0x62, 0xed, 0xc2, 0x94, 0xc0, 0xbe, 0xca, 0x4d, 0xbe, 0xc2, 0x2d, 0xe6, 0x71, 0x8d,
0x1a, 0x6c, 0x8d, 0xf0, 0x80, 0x8c, 0xcc, 0x52, 0xac, 0x5d, 0x36, 0x3a, 0xfc, 0x58, 0x52, 0x73,
0x6b, 0x19, 0x7e, 0x2c, 0x69, 0x32, 0x4e, 0x39, 0x1b, 0xe7, 0x0d, 0x58, 0xeb, 0x03, 0xa5, 0x83,
0x99, 0xb0, 0x8d, 0x83, 0x40, 0x10, 0x29, 0x2f, 0x92, 0x25, 0xad, 0x61, 0x40, 0x29, 0xc0, 0x0a,
0x2f, 0xaf, 0xd2, 0x8b, 0xeb, 0x07, 0xbf, 0x4b, 0x50, 0x74, 0x25, 0x35, 0xbe, 0x21, 0xa8, 0xad,
0x5d, 0xbe, 0x17, 0xcd, 0x7f, 0x5b, 0xeb, 0x66, 0xce, 0xe2, 0xd5, 0x3b, 0x97, 0x04, 0xa4, 0x83,
0x7d, 0x47, 0x70, 0x3b, 0x7f, 0x6f, 0x8f, 0x37, 0xb0, 0xc9, 0xa5, 0xd4, 0x5f, 0x5f, 0x05, 0x25,
0x4d, 0xfc, 0x09, 0x2a, 0xd9, 0xaa, 0x3f, 0xda, 0x00, 0x9d, 0xaa, 0xea, 0xcf, 0xfe, 0x47, 0x95,
0x06, 0xf8, 0x8a, 0xe0, 0xe6, 0xba, 0xe5, 0x7d, 0xbe, 0x01, 0x75, 0x8d, 0xbe, 0xfe, 0xea, 0x72,
0xfa, 0x24, 0x5f, 0xbb, 0xf7, 0x63, 0x6e, 0xa1, 0xb3, 0xb9, 0x85, 0x7e, 0xcd, 0x2d, 0xf4, 0x65,
0x61, 0x15, 0xce, 0x16, 0x56, 0xe1, 0xe7, 0xc2, 0x2a, 0x7c, 0x78, 0x42, 0x43, 0x35, 0x8c, 0x06,
0x4d, 0x9f, 0x8f, 0x9d, 0x84, 0x76, 0x3f, 0xf3, 0x72, 0x52, 0x2f, 0x67, 0xea, 0x64, 0x4f, 0xf1,
0x6c, 0x42, 0xe4, 0xa0, 0x1c, 0x3f, 0xa8, 0x0f, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xbb, 0x4b,
0xa3, 0xe1, 0xa3, 0x05, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -528,7 +517,7 @@ type MsgClient interface {
RegisterAccountAsGuardian(ctx context.Context, in *MsgRegisterAccountAsGuardian, opts ...grpc.CallOption) (*MsgRegisterAccountAsGuardianResponse, error)
// StoreCode to submit Wasm code to the system
StoreCode(ctx context.Context, in *MsgStoreCode, opts ...grpc.CallOption) (*MsgStoreCodeResponse, error)
// Instantiate creates a new smart contract instance for the given code id.
// Instantiate creates a new smart contract instance for the given code id.
InstantiateContract(ctx context.Context, in *MsgInstantiateContract, opts ...grpc.CallOption) (*MsgInstantiateContractResponse, error)
}
@ -582,7 +571,7 @@ type MsgServer interface {
RegisterAccountAsGuardian(context.Context, *MsgRegisterAccountAsGuardian) (*MsgRegisterAccountAsGuardianResponse, error)
// StoreCode to submit Wasm code to the system
StoreCode(context.Context, *MsgStoreCode) (*MsgStoreCodeResponse, error)
// Instantiate creates a new smart contract instance for the given code id.
// Instantiate creates a new smart contract instance for the given code id.
InstantiateContract(context.Context, *MsgInstantiateContract) (*MsgInstantiateContractResponse, error)
}
@ -791,18 +780,6 @@ func (m *MsgRegisterAccountAsGuardian) MarshalToSizedBuffer(dAtA []byte) (int, e
i--
dAtA[i] = 0x1a
}
if m.GuardianPubkey != nil {
{
size, err := m.GuardianPubkey.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTx(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x12
}
if len(m.Signer) > 0 {
i -= len(m.Signer)
copy(dAtA[i:], m.Signer)
@ -1048,10 +1025,6 @@ func (m *MsgRegisterAccountAsGuardian) Size() (n int) {
if l > 0 {
n += 1 + l + sovTx(uint64(l))
}
if m.GuardianPubkey != nil {
l = m.GuardianPubkey.Size()
n += 1 + l + sovTx(uint64(l))
}
l = len(m.Signature)
if l > 0 {
n += 1 + l + sovTx(uint64(l))
@ -1379,42 +1352,6 @@ func (m *MsgRegisterAccountAsGuardian) Unmarshal(dAtA []byte) error {
}
m.Signer = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field GuardianPubkey", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTx
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTx
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTx
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.GuardianPubkey == nil {
m.GuardianPubkey = &GuardianKey{}
}
if err := m.GuardianPubkey.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Signature", wireType)