diff --git a/config.yml b/config.yml index 6d7a3ec2..7a327269 100644 --- a/config.yml +++ b/config.yml @@ -30,6 +30,9 @@ genesis: app_state: keyregistry: params: {} - key_pairs: - # - mina_key: "SC/6aqoZ19ObLka8NIQVMs1qPim+uD6epPLuQS4x2n4Z" - # cosmos_key: "UdDr3CCO+4HVrBtbzqLTM3P2xAMNCIrPeCTeVfb5sw1y" + user_key_pairs: + # - mina_key: "SC/6aqoZ19ObLka8NIQVMs1qPim+uD6epPLuQS4x2n4Z" + # cosmos_key: "UdDr3CCO+4HVrBtbzqLTM3P2xAMNCIrPeCTeVfb5sw1y" + validator_key_pairs: + # - mina_key: "3IvK1eWmmcfdlIb+T04+ck9Q5bjbqHqiT0ucGJITzyY=" + # cosmos_key: "A8saw69s1DQWvUjseeOtG8hGavmYiInrQ5M1aOPa4QkP" \ No newline at end of file diff --git a/docs/static/openapi.json b/docs/static/openapi.json index 8340f427..63b795a0 100644 --- a/docs/static/openapi.json +++ b/docs/static/openapi.json @@ -1 +1 @@ -{"id":"github.com/node101-io/pulsar-chain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/node101-io/pulsar-chain REST API","title":"HTTP API Console","contact":{"name":"github.com/node101-io/pulsar-chain"},"version":"version not set"},"paths":{"/node101-io/pulsar-chain/keyregistry/v1/get_cosmos_pub_key/{mina_pub_key}":{"get":{"tags":["Query"],"summary":"GetCosmosPubKey Queries a list of GetCosmosPubKey items.","operationId":"GithubComnode101IopulsarChainQuery_GetCosmosPubKey","parameters":[{"type":"string","format":"byte","name":"mina_pub_key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetCosmosPubKeyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/get_mina_pub_key/{cosmos_pub_key}":{"get":{"tags":["Query"],"summary":"GetMinaPubKey Queries a list of GetMinaPubKey items.","operationId":"GithubComnode101IopulsarChainQuery_GetMinaPubKey","parameters":[{"type":"string","format":"byte","name":"cosmos_pub_key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetMinaPubKeyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComnode101IopulsarChainQuery_ParamsMixin7","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pulsar/pulsar/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComnode101IopulsarChainQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsar.pulsar.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"pulsar.pulsar.v1.Params":{"description":"Params defines the parameters for the module.","type":"object"},"pulsar.pulsar.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/pulsar.pulsar.v1.Params"}}},"pulsarchain.keyregistry.v1.Params":{"description":"Params defines the parameters for the module.","type":"object"},"pulsarchain.keyregistry.v1.QueryGetCosmosPubKeyResponse":{"description":"QueryGetCosmosPubKeyResponse defines the QueryGetCosmosPubKeyResponse message.","type":"object","properties":{"cosmos_pub_key":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryGetMinaPubKeyResponse":{"description":"QueryGetMinaPubKeyResponse defines the QueryGetMinaPubKeyResponse message.","type":"object","properties":{"mina_pub_key":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/pulsarchain.keyregistry.v1.Params"}}}},"tags":[{"name":"Query"},{"name":"Msg"}]} \ No newline at end of file +{"id":"github.com/node101-io/pulsar-chain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/node101-io/pulsar-chain REST API","title":"HTTP API Console","contact":{"name":"github.com/node101-io/pulsar-chain"},"version":"version not set"},"paths":{"/node101-io/pulsar-chain/keyregistry/v1/get_user_cosmos_address/{user_mina_address}":{"get":{"tags":["Query"],"summary":"GetUserCosmosAddress Queries a list of GetUserCosmosAddress items.","operationId":"GithubComnode101IopulsarChainQuery_GetUserCosmosAddress","parameters":[{"type":"string","format":"byte","name":"user_mina_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetUserCosmosAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/get_user_mina_address/{user_cosmos_address}":{"get":{"tags":["Query"],"summary":"GetUserMinaAddress Queries a list of GetUserMinaAddress items.","operationId":"GithubComnode101IopulsarChainQuery_GetUserMinaAddress","parameters":[{"type":"string","format":"byte","name":"user_cosmos_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetUserMinaAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/get_validator_cosmos_pub_key/{validator_mina_pub_key}":{"get":{"tags":["Query"],"summary":"GetValidatorCosmosAddress Queries a list of GetValidatorCosmosAddress items.","operationId":"GithubComnode101IopulsarChainQuery_GetValidatorCosmosPubKey","parameters":[{"type":"string","format":"byte","name":"validator_mina_pub_key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetValidatorCosmosPubKeyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/get_validator_mina_pub_key/{validator_cosmos_pub_key}":{"get":{"tags":["Query"],"summary":"GetValidatorMinaAddress Queries a list of GetValidatorMinaAddress items.","operationId":"GithubComnode101IopulsarChainQuery_GetValidatorMinaPubKey","parameters":[{"type":"string","format":"byte","name":"validator_cosmos_pub_key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryGetValidatorMinaPubKeyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/node101-io/pulsar-chain/keyregistry/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComnode101IopulsarChainQuery_ParamsMixin8","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsarchain.keyregistry.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/pulsar/pulsar/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubComnode101IopulsarChainQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/pulsar.pulsar.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"pulsar.pulsar.v1.Params":{"description":"Params defines the parameters for the module.","type":"object"},"pulsar.pulsar.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/pulsar.pulsar.v1.Params"}}},"pulsarchain.keyregistry.v1.Params":{"description":"Params defines the parameters for the module.","type":"object"},"pulsarchain.keyregistry.v1.QueryGetUserCosmosAddressResponse":{"description":"QueryGetUserCosmosAddressResponse defines the QueryGetUserCosmosAddressResponse message.","type":"object","properties":{"user_cosmos_address":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryGetUserMinaAddressResponse":{"description":"QueryGetUserMinaAddressResponse defines the QueryGetUserMinaAddressResponse message.","type":"object","properties":{"user_mina_address":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryGetValidatorCosmosPubKeyResponse":{"description":"QueryGetValidatorCosmosAddressResponse defines the QueryGetValidatorCosmosAddressResponse message.","type":"object","properties":{"validator_cosmos_pub_key":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryGetValidatorMinaPubKeyResponse":{"description":"QueryGetValidatorMinaAddressResponse defines the QueryGetValidatorMinaAddressResponse message.","type":"object","properties":{"validator_mina_pub_key":{"type":"string","format":"byte"}}},"pulsarchain.keyregistry.v1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/pulsarchain.keyregistry.v1.Params"}}}},"tags":[{"name":"Query"},{"name":"Msg"}]} \ No newline at end of file diff --git a/proto/pulsarchain/keyregistry/v1/address_pair.proto b/proto/pulsarchain/keyregistry/v1/address_pair.proto new file mode 100644 index 00000000..6d13c957 --- /dev/null +++ b/proto/pulsarchain/keyregistry/v1/address_pair.proto @@ -0,0 +1,11 @@ +syntax = "proto3"; +package pulsarchain.keyregistry.v1; + +option go_package = "github.com/node101-io/pulsar-chain/x/keyregistry/types"; + +// KeyPair defines the KeyPair message. + +message AddressPair { + bytes mina_addr = 1; + bytes cosmos_addr = 2; +} diff --git a/proto/pulsarchain/keyregistry/v1/genesis.proto b/proto/pulsarchain/keyregistry/v1/genesis.proto index 0f0a5554..25d1bc37 100644 --- a/proto/pulsarchain/keyregistry/v1/genesis.proto +++ b/proto/pulsarchain/keyregistry/v1/genesis.proto @@ -3,12 +3,12 @@ package pulsarchain.keyregistry.v1; import "amino/amino.proto"; import "gogoproto/gogo.proto"; +import "pulsarchain/keyregistry/v1/address_pair.proto"; import "pulsarchain/keyregistry/v1/params.proto"; -import "pulsarchain/keyregistry/v1/key_pair.proto"; +import "pulsarchain/keyregistry/v1/public_key_pair.proto"; option go_package = "github.com/node101-io/pulsar-chain/x/keyregistry/types"; - // GenesisState defines the keyregistry module's genesis state. message GenesisState { // params defines all the parameters of the module. @@ -16,5 +16,6 @@ message GenesisState { (gogoproto.nullable) = false, (amino.dont_omitempty) = true ]; - repeated KeyPair key_pairs = 2; + repeated AddressPair user_key_pairs = 2; + repeated PublicKeyPair validator_key_pairs = 3; } diff --git a/proto/pulsarchain/keyregistry/v1/key_pair.proto b/proto/pulsarchain/keyregistry/v1/public_key_pair.proto similarity index 90% rename from proto/pulsarchain/keyregistry/v1/key_pair.proto rename to proto/pulsarchain/keyregistry/v1/public_key_pair.proto index ed7d22e6..b6e3810f 100644 --- a/proto/pulsarchain/keyregistry/v1/key_pair.proto +++ b/proto/pulsarchain/keyregistry/v1/public_key_pair.proto @@ -4,7 +4,7 @@ package pulsarchain.keyregistry.v1; option go_package = "github.com/node101-io/pulsar-chain/x/keyregistry/types"; // KeyPair defines the KeyPair message. -message KeyPair { +message PublicKeyPair { bytes mina_key = 1; bytes cosmos_key = 2; } diff --git a/proto/pulsarchain/keyregistry/v1/query.proto b/proto/pulsarchain/keyregistry/v1/query.proto index b1fd2c73..9dda46ad 100644 --- a/proto/pulsarchain/keyregistry/v1/query.proto +++ b/proto/pulsarchain/keyregistry/v1/query.proto @@ -17,14 +17,24 @@ service Query { option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/params"; } - // GetMinaPubKey Queries a list of GetMinaPubKey items. - rpc GetMinaPubKey(QueryGetMinaPubKeyRequest) returns (QueryGetMinaPubKeyResponse) { - option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_mina_pub_key/{cosmos_pub_key}"; + // GetUserMinaAddress Queries a list of GetUserMinaAddress items. + rpc GetUserMinaAddress(QueryGetUserMinaAddressRequest) returns (QueryGetUserMinaAddressResponse) { + option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_user_mina_address/{user_cosmos_address}"; } - // GetCosmosPubKey Queries a list of GetCosmosPubKey items. - rpc GetCosmosPubKey(QueryGetCosmosPubKeyRequest) returns (QueryGetCosmosPubKeyResponse) { - option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_cosmos_pub_key/{mina_pub_key}"; + // GetUserCosmosAddress Queries a list of GetUserCosmosAddress items. + rpc GetUserCosmosAddress(QueryGetUserCosmosAddressRequest) returns (QueryGetUserCosmosAddressResponse) { + option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_user_cosmos_address/{user_mina_address}"; + } + + // GetValidatorMinaAddress Queries a list of GetValidatorMinaAddress items. + rpc GetValidatorMinaPubKey(QueryGetValidatorMinaPubKeyRequest) returns (QueryGetValidatorMinaPubKeyResponse) { + option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_validator_mina_pub_key/{validator_cosmos_pub_key}"; + } + + // GetValidatorCosmosAddress Queries a list of GetValidatorCosmosAddress items. + rpc GetValidatorCosmosPubKey(QueryGetValidatorCosmosPubKeyRequest) returns (QueryGetValidatorCosmosPubKeyResponse) { + option (google.api.http).get = "/node101-io/pulsar-chain/keyregistry/v1/get_validator_cosmos_pub_key/{validator_mina_pub_key}"; } } @@ -40,22 +50,42 @@ message QueryParamsResponse { ]; } -// QueryGetMinaPubKeyRequest defines the QueryGetMinaPubKeyRequest message. -message QueryGetMinaPubKeyRequest { - bytes cosmos_pub_key = 1; +// QueryGetUserMinaAddressRequest defines the QueryGetUserMinaAddressRequest message. +message QueryGetUserMinaAddressRequest { + bytes user_cosmos_address = 1; +} + +// QueryGetUserMinaAddressResponse defines the QueryGetUserMinaAddressResponse message. +message QueryGetUserMinaAddressResponse { + bytes user_mina_address = 1; +} + +// QueryGetUserCosmosAddressRequest defines the QueryGetUserCosmosAddressRequest message. +message QueryGetUserCosmosAddressRequest { + bytes user_mina_address = 1; +} + +// QueryGetUserCosmosAddressResponse defines the QueryGetUserCosmosAddressResponse message. +message QueryGetUserCosmosAddressResponse { + bytes user_cosmos_address = 1; +} + +// QueryGetValidatorMinaAddressRequest defines the QueryGetValidatorMinaAddressRequest message. +message QueryGetValidatorMinaPubKeyRequest { + bytes validator_cosmos_pub_key = 1; } -// QueryGetMinaPubKeyResponse defines the QueryGetMinaPubKeyResponse message. -message QueryGetMinaPubKeyResponse { - bytes mina_pub_key = 1; +// QueryGetValidatorMinaAddressResponse defines the QueryGetValidatorMinaAddressResponse message. +message QueryGetValidatorMinaPubKeyResponse { + bytes validator_mina_pub_key = 1; } -// QueryGetCosmosPubKeyRequest defines the QueryGetCosmosPubKeyRequest message. -message QueryGetCosmosPubKeyRequest { - bytes mina_pub_key = 1; +// QueryGetValidatorCosmosAddressRequest defines the QueryGetValidatorCosmosAddressRequest message. +message QueryGetValidatorCosmosPubKeyRequest { + bytes validator_mina_pub_key = 1; } -// QueryGetCosmosPubKeyResponse defines the QueryGetCosmosPubKeyResponse message. -message QueryGetCosmosPubKeyResponse { - bytes cosmos_pub_key = 1; +// QueryGetValidatorCosmosAddressResponse defines the QueryGetValidatorCosmosAddressResponse message. +message QueryGetValidatorCosmosPubKeyResponse { + bytes validator_cosmos_pub_key = 1; } diff --git a/proto/pulsarchain/keyregistry/v1/tx.proto b/proto/pulsarchain/keyregistry/v1/tx.proto index 1841b99d..6a8826bf 100644 --- a/proto/pulsarchain/keyregistry/v1/tx.proto +++ b/proto/pulsarchain/keyregistry/v1/tx.proto @@ -49,8 +49,9 @@ message MsgRegisterKeys { string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; string cosmos_signature = 2; string mina_signature = 3; - bytes cosmos_public_key = 4; - bytes mina_public_key = 5; + bytes cosmos_address = 4; + bytes mina_address = 5; + bool is_user = 6; } // MsgRegisterKeysResponse defines the MsgRegisterKeysResponse message. diff --git a/x/keyregistry/keeper/genesis.go b/x/keyregistry/keeper/genesis.go index 8bbcbd8a..d8163ed5 100644 --- a/x/keyregistry/keeper/genesis.go +++ b/x/keyregistry/keeper/genesis.go @@ -9,16 +9,31 @@ import ( // InitGenesis initializes the module's state from a provided genesis state. func (k Keeper) InitGenesis(ctx context.Context, genState types.GenesisState) error { - keyPairs := genState.KeyPairs + userKeyPairs := genState.UserKeyPairs // Insert genesis key pairs. - for _, keyPair := range keyPairs { + for _, keyPair := range userKeyPairs { - err := k.cosmosToMina.Set(ctx, keyPair.CosmosKey, keyPair.MinaKey) + err := k.userCosmosToMina.Set(ctx, keyPair.CosmosAddr, keyPair.MinaAddr) if err != nil { return err } - err = k.minaToCosmos.Set(ctx, keyPair.MinaKey, keyPair.CosmosKey) + err = k.userMinaToCosmos.Set(ctx, keyPair.MinaAddr, keyPair.CosmosAddr) + if err != nil { + return err + } + } + + validatorKeyPairs := genState.ValidatorKeyPairs + + // Insert genesis key pairs. + for _, keyPair := range validatorKeyPairs { + + err := k.validatorCosmosToMina.Set(ctx, keyPair.CosmosKey, keyPair.MinaKey) + if err != nil { + return err + } + err = k.validatorMinaToCosmos.Set(ctx, keyPair.MinaKey, keyPair.CosmosKey) if err != nil { return err } @@ -37,36 +52,36 @@ func (k Keeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) return nil, err } - var keyPairs []*types.KeyPair + var userKeyPairs []*types.AddressPair - var existenceMap = make(map[string]bool) + var userKeypairExistenceMap = make(map[string]bool) // Iterate over CosmosToMina map first and collect all key pairs. - cosmosIterator, err := k.cosmosToMina.Iterate(ctx, nil) + userCosmosIterator, err := k.userCosmosToMina.Iterate(ctx, nil) if err != nil { return nil, err } - defer cosmosIterator.Close() + defer userCosmosIterator.Close() - for cosmosIterator.Valid() { - cosmosKey, err := cosmosIterator.Key() + for userCosmosIterator.Valid() { + cosmosKey, err := userCosmosIterator.Key() if err != nil { return genesis, err } - minaKey, err := cosmosIterator.Value() + minaKey, err := userCosmosIterator.Value() if err != nil { return genesis, err } - keyPair := &types.KeyPair{ - MinaKey: minaKey, - CosmosKey: cosmosKey, + keyPair := &types.AddressPair{ + MinaAddr: minaKey, + CosmosAddr: cosmosKey, } - keyPairs = append(keyPairs, keyPair) - existenceMap[keyPair.String()] = true - cosmosIterator.Next() + userKeyPairs = append(userKeyPairs, keyPair) + userKeypairExistenceMap[keyPair.String()] = true + userCosmosIterator.Next() } - // Iterate over MinaToCosmos map and collect any key pairs that are not + // Iterate over inaToCosmos map and collect any key pairs that are not // already present in the CosmosToMina map. Although both maps are expected // to be in sync, this ensures no key pairs are lost in case of any inconsistency // between the two maps during export. @@ -75,34 +90,92 @@ func (k Keeper) ExportGenesis(ctx context.Context) (*types.GenesisState, error) // Returning an error here could prevent the state from being exported and lead // to potential state loss. Consistency checks should instead be handled at the // message implementation level where the mappings are created or updated. - minaIterator, err := k.minaToCosmos.Iterate(ctx, nil) + userMinaIterator, err := k.userMinaToCosmos.Iterate(ctx, nil) + if err != nil { + return nil, err + } + defer userMinaIterator.Close() + + for userMinaIterator.Valid() { + minaKey, err := userMinaIterator.Key() + if err != nil { + return genesis, err + } + cosmosKey, err := userMinaIterator.Value() + if err != nil { + return genesis, err + } + keyPair := &types.AddressPair{ + MinaAddr: minaKey, + CosmosAddr: cosmosKey, + } + if userKeypairExistenceMap[keyPair.String()] { + userMinaIterator.Next() + continue + } + userKeyPairs = append(userKeyPairs, keyPair) + userMinaIterator.Next() + } + + genesis.UserKeyPairs = userKeyPairs + + var validatorKeyPairs []*types.PublicKeyPair + + var validatorKeypairExistenceMap = make(map[string]bool) + + // Iterate over CosmosToMina map first and collect all key pairs. + validatorCosmosIterator, err := k.validatorCosmosToMina.Iterate(ctx, nil) + if err != nil { + return nil, err + } + defer validatorCosmosIterator.Close() + + for validatorCosmosIterator.Valid() { + cosmosKey, err := validatorCosmosIterator.Key() + if err != nil { + return genesis, err + } + minaKey, err := validatorCosmosIterator.Value() + if err != nil { + return genesis, err + } + keyPair := &types.PublicKeyPair{ + MinaKey: minaKey, + CosmosKey: cosmosKey, + } + validatorKeyPairs = append(validatorKeyPairs, keyPair) + validatorKeypairExistenceMap[keyPair.String()] = true + validatorCosmosIterator.Next() + } + + validatorMinaIterator, err := k.validatorMinaToCosmos.Iterate(ctx, nil) if err != nil { return nil, err } - defer minaIterator.Close() + defer validatorMinaIterator.Close() - for minaIterator.Valid() { - minaKey, err := minaIterator.Key() + for validatorMinaIterator.Valid() { + minaKey, err := validatorMinaIterator.Key() if err != nil { return genesis, err } - cosmosKey, err := minaIterator.Value() + cosmosKey, err := validatorMinaIterator.Value() if err != nil { return genesis, err } - keyPair := &types.KeyPair{ + keyPair := &types.PublicKeyPair{ MinaKey: minaKey, CosmosKey: cosmosKey, } - if existenceMap[keyPair.String()] { - minaIterator.Next() + if validatorKeypairExistenceMap[keyPair.String()] { + validatorMinaIterator.Next() continue } - keyPairs = append(keyPairs, keyPair) - minaIterator.Next() + validatorKeyPairs = append(validatorKeyPairs, keyPair) + validatorMinaIterator.Next() } - genesis.KeyPairs = keyPairs + genesis.ValidatorKeyPairs = validatorKeyPairs return genesis, nil } diff --git a/x/keyregistry/keeper/genesis_test.go b/x/keyregistry/keeper/genesis_test.go index 26bc0bc0..dc1dfce7 100644 --- a/x/keyregistry/keeper/genesis_test.go +++ b/x/keyregistry/keeper/genesis_test.go @@ -43,7 +43,13 @@ func TestInitAndExportGenesis(t *testing.T) { genesisState := types.GenesisState{ Params: types.DefaultParams(), - KeyPairs: []*types.KeyPair{ + UserKeyPairs: []*types.AddressPair{ + { + MinaAddr: minaPubKey, + CosmosAddr: cosmosPubKey.Bytes(), + }, + }, + ValidatorKeyPairs: []*types.PublicKeyPair{ { MinaKey: minaPubKey, CosmosKey: cosmosPubKey.Bytes(), @@ -57,6 +63,6 @@ func TestInitAndExportGenesis(t *testing.T) { require.NoError(t, err) require.NotNil(t, got) - require.EqualExportedValues(t, genesisState.KeyPairs, got.KeyPairs) + require.EqualExportedValues(t, genesisState.UserKeyPairs, got.UserKeyPairs) } diff --git a/x/keyregistry/keeper/keeper.go b/x/keyregistry/keeper/keeper.go index 2097b0f3..851d23f8 100644 --- a/x/keyregistry/keeper/keeper.go +++ b/x/keyregistry/keeper/keeper.go @@ -11,8 +11,11 @@ import ( "github.com/node101-io/pulsar-chain/x/keyregistry/types" ) -const CosmosToMinaMapName string = "cosmos_to_mina" -const MinaToCosmosMapName string = "mina_to_cosmos" +const UserCosmosToMinaMapName string = "user_cosmos_to_mina" +const UserMinaToCosmosMapName string = "user_mina_to_cosmos" + +const ValidatorCosmosToMinaMapName string = "validator_cosmos_to_mina" +const ValidatorMinaToCosmosMapName string = "validator_mina_to_cosmos" type Keeper struct { storeService corestore.KVStoreService @@ -25,8 +28,11 @@ type Keeper struct { Schema collections.Schema Params collections.Item[types.Params] - cosmosToMina collections.Map[[]byte, []byte] // Cosmos PubKey --> Mina PubKey - minaToCosmos collections.Map[[]byte, []byte] // Mina PubKey --> Cosmos PubKey + userCosmosToMina collections.Map[[]byte, []byte] // Cosmos Address --> Mina Address + userMinaToCosmos collections.Map[[]byte, []byte] // Mina Address --> Cosmos Address + + validatorCosmosToMina collections.Map[[]byte, []byte] // Validator Cosmos Address --> Validator Mina Address + validatorMinaToCosmos collections.Map[[]byte, []byte] // Validator Mina Address --> Validator Cosmos Address } func NewKeeper( @@ -50,8 +56,11 @@ func NewKeeper( Params: collections.NewItem(sb, types.ParamsKey, "params", codec.CollValue[types.Params](cdc)), - cosmosToMina: collections.NewMap(sb, types.CosmosToMinaPrefix, CosmosToMinaMapName, collections.BytesKey, collections.BytesValue), - minaToCosmos: collections.NewMap(sb, types.MinaToCosmosPrefix, MinaToCosmosMapName, collections.BytesKey, collections.BytesValue), + userCosmosToMina: collections.NewMap(sb, types.UserCosmosToMinaPrefix, UserCosmosToMinaMapName, collections.BytesKey, collections.BytesValue), + userMinaToCosmos: collections.NewMap(sb, types.UserMinaToCosmosPrefix, UserMinaToCosmosMapName, collections.BytesKey, collections.BytesValue), + + validatorCosmosToMina: collections.NewMap(sb, types.ValidatorCosmosToMinaPrefix, ValidatorCosmosToMinaMapName, collections.BytesKey, collections.BytesValue), + validatorMinaToCosmos: collections.NewMap(sb, types.ValidatorMinaToCosmosPrefix, ValidatorMinaToCosmosMapName, collections.BytesKey, collections.BytesValue), } schema, err := sb.Build() if err != nil { @@ -67,26 +76,50 @@ func (k Keeper) GetAuthority() []byte { return k.authority } -func (k Keeper) SetCosmosToMina(ctx context.Context, cosmosPublicKey, minaPublicKey []byte) error { - return k.cosmosToMina.Set(ctx, cosmosPublicKey, minaPublicKey) +func (k Keeper) UserSetCosmosToMina(ctx context.Context, cosmosAddress, minaAddress []byte) error { + return k.userCosmosToMina.Set(ctx, cosmosAddress, minaAddress) +} + +func (k Keeper) UserGetCosmosToMina(ctx context.Context, cosmosAddress []byte) ([]byte, error) { + return k.userCosmosToMina.Get(ctx, cosmosAddress) +} + +func (k Keeper) UserSetMinaToCosmos(ctx context.Context, minaAddress, cosmosAddress []byte) error { + return k.userMinaToCosmos.Set(ctx, minaAddress, cosmosAddress) +} + +func (k Keeper) UserGetMinaToCosmos(ctx context.Context, minaAddress []byte) ([]byte, error) { + return k.userMinaToCosmos.Get(ctx, minaAddress) +} + +func (k Keeper) UserCosmosToMinaHas(ctx context.Context, cosmosAddress []byte) (bool, error) { + return k.userCosmosToMina.Has(ctx, cosmosAddress) +} + +func (k Keeper) UserMinaToCosmosHas(ctx context.Context, minaAddress []byte) (bool, error) { + return k.userMinaToCosmos.Has(ctx, minaAddress) +} + +func (k Keeper) ValidatorSetCosmosToMina(ctx context.Context, cosmosAddress, minaAddress []byte) error { + return k.validatorCosmosToMina.Set(ctx, cosmosAddress, minaAddress) } -func (k Keeper) GetCosmosToMina(ctx context.Context, cosmosPublicKey []byte) ([]byte, error) { - return k.cosmosToMina.Get(ctx, cosmosPublicKey) +func (k Keeper) ValidatorGetCosmosToMina(ctx context.Context, cosmosAddress []byte) ([]byte, error) { + return k.validatorCosmosToMina.Get(ctx, cosmosAddress) } -func (k Keeper) SetMinaToCosmos(ctx context.Context, minaPublicKey, cosmosPublicKey []byte) error { - return k.minaToCosmos.Set(ctx, minaPublicKey, cosmosPublicKey) +func (k Keeper) ValidatorSetMinaToCosmos(ctx context.Context, minaAddress, cosmosAddress []byte) error { + return k.validatorMinaToCosmos.Set(ctx, minaAddress, cosmosAddress) } -func (k Keeper) GetMinaToCosmos(ctx context.Context, minaPublicKey []byte) ([]byte, error) { - return k.minaToCosmos.Get(ctx, minaPublicKey) +func (k Keeper) ValidatorGetMinaToCosmos(ctx context.Context, minaAddress []byte) ([]byte, error) { + return k.validatorMinaToCosmos.Get(ctx, minaAddress) } -func (k Keeper) CosmosToMinaHas(ctx context.Context, cosmosPublicKey []byte) (bool, error) { - return k.cosmosToMina.Has(ctx, cosmosPublicKey) +func (k Keeper) ValidatorCosmosToMinaHas(ctx context.Context, cosmosAddress []byte) (bool, error) { + return k.validatorCosmosToMina.Has(ctx, cosmosAddress) } -func (k Keeper) MinaToCosmosHas(ctx context.Context, minaPublicKey []byte) (bool, error) { - return k.minaToCosmos.Has(ctx, minaPublicKey) +func (k Keeper) ValidatorMinaToCosmosHas(ctx context.Context, minaAddress []byte) (bool, error) { + return k.validatorMinaToCosmos.Has(ctx, minaAddress) } diff --git a/x/keyregistry/keeper/keeper_test.go b/x/keyregistry/keeper/keeper_test.go index e00bb4a5..92679d98 100644 --- a/x/keyregistry/keeper/keeper_test.go +++ b/x/keyregistry/keeper/keeper_test.go @@ -62,13 +62,13 @@ var MinaPubKey = []byte("mina") // TestCosmosToMina verifies that a cosmos public key can be stored in the // CosmosToMina map and correctly retrieved using the same cosmos public key. -func TestCosmosToMina(t *testing.T) { +func TestUserCosmosToMina(t *testing.T) { f := initFixture(t) - err := f.keeper.SetCosmosToMina(f.ctx, CosmosPubKey, MinaPubKey) + err := f.keeper.UserSetCosmosToMina(f.ctx, CosmosPubKey, MinaPubKey) require.NoError(t, err) - pubKey, err := f.keeper.GetCosmosToMina(f.ctx, CosmosPubKey) + pubKey, err := f.keeper.UserGetCosmosToMina(f.ctx, CosmosPubKey) require.NoError(t, err) require.Equal(t, MinaPubKey, pubKey) @@ -76,13 +76,13 @@ func TestCosmosToMina(t *testing.T) { // TestMinaToCosmos verifies that a mina public key can be stored in the // MinaToCosmos map and correctly retrieved using the same mina public key. -func TestMinaToCosmos(t *testing.T) { +func TestUserMinaToCosmos(t *testing.T) { f := initFixture(t) - err := f.keeper.SetMinaToCosmos(f.ctx, MinaPubKey, CosmosPubKey) + err := f.keeper.UserSetMinaToCosmos(f.ctx, MinaPubKey, CosmosPubKey) require.NoError(t, err) - pubKey, err := f.keeper.GetMinaToCosmos(f.ctx, MinaPubKey) + pubKey, err := f.keeper.UserGetMinaToCosmos(f.ctx, MinaPubKey) require.NoError(t, err) require.Equal(t, CosmosPubKey, pubKey) diff --git a/x/keyregistry/keeper/msg_server_register_keys.go b/x/keyregistry/keeper/msg_server_register_keys.go index 321dfc44..cfbd328d 100644 --- a/x/keyregistry/keeper/msg_server_register_keys.go +++ b/x/keyregistry/keeper/msg_server_register_keys.go @@ -3,27 +3,48 @@ package keeper import ( "context" - errorsmod "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/node101-io/pulsar-chain/x/keyregistry/types" ) -// TODO: Implement Mina signature verification -func VerifyMinaSig(sig string, msg, minaPublicKey []byte) bool { +// TODO: Implement Mina signature verification for users +func VerifyUserMinaSig(sig string, msg, minaAddress []byte) bool { return true } -// TODO: Implement Cosmos signature verification -func VerifyCosmosSig(sig string, msg, cosmosPublicKey []byte) bool { +// TODO: Implement Cosmos signature verification for users +func VerifyUserCosmosSig(sig string, msg, mosmosAddress []byte) bool { return true } -// deriveAddressFromPubkey derives a bech32 cosmos address from a compressed secp256k1 public key. -func deriveAddressFromPubkey(cosmosPublicKey []byte) string { +// TODO: Implement Mina signature verification for users +func VerifyValidatorMinaSig(sig string, msg, minaAddress []byte) bool { + return true +} + +// TODO: Implement Cosmos signature verification for users +func VerifyValidatorCosmosSig(sig string, msg, cosmosAddress []byte) bool { + return true +} + +// deriveAddressFromPubkey derives the expected signer address from the provided +// key material. Users provide secp256k1 account public keys, while validators +// provide consensus public keys. +func deriveAddressFromPubkey(cosmosAddress []byte, isUser bool) string { + if !isUser { + pubKey := ed25519.PubKey{ + Key: cosmosAddress, + } + validatorAddr := sdk.ConsAddress(pubKey.Address()) + return validatorAddr.String() + } + pubKey := secp256k1.PubKey{ - Key: cosmosPublicKey, + Key: cosmosAddress, } + addr := sdk.AccAddress(pubKey.Address()) return addr.String() } @@ -38,56 +59,14 @@ func deriveAddressFromPubkey(cosmosPublicKey []byte) string { // // If all checks pass, the key pair is stored in both the CosmosToMina and MinaToCosmos maps. func (k msgServer) RegisterKeys(ctx context.Context, msg *types.MsgRegisterKeys) (*types.MsgRegisterKeysResponse, error) { - // Validate the creator address. - if _, err := k.addressCodec.StringToBytes(msg.Creator); err != nil { - return nil, errorsmod.Wrap(types.ErrInvalidCreatorAddres, "") - } - - // Ensure the cosmos and mina public keys are valid. - err := types.ValidateKeyPair(types.KeyPair{ - MinaKey: msg.MinaPublicKey, - CosmosKey: msg.CosmosPublicKey, - }) - if err != nil { - return nil, errorsmod.Wrap(types.ErrInvalidPublicKey, "pubkeys must be valid") - } - - // Ensure the creator address matches the provided cosmos public key - // to prevent someone from registering a key pair on behalf of another address. - derivedAddress := deriveAddressFromPubkey(msg.CosmosPublicKey) - if derivedAddress != msg.Creator { - return nil, errorsmod.Wrap(types.ErrInvalidSigner, "creator does not match provided cosmos public key") - } - - // Check if either key is already registered to prevent duplicate registrations. - cosmosKeyExists, err := k.Keeper.cosmosToMina.Has(ctx, msg.CosmosPublicKey) - if err != nil { - return nil, err - } - minaKeyExists, err := k.Keeper.minaToCosmos.Has(ctx, msg.MinaPublicKey) - if err != nil { - return nil, err - } - if cosmosKeyExists || minaKeyExists { - return nil, errorsmod.Wrap(types.ErrSecondaryKeyExists, "") - } + var err error - // Verify that the mina key signed the cosmos public key and vice versa. - // This proves ownership of both keys. - minaSigValidity := VerifyMinaSig(msg.MinaSignature, msg.CosmosPublicKey, msg.MinaPublicKey) - cosmosSigValidity := VerifyCosmosSig(msg.CosmosSignature, msg.MinaPublicKey, msg.CosmosPublicKey) - - if !minaSigValidity || !cosmosSigValidity { - return nil, errorsmod.Wrap(types.ErrInvalidSignature, "invalid cosmos or mina signature") - } - - // Store the key pair in both directions to allow lookups by either key. - err = k.Keeper.cosmosToMina.Set(ctx, msg.CosmosPublicKey, msg.MinaPublicKey) - if err != nil { - return nil, err + if msg.IsUser { + err = k.handleUserRegistration(ctx, msg) + } else { + err = k.handleValidatorRegistration(ctx, msg) } - err = k.Keeper.minaToCosmos.Set(ctx, msg.MinaPublicKey, msg.CosmosPublicKey) if err != nil { return nil, err } diff --git a/x/keyregistry/keeper/msg_server_register_user_keys.go b/x/keyregistry/keeper/msg_server_register_user_keys.go new file mode 100644 index 00000000..6bef940e --- /dev/null +++ b/x/keyregistry/keeper/msg_server_register_user_keys.go @@ -0,0 +1,63 @@ +package keeper + +import ( + "bytes" + "context" + + errorsmod "cosmossdk.io/errors" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" +) + +// handleUserRegistration encapsulates the user registration flow where both +// sides of the mapping are addresses, not public keys. +func (k msgServer) handleUserRegistration(ctx context.Context, msg *types.MsgRegisterKeys) error { + creatorAddress, err := k.addressCodec.StringToBytes(msg.Creator) + if err != nil { + return errorsmod.Wrap(types.ErrInvalidCreatorAddres, "") + } + + err = types.ValidateAddressPair(types.AddressPair{ + MinaAddr: msg.MinaAddress, + CosmosAddr: msg.CosmosAddress, + }) + if err != nil { + return errorsmod.Wrap(types.ErrInvalidAddress, "address must be valid") + } + + if !bytes.Equal(creatorAddress, msg.CosmosAddress) { + return errorsmod.Wrap(types.ErrInvalidSigner, "creator does not match provided cosmos address") + } + + return k.persistUserRegistration(ctx, msg) +} + +func (k msgServer) persistUserRegistration(ctx context.Context, msg *types.MsgRegisterKeys) error { + cosmosKeyExists, err := k.Keeper.userCosmosToMina.Has(ctx, msg.CosmosAddress) + if err != nil { + return err + } + minaKeyExists, err := k.Keeper.userMinaToCosmos.Has(ctx, msg.MinaAddress) + if err != nil { + return err + } + if cosmosKeyExists || minaKeyExists { + return errorsmod.Wrap(types.ErrUserSecondaryKeyExists, "") + } + + minaSigValidity := VerifyUserMinaSig(msg.MinaSignature, msg.CosmosAddress, msg.MinaAddress) + cosmosSigValidity := VerifyUserCosmosSig(msg.CosmosSignature, msg.MinaAddress, msg.CosmosAddress) + if !minaSigValidity || !cosmosSigValidity { + return errorsmod.Wrap(types.ErrInvalidSignature, "invalid cosmos or mina signature") + } + + err = k.Keeper.userCosmosToMina.Set(ctx, msg.CosmosAddress, msg.MinaAddress) + if err != nil { + return err + } + err = k.Keeper.userMinaToCosmos.Set(ctx, msg.MinaAddress, msg.CosmosAddress) + if err != nil { + return err + } + + return nil +} diff --git a/x/keyregistry/keeper/msg_server_register_validator_keys.go b/x/keyregistry/keeper/msg_server_register_validator_keys.go new file mode 100644 index 00000000..59e3f6e1 --- /dev/null +++ b/x/keyregistry/keeper/msg_server_register_validator_keys.go @@ -0,0 +1,64 @@ +package keeper + +import ( + "context" + + errorsmod "cosmossdk.io/errors" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" +) + +// handleValidatorRegistration encapsulates the validator registration flow +// where the Cosmos-side key is the validator consensus public key. +func (k msgServer) handleValidatorRegistration(ctx context.Context, msg *types.MsgRegisterKeys) error { + _, err := sdk.ConsAddressFromBech32(msg.Creator) + if err != nil { + return errorsmod.Wrap(types.ErrInvalidCreatorAddres, "") + } + + err = types.ValidatePublicKeyPair(types.PublicKeyPair{ + MinaKey: msg.MinaAddress, + CosmosKey: msg.CosmosAddress, + }) + if err != nil { + return errorsmod.Wrap(types.ErrInvalidPublicKey, "pubkeys must be valid") + } + + derivedAddress := deriveAddressFromPubkey(msg.CosmosAddress, false) + if derivedAddress != msg.Creator { + return errorsmod.Wrap(types.ErrInvalidSigner, "creator does not match provided cosmos consensus public key") + } + + return k.persistValidatorRegistration(ctx, msg) +} + +func (k msgServer) persistValidatorRegistration(ctx context.Context, msg *types.MsgRegisterKeys) error { + cosmosKeyExists, err := k.Keeper.validatorCosmosToMina.Has(ctx, msg.CosmosAddress) + if err != nil { + return err + } + minaKeyExists, err := k.Keeper.validatorMinaToCosmos.Has(ctx, msg.MinaAddress) + if err != nil { + return err + } + if cosmosKeyExists || minaKeyExists { + return errorsmod.Wrap(types.ErrValidatorSecondaryKeyExists, "") + } + + minaSigValidity := VerifyValidatorMinaSig(msg.MinaSignature, msg.CosmosAddress, msg.MinaAddress) + cosmosSigValidity := VerifyValidatorCosmosSig(msg.CosmosSignature, msg.MinaAddress, msg.CosmosAddress) + if !minaSigValidity || !cosmosSigValidity { + return errorsmod.Wrap(types.ErrInvalidSignature, "invalid cosmos or mina signature") + } + + err = k.Keeper.validatorCosmosToMina.Set(ctx, msg.CosmosAddress, msg.MinaAddress) + if err != nil { + return err + } + err = k.Keeper.validatorMinaToCosmos.Set(ctx, msg.MinaAddress, msg.CosmosAddress) + if err != nil { + return err + } + + return nil +} diff --git a/x/keyregistry/keeper/query.go b/x/keyregistry/keeper/query.go index 5b8c8317..7f90e455 100644 --- a/x/keyregistry/keeper/query.go +++ b/x/keyregistry/keeper/query.go @@ -1,8 +1,6 @@ package keeper -import ( - "github.com/node101-io/pulsar-chain/x/keyregistry/types" -) +import "github.com/node101-io/pulsar-chain/x/keyregistry/types" var _ types.QueryServer = queryServer{} diff --git a/x/keyregistry/keeper/query_get_user_cosmos_address.go b/x/keyregistry/keeper/query_get_user_cosmos_address.go new file mode 100644 index 00000000..c8ed261a --- /dev/null +++ b/x/keyregistry/keeper/query_get_user_cosmos_address.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// GetCosmosPubKey returns the user's cosmos public key associated with the given mina public key. +// Returns NotFound if no mapping exists for the provided mina public key. +func (q queryServer) GetUserCosmosAddress(ctx context.Context, req *types.QueryGetUserCosmosAddressRequest) (*types.QueryGetUserCosmosAddressResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + + // Check if the mina address exists in the MinaToCosmos map. + exists, err := q.k.userMinaToCosmos.Has(sdkCtx, req.UserMinaAddress) + if err != nil { + return nil, status.Error(codes.Internal, "internal error") + } + + if !exists { + return nil, status.Error(codes.NotFound, "cosmos key not found for given mina key") + } + + cosmosKey, err := q.k.userMinaToCosmos.Get(sdkCtx, req.UserMinaAddress) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryGetUserCosmosAddressResponse{ + UserCosmosAddress: cosmosKey, + }, nil +} diff --git a/x/keyregistry/keeper/query_get_mina_pub_key.go b/x/keyregistry/keeper/query_get_user_mina_address.go similarity index 61% rename from x/keyregistry/keeper/query_get_mina_pub_key.go rename to x/keyregistry/keeper/query_get_user_mina_address.go index 301a62c0..421b9b89 100644 --- a/x/keyregistry/keeper/query_get_mina_pub_key.go +++ b/x/keyregistry/keeper/query_get_user_mina_address.go @@ -9,9 +9,9 @@ import ( "google.golang.org/grpc/status" ) -// GetMinaPubKey returns the mina public key associated with the given cosmos public key. +// GetMinaPubKey returns the user's mina public key associated with the given cosmos public key. // Returns NotFound if no mapping exists for the provided cosmos public key. -func (q queryServer) GetMinaPubKey(ctx context.Context, req *types.QueryGetMinaPubKeyRequest) (*types.QueryGetMinaPubKeyResponse, error) { +func (q queryServer) GetUserMinaAddress(ctx context.Context, req *types.QueryGetUserMinaAddressRequest) (*types.QueryGetUserMinaAddressResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } @@ -19,7 +19,7 @@ func (q queryServer) GetMinaPubKey(ctx context.Context, req *types.QueryGetMinaP sdkCtx := sdk.UnwrapSDKContext(ctx) // Check if the cosmos key exists in the CosmosToMina map. - exists, err := q.k.cosmosToMina.Has(sdkCtx, req.CosmosPubKey) + exists, err := q.k.userCosmosToMina.Has(sdkCtx, req.UserCosmosAddress) if err != nil { return nil, status.Error(codes.Internal, "internal Error") } @@ -28,12 +28,12 @@ func (q queryServer) GetMinaPubKey(ctx context.Context, req *types.QueryGetMinaP return nil, status.Error(codes.NotFound, "mina key not found for given cosmos key") } - minaKey, err := q.k.cosmosToMina.Get(sdkCtx, req.CosmosPubKey) + minaKey, err := q.k.userCosmosToMina.Get(sdkCtx, req.UserCosmosAddress) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } - return &types.QueryGetMinaPubKeyResponse{ - MinaPubKey: minaKey, + return &types.QueryGetUserMinaAddressResponse{ + UserMinaAddress: minaKey, }, nil } diff --git a/x/keyregistry/keeper/query_get_cosmos_pub_key.go b/x/keyregistry/keeper/query_get_validator_cosmos_pub_key.go similarity index 58% rename from x/keyregistry/keeper/query_get_cosmos_pub_key.go rename to x/keyregistry/keeper/query_get_validator_cosmos_pub_key.go index 241233a3..69e19fa9 100644 --- a/x/keyregistry/keeper/query_get_cosmos_pub_key.go +++ b/x/keyregistry/keeper/query_get_validator_cosmos_pub_key.go @@ -9,9 +9,10 @@ import ( "google.golang.org/grpc/status" ) -// GetCosmosPubKey returns the cosmos public key associated with the given mina public key. +// GetCosmosPubKey returns the Validator's cosmos public key associated with the given mina public key. // Returns NotFound if no mapping exists for the provided mina public key. -func (q queryServer) GetCosmosPubKey(ctx context.Context, req *types.QueryGetCosmosPubKeyRequest) (*types.QueryGetCosmosPubKeyResponse, error) { + +func (q queryServer) GetValidatorCosmosPubKey(ctx context.Context, req *types.QueryGetValidatorCosmosPubKeyRequest) (*types.QueryGetValidatorCosmosPubKeyResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "invalid request") } @@ -19,7 +20,7 @@ func (q queryServer) GetCosmosPubKey(ctx context.Context, req *types.QueryGetCos sdkCtx := sdk.UnwrapSDKContext(ctx) // Check if the mina key exists in the MinaToCosmos map. - exists, err := q.k.minaToCosmos.Has(sdkCtx, req.MinaPubKey) + exists, err := q.k.validatorMinaToCosmos.Has(sdkCtx, req.ValidatorMinaPubKey) if err != nil { return nil, status.Error(codes.Internal, "internal error") } @@ -28,12 +29,12 @@ func (q queryServer) GetCosmosPubKey(ctx context.Context, req *types.QueryGetCos return nil, status.Error(codes.NotFound, "cosmos key not found for given mina key") } - cosmosKey, err := q.k.minaToCosmos.Get(sdkCtx, req.MinaPubKey) + cosmosKey, err := q.k.validatorMinaToCosmos.Get(sdkCtx, req.ValidatorMinaPubKey) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } - return &types.QueryGetCosmosPubKeyResponse{ - CosmosPubKey: cosmosKey, + return &types.QueryGetValidatorCosmosPubKeyResponse{ + ValidatorCosmosPubKey: cosmosKey, }, nil } diff --git a/x/keyregistry/keeper/query_get_validator_mina_pub_key.go b/x/keyregistry/keeper/query_get_validator_mina_pub_key.go new file mode 100644 index 00000000..2f0ce656 --- /dev/null +++ b/x/keyregistry/keeper/query_get_validator_mina_pub_key.go @@ -0,0 +1,39 @@ +package keeper + +import ( + "context" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// GetMinaPubKey returns the validator's mina public key associated with the given cosmos public key. +// Returns NotFound if no mapping exists for the provided cosmos public key. +func (q queryServer) GetValidatorMinaPubKey(ctx context.Context, req *types.QueryGetValidatorMinaPubKeyRequest) (*types.QueryGetValidatorMinaPubKeyResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "invalid request") + } + + sdkCtx := sdk.UnwrapSDKContext(ctx) + + // Check if the cosmos key exists in the CosmosToMina map. + exists, err := q.k.validatorCosmosToMina.Has(sdkCtx, req.ValidatorCosmosPubKey) + if err != nil { + return nil, status.Error(codes.Internal, "internal Error") + } + + if !exists { + return nil, status.Error(codes.NotFound, "mina key not found for given cosmos key") + } + + minaKey, err := q.k.validatorCosmosToMina.Get(sdkCtx, req.ValidatorCosmosPubKey) + if err != nil { + return nil, status.Error(codes.Internal, err.Error()) + } + + return &types.QueryGetValidatorMinaPubKeyResponse{ + ValidatorMinaPubKey: minaKey, + }, nil +} diff --git a/x/keyregistry/keeper/query_keypairs_test.go b/x/keyregistry/keeper/query_user_keypairs_test.go similarity index 64% rename from x/keyregistry/keeper/query_keypairs_test.go rename to x/keyregistry/keeper/query_user_keypairs_test.go index b29c52cb..d0e24013 100644 --- a/x/keyregistry/keeper/query_keypairs_test.go +++ b/x/keyregistry/keeper/query_user_keypairs_test.go @@ -13,25 +13,25 @@ import ( "google.golang.org/grpc/status" ) -// TestCosmosMapInvalidArgumentFail verifies that GetCosmosPubKey returns +// TestUserCosmosMapInvalidArgumentFail verifies that GetCosmosPubKey returns // an InvalidArgument error when called with a nil request. -func TestCosmosMapInvalidArgumentFail(t *testing.T) { +func TestUserCosmosMapInvalidArgumentFail(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) params := types.DefaultParams() require.NoError(t, f.keeper.Params.Set(f.ctx, params)) - _, err := qs.GetCosmosPubKey(f.ctx, nil) + _, err := qs.GetUserCosmosAddress(f.ctx, nil) require.Error(t, err) st, _ := status.FromError(err) require.Equal(t, codes.InvalidArgument, st.Code()) } -// TestCosmosMapSuccess verifies that a mina public key can be retrieved +// TestUserCosmosMapSuccess verifies that a mina public key can be retrieved // by its associated cosmos public key after being stored in the CosmosToMina map. -func TestCosmosMapSuccess(t *testing.T) { +func TestUserCosmosMapSuccess(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) @@ -48,22 +48,22 @@ func TestCosmosMapSuccess(t *testing.T) { } require.NoError(t, err) - err = f.keeper.SetCosmosToMina(f.ctx, cosmosPubKey.Bytes(), minaPubKey) + err = f.keeper.UserSetCosmosToMina(f.ctx, cosmosPubKey.Bytes(), minaPubKey) require.NoError(t, err) - resp, err := qs.GetMinaPubKey(f.ctx, &types.QueryGetMinaPubKeyRequest{ - CosmosPubKey: cosmosPubKey.Bytes(), + resp, err := qs.GetUserMinaAddress(f.ctx, &types.QueryGetUserMinaAddressRequest{ + UserCosmosAddress: cosmosPubKey.Bytes(), }) require.NotNil(t, resp) require.NoError(t, err) - require.Equal(t, resp.MinaPubKey, []byte(minaPubKey)) + require.Equal(t, resp.UserMinaAddress, []byte(minaPubKey)) } -// TestMinaMapSuccess verifies that a cosmos public key can be retrieved +// TestUserMinaMapSuccess verifies that a cosmos public key can be retrieved // by its associated mina public key after being stored in the MinaToCosmos map. -func TestMinaMapSuccess(t *testing.T) { +func TestUserMinaMapSuccess(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) @@ -80,38 +80,38 @@ func TestMinaMapSuccess(t *testing.T) { } require.NoError(t, err) - err = f.keeper.SetMinaToCosmos(f.ctx, minaPubKey, cosmosPubKey.Bytes()) + err = f.keeper.UserSetMinaToCosmos(f.ctx, minaPubKey, cosmosPubKey.Bytes()) require.NoError(t, err) - resp, err := qs.GetCosmosPubKey(f.ctx, &types.QueryGetCosmosPubKeyRequest{ - MinaPubKey: minaPubKey, + resp, err := qs.GetUserCosmosAddress(f.ctx, &types.QueryGetUserCosmosAddressRequest{ + UserMinaAddress: minaPubKey, }) require.NotNil(t, resp) require.NoError(t, err) - require.Equal(t, resp.CosmosPubKey, cosmosPubKey.Bytes()) + require.Equal(t, resp.UserCosmosAddress, cosmosPubKey.Bytes()) } -// TestMinaMapInvalidArgumentFail verifies that GetMinaPubKey returns +// TestUserMinaMapInvalidArgumentFail verifies that GetMinaPubKey returns // an InvalidArgument error when called with a nil request. -func TestMinaMapInvalidArgumentFail(t *testing.T) { +func TestUserMinaMapInvalidArgumentFail(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) params := types.DefaultParams() require.NoError(t, f.keeper.Params.Set(f.ctx, params)) - _, err := qs.GetMinaPubKey(f.ctx, nil) + _, err := qs.GetUserMinaAddress(f.ctx, nil) require.Error(t, err) st, _ := status.FromError(err) require.Equal(t, codes.InvalidArgument, st.Code()) } -// TestCosmosMapPubkeyNotFound verifies that GetCosmosPubKey returns +// TestUserCosmosMapPubkeyNotFound verifies that GetCosmosPubKey returns // a NotFound error when the provided mina public key has no associated cosmos key. -func TestCosmosMapPubkeyNotFound(t *testing.T) { +func TestUserCosmosMapPubkeyNotFound(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) @@ -123,17 +123,17 @@ func TestCosmosMapPubkeyNotFound(t *testing.T) { panic(err) } - _, err = qs.GetCosmosPubKey(f.ctx, &types.QueryGetCosmosPubKeyRequest{ - MinaPubKey: pub, + _, err = qs.GetUserCosmosAddress(f.ctx, &types.QueryGetUserCosmosAddressRequest{ + UserMinaAddress: pub, }) st, _ := status.FromError(err) require.Equal(t, codes.NotFound, st.Code()) } -// TestMinaMapPubkeyNotFound verifies that GetMinaPubKey returns +// TestUserMinaMapPubkeyNotFound verifies that GetMinaPubKey returns // a NotFound error when the provided cosmos public key has no associated mina key. -func TestMinaMapPubkeyNotFound(t *testing.T) { +func TestUserMinaMapPubkeyNotFound(t *testing.T) { f := initFixture(t) qs := keeper.NewQueryServerImpl(f.keeper) @@ -144,8 +144,8 @@ func TestMinaMapPubkeyNotFound(t *testing.T) { pub := priv.PubKey() - _, err := qs.GetMinaPubKey(f.ctx, &types.QueryGetMinaPubKeyRequest{ - CosmosPubKey: pub.Bytes(), + _, err := qs.GetUserMinaAddress(f.ctx, &types.QueryGetUserMinaAddressRequest{ + UserCosmosAddress: pub.Bytes(), }) st, _ := status.FromError(err) diff --git a/x/keyregistry/keeper/query_validator_keypairs_test.go b/x/keyregistry/keeper/query_validator_keypairs_test.go new file mode 100644 index 00000000..a9e40862 --- /dev/null +++ b/x/keyregistry/keeper/query_validator_keypairs_test.go @@ -0,0 +1,135 @@ +package keeper_test + +import ( + "testing" + + "github.com/node101-io/pulsar-chain/x/keyregistry/keeper" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" + "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" +) + +// TestValidatorCosmosMapInvalidArgumentFail verifies that GetCosmosPubKey returns +// an InvalidArgument error when called with a nil request. +func TestValidatorCosmosMapInvalidArgumentFail(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + _, err := qs.GetValidatorCosmosPubKey(f.ctx, nil) + require.Error(t, err) + + st, _ := status.FromError(err) + require.Equal(t, codes.InvalidArgument, st.Code()) +} + +// TestValidatorCosmosMapSuccess verifies that a mina public key can be retrieved +// by its associated cosmos public key after being stored in the CosmosToMina map. +func TestValidatorCosmosMapSuccess(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + err = f.keeper.ValidatorSetCosmosToMina(f.ctx, cosmosPubKey.Bytes(), minaPubKey) + require.NoError(t, err) + + resp, err := qs.GetValidatorMinaPubKey(f.ctx, &types.QueryGetValidatorMinaPubKeyRequest{ + ValidatorCosmosPubKey: cosmosPubKey.Bytes(), + }) + + require.NotNil(t, resp) + require.NoError(t, err) + + require.Equal(t, resp.ValidatorMinaPubKey, minaPubKey) +} + +// TestValidatorMinaMapSuccess verifies that a cosmos public key can be retrieved +// by its associated mina public key after being stored in the MinaToCosmos map. +func TestValidatorMinaMapSuccess(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + err = f.keeper.ValidatorSetMinaToCosmos(f.ctx, minaPubKey, cosmosPubKey.Bytes()) + require.NoError(t, err) + + resp, err := qs.GetValidatorCosmosPubKey(f.ctx, &types.QueryGetValidatorCosmosPubKeyRequest{ + ValidatorMinaPubKey: minaPubKey, + }) + require.NotNil(t, resp) + require.NoError(t, err) + + require.Equal(t, resp.ValidatorCosmosPubKey, cosmosPubKey.Bytes()) +} + +// TestValidatorMinaMapInvalidArgumentFail verifies that GetMinaPubKey returns +// an InvalidArgument error when called with a nil request. +func TestValidatorMinaMapInvalidArgumentFail(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + _, err := qs.GetValidatorMinaPubKey(f.ctx, nil) + require.Error(t, err) + + st, _ := status.FromError(err) + require.Equal(t, codes.InvalidArgument, st.Code()) +} + +// TestValidatorCosmosMapPubkeyNotFound verifies that GetCosmosPubKey returns +// a NotFound error when the provided mina public key has no associated cosmos key. +func TestValidatorCosmosMapPubkeyNotFound(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + _, minaPubKey, err := generateValidatorPublicKeys() + require.NotNil(t, minaPubKey) + require.NoError(t, err) + + _, err = qs.GetValidatorCosmosPubKey(f.ctx, &types.QueryGetValidatorCosmosPubKeyRequest{ + ValidatorMinaPubKey: minaPubKey, + }) + + st, _ := status.FromError(err) + require.Equal(t, codes.NotFound, st.Code()) +} + +// TestValidatorMinaMapPubkeyNotFound verifies that GetMinaPubKey returns +// a NotFound error when the provided cosmos public key has no associated mina key. +func TestValidatorMinaMapPubkeyNotFound(t *testing.T) { + f := initFixture(t) + + qs := keeper.NewQueryServerImpl(f.keeper) + params := types.DefaultParams() + require.NoError(t, f.keeper.Params.Set(f.ctx, params)) + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NotNil(t, cosmosPubKey) + require.NotNil(t, minaPubKey) + require.NoError(t, err) + + _, err = qs.GetValidatorMinaPubKey(f.ctx, &types.QueryGetValidatorMinaPubKeyRequest{ + ValidatorCosmosPubKey: CosmosPubKey, + }) + + st, _ := status.FromError(err) + require.Equal(t, codes.NotFound, st.Code()) +} diff --git a/x/keyregistry/keeper/register_keys_test.go b/x/keyregistry/keeper/user_register_keys_test.go similarity index 50% rename from x/keyregistry/keeper/register_keys_test.go rename to x/keyregistry/keeper/user_register_keys_test.go index 3ad930d1..6520b4ab 100644 --- a/x/keyregistry/keeper/register_keys_test.go +++ b/x/keyregistry/keeper/user_register_keys_test.go @@ -5,6 +5,7 @@ import ( "github.com/cometbft/cometbft/crypto/secp256k1" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/node101-io/mina-signer-go/keys" "github.com/node101-io/pulsar-chain/x/keyregistry/keeper" "github.com/node101-io/pulsar-chain/x/keyregistry/types" "github.com/stretchr/testify/require" @@ -15,9 +16,25 @@ import ( var mockCosmosSignature = "cosmosSig" var mockMinaSignature = "minaSig" -// TestRegisterKeysFail verifies that RegisterKeys fails with ErrInvalidPublicKey +var MinaPriv = []byte("7olA5Knafb5E2hJoWFzD+oamtyXIXXUZmYG9+pBMjTGIjqZTVLNGbE7DQ3Zq5YL5NMW31UMMMGgNCeEk+gyzRA==") + +func generateAddress() (sdk.AccAddress, []byte, error) { + cosmosPrivKey := secp256k1.GenPrivKey() + + cosmosPubKey := cosmosPrivKey.PubKey() + + cosmosAddr := sdk.AccAddress(cosmosPubKey.Address()) + + minaPrivKey := keys.NewPrivateKeyFromBytes([32]byte(MinaPriv)) + + minaAddress, err := minaPrivKey.ToPublicKey().ToAddress() + + return cosmosAddr, []byte(minaAddress), err +} + +// TestUserRegisterKeysFail verifies that RegisterKeys fails with ErrInvalidPublicKey // when the provided cosmos public key is not a valid compressed secp256k1 key (33 bytes). -func TestRegisterKeysFail(t *testing.T) { +func TestUserRegisterKeysFail(t *testing.T) { f := initFixture(t) ms := keeper.NewMsgServerImpl(f.keeper) @@ -27,73 +44,71 @@ func TestRegisterKeysFail(t *testing.T) { Creator: creatorAddr.String(), CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: CosmosPubKey, - MinaPublicKey: MinaPubKey, + CosmosAddress: CosmosPubKey, + MinaAddress: MinaPubKey, + IsUser: true, }) - require.ErrorIs(t, err, types.ErrInvalidPublicKey) + require.ErrorIs(t, err, types.ErrInvalidAddress) } -// TestRegisterKeysSuccess verifies that RegisterKeys succeeds with valid inputs +// TestUserRegisterKeysSuccess verifies that RegisterKeys succeeds with valid inputs // and ensures that both CosmosToMina and MinaToCosmos mappings are correctly stored. -func TestRegisterKeysSuccess(t *testing.T) { - - priv := secp256k1.GenPrivKey() +func TestUserRegisterKeysSuccess(t *testing.T) { - pub := priv.PubKey() - - addr := sdk.AccAddress(pub.Address()) + cosmosAddr, minaAddr, err := generateAddress() + require.NoError(t, err) f := initFixture(t) ms := keeper.NewMsgServerImpl(f.keeper) resp, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ - Creator: addr.String(), + Creator: cosmosAddr.String(), CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) require.NoError(t, err) require.NotNil(t, resp) - exists, err := f.keeper.CosmosToMinaHas(f.ctx, pub.Bytes()) + exists, err := f.keeper.UserCosmosToMinaHas(f.ctx, cosmosAddr.Bytes()) require.NoError(t, err) require.Equal(t, exists, true) - exists, err = f.keeper.MinaToCosmosHas(f.ctx, MinaPubKey) + exists, err = f.keeper.UserMinaToCosmosHas(f.ctx, minaAddr) require.NoError(t, err) require.Equal(t, exists, true) } -// TestInvalidCreatorAddress verifies that RegisterKeys fails with ErrInvalidCreatorAddres +// TestUserInvalidCreatorAddress verifies that RegisterKeys fails with ErrInvalidCreatorAddres // when the creator field is not a valid bech32 address. -func TestInvalidCreatorAddress(t *testing.T) { - - priv := secp256k1.GenPrivKey() +func TestUserInvalidCreatorAddress(t *testing.T) { - pub := priv.PubKey() + cosmosAddr, minaAddr, err := generateAddress() + require.NoError(t, err) f := initFixture(t) ms := keeper.NewMsgServerImpl(f.keeper) - _, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ Creator: "creator", CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) require.ErrorIs(t, err, types.ErrInvalidCreatorAddres) } -// TestInvalidSigner verifies that RegisterKeys fails with ErrInvalidSigner +// TestUserInvalidSigner verifies that RegisterKeys fails with ErrInvalidSigner // when the creator address does not match the address derived from the provided cosmos public key. -func TestInvalidSigner(t *testing.T) { - - priv := secp256k1.GenPrivKey() +func TestUserInvalidSigner(t *testing.T) { - pub := priv.PubKey() + cosmosAddr, minaAddr, err := generateAddress() + require.NoError(t, err) secondaryPriv := secp256k1.GenPrivKey() @@ -104,12 +119,13 @@ func TestInvalidSigner(t *testing.T) { f := initFixture(t) ms := keeper.NewMsgServerImpl(f.keeper) - _, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ Creator: addr.String(), CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) require.ErrorIs(t, err, types.ErrInvalidSigner) @@ -117,64 +133,62 @@ func TestInvalidSigner(t *testing.T) { } // TODO: Update require.NoError to require.ErrorIs once the VerifyCosmosSig and VerifyMinaSig is implemented -// TestInvalidSignature currently expects no error since signature verification is not yet implemented. -func TestInvalidSignature(t *testing.T) { +// TestUserInvalidSignature currently expects no error since signature verification is not yet implemented. +func TestUserInvalidSignature(t *testing.T) { - priv := secp256k1.GenPrivKey() + cosmosAddr, minaAddr, err := generateAddress() - pub := priv.PubKey() - - addr := sdk.AccAddress(pub.Address()) + require.NoError(t, err) f := initFixture(t) ms := keeper.NewMsgServerImpl(f.keeper) invalidSig := "cosmosSig" - _, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ - Creator: addr.String(), + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: cosmosAddr.String(), CosmosSignature: invalidSig, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) require.NoError(t, err) } -// TestInsertSecondaryKeysFail verifies that registering the same key pair twice +// TestUserInsertSecondaryKeysFail verifies that registering the same key pair twice // fails with ErrSecondaryKeyExists on the second attempt. -func TestInsertSecondaryKeysFail(t *testing.T) { +func TestUserInsertSecondaryKeysFail(t *testing.T) { f := initFixture(t) - priv := secp256k1.GenPrivKey() - - pub := priv.PubKey() - - addr := sdk.AccAddress(pub.Address()) + cosmosAddr, minaAddr, err := generateAddress() + require.NoError(t, err) ms := keeper.NewMsgServerImpl(f.keeper) // First registration should succeed. resp, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ - Creator: addr.String(), + Creator: cosmosAddr.String(), CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) require.NoError(t, err) require.NotNil(t, resp) // Second registration with the same keys should fail. resp, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ - Creator: addr.String(), + Creator: cosmosAddr.String(), CosmosSignature: mockCosmosSignature, MinaSignature: mockMinaSignature, - CosmosPublicKey: pub.Bytes(), - MinaPublicKey: MinaPubKey, + CosmosAddress: cosmosAddr.Bytes(), + MinaAddress: minaAddr, + IsUser: true, }) - require.ErrorIs(t, err, types.ErrSecondaryKeyExists) + require.ErrorIs(t, err, types.ErrUserSecondaryKeyExists) } diff --git a/x/keyregistry/keeper/validator_register_keys_test.go b/x/keyregistry/keeper/validator_register_keys_test.go new file mode 100644 index 00000000..7139e68e --- /dev/null +++ b/x/keyregistry/keeper/validator_register_keys_test.go @@ -0,0 +1,189 @@ +package keeper_test + +import ( + "testing" + + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/node101-io/mina-signer-go/keys" + "github.com/node101-io/pulsar-chain/x/keyregistry/keeper" + "github.com/node101-io/pulsar-chain/x/keyregistry/types" + "github.com/stretchr/testify/require" +) + +func generateValidatorPublicKeys() (cryptotypes.PubKey, []byte, error) { + cosmosPrivKey := ed25519.GenPrivKey() + + cosmosPubKey := cosmosPrivKey.PubKey() + + minaPrivKey := keys.NewPrivateKeyFromBytes([32]byte(MinaPriv)) + + minaAddress, err := minaPrivKey.ToPublicKey().Marshal() + + return cosmosPubKey, minaAddress, err +} + +// TestValidatorRegisterKeysFail verifies that RegisterKeys fails with ErrInvalidPublicKey +// when the provided cosmos consensus public key is invalid. +func TestValidatorRegisterKeysFail(t *testing.T) { + + f := initFixture(t) + ms := keeper.NewMsgServerImpl(f.keeper) + + creatorAddr := sdk.ConsAddress([]byte("pulsar")) + _, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: creatorAddr.String(), + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: CosmosPubKey, + MinaAddress: MinaPubKey, + IsUser: false, + }) + require.ErrorIs(t, err, types.ErrInvalidPublicKey) +} + +// TestValidatorRegisterKeysSuccess verifies that RegisterKeys succeeds with valid inputs +// and ensures that both CosmosToMina and MinaToCosmos mappings are correctly stored. +func TestValidatorRegisterKeysSuccess(t *testing.T) { + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + addr := sdk.ConsAddress(cosmosPubKey.Address()) + + f := initFixture(t) + ms := keeper.NewMsgServerImpl(f.keeper) + + resp, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: addr.String(), + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + require.NoError(t, err) + require.NotNil(t, resp) + + exists, err := f.keeper.ValidatorCosmosToMinaHas(f.ctx, cosmosPubKey.Bytes()) + require.NoError(t, err) + require.Equal(t, exists, true) + + exists, err = f.keeper.ValidatorMinaToCosmosHas(f.ctx, minaPubKey) + require.NoError(t, err) + require.Equal(t, exists, true) +} + +// TestValidatorInvalidCreatorAddress verifies that RegisterKeys fails with ErrInvalidCreatorAddres +// when the creator field is not a valid bech32 address. +func TestValidatorInvalidCreatorAddress(t *testing.T) { + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + f := initFixture(t) + ms := keeper.NewMsgServerImpl(f.keeper) + + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: "creator", + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + require.ErrorIs(t, err, types.ErrInvalidCreatorAddres) +} + +// TestValidatorInvalidSigner verifies that RegisterKeys fails with ErrInvalidSigner +// when the creator address does not match the address derived from the provided consensus public key. +func TestValidatorInvalidSigner(t *testing.T) { + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + secondaryPriv := ed25519.GenPrivKey() + + secondaryPublic := secondaryPriv.PubKey() + + addr := sdk.ConsAddress(secondaryPublic.Address()) + + f := initFixture(t) + ms := keeper.NewMsgServerImpl(f.keeper) + + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: addr.String(), + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + + require.ErrorIs(t, err, types.ErrInvalidSigner) +} + +// TODO: Update require.NoError to require.ErrorIs once the VerifyCosmosSig and VerifyMinaSig is implemented +// TestValidatorInvalidSignature currently expects no error since signature verification is not yet implemented. +func TestValidatorInvalidSignature(t *testing.T) { + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + addr := sdk.ConsAddress(cosmosPubKey.Address()) + + require.NoError(t, err) + + f := initFixture(t) + ms := keeper.NewMsgServerImpl(f.keeper) + + invalidSig := "cosmosSig" + + _, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: addr.String(), + CosmosSignature: invalidSig, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + + require.NoError(t, err) + +} + +// TestValidatorInsertSecondaryKeysFail verifies that registering the same key pair twice +// fails with ErrSecondaryKeyExists on the second attempt. +func TestValidatorInsertSecondaryKeysFail(t *testing.T) { + f := initFixture(t) + + cosmosPubKey, minaPubKey, err := generateValidatorPublicKeys() + require.NoError(t, err) + + addr := sdk.ConsAddress(cosmosPubKey.Address()) + + ms := keeper.NewMsgServerImpl(f.keeper) + + // First registration should succeed. + resp, err := ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: addr.String(), + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + require.NoError(t, err) + require.NotNil(t, resp) + + // Second registration with the same keys should fail. + resp, err = ms.RegisterKeys(f.ctx, &types.MsgRegisterKeys{ + Creator: addr.String(), + CosmosSignature: mockCosmosSignature, + MinaSignature: mockMinaSignature, + CosmosAddress: cosmosPubKey.Bytes(), + MinaAddress: minaPubKey, + IsUser: false, + }) + + require.ErrorIs(t, err, types.ErrValidatorSecondaryKeyExists) +} diff --git a/x/keyregistry/module/autocli.go b/x/keyregistry/module/autocli.go index 70bfd25b..206950c9 100644 --- a/x/keyregistry/module/autocli.go +++ b/x/keyregistry/module/autocli.go @@ -18,17 +18,31 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { Short: "Shows the parameters of the module", }, { - RpcMethod: "GetMinaPubKey", - Use: "get-mina-pub-key [cosmos-pub-key]", - Short: "Query GetMinaPubKey", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "cosmos_pub_key", Varargs: true}}, + RpcMethod: "GetUserMinaAddress", + Use: "get-user-mina-address [user-cosmos-address]", + Short: "Query GetUserMinaAddress", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "user_cosmos_address", Varargs: true}}, }, { - RpcMethod: "GetCosmosPubKey", - Use: "get-cosmos-pub-key [mina-pub-key]", - Short: "Query GetCosmosPubKey", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "mina_pub_key", Varargs: true}}, + RpcMethod: "GetUserCosmosAddress", + Use: "get-user-cosmos-address [user-mina-address]", + Short: "Query GetUserCosmosAddress", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "user_mina_address", Varargs: true}}, + }, + + { + RpcMethod: "GetValidatorMinaPubKey", + Use: "get-validator-mina-pub-key [validator-cosmos-address]", + Short: "Query GetValidatorMinaAddress", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "validator_cosmos_pub_key", Varargs: true}}, + }, + + { + RpcMethod: "GetValidatorCosmosPubKey", + Use: "get-validator-cosmos-address [validator-mina-pub-key]", + Short: "Query GetValidatorCosmosAddress", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "validator_mina_pub_key", Varargs: true}}, }, // this line is used by ignite scaffolding # autocli/query @@ -46,7 +60,7 @@ func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { RpcMethod: "RegisterKeys", Use: "register-keys [cosmos-signature] [mina-signature] [cosmos-public-key] [mina-public-key]", Short: "Send a registerKeys tx", - PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "cosmos_signature"}, {ProtoField: "mina_signature"}, {ProtoField: "cosmos_public_key"}, {ProtoField: "mina_public_key", Varargs: true}}, + PositionalArgs: []*autocliv1.PositionalArgDescriptor{{ProtoField: "cosmos_signature"}, {ProtoField: "mina_signature"}, {ProtoField: "cosmos_address"}, {ProtoField: "mina_address", Varargs: true}}, }, // this line is used by ignite scaffolding # autocli/tx }, diff --git a/x/keyregistry/types/address_pair.pb.go b/x/keyregistry/types/address_pair.pb.go new file mode 100644 index 00000000..3f5b82ab --- /dev/null +++ b/x/keyregistry/types/address_pair.pb.go @@ -0,0 +1,374 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: pulsarchain/keyregistry/v1/address_pair.proto + +package types + +import ( + fmt "fmt" + proto "github.com/cosmos/gogoproto/proto" + io "io" + math "math" + math_bits "math/bits" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type AddressPair struct { + MinaAddr []byte `protobuf:"bytes,1,opt,name=mina_addr,json=minaAddr,proto3" json:"mina_addr,omitempty"` + CosmosAddr []byte `protobuf:"bytes,2,opt,name=cosmos_addr,json=cosmosAddr,proto3" json:"cosmos_addr,omitempty"` +} + +func (m *AddressPair) Reset() { *m = AddressPair{} } +func (m *AddressPair) String() string { return proto.CompactTextString(m) } +func (*AddressPair) ProtoMessage() {} +func (*AddressPair) Descriptor() ([]byte, []int) { + return fileDescriptor_eb9cea5d1b988cd3, []int{0} +} +func (m *AddressPair) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddressPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddressPair.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AddressPair) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddressPair.Merge(m, src) +} +func (m *AddressPair) XXX_Size() int { + return m.Size() +} +func (m *AddressPair) XXX_DiscardUnknown() { + xxx_messageInfo_AddressPair.DiscardUnknown(m) +} + +var xxx_messageInfo_AddressPair proto.InternalMessageInfo + +func (m *AddressPair) GetMinaAddr() []byte { + if m != nil { + return m.MinaAddr + } + return nil +} + +func (m *AddressPair) GetCosmosAddr() []byte { + if m != nil { + return m.CosmosAddr + } + return nil +} + +func init() { + proto.RegisterType((*AddressPair)(nil), "pulsarchain.keyregistry.v1.AddressPair") +} + +func init() { + proto.RegisterFile("pulsarchain/keyregistry/v1/address_pair.proto", fileDescriptor_eb9cea5d1b988cd3) +} + +var fileDescriptor_eb9cea5d1b988cd3 = []byte{ + // 206 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x2d, 0x28, 0xcd, 0x29, + 0x4e, 0x2c, 0x4a, 0xce, 0x48, 0xcc, 0xcc, 0xd3, 0xcf, 0x4e, 0xad, 0x2c, 0x4a, 0x4d, 0xcf, 0x2c, + 0x2e, 0x29, 0xaa, 0xd4, 0x2f, 0x33, 0xd4, 0x4f, 0x4c, 0x49, 0x29, 0x4a, 0x2d, 0x2e, 0x8e, 0x2f, + 0x48, 0xcc, 0x2c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x42, 0x52, 0xae, 0x87, 0xa4, + 0x5c, 0xaf, 0xcc, 0x50, 0xc9, 0x9b, 0x8b, 0xdb, 0x11, 0xa2, 0x23, 0x20, 0x31, 0xb3, 0x48, 0x48, + 0x9a, 0x8b, 0x33, 0x37, 0x33, 0x2f, 0x31, 0x1e, 0x64, 0x8a, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x4f, + 0x10, 0x07, 0x48, 0x00, 0xa4, 0x46, 0x48, 0x9e, 0x8b, 0x3b, 0x39, 0xbf, 0x38, 0x37, 0xbf, 0x18, + 0x22, 0xcd, 0x04, 0x96, 0xe6, 0x82, 0x08, 0x81, 0x14, 0x38, 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, + 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, + 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, + 0xae, 0x7e, 0x5e, 0x7e, 0x4a, 0xaa, 0xa1, 0x81, 0xa1, 0x6e, 0x66, 0xbe, 0x3e, 0xc4, 0x61, 0xba, + 0x10, 0x8f, 0x54, 0xa0, 0x78, 0xa5, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0xec, 0x03, 0x63, + 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x32, 0x26, 0x7c, 0xb2, 0xf2, 0x00, 0x00, 0x00, +} + +func (m *AddressPair) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AddressPair) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddressPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CosmosAddr) > 0 { + i -= len(m.CosmosAddr) + copy(dAtA[i:], m.CosmosAddr) + i = encodeVarintAddressPair(dAtA, i, uint64(len(m.CosmosAddr))) + i-- + dAtA[i] = 0x12 + } + if len(m.MinaAddr) > 0 { + i -= len(m.MinaAddr) + copy(dAtA[i:], m.MinaAddr) + i = encodeVarintAddressPair(dAtA, i, uint64(len(m.MinaAddr))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintAddressPair(dAtA []byte, offset int, v uint64) int { + offset -= sovAddressPair(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AddressPair) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.MinaAddr) + if l > 0 { + n += 1 + l + sovAddressPair(uint64(l)) + } + l = len(m.CosmosAddr) + if l > 0 { + n += 1 + l + sovAddressPair(uint64(l)) + } + return n +} + +func sovAddressPair(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozAddressPair(x uint64) (n int) { + return sovAddressPair(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AddressPair) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AddressPair: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddressPair: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MinaAddr", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthAddressPair + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthAddressPair + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MinaAddr = append(m.MinaAddr[:0], dAtA[iNdEx:postIndex]...) + if m.MinaAddr == nil { + m.MinaAddr = []byte{} + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosAddr", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressPair + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthAddressPair + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthAddressPair + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CosmosAddr = append(m.CosmosAddr[:0], dAtA[iNdEx:postIndex]...) + if m.CosmosAddr == nil { + m.CosmosAddr = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAddressPair(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAddressPair + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipAddressPair(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAddressPair + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAddressPair + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowAddressPair + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthAddressPair + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupAddressPair + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthAddressPair + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthAddressPair = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowAddressPair = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupAddressPair = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/keyregistry/types/address_pairs.go b/x/keyregistry/types/address_pairs.go new file mode 100644 index 00000000..9d2edca8 --- /dev/null +++ b/x/keyregistry/types/address_pairs.go @@ -0,0 +1,35 @@ +package types + +import ( + "cosmossdk.io/errors" +) + +const CosmosAddrLen = 20 +const MinaAddrLen = 45 + +func NewAddressPairs() []*AddressPair { + return []*AddressPair{} +} +func DefaultUserAddressPairs() []*AddressPair { + return NewAddressPairs() +} + +func DefaultValidatorKeyPairs() []*AddressPair { + return NewAddressPairs() +} + +func ValidateAddressPair(k AddressPair) error { + if len(k.CosmosAddr) != CosmosAddrLen { + return errors.Wrap(ErrInvalidAddress, "cosmos address must be valid (20 bytes)") + } + + if len(k.MinaAddr) != MinaAddrLen { + return errors.Wrap(ErrInvalidAddress, "mina address must be valid") + } + return nil +} + +// Validate validates the set of params. +func (k AddressPair) Validate() error { + return ValidateAddressPair(k) +} diff --git a/x/keyregistry/types/errors.go b/x/keyregistry/types/errors.go index 202d20f0..8a8fd513 100644 --- a/x/keyregistry/types/errors.go +++ b/x/keyregistry/types/errors.go @@ -8,9 +8,11 @@ import ( // x/keyregistry module sentinel errors var ( - ErrInvalidSigner = errors.Register(ModuleName, 1100, "expected gov account as only signer for proposal message") - ErrInvalidSignature = errors.Register(ModuleName, 1101, "invalid signature") - ErrSecondaryKeyExists = errors.Register(ModuleName, 1102, "secondary key already exists") - ErrInvalidCreatorAddres = errors.Register(ModuleName, 1103, "invalid creator address") - ErrInvalidPublicKey = errors.Register(ModuleName, 1104, "invalid public key") + ErrInvalidSigner = errors.Register(ModuleName, 1100, "expected gov account as only signer for proposal message") + ErrInvalidSignature = errors.Register(ModuleName, 1101, "invalid signature") + ErrUserSecondaryKeyExists = errors.Register(ModuleName, 1102, "user's secondary key already exists") + ErrValidatorSecondaryKeyExists = errors.Register(ModuleName, 1103, "validator's secondary key already exists") + ErrInvalidCreatorAddres = errors.Register(ModuleName, 1104, "invalid creator address") + ErrInvalidPublicKey = errors.Register(ModuleName, 1105, "invalid public key") + ErrInvalidAddress = errors.Register(ModuleName, 1106, "invalid address") ) diff --git a/x/keyregistry/types/genesis.go b/x/keyregistry/types/genesis.go index b2e8fb0f..4cda9d3d 100644 --- a/x/keyregistry/types/genesis.go +++ b/x/keyregistry/types/genesis.go @@ -3,8 +3,9 @@ package types // DefaultGenesis returns the default genesis state func DefaultGenesis() *GenesisState { return &GenesisState{ - Params: DefaultParams(), - KeyPairs: DefaultKeyPairs(), + Params: DefaultParams(), + UserKeyPairs: DefaultUserAddressPairs(), + ValidatorKeyPairs: DefaultPublicKeyPair(), } } @@ -12,8 +13,15 @@ func DefaultGenesis() *GenesisState { // failure. func (gs GenesisState) Validate() error { - for _, keyPair := range gs.KeyPairs { - err := ValidateKeyPair(*keyPair) + for _, keyPair := range gs.UserKeyPairs { + err := ValidateAddressPair(*keyPair) + if err != nil { + return err + } + } + + for _, keyPair := range gs.ValidatorKeyPairs { + err := ValidatePublicKeyPair(*keyPair) if err != nil { return err } diff --git a/x/keyregistry/types/genesis.pb.go b/x/keyregistry/types/genesis.pb.go index 86964336..10beefbe 100644 --- a/x/keyregistry/types/genesis.pb.go +++ b/x/keyregistry/types/genesis.pb.go @@ -27,8 +27,9 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the keyregistry module's genesis state. type GenesisState struct { // params defines all the parameters of the module. - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` - KeyPairs []*KeyPair `protobuf:"bytes,2,rep,name=key_pairs,json=keyPairs,proto3" json:"key_pairs,omitempty"` + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + UserKeyPairs []*AddressPair `protobuf:"bytes,2,rep,name=user_key_pairs,json=userKeyPairs,proto3" json:"user_key_pairs,omitempty"` + ValidatorKeyPairs []*PublicKeyPair `protobuf:"bytes,3,rep,name=validator_key_pairs,json=validatorKeyPairs,proto3" json:"validator_key_pairs,omitempty"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -71,9 +72,16 @@ func (m *GenesisState) GetParams() Params { return Params{} } -func (m *GenesisState) GetKeyPairs() []*KeyPair { +func (m *GenesisState) GetUserKeyPairs() []*AddressPair { if m != nil { - return m.KeyPairs + return m.UserKeyPairs + } + return nil +} + +func (m *GenesisState) GetValidatorKeyPairs() []*PublicKeyPair { + if m != nil { + return m.ValidatorKeyPairs } return nil } @@ -87,25 +95,28 @@ func init() { } var fileDescriptor_dbaeb2ea35536f14 = []byte{ - // 275 bytes of a gzipped FileDescriptorProto + // 334 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x28, 0x28, 0xcd, 0x29, 0x4e, 0x2c, 0x4a, 0xce, 0x48, 0xcc, 0xcc, 0xd3, 0xcf, 0x4e, 0xad, 0x2c, 0x4a, 0x4d, 0xcf, 0x2c, 0x2e, 0x29, 0xaa, 0xd4, 0x2f, 0x33, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x42, 0x52, 0xa9, 0x87, 0xa4, 0x52, 0xaf, 0xcc, 0x50, 0x4a, 0x30, 0x31, 0x37, 0x33, 0x2f, 0x5f, 0x1f, 0x4c, 0x42, 0x94, 0x4b, 0x89, 0xa4, 0xe7, 0xa7, 0xe7, - 0x83, 0x99, 0xfa, 0x20, 0x16, 0x54, 0x54, 0x1d, 0x8f, 0x75, 0x05, 0x89, 0x45, 0x89, 0xb9, 0x50, - 0xdb, 0xa4, 0x34, 0xf1, 0x28, 0xcc, 0x4e, 0xad, 0x8c, 0x2f, 0x48, 0xcc, 0x2c, 0x82, 0x28, 0x55, - 0x9a, 0xce, 0xc8, 0xc5, 0xe3, 0x0e, 0x71, 0x6a, 0x70, 0x49, 0x62, 0x49, 0xaa, 0x90, 0x2b, 0x17, - 0x1b, 0xc4, 0x2c, 0x09, 0x46, 0x05, 0x46, 0x0d, 0x6e, 0x23, 0x25, 0x3d, 0xdc, 0x4e, 0xd7, 0x0b, - 0x00, 0xab, 0x74, 0xe2, 0x3c, 0x71, 0x4f, 0x9e, 0x61, 0xc5, 0xf3, 0x0d, 0x5a, 0x8c, 0x41, 0x50, - 0xcd, 0x42, 0x0e, 0x5c, 0x9c, 0x30, 0x9b, 0x8a, 0x25, 0x98, 0x14, 0x98, 0x35, 0xb8, 0x8d, 0x94, - 0xf1, 0x99, 0xe4, 0x9d, 0x5a, 0x19, 0x90, 0x98, 0x59, 0x14, 0xc4, 0x91, 0x0d, 0x61, 0x14, 0x3b, - 0x05, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, - 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x59, 0x7a, 0x66, 0x49, - 0x46, 0x69, 0x92, 0x5e, 0x72, 0x7e, 0xae, 0x7e, 0x5e, 0x7e, 0x4a, 0xaa, 0xa1, 0x81, 0xa1, 0x6e, - 0x66, 0xbe, 0x3e, 0xc4, 0x74, 0x5d, 0x88, 0xaf, 0x2b, 0x50, 0xfc, 0x5d, 0x52, 0x59, 0x90, 0x5a, - 0x9c, 0xc4, 0x06, 0xf6, 0xb2, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0xa5, 0xaa, 0xf8, 0xf1, 0xb7, - 0x01, 0x00, 0x00, + 0x83, 0x99, 0xfa, 0x20, 0x16, 0x54, 0x54, 0x17, 0x8f, 0x75, 0x89, 0x29, 0x29, 0x45, 0xa9, 0xc5, + 0xc5, 0xf1, 0x05, 0x89, 0x99, 0x45, 0x50, 0xe5, 0xea, 0x78, 0x94, 0x17, 0x24, 0x16, 0x25, 0xe6, + 0x42, 0x1d, 0x27, 0x65, 0x80, 0x4f, 0x61, 0x69, 0x52, 0x4e, 0x66, 0x72, 0x7c, 0x76, 0x6a, 0x25, + 0x92, 0xd1, 0x4a, 0xff, 0x19, 0xb9, 0x78, 0xdc, 0x21, 0x1e, 0x0c, 0x2e, 0x49, 0x2c, 0x49, 0x15, + 0x72, 0xe5, 0x62, 0x83, 0x18, 0x29, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x6d, 0xa4, 0xa4, 0x87, 0xdb, + 0xc3, 0x7a, 0x01, 0x60, 0x95, 0x4e, 0x9c, 0x27, 0xee, 0xc9, 0x33, 0xac, 0x78, 0xbe, 0x41, 0x8b, + 0x31, 0x08, 0xaa, 0x59, 0xc8, 0x97, 0x8b, 0xaf, 0xb4, 0x38, 0xb5, 0x08, 0x6e, 0x5d, 0xb1, 0x04, + 0x93, 0x02, 0xb3, 0x06, 0xb7, 0x91, 0x3a, 0x3e, 0xe3, 0x1c, 0x21, 0x5e, 0x0f, 0x48, 0xcc, 0x2c, + 0x0a, 0xe2, 0x01, 0x69, 0xf7, 0x4e, 0xad, 0x04, 0x71, 0x8a, 0x85, 0x22, 0xb9, 0x84, 0xcb, 0x12, + 0x73, 0x32, 0x53, 0x12, 0x4b, 0xf2, 0x91, 0xcd, 0x64, 0x06, 0x9b, 0xa9, 0x89, 0xd7, 0x89, 0x60, + 0x6f, 0x43, 0x0d, 0x0a, 0x12, 0x84, 0x9b, 0x02, 0x33, 0xda, 0x29, 0xe0, 0xc4, 0x23, 0x39, 0xc6, + 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, + 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0xcc, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, 0xf3, + 0x73, 0xf5, 0xf3, 0xf2, 0x53, 0x52, 0x0d, 0x0d, 0x0c, 0x75, 0x33, 0xf3, 0xf5, 0x21, 0x96, 0xe9, + 0x42, 0x02, 0xb9, 0x02, 0x25, 0x98, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x41, 0x6b, + 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x10, 0xe9, 0xe3, 0x9b, 0x55, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -128,10 +139,24 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.KeyPairs) > 0 { - for iNdEx := len(m.KeyPairs) - 1; iNdEx >= 0; iNdEx-- { + if len(m.ValidatorKeyPairs) > 0 { + for iNdEx := len(m.ValidatorKeyPairs) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.KeyPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.ValidatorKeyPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.UserKeyPairs) > 0 { + for iNdEx := len(m.UserKeyPairs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserKeyPairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -174,8 +199,14 @@ func (m *GenesisState) Size() (n int) { _ = l l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) - if len(m.KeyPairs) > 0 { - for _, e := range m.KeyPairs { + if len(m.UserKeyPairs) > 0 { + for _, e := range m.UserKeyPairs { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ValidatorKeyPairs) > 0 { + for _, e := range m.ValidatorKeyPairs { l = e.Size() n += 1 + l + sovGenesis(uint64(l)) } @@ -253,7 +284,41 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field KeyPairs", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field UserKeyPairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserKeyPairs = append(m.UserKeyPairs, &AddressPair{}) + if err := m.UserKeyPairs[len(m.UserKeyPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorKeyPairs", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -280,8 +345,8 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.KeyPairs = append(m.KeyPairs, &KeyPair{}) - if err := m.KeyPairs[len(m.KeyPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.ValidatorKeyPairs = append(m.ValidatorKeyPairs, &PublicKeyPair{}) + if err := m.ValidatorKeyPairs[len(m.ValidatorKeyPairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/keyregistry/types/keypairs.go b/x/keyregistry/types/keypairs.go deleted file mode 100644 index f3c372dd..00000000 --- a/x/keyregistry/types/keypairs.go +++ /dev/null @@ -1,30 +0,0 @@ -package types - -import ( - "cosmossdk.io/errors" - "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/node101-io/mina-signer-go/keys" -) - -func NewKeyPairs() []*KeyPair { - return []*KeyPair{} -} -func DefaultKeyPairs() []*KeyPair { - return NewKeyPairs() -} - -func ValidateKeyPair(k KeyPair) error { - if len(k.CosmosKey) != secp256k1.PubKeySize { - return errors.Wrap(ErrInvalidPublicKey, "cosmos public key must be compressed (33 bytes)") - } - - if len(k.MinaKey) != keys.PublicKeyTotalByteSize { - return errors.Wrap(ErrInvalidPublicKey, "mina public key must be compressed (33 bytes)") - } - return nil -} - -// Validate validates the set of params. -func (k KeyPair) Validate() error { - return ValidateKeyPair(k) -} diff --git a/x/keyregistry/types/keys.go b/x/keyregistry/types/keys.go index 5dcbbf70..9e6fb4e6 100644 --- a/x/keyregistry/types/keys.go +++ b/x/keyregistry/types/keys.go @@ -17,5 +17,8 @@ const ( // ParamsKey is the prefix to retrieve all Params var ParamsKey = collections.NewPrefix("p_keyregistry") -var CosmosToMinaPrefix = collections.NewPrefix("cosmos_map") -var MinaToCosmosPrefix = collections.NewPrefix("mina_map") +var UserCosmosToMinaPrefix = collections.NewPrefix("user_cosmos_map") +var UserMinaToCosmosPrefix = collections.NewPrefix("user_mina_map") + +var ValidatorCosmosToMinaPrefix = collections.NewPrefix("validator_cosmos_map") +var ValidatorMinaToCosmosPrefix = collections.NewPrefix("validator_mina_map") diff --git a/x/keyregistry/types/key_pair.pb.go b/x/keyregistry/types/public_key_pair.pb.go similarity index 55% rename from x/keyregistry/types/key_pair.pb.go rename to x/keyregistry/types/public_key_pair.pb.go index 94a30630..a5554363 100644 --- a/x/keyregistry/types/key_pair.pb.go +++ b/x/keyregistry/types/public_key_pair.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: pulsarchain/keyregistry/v1/key_pair.proto +// source: pulsarchain/keyregistry/v1/public_key_pair.proto package types @@ -23,23 +23,23 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // KeyPair defines the KeyPair message. -type KeyPair struct { +type PublicKeyPair struct { MinaKey []byte `protobuf:"bytes,1,opt,name=mina_key,json=minaKey,proto3" json:"mina_key,omitempty"` CosmosKey []byte `protobuf:"bytes,2,opt,name=cosmos_key,json=cosmosKey,proto3" json:"cosmos_key,omitempty"` } -func (m *KeyPair) Reset() { *m = KeyPair{} } -func (m *KeyPair) String() string { return proto.CompactTextString(m) } -func (*KeyPair) ProtoMessage() {} -func (*KeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_7125759d37e49a74, []int{0} +func (m *PublicKeyPair) Reset() { *m = PublicKeyPair{} } +func (m *PublicKeyPair) String() string { return proto.CompactTextString(m) } +func (*PublicKeyPair) ProtoMessage() {} +func (*PublicKeyPair) Descriptor() ([]byte, []int) { + return fileDescriptor_e897d11daaf50b90, []int{0} } -func (m *KeyPair) XXX_Unmarshal(b []byte) error { +func (m *PublicKeyPair) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *KeyPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *PublicKeyPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_KeyPair.Marshal(b, m, deterministic) + return xxx_messageInfo_PublicKeyPair.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -49,26 +49,26 @@ func (m *KeyPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { return b[:n], nil } } -func (m *KeyPair) XXX_Merge(src proto.Message) { - xxx_messageInfo_KeyPair.Merge(m, src) +func (m *PublicKeyPair) XXX_Merge(src proto.Message) { + xxx_messageInfo_PublicKeyPair.Merge(m, src) } -func (m *KeyPair) XXX_Size() int { +func (m *PublicKeyPair) XXX_Size() int { return m.Size() } -func (m *KeyPair) XXX_DiscardUnknown() { - xxx_messageInfo_KeyPair.DiscardUnknown(m) +func (m *PublicKeyPair) XXX_DiscardUnknown() { + xxx_messageInfo_PublicKeyPair.DiscardUnknown(m) } -var xxx_messageInfo_KeyPair proto.InternalMessageInfo +var xxx_messageInfo_PublicKeyPair proto.InternalMessageInfo -func (m *KeyPair) GetMinaKey() []byte { +func (m *PublicKeyPair) GetMinaKey() []byte { if m != nil { return m.MinaKey } return nil } -func (m *KeyPair) GetCosmosKey() []byte { +func (m *PublicKeyPair) GetCosmosKey() []byte { if m != nil { return m.CosmosKey } @@ -76,31 +76,32 @@ func (m *KeyPair) GetCosmosKey() []byte { } func init() { - proto.RegisterType((*KeyPair)(nil), "pulsarchain.keyregistry.v1.KeyPair") + proto.RegisterType((*PublicKeyPair)(nil), "pulsarchain.keyregistry.v1.PublicKeyPair") } func init() { - proto.RegisterFile("pulsarchain/keyregistry/v1/key_pair.proto", fileDescriptor_7125759d37e49a74) + proto.RegisterFile("pulsarchain/keyregistry/v1/public_key_pair.proto", fileDescriptor_e897d11daaf50b90) } -var fileDescriptor_7125759d37e49a74 = []byte{ - // 202 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x2c, 0x28, 0xcd, 0x29, +var fileDescriptor_e897d11daaf50b90 = []byte{ + // 212 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x28, 0x28, 0xcd, 0x29, 0x4e, 0x2c, 0x4a, 0xce, 0x48, 0xcc, 0xcc, 0xd3, 0xcf, 0x4e, 0xad, 0x2c, 0x4a, 0x4d, 0xcf, 0x2c, - 0x2e, 0x29, 0xaa, 0xd4, 0x2f, 0x33, 0x04, 0x71, 0xe3, 0x0b, 0x12, 0x33, 0x8b, 0xf4, 0x0a, 0x8a, - 0xf2, 0x4b, 0xf2, 0x85, 0xa4, 0x90, 0x94, 0xea, 0x21, 0x29, 0xd5, 0x2b, 0x33, 0x54, 0x72, 0xe6, - 0x62, 0xf7, 0x4e, 0xad, 0x0c, 0x48, 0xcc, 0x2c, 0x12, 0x92, 0xe4, 0xe2, 0xc8, 0xcd, 0xcc, 0x4b, - 0x8c, 0xcf, 0x4e, 0xad, 0x94, 0x60, 0x54, 0x60, 0xd4, 0xe0, 0x09, 0x62, 0x07, 0xf1, 0xbd, 0x53, - 0x2b, 0x85, 0x64, 0xb9, 0xb8, 0x92, 0xf3, 0x8b, 0x73, 0xf3, 0x8b, 0xc1, 0x92, 0x4c, 0x60, 0x49, - 0x4e, 0x88, 0x88, 0x77, 0x6a, 0xa5, 0x53, 0xc0, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, - 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, - 0x31, 0x44, 0x99, 0xa5, 0x67, 0x96, 0x64, 0x94, 0x26, 0xe9, 0x25, 0xe7, 0xe7, 0xea, 0xe7, 0xe5, - 0xa7, 0xa4, 0x1a, 0x1a, 0x18, 0xea, 0x66, 0xe6, 0xeb, 0x43, 0x1c, 0xa4, 0x0b, 0x71, 0x7c, 0x05, - 0x8a, 0xf3, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0x2e, 0x37, 0x06, 0x04, 0x00, 0x00, - 0xff, 0xff, 0x61, 0x07, 0x29, 0xd9, 0xe6, 0x00, 0x00, 0x00, + 0x2e, 0x29, 0xaa, 0xd4, 0x2f, 0x33, 0xd4, 0x2f, 0x28, 0x4d, 0xca, 0xc9, 0x4c, 0x8e, 0xcf, 0x4e, + 0xad, 0x8c, 0x2f, 0x48, 0xcc, 0x2c, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x42, 0xd2, + 0xa1, 0x87, 0xa4, 0x43, 0xaf, 0xcc, 0x50, 0xc9, 0x93, 0x8b, 0x37, 0x00, 0xac, 0xc9, 0x3b, 0xb5, + 0x32, 0x20, 0x31, 0xb3, 0x48, 0x48, 0x92, 0x8b, 0x23, 0x37, 0x33, 0x2f, 0x11, 0x64, 0x86, 0x04, + 0xa3, 0x02, 0xa3, 0x06, 0x4f, 0x10, 0x3b, 0x88, 0xef, 0x9d, 0x5a, 0x29, 0x24, 0xcb, 0xc5, 0x95, + 0x9c, 0x5f, 0x9c, 0x9b, 0x5f, 0x0c, 0x96, 0x64, 0x02, 0x4b, 0x72, 0x42, 0x44, 0xbc, 0x53, 0x2b, + 0x9d, 0x02, 0x4e, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, + 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0xca, 0x2c, 0x3d, 0xb3, + 0x24, 0xa3, 0x34, 0x49, 0x2f, 0x39, 0x3f, 0x57, 0x3f, 0x2f, 0x3f, 0x25, 0xd5, 0xd0, 0xc0, 0x50, + 0x37, 0x33, 0x5f, 0x1f, 0xe2, 0x2c, 0x5d, 0x88, 0x4f, 0x2a, 0x50, 0xfc, 0x52, 0x52, 0x59, 0x90, + 0x5a, 0x9c, 0xc4, 0x06, 0x76, 0xbf, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x86, 0xc7, 0xaa, + 0xf3, 0x00, 0x00, 0x00, } -func (m *KeyPair) Marshal() (dAtA []byte, err error) { +func (m *PublicKeyPair) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -110,12 +111,12 @@ func (m *KeyPair) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *KeyPair) MarshalTo(dAtA []byte) (int, error) { +func (m *PublicKeyPair) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *KeyPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *PublicKeyPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -123,22 +124,22 @@ func (m *KeyPair) MarshalToSizedBuffer(dAtA []byte) (int, error) { if len(m.CosmosKey) > 0 { i -= len(m.CosmosKey) copy(dAtA[i:], m.CosmosKey) - i = encodeVarintKeyPair(dAtA, i, uint64(len(m.CosmosKey))) + i = encodeVarintPublicKeyPair(dAtA, i, uint64(len(m.CosmosKey))) i-- dAtA[i] = 0x12 } if len(m.MinaKey) > 0 { i -= len(m.MinaKey) copy(dAtA[i:], m.MinaKey) - i = encodeVarintKeyPair(dAtA, i, uint64(len(m.MinaKey))) + i = encodeVarintPublicKeyPair(dAtA, i, uint64(len(m.MinaKey))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func encodeVarintKeyPair(dAtA []byte, offset int, v uint64) int { - offset -= sovKeyPair(v) +func encodeVarintPublicKeyPair(dAtA []byte, offset int, v uint64) int { + offset -= sovPublicKeyPair(v) base := offset for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) @@ -148,7 +149,7 @@ func encodeVarintKeyPair(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } -func (m *KeyPair) Size() (n int) { +func (m *PublicKeyPair) Size() (n int) { if m == nil { return 0 } @@ -156,22 +157,22 @@ func (m *KeyPair) Size() (n int) { _ = l l = len(m.MinaKey) if l > 0 { - n += 1 + l + sovKeyPair(uint64(l)) + n += 1 + l + sovPublicKeyPair(uint64(l)) } l = len(m.CosmosKey) if l > 0 { - n += 1 + l + sovKeyPair(uint64(l)) + n += 1 + l + sovPublicKeyPair(uint64(l)) } return n } -func sovKeyPair(x uint64) (n int) { +func sovPublicKeyPair(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } -func sozKeyPair(x uint64) (n int) { - return sovKeyPair(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func sozPublicKeyPair(x uint64) (n int) { + return sovPublicKeyPair(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } -func (m *KeyPair) Unmarshal(dAtA []byte) error { +func (m *PublicKeyPair) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -179,7 +180,7 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowKeyPair + return ErrIntOverflowPublicKeyPair } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -194,10 +195,10 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: KeyPair: wiretype end group for non-group") + return fmt.Errorf("proto: PublicKeyPair: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: KeyPair: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PublicKeyPair: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -207,7 +208,7 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowKeyPair + return ErrIntOverflowPublicKeyPair } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -220,11 +221,11 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { } } if byteLen < 0 { - return ErrInvalidLengthKeyPair + return ErrInvalidLengthPublicKeyPair } postIndex := iNdEx + byteLen if postIndex < 0 { - return ErrInvalidLengthKeyPair + return ErrInvalidLengthPublicKeyPair } if postIndex > l { return io.ErrUnexpectedEOF @@ -241,7 +242,7 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { var byteLen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowKeyPair + return ErrIntOverflowPublicKeyPair } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -254,11 +255,11 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { } } if byteLen < 0 { - return ErrInvalidLengthKeyPair + return ErrInvalidLengthPublicKeyPair } postIndex := iNdEx + byteLen if postIndex < 0 { - return ErrInvalidLengthKeyPair + return ErrInvalidLengthPublicKeyPair } if postIndex > l { return io.ErrUnexpectedEOF @@ -270,12 +271,12 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipKeyPair(dAtA[iNdEx:]) + skippy, err := skipPublicKeyPair(dAtA[iNdEx:]) if err != nil { return err } if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthKeyPair + return ErrInvalidLengthPublicKeyPair } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -289,7 +290,7 @@ func (m *KeyPair) Unmarshal(dAtA []byte) error { } return nil } -func skipKeyPair(dAtA []byte) (n int, err error) { +func skipPublicKeyPair(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 depth := 0 @@ -297,7 +298,7 @@ func skipKeyPair(dAtA []byte) (n int, err error) { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowKeyPair + return 0, ErrIntOverflowPublicKeyPair } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -314,7 +315,7 @@ func skipKeyPair(dAtA []byte) (n int, err error) { case 0: for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowKeyPair + return 0, ErrIntOverflowPublicKeyPair } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -330,7 +331,7 @@ func skipKeyPair(dAtA []byte) (n int, err error) { var length int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowKeyPair + return 0, ErrIntOverflowPublicKeyPair } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -343,14 +344,14 @@ func skipKeyPair(dAtA []byte) (n int, err error) { } } if length < 0 { - return 0, ErrInvalidLengthKeyPair + return 0, ErrInvalidLengthPublicKeyPair } iNdEx += length case 3: depth++ case 4: if depth == 0 { - return 0, ErrUnexpectedEndOfGroupKeyPair + return 0, ErrUnexpectedEndOfGroupPublicKeyPair } depth-- case 5: @@ -359,7 +360,7 @@ func skipKeyPair(dAtA []byte) (n int, err error) { return 0, fmt.Errorf("proto: illegal wireType %d", wireType) } if iNdEx < 0 { - return 0, ErrInvalidLengthKeyPair + return 0, ErrInvalidLengthPublicKeyPair } if depth == 0 { return iNdEx, nil @@ -369,7 +370,7 @@ func skipKeyPair(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthKeyPair = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowKeyPair = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupKeyPair = fmt.Errorf("proto: unexpected end of group") + ErrInvalidLengthPublicKeyPair = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPublicKeyPair = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPublicKeyPair = fmt.Errorf("proto: unexpected end of group") ) diff --git a/x/keyregistry/types/public_key_pairs.go b/x/keyregistry/types/public_key_pairs.go new file mode 100644 index 00000000..1d1998dd --- /dev/null +++ b/x/keyregistry/types/public_key_pairs.go @@ -0,0 +1,34 @@ +package types + +import ( + "cosmossdk.io/errors" + "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + "github.com/node101-io/mina-signer-go/keys" +) + +func NewPublicKeyPairs() []*PublicKeyPair { + return []*PublicKeyPair{} +} +func DefaultUserPublicKeyPairs() []*PublicKeyPair { + return NewPublicKeyPairs() +} + +func DefaultPublicKeyPair() []*PublicKeyPair { + return NewPublicKeyPairs() +} + +func ValidatePublicKeyPair(k PublicKeyPair) error { + if len(k.CosmosKey) != ed25519.PubKeySize { + return errors.Wrap(ErrInvalidPublicKey, "cosmos consensus public key must be ed25519 (32 bytes)") + } + + if len(k.MinaKey) != keys.PublicKeyTotalByteSize { + return errors.Wrap(ErrInvalidPublicKey, "mina public key must be compressed (33 bytes)") + } + return nil +} + +// Validate validates the set of params. +func (k PublicKeyPair) Validate() error { + return ValidatePublicKeyPair(k) +} diff --git a/x/keyregistry/types/query.pb.go b/x/keyregistry/types/query.pb.go index 09839626..8fd3aa83 100644 --- a/x/keyregistry/types/query.pb.go +++ b/x/keyregistry/types/query.pb.go @@ -114,23 +114,23 @@ func (m *QueryParamsResponse) GetParams() Params { return Params{} } -// QueryGetMinaPubKeyRequest defines the QueryGetMinaPubKeyRequest message. -type QueryGetMinaPubKeyRequest struct { - CosmosPubKey []byte `protobuf:"bytes,1,opt,name=cosmos_pub_key,json=cosmosPubKey,proto3" json:"cosmos_pub_key,omitempty"` +// QueryGetUserMinaAddressRequest defines the QueryGetUserMinaAddressRequest message. +type QueryGetUserMinaAddressRequest struct { + UserCosmosAddress []byte `protobuf:"bytes,1,opt,name=user_cosmos_address,json=userCosmosAddress,proto3" json:"user_cosmos_address,omitempty"` } -func (m *QueryGetMinaPubKeyRequest) Reset() { *m = QueryGetMinaPubKeyRequest{} } -func (m *QueryGetMinaPubKeyRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetMinaPubKeyRequest) ProtoMessage() {} -func (*QueryGetMinaPubKeyRequest) Descriptor() ([]byte, []int) { +func (m *QueryGetUserMinaAddressRequest) Reset() { *m = QueryGetUserMinaAddressRequest{} } +func (m *QueryGetUserMinaAddressRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetUserMinaAddressRequest) ProtoMessage() {} +func (*QueryGetUserMinaAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d580bfce910e0ca3, []int{2} } -func (m *QueryGetMinaPubKeyRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryGetUserMinaAddressRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetMinaPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetUserMinaAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetMinaPubKeyRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetUserMinaAddressRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -140,42 +140,42 @@ func (m *QueryGetMinaPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *QueryGetMinaPubKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMinaPubKeyRequest.Merge(m, src) +func (m *QueryGetUserMinaAddressRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetUserMinaAddressRequest.Merge(m, src) } -func (m *QueryGetMinaPubKeyRequest) XXX_Size() int { +func (m *QueryGetUserMinaAddressRequest) XXX_Size() int { return m.Size() } -func (m *QueryGetMinaPubKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMinaPubKeyRequest.DiscardUnknown(m) +func (m *QueryGetUserMinaAddressRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetUserMinaAddressRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetMinaPubKeyRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryGetUserMinaAddressRequest proto.InternalMessageInfo -func (m *QueryGetMinaPubKeyRequest) GetCosmosPubKey() []byte { +func (m *QueryGetUserMinaAddressRequest) GetUserCosmosAddress() []byte { if m != nil { - return m.CosmosPubKey + return m.UserCosmosAddress } return nil } -// QueryGetMinaPubKeyResponse defines the QueryGetMinaPubKeyResponse message. -type QueryGetMinaPubKeyResponse struct { - MinaPubKey []byte `protobuf:"bytes,1,opt,name=mina_pub_key,json=minaPubKey,proto3" json:"mina_pub_key,omitempty"` +// QueryGetUserMinaAddressResponse defines the QueryGetUserMinaAddressResponse message. +type QueryGetUserMinaAddressResponse struct { + UserMinaAddress []byte `protobuf:"bytes,1,opt,name=user_mina_address,json=userMinaAddress,proto3" json:"user_mina_address,omitempty"` } -func (m *QueryGetMinaPubKeyResponse) Reset() { *m = QueryGetMinaPubKeyResponse{} } -func (m *QueryGetMinaPubKeyResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetMinaPubKeyResponse) ProtoMessage() {} -func (*QueryGetMinaPubKeyResponse) Descriptor() ([]byte, []int) { +func (m *QueryGetUserMinaAddressResponse) Reset() { *m = QueryGetUserMinaAddressResponse{} } +func (m *QueryGetUserMinaAddressResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetUserMinaAddressResponse) ProtoMessage() {} +func (*QueryGetUserMinaAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d580bfce910e0ca3, []int{3} } -func (m *QueryGetMinaPubKeyResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryGetUserMinaAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetMinaPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetUserMinaAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetMinaPubKeyResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetUserMinaAddressResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -185,42 +185,42 @@ func (m *QueryGetMinaPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *QueryGetMinaPubKeyResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetMinaPubKeyResponse.Merge(m, src) +func (m *QueryGetUserMinaAddressResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetUserMinaAddressResponse.Merge(m, src) } -func (m *QueryGetMinaPubKeyResponse) XXX_Size() int { +func (m *QueryGetUserMinaAddressResponse) XXX_Size() int { return m.Size() } -func (m *QueryGetMinaPubKeyResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetMinaPubKeyResponse.DiscardUnknown(m) +func (m *QueryGetUserMinaAddressResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetUserMinaAddressResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetMinaPubKeyResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryGetUserMinaAddressResponse proto.InternalMessageInfo -func (m *QueryGetMinaPubKeyResponse) GetMinaPubKey() []byte { +func (m *QueryGetUserMinaAddressResponse) GetUserMinaAddress() []byte { if m != nil { - return m.MinaPubKey + return m.UserMinaAddress } return nil } -// QueryGetCosmosPubKeyRequest defines the QueryGetCosmosPubKeyRequest message. -type QueryGetCosmosPubKeyRequest struct { - MinaPubKey []byte `protobuf:"bytes,1,opt,name=mina_pub_key,json=minaPubKey,proto3" json:"mina_pub_key,omitempty"` +// QueryGetUserCosmosAddressRequest defines the QueryGetUserCosmosAddressRequest message. +type QueryGetUserCosmosAddressRequest struct { + UserMinaAddress []byte `protobuf:"bytes,1,opt,name=user_mina_address,json=userMinaAddress,proto3" json:"user_mina_address,omitempty"` } -func (m *QueryGetCosmosPubKeyRequest) Reset() { *m = QueryGetCosmosPubKeyRequest{} } -func (m *QueryGetCosmosPubKeyRequest) String() string { return proto.CompactTextString(m) } -func (*QueryGetCosmosPubKeyRequest) ProtoMessage() {} -func (*QueryGetCosmosPubKeyRequest) Descriptor() ([]byte, []int) { +func (m *QueryGetUserCosmosAddressRequest) Reset() { *m = QueryGetUserCosmosAddressRequest{} } +func (m *QueryGetUserCosmosAddressRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetUserCosmosAddressRequest) ProtoMessage() {} +func (*QueryGetUserCosmosAddressRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d580bfce910e0ca3, []int{4} } -func (m *QueryGetCosmosPubKeyRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryGetUserCosmosAddressRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetCosmosPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetUserCosmosAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetCosmosPubKeyRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetUserCosmosAddressRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -230,42 +230,42 @@ func (m *QueryGetCosmosPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryGetCosmosPubKeyRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetCosmosPubKeyRequest.Merge(m, src) +func (m *QueryGetUserCosmosAddressRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetUserCosmosAddressRequest.Merge(m, src) } -func (m *QueryGetCosmosPubKeyRequest) XXX_Size() int { +func (m *QueryGetUserCosmosAddressRequest) XXX_Size() int { return m.Size() } -func (m *QueryGetCosmosPubKeyRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetCosmosPubKeyRequest.DiscardUnknown(m) +func (m *QueryGetUserCosmosAddressRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetUserCosmosAddressRequest.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetCosmosPubKeyRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryGetUserCosmosAddressRequest proto.InternalMessageInfo -func (m *QueryGetCosmosPubKeyRequest) GetMinaPubKey() []byte { +func (m *QueryGetUserCosmosAddressRequest) GetUserMinaAddress() []byte { if m != nil { - return m.MinaPubKey + return m.UserMinaAddress } return nil } -// QueryGetCosmosPubKeyResponse defines the QueryGetCosmosPubKeyResponse message. -type QueryGetCosmosPubKeyResponse struct { - CosmosPubKey []byte `protobuf:"bytes,1,opt,name=cosmos_pub_key,json=cosmosPubKey,proto3" json:"cosmos_pub_key,omitempty"` +// QueryGetUserCosmosAddressResponse defines the QueryGetUserCosmosAddressResponse message. +type QueryGetUserCosmosAddressResponse struct { + UserCosmosAddress []byte `protobuf:"bytes,1,opt,name=user_cosmos_address,json=userCosmosAddress,proto3" json:"user_cosmos_address,omitempty"` } -func (m *QueryGetCosmosPubKeyResponse) Reset() { *m = QueryGetCosmosPubKeyResponse{} } -func (m *QueryGetCosmosPubKeyResponse) String() string { return proto.CompactTextString(m) } -func (*QueryGetCosmosPubKeyResponse) ProtoMessage() {} -func (*QueryGetCosmosPubKeyResponse) Descriptor() ([]byte, []int) { +func (m *QueryGetUserCosmosAddressResponse) Reset() { *m = QueryGetUserCosmosAddressResponse{} } +func (m *QueryGetUserCosmosAddressResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetUserCosmosAddressResponse) ProtoMessage() {} +func (*QueryGetUserCosmosAddressResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d580bfce910e0ca3, []int{5} } -func (m *QueryGetCosmosPubKeyResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryGetUserCosmosAddressResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueryGetCosmosPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryGetUserCosmosAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueryGetCosmosPubKeyResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryGetUserCosmosAddressResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -275,21 +275,201 @@ func (m *QueryGetCosmosPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *QueryGetCosmosPubKeyResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueryGetCosmosPubKeyResponse.Merge(m, src) +func (m *QueryGetUserCosmosAddressResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetUserCosmosAddressResponse.Merge(m, src) } -func (m *QueryGetCosmosPubKeyResponse) XXX_Size() int { +func (m *QueryGetUserCosmosAddressResponse) XXX_Size() int { return m.Size() } -func (m *QueryGetCosmosPubKeyResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QueryGetCosmosPubKeyResponse.DiscardUnknown(m) +func (m *QueryGetUserCosmosAddressResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetUserCosmosAddressResponse.DiscardUnknown(m) } -var xxx_messageInfo_QueryGetCosmosPubKeyResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryGetUserCosmosAddressResponse proto.InternalMessageInfo -func (m *QueryGetCosmosPubKeyResponse) GetCosmosPubKey() []byte { +func (m *QueryGetUserCosmosAddressResponse) GetUserCosmosAddress() []byte { if m != nil { - return m.CosmosPubKey + return m.UserCosmosAddress + } + return nil +} + +// QueryGetValidatorMinaAddressRequest defines the QueryGetValidatorMinaAddressRequest message. +type QueryGetValidatorMinaPubKeyRequest struct { + ValidatorCosmosPubKey []byte `protobuf:"bytes,1,opt,name=validator_cosmos_pub_key,json=validatorCosmosPubKey,proto3" json:"validator_cosmos_pub_key,omitempty"` +} + +func (m *QueryGetValidatorMinaPubKeyRequest) Reset() { *m = QueryGetValidatorMinaPubKeyRequest{} } +func (m *QueryGetValidatorMinaPubKeyRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetValidatorMinaPubKeyRequest) ProtoMessage() {} +func (*QueryGetValidatorMinaPubKeyRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d580bfce910e0ca3, []int{6} +} +func (m *QueryGetValidatorMinaPubKeyRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetValidatorMinaPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetValidatorMinaPubKeyRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetValidatorMinaPubKeyRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetValidatorMinaPubKeyRequest.Merge(m, src) +} +func (m *QueryGetValidatorMinaPubKeyRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetValidatorMinaPubKeyRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetValidatorMinaPubKeyRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetValidatorMinaPubKeyRequest proto.InternalMessageInfo + +func (m *QueryGetValidatorMinaPubKeyRequest) GetValidatorCosmosPubKey() []byte { + if m != nil { + return m.ValidatorCosmosPubKey + } + return nil +} + +// QueryGetValidatorMinaAddressResponse defines the QueryGetValidatorMinaAddressResponse message. +type QueryGetValidatorMinaPubKeyResponse struct { + ValidatorMinaPubKey []byte `protobuf:"bytes,1,opt,name=validator_mina_pub_key,json=validatorMinaPubKey,proto3" json:"validator_mina_pub_key,omitempty"` +} + +func (m *QueryGetValidatorMinaPubKeyResponse) Reset() { *m = QueryGetValidatorMinaPubKeyResponse{} } +func (m *QueryGetValidatorMinaPubKeyResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetValidatorMinaPubKeyResponse) ProtoMessage() {} +func (*QueryGetValidatorMinaPubKeyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d580bfce910e0ca3, []int{7} +} +func (m *QueryGetValidatorMinaPubKeyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetValidatorMinaPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetValidatorMinaPubKeyResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetValidatorMinaPubKeyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetValidatorMinaPubKeyResponse.Merge(m, src) +} +func (m *QueryGetValidatorMinaPubKeyResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetValidatorMinaPubKeyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetValidatorMinaPubKeyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetValidatorMinaPubKeyResponse proto.InternalMessageInfo + +func (m *QueryGetValidatorMinaPubKeyResponse) GetValidatorMinaPubKey() []byte { + if m != nil { + return m.ValidatorMinaPubKey + } + return nil +} + +// QueryGetValidatorCosmosAddressRequest defines the QueryGetValidatorCosmosAddressRequest message. +type QueryGetValidatorCosmosPubKeyRequest struct { + ValidatorMinaPubKey []byte `protobuf:"bytes,1,opt,name=validator_mina_pub_key,json=validatorMinaPubKey,proto3" json:"validator_mina_pub_key,omitempty"` +} + +func (m *QueryGetValidatorCosmosPubKeyRequest) Reset() { *m = QueryGetValidatorCosmosPubKeyRequest{} } +func (m *QueryGetValidatorCosmosPubKeyRequest) String() string { return proto.CompactTextString(m) } +func (*QueryGetValidatorCosmosPubKeyRequest) ProtoMessage() {} +func (*QueryGetValidatorCosmosPubKeyRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_d580bfce910e0ca3, []int{8} +} +func (m *QueryGetValidatorCosmosPubKeyRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetValidatorCosmosPubKeyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetValidatorCosmosPubKeyRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetValidatorCosmosPubKeyRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetValidatorCosmosPubKeyRequest.Merge(m, src) +} +func (m *QueryGetValidatorCosmosPubKeyRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryGetValidatorCosmosPubKeyRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetValidatorCosmosPubKeyRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetValidatorCosmosPubKeyRequest proto.InternalMessageInfo + +func (m *QueryGetValidatorCosmosPubKeyRequest) GetValidatorMinaPubKey() []byte { + if m != nil { + return m.ValidatorMinaPubKey + } + return nil +} + +// QueryGetValidatorCosmosAddressResponse defines the QueryGetValidatorCosmosAddressResponse message. +type QueryGetValidatorCosmosPubKeyResponse struct { + ValidatorCosmosPubKey []byte `protobuf:"bytes,1,opt,name=validator_cosmos_pub_key,json=validatorCosmosPubKey,proto3" json:"validator_cosmos_pub_key,omitempty"` +} + +func (m *QueryGetValidatorCosmosPubKeyResponse) Reset() { *m = QueryGetValidatorCosmosPubKeyResponse{} } +func (m *QueryGetValidatorCosmosPubKeyResponse) String() string { return proto.CompactTextString(m) } +func (*QueryGetValidatorCosmosPubKeyResponse) ProtoMessage() {} +func (*QueryGetValidatorCosmosPubKeyResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_d580bfce910e0ca3, []int{9} +} +func (m *QueryGetValidatorCosmosPubKeyResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryGetValidatorCosmosPubKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryGetValidatorCosmosPubKeyResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryGetValidatorCosmosPubKeyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryGetValidatorCosmosPubKeyResponse.Merge(m, src) +} +func (m *QueryGetValidatorCosmosPubKeyResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryGetValidatorCosmosPubKeyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryGetValidatorCosmosPubKeyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryGetValidatorCosmosPubKeyResponse proto.InternalMessageInfo + +func (m *QueryGetValidatorCosmosPubKeyResponse) GetValidatorCosmosPubKey() []byte { + if m != nil { + return m.ValidatorCosmosPubKey } return nil } @@ -297,10 +477,14 @@ func (m *QueryGetCosmosPubKeyResponse) GetCosmosPubKey() []byte { func init() { proto.RegisterType((*QueryParamsRequest)(nil), "pulsarchain.keyregistry.v1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "pulsarchain.keyregistry.v1.QueryParamsResponse") - proto.RegisterType((*QueryGetMinaPubKeyRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetMinaPubKeyRequest") - proto.RegisterType((*QueryGetMinaPubKeyResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetMinaPubKeyResponse") - proto.RegisterType((*QueryGetCosmosPubKeyRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetCosmosPubKeyRequest") - proto.RegisterType((*QueryGetCosmosPubKeyResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetCosmosPubKeyResponse") + proto.RegisterType((*QueryGetUserMinaAddressRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetUserMinaAddressRequest") + proto.RegisterType((*QueryGetUserMinaAddressResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetUserMinaAddressResponse") + proto.RegisterType((*QueryGetUserCosmosAddressRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetUserCosmosAddressRequest") + proto.RegisterType((*QueryGetUserCosmosAddressResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetUserCosmosAddressResponse") + proto.RegisterType((*QueryGetValidatorMinaPubKeyRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetValidatorMinaPubKeyRequest") + proto.RegisterType((*QueryGetValidatorMinaPubKeyResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetValidatorMinaPubKeyResponse") + proto.RegisterType((*QueryGetValidatorCosmosPubKeyRequest)(nil), "pulsarchain.keyregistry.v1.QueryGetValidatorCosmosPubKeyRequest") + proto.RegisterType((*QueryGetValidatorCosmosPubKeyResponse)(nil), "pulsarchain.keyregistry.v1.QueryGetValidatorCosmosPubKeyResponse") } func init() { @@ -308,38 +492,49 @@ func init() { } var fileDescriptor_d580bfce910e0ca3 = []byte{ - // 495 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xcf, 0x6a, 0x14, 0x31, - 0x18, 0xdf, 0x88, 0x2e, 0x18, 0x57, 0xc5, 0xd8, 0x83, 0x8e, 0x65, 0x2c, 0x83, 0xa8, 0x14, 0x3a, - 0xe9, 0x54, 0x5c, 0x3d, 0x29, 0x56, 0x45, 0xa4, 0x08, 0xdb, 0x3d, 0x8a, 0xb0, 0x64, 0xd6, 0x90, - 0x86, 0x76, 0x92, 0x74, 0x92, 0x59, 0x1c, 0x4a, 0x2f, 0x3e, 0x81, 0xe0, 0x13, 0x78, 0xf3, 0xe8, - 0x63, 0xf4, 0x58, 0xf1, 0xa0, 0x5e, 0x44, 0x76, 0x05, 0x5f, 0x43, 0x9a, 0xa4, 0x32, 0x53, 0xb7, - 0xdb, 0x5d, 0xbc, 0x0c, 0xe1, 0x9b, 0xdf, 0xbf, 0xef, 0xfb, 0x42, 0xe0, 0x4d, 0x55, 0x6c, 0x69, - 0x92, 0xf7, 0x37, 0x08, 0x17, 0x78, 0x93, 0x96, 0x39, 0x65, 0x5c, 0x9b, 0xbc, 0xc4, 0x83, 0x04, - 0x6f, 0x17, 0x34, 0x2f, 0x63, 0x95, 0x4b, 0x23, 0x51, 0x50, 0xc1, 0xc5, 0x15, 0x5c, 0x3c, 0x48, - 0x82, 0x4b, 0x24, 0xe3, 0x42, 0x62, 0xfb, 0x75, 0xf0, 0x60, 0xb1, 0x2f, 0x75, 0x26, 0x35, 0x4e, - 0x89, 0xa6, 0x4e, 0x07, 0x0f, 0x92, 0x94, 0x1a, 0x92, 0x60, 0x45, 0x18, 0x17, 0xc4, 0x70, 0x29, - 0x3c, 0x76, 0x8e, 0x49, 0x26, 0xed, 0x11, 0x1f, 0x9c, 0x7c, 0x75, 0x9e, 0x49, 0xc9, 0xb6, 0x28, - 0x26, 0x8a, 0x63, 0x22, 0x84, 0x34, 0x96, 0xa2, 0xfd, 0xdf, 0x5b, 0x13, 0x62, 0x2b, 0x92, 0x93, - 0xcc, 0x03, 0xa3, 0x39, 0x88, 0xd6, 0x0f, 0xec, 0x3b, 0xb6, 0xd8, 0xa5, 0xdb, 0x05, 0xd5, 0x26, - 0x7a, 0x05, 0x2f, 0xd7, 0xaa, 0x5a, 0x49, 0xa1, 0x29, 0x7a, 0x0a, 0x9b, 0x8e, 0x7c, 0x05, 0x2c, - 0x80, 0xdb, 0xe7, 0x56, 0xa2, 0xf8, 0xf8, 0xae, 0x63, 0xc7, 0x5d, 0x3d, 0xbb, 0xf7, 0xe3, 0x7a, - 0xe3, 0xe3, 0xef, 0x4f, 0x8b, 0xa0, 0xeb, 0xc9, 0xd1, 0x23, 0x78, 0xd5, 0xaa, 0x3f, 0xa3, 0xe6, - 0x05, 0x17, 0xa4, 0x53, 0xa4, 0x6b, 0xb4, 0xf4, 0xd6, 0xe8, 0x06, 0xbc, 0xe0, 0x66, 0xd3, 0x53, - 0x45, 0xda, 0xdb, 0xa4, 0xa5, 0xf5, 0x6a, 0x75, 0x5b, 0xae, 0xea, 0xc0, 0xd1, 0x03, 0x18, 0x8c, - 0x93, 0xf0, 0x39, 0x17, 0x60, 0x2b, 0xe3, 0x82, 0x1c, 0x51, 0x80, 0xd9, 0x5f, 0x64, 0xf4, 0x10, - 0x5e, 0x3b, 0xe4, 0x3f, 0xae, 0xe8, 0x1e, 0x86, 0x38, 0x59, 0xe0, 0x09, 0x9c, 0x1f, 0x2f, 0xe0, - 0x23, 0x4c, 0xd5, 0xc6, 0xca, 0xf7, 0xd3, 0xf0, 0x8c, 0x95, 0x41, 0x1f, 0x00, 0x6c, 0xba, 0x89, - 0xa1, 0x78, 0xd2, 0x54, 0xff, 0x5d, 0x56, 0x80, 0xa7, 0xc6, 0xbb, 0x6c, 0x51, 0xfb, 0xed, 0x97, - 0x5f, 0xef, 0x4f, 0x2d, 0xa3, 0x18, 0x0b, 0xf9, 0x9a, 0x26, 0xcb, 0xc9, 0x12, 0x97, 0xd8, 0x69, - 0x2c, 0x4d, 0xb8, 0x31, 0xe8, 0x33, 0x80, 0xe7, 0x6b, 0x03, 0x47, 0x77, 0x4f, 0xb4, 0x1e, 0xb7, - 0xe3, 0xa0, 0x3d, 0x2b, 0xcd, 0x07, 0x5f, 0xb7, 0xc1, 0xd7, 0xd0, 0xf3, 0x69, 0x83, 0x33, 0x6a, - 0x7a, 0xd5, 0x45, 0xe2, 0x9d, 0xfa, 0x52, 0x76, 0xd1, 0x57, 0x00, 0x2f, 0x1e, 0xd9, 0x21, 0xba, - 0x37, 0x4d, 0xbc, 0x31, 0xd7, 0x26, 0xb8, 0x3f, 0x3b, 0xf1, 0x7f, 0x3a, 0xab, 0xf7, 0x82, 0x77, - 0xaa, 0x9d, 0xee, 0xae, 0x76, 0xf6, 0x86, 0x21, 0xd8, 0x1f, 0x86, 0xe0, 0xe7, 0x30, 0x04, 0xef, - 0x46, 0x61, 0x63, 0x7f, 0x14, 0x36, 0xbe, 0x8d, 0xc2, 0xc6, 0xcb, 0x36, 0xe3, 0x66, 0xa3, 0x48, - 0xe3, 0xbe, 0xcc, 0x8e, 0xb5, 0x7b, 0x53, 0x33, 0x34, 0xa5, 0xa2, 0x3a, 0x6d, 0xda, 0x27, 0xe3, - 0xce, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd9, 0x53, 0x57, 0x8b, 0x14, 0x05, 0x00, 0x00, + // 659 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0x4f, 0x6b, 0x13, 0x4f, + 0x18, 0xce, 0x16, 0x7e, 0x85, 0xce, 0x4f, 0x90, 0x4e, 0x62, 0x09, 0x8b, 0x6c, 0xeb, 0xfa, 0x97, + 0x40, 0x77, 0xba, 0x2d, 0x54, 0xf0, 0x7f, 0x2b, 0xe2, 0x41, 0x2a, 0x31, 0xa5, 0x1e, 0x5a, 0xcb, + 0x3a, 0x9b, 0x0c, 0xdb, 0xa5, 0xc9, 0xce, 0x76, 0x67, 0x37, 0xb8, 0x94, 0x80, 0x78, 0xf0, 0x2c, + 0x78, 0xf0, 0xec, 0xcd, 0xa3, 0x1f, 0xa3, 0xc7, 0x82, 0x17, 0x4f, 0x22, 0x89, 0x20, 0x78, 0xf2, + 0x23, 0x48, 0x66, 0x67, 0x75, 0xd7, 0xec, 0xa6, 0x49, 0xea, 0x25, 0x0c, 0xf3, 0xbe, 0xcf, 0xf3, + 0x3e, 0xcf, 0x4b, 0x9e, 0x61, 0xc1, 0x15, 0x37, 0x68, 0x32, 0xec, 0xd5, 0xf7, 0xb0, 0xed, 0xa0, + 0x7d, 0x12, 0x7a, 0xc4, 0xb2, 0x99, 0xef, 0x85, 0xa8, 0xad, 0xa3, 0x83, 0x80, 0x78, 0xa1, 0xe6, + 0x7a, 0xd4, 0xa7, 0x50, 0x4e, 0xf4, 0x69, 0x89, 0x3e, 0xad, 0xad, 0xcb, 0xb3, 0xb8, 0x65, 0x3b, + 0x14, 0xf1, 0xdf, 0xa8, 0x5d, 0xae, 0xd4, 0x29, 0x6b, 0x51, 0x86, 0x4c, 0xcc, 0x48, 0xc4, 0x83, + 0xda, 0xba, 0x49, 0x7c, 0xac, 0x23, 0x17, 0x5b, 0xb6, 0x83, 0x7d, 0x9b, 0x3a, 0xa2, 0xb7, 0x64, + 0x51, 0x8b, 0xf2, 0x23, 0xea, 0x9f, 0xc4, 0xed, 0x79, 0x8b, 0x52, 0xab, 0x49, 0x10, 0x76, 0x6d, + 0x84, 0x1d, 0x87, 0xfa, 0x1c, 0xc2, 0x44, 0xf5, 0xea, 0x10, 0xd9, 0x2e, 0xf6, 0x70, 0x4b, 0x34, + 0xaa, 0x25, 0x00, 0x9f, 0xf4, 0xc7, 0x57, 0xf9, 0x65, 0x8d, 0x1c, 0x04, 0x84, 0xf9, 0xea, 0x33, + 0x50, 0x4c, 0xdd, 0x32, 0x97, 0x3a, 0x8c, 0xc0, 0x07, 0x60, 0x3a, 0x02, 0x97, 0xa5, 0x05, 0xe9, + 0xda, 0xff, 0xcb, 0xaa, 0x96, 0xef, 0x5a, 0x8b, 0xb0, 0xeb, 0x33, 0x47, 0x5f, 0xe6, 0x0b, 0x1f, + 0xbe, 0x7f, 0xac, 0x48, 0x35, 0x01, 0x56, 0xab, 0x40, 0xe1, 0xec, 0x0f, 0x89, 0xbf, 0xc5, 0x88, + 0xb7, 0x61, 0x3b, 0x78, 0xad, 0xd1, 0xf0, 0x08, 0x8b, 0xe7, 0x43, 0x0d, 0x14, 0x03, 0x46, 0x3c, + 0x23, 0xda, 0x92, 0x81, 0xa3, 0x2a, 0x9f, 0x7a, 0xa6, 0x36, 0xdb, 0x2f, 0xdd, 0xe7, 0x15, 0x01, + 0x53, 0x37, 0xc0, 0x7c, 0x2e, 0xa3, 0xd0, 0x5e, 0x01, 0x1c, 0x67, 0xb4, 0x6c, 0x07, 0xff, 0x45, + 0x78, 0x36, 0x48, 0x63, 0xd4, 0xc7, 0x60, 0x21, 0x49, 0x97, 0x9a, 0x15, 0x4b, 0x1c, 0x87, 0x6f, + 0x13, 0x5c, 0x18, 0xc2, 0x27, 0x04, 0x8e, 0xeb, 0x79, 0x17, 0xa8, 0x31, 0xe9, 0x53, 0xdc, 0xb4, + 0x1b, 0xd8, 0xa7, 0x7c, 0x68, 0x35, 0x30, 0x1f, 0x91, 0x30, 0x96, 0x79, 0x1d, 0x94, 0xdb, 0x71, + 0x35, 0xa6, 0x76, 0x03, 0xd3, 0xd8, 0x27, 0xa1, 0xa0, 0x3e, 0xf7, 0xbb, 0x1e, 0xf1, 0x47, 0x78, + 0x75, 0x1b, 0x5c, 0x1c, 0x4a, 0x2f, 0x54, 0xaf, 0x80, 0xb9, 0x3f, 0xfc, 0x7c, 0x17, 0x69, 0xf6, + 0x62, 0x7b, 0x10, 0xac, 0xee, 0x80, 0x4b, 0x03, 0xdc, 0xc9, 0xe1, 0xb1, 0xf8, 0x89, 0xc8, 0x9f, + 0x83, 0xcb, 0x27, 0x90, 0x0b, 0xe9, 0x93, 0xae, 0x66, 0xf9, 0xdd, 0x0c, 0xf8, 0x8f, 0x8f, 0x80, + 0xef, 0x25, 0x30, 0x1d, 0xfd, 0xcf, 0xa1, 0x36, 0x2c, 0x0b, 0x83, 0x11, 0x93, 0xd1, 0xc8, 0xfd, + 0x91, 0x5c, 0x75, 0xf5, 0xd5, 0xa7, 0x6f, 0x6f, 0xa7, 0x96, 0xa0, 0x86, 0x1c, 0xda, 0x20, 0xfa, + 0x92, 0xbe, 0x68, 0x53, 0x14, 0x71, 0x2c, 0x0e, 0xc9, 0x39, 0xfc, 0x21, 0x01, 0x38, 0x98, 0x0b, + 0x78, 0xe3, 0xc4, 0xf9, 0xb9, 0xf1, 0x94, 0x6f, 0x4e, 0x84, 0x15, 0x3e, 0x76, 0xb8, 0x8f, 0x2d, + 0xb8, 0x39, 0xaa, 0x0f, 0x8b, 0xf8, 0xc6, 0x40, 0xd4, 0xd0, 0x61, 0x46, 0x58, 0x3a, 0xf0, 0xa7, + 0x04, 0x4a, 0x59, 0x29, 0x83, 0xb7, 0x46, 0x95, 0x9c, 0x15, 0x76, 0xf9, 0xf6, 0x84, 0xe8, 0x53, + 0x5b, 0x4e, 0xfb, 0x13, 0xa6, 0x93, 0x7b, 0xe8, 0xc0, 0x97, 0x53, 0x60, 0x2e, 0x3b, 0xa4, 0xf0, + 0xce, 0x28, 0xb2, 0xf3, 0x1f, 0x0f, 0xf9, 0xee, 0xc4, 0x78, 0x61, 0x9c, 0x70, 0xe3, 0x06, 0xdc, + 0x1d, 0xc7, 0x78, 0x76, 0xe4, 0xd1, 0x61, 0x5e, 0x58, 0x3b, 0xf0, 0xf5, 0x14, 0x28, 0xe7, 0xc5, + 0x1d, 0xde, 0x1b, 0xcb, 0x44, 0xc6, 0x33, 0x24, 0xaf, 0x9d, 0x82, 0xe1, 0xdf, 0x2c, 0x22, 0x6d, + 0x38, 0xb9, 0x8a, 0xe4, 0x8a, 0x3a, 0xeb, 0xd5, 0xa3, 0xae, 0x22, 0x1d, 0x77, 0x15, 0xe9, 0x6b, + 0x57, 0x91, 0xde, 0xf4, 0x94, 0xc2, 0x71, 0x4f, 0x29, 0x7c, 0xee, 0x29, 0x85, 0xed, 0x55, 0xcb, + 0xf6, 0xf7, 0x02, 0x53, 0xab, 0xd3, 0x56, 0xae, 0x84, 0x17, 0x29, 0x11, 0x7e, 0xe8, 0x12, 0x66, + 0x4e, 0xf3, 0xcf, 0x84, 0x95, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x7c, 0x80, 0x7a, 0xbc, 0x08, + 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -356,10 +551,14 @@ const _ = grpc.SupportPackageIsVersion4 type QueryClient interface { // Parameters queries the parameters of the module. Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error) - // GetMinaPubKey Queries a list of GetMinaPubKey items. - GetMinaPubKey(ctx context.Context, in *QueryGetMinaPubKeyRequest, opts ...grpc.CallOption) (*QueryGetMinaPubKeyResponse, error) - // GetCosmosPubKey Queries a list of GetCosmosPubKey items. - GetCosmosPubKey(ctx context.Context, in *QueryGetCosmosPubKeyRequest, opts ...grpc.CallOption) (*QueryGetCosmosPubKeyResponse, error) + // GetUserMinaAddress Queries a list of GetUserMinaAddress items. + GetUserMinaAddress(ctx context.Context, in *QueryGetUserMinaAddressRequest, opts ...grpc.CallOption) (*QueryGetUserMinaAddressResponse, error) + // GetUserCosmosAddress Queries a list of GetUserCosmosAddress items. + GetUserCosmosAddress(ctx context.Context, in *QueryGetUserCosmosAddressRequest, opts ...grpc.CallOption) (*QueryGetUserCosmosAddressResponse, error) + // GetValidatorMinaAddress Queries a list of GetValidatorMinaAddress items. + GetValidatorMinaPubKey(ctx context.Context, in *QueryGetValidatorMinaPubKeyRequest, opts ...grpc.CallOption) (*QueryGetValidatorMinaPubKeyResponse, error) + // GetValidatorCosmosAddress Queries a list of GetValidatorCosmosAddress items. + GetValidatorCosmosPubKey(ctx context.Context, in *QueryGetValidatorCosmosPubKeyRequest, opts ...grpc.CallOption) (*QueryGetValidatorCosmosPubKeyResponse, error) } type queryClient struct { @@ -379,18 +578,36 @@ func (c *queryClient) Params(ctx context.Context, in *QueryParamsRequest, opts . return out, nil } -func (c *queryClient) GetMinaPubKey(ctx context.Context, in *QueryGetMinaPubKeyRequest, opts ...grpc.CallOption) (*QueryGetMinaPubKeyResponse, error) { - out := new(QueryGetMinaPubKeyResponse) - err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetMinaPubKey", in, out, opts...) +func (c *queryClient) GetUserMinaAddress(ctx context.Context, in *QueryGetUserMinaAddressRequest, opts ...grpc.CallOption) (*QueryGetUserMinaAddressResponse, error) { + out := new(QueryGetUserMinaAddressResponse) + err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetUserMinaAddress", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetUserCosmosAddress(ctx context.Context, in *QueryGetUserCosmosAddressRequest, opts ...grpc.CallOption) (*QueryGetUserCosmosAddressResponse, error) { + out := new(QueryGetUserCosmosAddressResponse) + err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetUserCosmosAddress", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) GetValidatorMinaPubKey(ctx context.Context, in *QueryGetValidatorMinaPubKeyRequest, opts ...grpc.CallOption) (*QueryGetValidatorMinaPubKeyResponse, error) { + out := new(QueryGetValidatorMinaPubKeyResponse) + err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetValidatorMinaPubKey", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *queryClient) GetCosmosPubKey(ctx context.Context, in *QueryGetCosmosPubKeyRequest, opts ...grpc.CallOption) (*QueryGetCosmosPubKeyResponse, error) { - out := new(QueryGetCosmosPubKeyResponse) - err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetCosmosPubKey", in, out, opts...) +func (c *queryClient) GetValidatorCosmosPubKey(ctx context.Context, in *QueryGetValidatorCosmosPubKeyRequest, opts ...grpc.CallOption) (*QueryGetValidatorCosmosPubKeyResponse, error) { + out := new(QueryGetValidatorCosmosPubKeyResponse) + err := c.cc.Invoke(ctx, "/pulsarchain.keyregistry.v1.Query/GetValidatorCosmosPubKey", in, out, opts...) if err != nil { return nil, err } @@ -401,10 +618,14 @@ func (c *queryClient) GetCosmosPubKey(ctx context.Context, in *QueryGetCosmosPub type QueryServer interface { // Parameters queries the parameters of the module. Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) - // GetMinaPubKey Queries a list of GetMinaPubKey items. - GetMinaPubKey(context.Context, *QueryGetMinaPubKeyRequest) (*QueryGetMinaPubKeyResponse, error) - // GetCosmosPubKey Queries a list of GetCosmosPubKey items. - GetCosmosPubKey(context.Context, *QueryGetCosmosPubKeyRequest) (*QueryGetCosmosPubKeyResponse, error) + // GetUserMinaAddress Queries a list of GetUserMinaAddress items. + GetUserMinaAddress(context.Context, *QueryGetUserMinaAddressRequest) (*QueryGetUserMinaAddressResponse, error) + // GetUserCosmosAddress Queries a list of GetUserCosmosAddress items. + GetUserCosmosAddress(context.Context, *QueryGetUserCosmosAddressRequest) (*QueryGetUserCosmosAddressResponse, error) + // GetValidatorMinaAddress Queries a list of GetValidatorMinaAddress items. + GetValidatorMinaPubKey(context.Context, *QueryGetValidatorMinaPubKeyRequest) (*QueryGetValidatorMinaPubKeyResponse, error) + // GetValidatorCosmosAddress Queries a list of GetValidatorCosmosAddress items. + GetValidatorCosmosPubKey(context.Context, *QueryGetValidatorCosmosPubKeyRequest) (*QueryGetValidatorCosmosPubKeyResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -414,11 +635,17 @@ type UnimplementedQueryServer struct { func (*UnimplementedQueryServer) Params(ctx context.Context, req *QueryParamsRequest) (*QueryParamsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Params not implemented") } -func (*UnimplementedQueryServer) GetMinaPubKey(ctx context.Context, req *QueryGetMinaPubKeyRequest) (*QueryGetMinaPubKeyResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetMinaPubKey not implemented") +func (*UnimplementedQueryServer) GetUserMinaAddress(ctx context.Context, req *QueryGetUserMinaAddressRequest) (*QueryGetUserMinaAddressResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserMinaAddress not implemented") } -func (*UnimplementedQueryServer) GetCosmosPubKey(ctx context.Context, req *QueryGetCosmosPubKeyRequest) (*QueryGetCosmosPubKeyResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetCosmosPubKey not implemented") +func (*UnimplementedQueryServer) GetUserCosmosAddress(ctx context.Context, req *QueryGetUserCosmosAddressRequest) (*QueryGetUserCosmosAddressResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserCosmosAddress not implemented") +} +func (*UnimplementedQueryServer) GetValidatorMinaPubKey(ctx context.Context, req *QueryGetValidatorMinaPubKeyRequest) (*QueryGetValidatorMinaPubKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetValidatorMinaPubKey not implemented") +} +func (*UnimplementedQueryServer) GetValidatorCosmosPubKey(ctx context.Context, req *QueryGetValidatorCosmosPubKeyRequest) (*QueryGetValidatorCosmosPubKeyResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetValidatorCosmosPubKey not implemented") } func RegisterQueryServer(s grpc1.Server, srv QueryServer) { @@ -443,38 +670,74 @@ func _Query_Params_Handler(srv interface{}, ctx context.Context, dec func(interf return interceptor(ctx, in, info, handler) } -func _Query_GetMinaPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetMinaPubKeyRequest) +func _Query_GetUserMinaAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetUserMinaAddressRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetUserMinaAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pulsarchain.keyregistry.v1.Query/GetUserMinaAddress", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetUserMinaAddress(ctx, req.(*QueryGetUserMinaAddressRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetUserCosmosAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetUserCosmosAddressRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).GetUserCosmosAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pulsarchain.keyregistry.v1.Query/GetUserCosmosAddress", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).GetUserCosmosAddress(ctx, req.(*QueryGetUserCosmosAddressRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_GetValidatorMinaPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetValidatorMinaPubKeyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).GetMinaPubKey(ctx, in) + return srv.(QueryServer).GetValidatorMinaPubKey(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pulsarchain.keyregistry.v1.Query/GetMinaPubKey", + FullMethod: "/pulsarchain.keyregistry.v1.Query/GetValidatorMinaPubKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).GetMinaPubKey(ctx, req.(*QueryGetMinaPubKeyRequest)) + return srv.(QueryServer).GetValidatorMinaPubKey(ctx, req.(*QueryGetValidatorMinaPubKeyRequest)) } return interceptor(ctx, in, info, handler) } -func _Query_GetCosmosPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryGetCosmosPubKeyRequest) +func _Query_GetValidatorCosmosPubKey_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryGetValidatorCosmosPubKeyRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).GetCosmosPubKey(ctx, in) + return srv.(QueryServer).GetValidatorCosmosPubKey(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/pulsarchain.keyregistry.v1.Query/GetCosmosPubKey", + FullMethod: "/pulsarchain.keyregistry.v1.Query/GetValidatorCosmosPubKey", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).GetCosmosPubKey(ctx, req.(*QueryGetCosmosPubKeyRequest)) + return srv.(QueryServer).GetValidatorCosmosPubKey(ctx, req.(*QueryGetValidatorCosmosPubKeyRequest)) } return interceptor(ctx, in, info, handler) } @@ -489,12 +752,20 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Handler: _Query_Params_Handler, }, { - MethodName: "GetMinaPubKey", - Handler: _Query_GetMinaPubKey_Handler, + MethodName: "GetUserMinaAddress", + Handler: _Query_GetUserMinaAddress_Handler, }, { - MethodName: "GetCosmosPubKey", - Handler: _Query_GetCosmosPubKey_Handler, + MethodName: "GetUserCosmosAddress", + Handler: _Query_GetUserCosmosAddress_Handler, + }, + { + MethodName: "GetValidatorMinaPubKey", + Handler: _Query_GetValidatorMinaPubKey_Handler, + }, + { + MethodName: "GetValidatorCosmosPubKey", + Handler: _Query_GetValidatorCosmosPubKey_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -557,7 +828,127 @@ func (m *QueryParamsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QueryGetMinaPubKeyRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryGetUserMinaAddressRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetUserMinaAddressRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetUserMinaAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UserCosmosAddress) > 0 { + i -= len(m.UserCosmosAddress) + copy(dAtA[i:], m.UserCosmosAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.UserCosmosAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetUserMinaAddressResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetUserMinaAddressResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetUserMinaAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UserMinaAddress) > 0 { + i -= len(m.UserMinaAddress) + copy(dAtA[i:], m.UserMinaAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.UserMinaAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetUserCosmosAddressRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetUserCosmosAddressRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetUserCosmosAddressRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UserMinaAddress) > 0 { + i -= len(m.UserMinaAddress) + copy(dAtA[i:], m.UserMinaAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.UserMinaAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetUserCosmosAddressResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryGetUserCosmosAddressResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryGetUserCosmosAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UserCosmosAddress) > 0 { + i -= len(m.UserCosmosAddress) + copy(dAtA[i:], m.UserCosmosAddress) + i = encodeVarintQuery(dAtA, i, uint64(len(m.UserCosmosAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryGetValidatorMinaPubKeyRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -567,27 +958,27 @@ func (m *QueryGetMinaPubKeyRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetMinaPubKeyRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetValidatorMinaPubKeyRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetMinaPubKeyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetValidatorMinaPubKeyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.CosmosPubKey) > 0 { - i -= len(m.CosmosPubKey) - copy(dAtA[i:], m.CosmosPubKey) - i = encodeVarintQuery(dAtA, i, uint64(len(m.CosmosPubKey))) + if len(m.ValidatorCosmosPubKey) > 0 { + i -= len(m.ValidatorCosmosPubKey) + copy(dAtA[i:], m.ValidatorCosmosPubKey) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorCosmosPubKey))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryGetMinaPubKeyResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryGetValidatorMinaPubKeyResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -597,27 +988,27 @@ func (m *QueryGetMinaPubKeyResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetMinaPubKeyResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetValidatorMinaPubKeyResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetMinaPubKeyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetValidatorMinaPubKeyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.MinaPubKey) > 0 { - i -= len(m.MinaPubKey) - copy(dAtA[i:], m.MinaPubKey) - i = encodeVarintQuery(dAtA, i, uint64(len(m.MinaPubKey))) + if len(m.ValidatorMinaPubKey) > 0 { + i -= len(m.ValidatorMinaPubKey) + copy(dAtA[i:], m.ValidatorMinaPubKey) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorMinaPubKey))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryGetCosmosPubKeyRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryGetValidatorCosmosPubKeyRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -627,27 +1018,27 @@ func (m *QueryGetCosmosPubKeyRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetCosmosPubKeyRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetValidatorCosmosPubKeyRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetCosmosPubKeyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetValidatorCosmosPubKeyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.MinaPubKey) > 0 { - i -= len(m.MinaPubKey) - copy(dAtA[i:], m.MinaPubKey) - i = encodeVarintQuery(dAtA, i, uint64(len(m.MinaPubKey))) + if len(m.ValidatorMinaPubKey) > 0 { + i -= len(m.ValidatorMinaPubKey) + copy(dAtA[i:], m.ValidatorMinaPubKey) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorMinaPubKey))) i-- dAtA[i] = 0xa } return len(dAtA) - i, nil } -func (m *QueryGetCosmosPubKeyResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryGetValidatorCosmosPubKeyResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -657,20 +1048,20 @@ func (m *QueryGetCosmosPubKeyResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueryGetCosmosPubKeyResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryGetValidatorCosmosPubKeyResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueryGetCosmosPubKeyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryGetValidatorCosmosPubKeyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.CosmosPubKey) > 0 { - i -= len(m.CosmosPubKey) - copy(dAtA[i:], m.CosmosPubKey) - i = encodeVarintQuery(dAtA, i, uint64(len(m.CosmosPubKey))) + if len(m.ValidatorCosmosPubKey) > 0 { + i -= len(m.ValidatorCosmosPubKey) + copy(dAtA[i:], m.ValidatorCosmosPubKey) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ValidatorCosmosPubKey))) i-- dAtA[i] = 0xa } @@ -708,66 +1099,118 @@ func (m *QueryParamsResponse) Size() (n int) { return n } -func (m *QueryGetMinaPubKeyRequest) Size() (n int) { +func (m *QueryGetUserMinaAddressRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.CosmosPubKey) + l = len(m.UserCosmosAddress) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGetMinaPubKeyResponse) Size() (n int) { +func (m *QueryGetUserMinaAddressResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.MinaPubKey) + l = len(m.UserMinaAddress) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGetCosmosPubKeyRequest) Size() (n int) { +func (m *QueryGetUserCosmosAddressRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.MinaPubKey) + l = len(m.UserMinaAddress) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func (m *QueryGetCosmosPubKeyResponse) Size() (n int) { +func (m *QueryGetUserCosmosAddressResponse) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.CosmosPubKey) + l = len(m.UserCosmosAddress) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } return n } -func sovQuery(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozQuery(x uint64) (n int) { - return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func (m *QueryGetValidatorMinaPubKeyRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorCosmosPubKey) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n } -func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) + +func (m *QueryGetValidatorMinaPubKeyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorMinaPubKey) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetValidatorCosmosPubKeyRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorMinaPubKey) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryGetValidatorCosmosPubKeyResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ValidatorCosmosPubKey) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func sovQuery(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozQuery(x uint64) (n int) { + return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *QueryParamsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) iNdEx := 0 for iNdEx < l { preIndex := iNdEx @@ -899,7 +1342,343 @@ func (m *QueryParamsResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetMinaPubKeyRequest) Unmarshal(dAtA []byte) error { +func (m *QueryGetUserMinaAddressRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetUserMinaAddressRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetUserMinaAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserCosmosAddress", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserCosmosAddress = append(m.UserCosmosAddress[:0], dAtA[iNdEx:postIndex]...) + if m.UserCosmosAddress == nil { + m.UserCosmosAddress = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetUserMinaAddressResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetUserMinaAddressResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetUserMinaAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserMinaAddress", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserMinaAddress = append(m.UserMinaAddress[:0], dAtA[iNdEx:postIndex]...) + if m.UserMinaAddress == nil { + m.UserMinaAddress = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetUserCosmosAddressRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetUserCosmosAddressRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetUserCosmosAddressRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserMinaAddress", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserMinaAddress = append(m.UserMinaAddress[:0], dAtA[iNdEx:postIndex]...) + if m.UserMinaAddress == nil { + m.UserMinaAddress = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetUserCosmosAddressResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryGetUserCosmosAddressResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryGetUserCosmosAddressResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserCosmosAddress", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserCosmosAddress = append(m.UserCosmosAddress[:0], dAtA[iNdEx:postIndex]...) + if m.UserCosmosAddress == nil { + m.UserCosmosAddress = []byte{} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryGetValidatorMinaPubKeyRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -922,15 +1701,15 @@ func (m *QueryGetMinaPubKeyRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetMinaPubKeyRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetValidatorMinaPubKeyRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMinaPubKeyRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetValidatorMinaPubKeyRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CosmosPubKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorCosmosPubKey", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -957,9 +1736,9 @@ func (m *QueryGetMinaPubKeyRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CosmosPubKey = append(m.CosmosPubKey[:0], dAtA[iNdEx:postIndex]...) - if m.CosmosPubKey == nil { - m.CosmosPubKey = []byte{} + m.ValidatorCosmosPubKey = append(m.ValidatorCosmosPubKey[:0], dAtA[iNdEx:postIndex]...) + if m.ValidatorCosmosPubKey == nil { + m.ValidatorCosmosPubKey = []byte{} } iNdEx = postIndex default: @@ -983,7 +1762,7 @@ func (m *QueryGetMinaPubKeyRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetMinaPubKeyResponse) Unmarshal(dAtA []byte) error { +func (m *QueryGetValidatorMinaPubKeyResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1006,15 +1785,15 @@ func (m *QueryGetMinaPubKeyResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetMinaPubKeyResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetValidatorMinaPubKeyResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetMinaPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetValidatorMinaPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinaPubKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorMinaPubKey", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -1041,9 +1820,9 @@ func (m *QueryGetMinaPubKeyResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.MinaPubKey = append(m.MinaPubKey[:0], dAtA[iNdEx:postIndex]...) - if m.MinaPubKey == nil { - m.MinaPubKey = []byte{} + m.ValidatorMinaPubKey = append(m.ValidatorMinaPubKey[:0], dAtA[iNdEx:postIndex]...) + if m.ValidatorMinaPubKey == nil { + m.ValidatorMinaPubKey = []byte{} } iNdEx = postIndex default: @@ -1067,7 +1846,7 @@ func (m *QueryGetMinaPubKeyResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetCosmosPubKeyRequest) Unmarshal(dAtA []byte) error { +func (m *QueryGetValidatorCosmosPubKeyRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1090,15 +1869,15 @@ func (m *QueryGetCosmosPubKeyRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetCosmosPubKeyRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetValidatorCosmosPubKeyRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetCosmosPubKeyRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetValidatorCosmosPubKeyRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinaPubKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorMinaPubKey", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -1125,9 +1904,9 @@ func (m *QueryGetCosmosPubKeyRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.MinaPubKey = append(m.MinaPubKey[:0], dAtA[iNdEx:postIndex]...) - if m.MinaPubKey == nil { - m.MinaPubKey = []byte{} + m.ValidatorMinaPubKey = append(m.ValidatorMinaPubKey[:0], dAtA[iNdEx:postIndex]...) + if m.ValidatorMinaPubKey == nil { + m.ValidatorMinaPubKey = []byte{} } iNdEx = postIndex default: @@ -1151,7 +1930,7 @@ func (m *QueryGetCosmosPubKeyRequest) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueryGetCosmosPubKeyResponse) Unmarshal(dAtA []byte) error { +func (m *QueryGetValidatorCosmosPubKeyResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1174,15 +1953,15 @@ func (m *QueryGetCosmosPubKeyResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueryGetCosmosPubKeyResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryGetValidatorCosmosPubKeyResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueryGetCosmosPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryGetValidatorCosmosPubKeyResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CosmosPubKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ValidatorCosmosPubKey", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -1209,9 +1988,9 @@ func (m *QueryGetCosmosPubKeyResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CosmosPubKey = append(m.CosmosPubKey[:0], dAtA[iNdEx:postIndex]...) - if m.CosmosPubKey == nil { - m.CosmosPubKey = []byte{} + m.ValidatorCosmosPubKey = append(m.ValidatorCosmosPubKey[:0], dAtA[iNdEx:postIndex]...) + if m.ValidatorCosmosPubKey == nil { + m.ValidatorCosmosPubKey = []byte{} } iNdEx = postIndex default: diff --git a/x/keyregistry/types/query.pb.gw.go b/x/keyregistry/types/query.pb.gw.go index 0ec64544..0de870c2 100644 --- a/x/keyregistry/types/query.pb.gw.go +++ b/x/keyregistry/types/query.pb.gw.go @@ -51,8 +51,8 @@ func local_request_Query_Params_0(ctx context.Context, marshaler runtime.Marshal } -func request_Query_GetMinaPubKey_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMinaPubKeyRequest +func request_Query_GetUserMinaAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetUserMinaAddressRequest var metadata runtime.ServerMetadata var ( @@ -62,24 +62,24 @@ func request_Query_GetMinaPubKey_0(ctx context.Context, marshaler runtime.Marsha _ = err ) - val, ok = pathParams["cosmos_pub_key"] + val, ok = pathParams["user_cosmos_address"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cosmos_pub_key") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "user_cosmos_address") } - protoReq.CosmosPubKey, err = runtime.Bytes(val) + protoReq.UserCosmosAddress, err = runtime.Bytes(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cosmos_pub_key", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_cosmos_address", err) } - msg, err := client.GetMinaPubKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetUserMinaAddress(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_GetMinaPubKey_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetMinaPubKeyRequest +func local_request_Query_GetUserMinaAddress_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetUserMinaAddressRequest var metadata runtime.ServerMetadata var ( @@ -89,24 +89,24 @@ func local_request_Query_GetMinaPubKey_0(ctx context.Context, marshaler runtime. _ = err ) - val, ok = pathParams["cosmos_pub_key"] + val, ok = pathParams["user_cosmos_address"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cosmos_pub_key") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "user_cosmos_address") } - protoReq.CosmosPubKey, err = runtime.Bytes(val) + protoReq.UserCosmosAddress, err = runtime.Bytes(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cosmos_pub_key", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_cosmos_address", err) } - msg, err := server.GetMinaPubKey(ctx, &protoReq) + msg, err := server.GetUserMinaAddress(ctx, &protoReq) return msg, metadata, err } -func request_Query_GetCosmosPubKey_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetCosmosPubKeyRequest +func request_Query_GetUserCosmosAddress_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetUserCosmosAddressRequest var metadata runtime.ServerMetadata var ( @@ -116,24 +116,24 @@ func request_Query_GetCosmosPubKey_0(ctx context.Context, marshaler runtime.Mars _ = err ) - val, ok = pathParams["mina_pub_key"] + val, ok = pathParams["user_mina_address"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mina_pub_key") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "user_mina_address") } - protoReq.MinaPubKey, err = runtime.Bytes(val) + protoReq.UserMinaAddress, err = runtime.Bytes(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mina_pub_key", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_mina_address", err) } - msg, err := client.GetCosmosPubKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.GetUserCosmosAddress(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_GetCosmosPubKey_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QueryGetCosmosPubKeyRequest +func local_request_Query_GetUserCosmosAddress_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetUserCosmosAddressRequest var metadata runtime.ServerMetadata var ( @@ -143,18 +143,126 @@ func local_request_Query_GetCosmosPubKey_0(ctx context.Context, marshaler runtim _ = err ) - val, ok = pathParams["mina_pub_key"] + val, ok = pathParams["user_mina_address"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "mina_pub_key") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "user_mina_address") } - protoReq.MinaPubKey, err = runtime.Bytes(val) + protoReq.UserMinaAddress, err = runtime.Bytes(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "mina_pub_key", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "user_mina_address", err) } - msg, err := server.GetCosmosPubKey(ctx, &protoReq) + msg, err := server.GetUserCosmosAddress(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_GetValidatorMinaPubKey_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetValidatorMinaPubKeyRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_cosmos_pub_key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_cosmos_pub_key") + } + + protoReq.ValidatorCosmosPubKey, err = runtime.Bytes(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_cosmos_pub_key", err) + } + + msg, err := client.GetValidatorMinaPubKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_GetValidatorMinaPubKey_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetValidatorMinaPubKeyRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_cosmos_pub_key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_cosmos_pub_key") + } + + protoReq.ValidatorCosmosPubKey, err = runtime.Bytes(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_cosmos_pub_key", err) + } + + msg, err := server.GetValidatorMinaPubKey(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_GetValidatorCosmosPubKey_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetValidatorCosmosPubKeyRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_mina_pub_key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_mina_pub_key") + } + + protoReq.ValidatorMinaPubKey, err = runtime.Bytes(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_mina_pub_key", err) + } + + msg, err := client.GetValidatorCosmosPubKey(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_GetValidatorCosmosPubKey_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryGetValidatorCosmosPubKeyRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["validator_mina_pub_key"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "validator_mina_pub_key") + } + + protoReq.ValidatorMinaPubKey, err = runtime.Bytes(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "validator_mina_pub_key", err) + } + + msg, err := server.GetValidatorCosmosPubKey(ctx, &protoReq) return msg, metadata, err } @@ -188,7 +296,30 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_GetMinaPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_GetUserMinaAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_GetUserMinaAddress_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_GetUserMinaAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetUserCosmosAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -199,7 +330,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_GetMinaPubKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_GetUserCosmosAddress_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -207,11 +338,11 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_GetMinaPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_GetUserCosmosAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_GetCosmosPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_GetValidatorMinaPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -222,7 +353,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_GetCosmosPubKey_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_GetValidatorMinaPubKey_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -230,7 +361,30 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_GetCosmosPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_GetValidatorMinaPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetValidatorCosmosPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_GetValidatorCosmosPubKey_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_GetValidatorCosmosPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -295,7 +449,27 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_GetMinaPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_GetUserMinaAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_GetUserMinaAddress_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_GetUserMinaAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetUserCosmosAddress_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -304,18 +478,18 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_GetMinaPubKey_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_GetUserCosmosAddress_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_GetMinaPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_GetUserCosmosAddress_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("GET", pattern_Query_GetCosmosPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_GetValidatorMinaPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -324,14 +498,34 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_GetCosmosPubKey_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_GetValidatorMinaPubKey_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_GetCosmosPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_GetValidatorMinaPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_GetValidatorCosmosPubKey_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_GetValidatorCosmosPubKey_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_GetValidatorCosmosPubKey_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -341,15 +535,23 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie var ( pattern_Query_Params_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "params"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_GetMinaPubKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_mina_pub_key", "cosmos_pub_key"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_GetUserMinaAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_user_mina_address", "user_cosmos_address"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_GetCosmosPubKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_cosmos_pub_key", "mina_pub_key"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_GetUserCosmosAddress_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_user_cosmos_address", "user_mina_address"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_GetValidatorMinaPubKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_validator_mina_pub_key", "validator_cosmos_pub_key"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_GetValidatorCosmosPubKey_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 1, 0, 4, 1, 5, 5}, []string{"node101-io", "pulsar-chain", "keyregistry", "v1", "get_validator_cosmos_pub_key", "validator_mina_pub_key"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( forward_Query_Params_0 = runtime.ForwardResponseMessage - forward_Query_GetMinaPubKey_0 = runtime.ForwardResponseMessage + forward_Query_GetUserMinaAddress_0 = runtime.ForwardResponseMessage + + forward_Query_GetUserCosmosAddress_0 = runtime.ForwardResponseMessage + + forward_Query_GetValidatorMinaPubKey_0 = runtime.ForwardResponseMessage - forward_Query_GetCosmosPubKey_0 = runtime.ForwardResponseMessage + forward_Query_GetValidatorCosmosPubKey_0 = runtime.ForwardResponseMessage ) diff --git a/x/keyregistry/types/tx.pb.go b/x/keyregistry/types/tx.pb.go index 42552c4c..b62220a3 100644 --- a/x/keyregistry/types/tx.pb.go +++ b/x/keyregistry/types/tx.pb.go @@ -129,8 +129,9 @@ type MsgRegisterKeys struct { Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` CosmosSignature string `protobuf:"bytes,2,opt,name=cosmos_signature,json=cosmosSignature,proto3" json:"cosmos_signature,omitempty"` MinaSignature string `protobuf:"bytes,3,opt,name=mina_signature,json=minaSignature,proto3" json:"mina_signature,omitempty"` - CosmosPublicKey []byte `protobuf:"bytes,4,opt,name=cosmos_public_key,json=cosmosPublicKey,proto3" json:"cosmos_public_key,omitempty"` - MinaPublicKey []byte `protobuf:"bytes,5,opt,name=mina_public_key,json=minaPublicKey,proto3" json:"mina_public_key,omitempty"` + CosmosAddress []byte `protobuf:"bytes,4,opt,name=cosmos_address,json=cosmosAddress,proto3" json:"cosmos_address,omitempty"` + MinaAddress []byte `protobuf:"bytes,5,opt,name=mina_address,json=minaAddress,proto3" json:"mina_address,omitempty"` + IsUser bool `protobuf:"varint,6,opt,name=is_user,json=isUser,proto3" json:"is_user,omitempty"` } func (m *MsgRegisterKeys) Reset() { *m = MsgRegisterKeys{} } @@ -187,20 +188,27 @@ func (m *MsgRegisterKeys) GetMinaSignature() string { return "" } -func (m *MsgRegisterKeys) GetCosmosPublicKey() []byte { +func (m *MsgRegisterKeys) GetCosmosAddress() []byte { if m != nil { - return m.CosmosPublicKey + return m.CosmosAddress } return nil } -func (m *MsgRegisterKeys) GetMinaPublicKey() []byte { +func (m *MsgRegisterKeys) GetMinaAddress() []byte { if m != nil { - return m.MinaPublicKey + return m.MinaAddress } return nil } +func (m *MsgRegisterKeys) GetIsUser() bool { + if m != nil { + return m.IsUser + } + return false +} + // MsgRegisterKeysResponse defines the MsgRegisterKeysResponse message. type MsgRegisterKeysResponse struct { } @@ -250,39 +258,40 @@ func init() { } var fileDescriptor_235f5fb22cc1f8d8 = []byte{ - // 503 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0xb1, 0x6f, 0x13, 0x31, - 0x14, 0xc6, 0x63, 0x4a, 0x8b, 0x62, 0x02, 0xa1, 0xa7, 0x4a, 0x4d, 0x6f, 0x38, 0xa2, 0x20, 0x20, - 0x0d, 0xca, 0x1d, 0x49, 0xa5, 0x0e, 0x15, 0x0b, 0x91, 0x98, 0xaa, 0x4a, 0xd1, 0x55, 0x2c, 0x2c, - 0x95, 0x73, 0xb1, 0x1c, 0xab, 0xbd, 0xf3, 0xc9, 0xf6, 0x55, 0xbd, 0x0d, 0x31, 0x32, 0xf1, 0x67, - 0x30, 0x66, 0xe0, 0x8f, 0xe8, 0x84, 0x2a, 0x26, 0x26, 0x84, 0x92, 0x21, 0x2b, 0x2b, 0x1b, 0x3a, - 0xdb, 0x47, 0x2e, 0x51, 0x49, 0xc4, 0x12, 0xc5, 0x9f, 0x7f, 0x7e, 0x9f, 0xbf, 0xf7, 0x7c, 0xf0, - 0x49, 0x9c, 0x5c, 0x08, 0xc4, 0x83, 0x11, 0xa2, 0x91, 0x77, 0x8e, 0x53, 0x8e, 0x09, 0x15, 0x92, - 0xa7, 0xde, 0x65, 0xc7, 0x93, 0x57, 0x6e, 0xcc, 0x99, 0x64, 0x96, 0x5d, 0x80, 0xdc, 0x02, 0xe4, - 0x5e, 0x76, 0xec, 0x6d, 0x14, 0xd2, 0x88, 0x79, 0xea, 0x57, 0xe3, 0xf6, 0x6e, 0xc0, 0x44, 0xc8, - 0x84, 0x17, 0x0a, 0x92, 0x95, 0x09, 0x05, 0x31, 0x1b, 0x7b, 0x7a, 0xe3, 0x4c, 0xad, 0x3c, 0xbd, - 0x30, 0x5b, 0x3b, 0x84, 0x11, 0xa6, 0xf5, 0xec, 0x9f, 0x51, 0x9f, 0xaf, 0xb8, 0x5d, 0x8c, 0x38, - 0x0a, 0xcd, 0xf1, 0xc6, 0x57, 0x00, 0xab, 0x27, 0x82, 0xbc, 0x8d, 0x87, 0x48, 0xe2, 0xbe, 0xda, - 0xb1, 0x0e, 0x61, 0x19, 0x25, 0x72, 0xc4, 0x38, 0x95, 0x69, 0x0d, 0xd4, 0x41, 0xb3, 0xdc, 0xab, - 0x7d, 0xfb, 0xd2, 0xde, 0x31, 0xbe, 0xaf, 0x87, 0x43, 0x8e, 0x85, 0x38, 0x95, 0x9c, 0x46, 0xc4, - 0x9f, 0xa3, 0xd6, 0x1b, 0xb8, 0xa5, 0x6b, 0xd7, 0xee, 0xd4, 0x41, 0xf3, 0x7e, 0xb7, 0xe1, 0xfe, - 0x3b, 0xbe, 0xab, 0xbd, 0x7a, 0xe5, 0xeb, 0x1f, 0x8f, 0x4b, 0x9f, 0x67, 0xe3, 0x16, 0xf0, 0xcd, - 0xe1, 0xa3, 0x57, 0x1f, 0x66, 0xe3, 0xd6, 0xbc, 0xec, 0xc7, 0xd9, 0xb8, 0xb5, 0x5f, 0x8c, 0x73, - 0xb5, 0x10, 0x68, 0xe9, 0xf2, 0x8d, 0x3d, 0xb8, 0xbb, 0x24, 0xf9, 0x58, 0xc4, 0x2c, 0x12, 0xb8, - 0xf1, 0x5b, 0x67, 0xf5, 0xd5, 0x51, 0xcc, 0x8f, 0x71, 0x2a, 0xac, 0x2e, 0xbc, 0x17, 0x70, 0x8c, - 0x24, 0xe3, 0x6b, 0x93, 0xe6, 0xa0, 0xb5, 0x0f, 0x1f, 0x99, 0x79, 0x08, 0x4a, 0x22, 0x24, 0x13, - 0x8e, 0x55, 0xe2, 0xb2, 0x5f, 0xd5, 0xfa, 0x69, 0x2e, 0x5b, 0x4f, 0xe1, 0xc3, 0x90, 0x46, 0xa8, - 0x00, 0x6e, 0x28, 0xf0, 0x41, 0xa6, 0xce, 0xb1, 0x16, 0xdc, 0xce, 0x27, 0x9c, 0x0c, 0x2e, 0x68, - 0x70, 0x76, 0x8e, 0xd3, 0xda, 0xdd, 0x3a, 0x68, 0x56, 0xf2, 0x92, 0x7d, 0xa5, 0x1f, 0xe3, 0xd4, - 0x7a, 0x06, 0xab, 0xaa, 0x64, 0x81, 0xdc, 0x54, 0xa4, 0xaa, 0xf9, 0x97, 0x3b, 0xaa, 0x64, 0x6d, - 0xcc, 0xef, 0x6c, 0xda, 0x52, 0x8c, 0x9e, 0xb7, 0xa5, 0xfb, 0x0b, 0xc0, 0x8d, 0x13, 0x41, 0xac, - 0x18, 0x56, 0x16, 0x9e, 0xc1, 0x8b, 0x55, 0xe3, 0x5b, 0xea, 0xb1, 0x7d, 0xf0, 0x1f, 0x70, 0xee, - 0x9c, 0x39, 0x2e, 0x0c, 0x63, 0x9d, 0x63, 0x11, 0x5e, 0xeb, 0x78, 0x5b, 0x56, 0x7b, 0xf3, 0x7d, - 0xf6, 0xd4, 0x7a, 0xfd, 0xeb, 0x89, 0x03, 0x6e, 0x26, 0x0e, 0xf8, 0x39, 0x71, 0xc0, 0xa7, 0xa9, - 0x53, 0xba, 0x99, 0x3a, 0xa5, 0xef, 0x53, 0xa7, 0xf4, 0xee, 0x90, 0x50, 0x39, 0x4a, 0x06, 0x6e, - 0xc0, 0x42, 0x2f, 0x62, 0x43, 0xdc, 0x79, 0xd9, 0x69, 0x53, 0xe6, 0x69, 0xab, 0xf6, 0x6d, 0x0f, - 0x50, 0xa6, 0x31, 0x16, 0x83, 0x2d, 0xf5, 0x39, 0x1d, 0xfc, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfb, - 0xf4, 0xf0, 0x15, 0x17, 0x04, 0x00, 0x00, + // 514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x31, 0x6f, 0x13, 0x31, + 0x14, 0xc7, 0xe3, 0x96, 0xa6, 0xc4, 0x4d, 0x29, 0x9c, 0x2a, 0x25, 0xcd, 0x70, 0x84, 0x20, 0x44, + 0x1a, 0x94, 0x3b, 0x92, 0x4a, 0x1d, 0x2a, 0x16, 0x22, 0x31, 0xa1, 0x4a, 0xd5, 0x55, 0x5d, 0x58, + 0x2a, 0x37, 0xb1, 0x1c, 0x0b, 0xee, 0x7c, 0xf2, 0x73, 0xaa, 0xde, 0x86, 0x98, 0x10, 0x13, 0x1f, + 0x83, 0x31, 0x03, 0x1f, 0xa2, 0x13, 0xaa, 0x98, 0x98, 0x10, 0x4a, 0x86, 0xac, 0x7c, 0x04, 0x74, + 0xb6, 0x4f, 0xbd, 0x44, 0xa5, 0x51, 0x97, 0x28, 0xfe, 0xbf, 0x9f, 0xdf, 0xdf, 0xff, 0x67, 0x1f, + 0x7e, 0x1a, 0x8f, 0x3e, 0x00, 0x91, 0xfd, 0x21, 0xe1, 0x91, 0xff, 0x9e, 0x26, 0x92, 0x32, 0x0e, + 0x4a, 0x26, 0xfe, 0x79, 0xc7, 0x57, 0x17, 0x5e, 0x2c, 0x85, 0x12, 0x4e, 0x2d, 0x07, 0x79, 0x39, + 0xc8, 0x3b, 0xef, 0xd4, 0x1e, 0x91, 0x90, 0x47, 0xc2, 0xd7, 0xbf, 0x06, 0xaf, 0x55, 0xfa, 0x02, + 0x42, 0x01, 0x7e, 0x08, 0x2c, 0x6d, 0x13, 0x02, 0xb3, 0x85, 0x1d, 0x53, 0x38, 0xd5, 0x2b, 0xdf, + 0x2c, 0x6c, 0x69, 0x9b, 0x09, 0x26, 0x8c, 0x9e, 0xfe, 0xb3, 0xea, 0xf3, 0x5b, 0x4e, 0x17, 0x13, + 0x49, 0x42, 0xbb, 0xbd, 0xf1, 0x03, 0xe1, 0xad, 0x43, 0x60, 0x27, 0xf1, 0x80, 0x28, 0x7a, 0xa4, + 0x2b, 0xce, 0x3e, 0x2e, 0x91, 0x91, 0x1a, 0x0a, 0xc9, 0x55, 0x52, 0x45, 0x75, 0xd4, 0x2c, 0xf5, + 0xaa, 0x3f, 0xbf, 0xb7, 0xb7, 0xad, 0xef, 0xeb, 0xc1, 0x40, 0x52, 0x80, 0x63, 0x25, 0x79, 0xc4, + 0x82, 0x6b, 0xd4, 0x79, 0x83, 0x8b, 0xa6, 0x77, 0x75, 0xa5, 0x8e, 0x9a, 0x1b, 0xdd, 0x86, 0xf7, + 0xff, 0xf8, 0x9e, 0xf1, 0xea, 0x95, 0x2e, 0x7f, 0x3f, 0x2e, 0x7c, 0x9b, 0x8d, 0x5b, 0x28, 0xb0, + 0x9b, 0x0f, 0x5e, 0x7d, 0x9a, 0x8d, 0x5b, 0xd7, 0x6d, 0xbf, 0xcc, 0xc6, 0xad, 0xdd, 0x7c, 0x9c, + 0x8b, 0xb9, 0x40, 0x0b, 0x87, 0x6f, 0xec, 0xe0, 0xca, 0x82, 0x14, 0x50, 0x88, 0x45, 0x04, 0xb4, + 0xf1, 0x79, 0x45, 0x67, 0x0d, 0xf4, 0x56, 0x2a, 0xdf, 0xd2, 0x04, 0x9c, 0x2e, 0x5e, 0xef, 0x4b, + 0x4a, 0x94, 0x90, 0x4b, 0x93, 0x66, 0xa0, 0xb3, 0x8b, 0x1f, 0xda, 0xfb, 0x00, 0xce, 0x22, 0xa2, + 0x46, 0x92, 0xea, 0xc4, 0xa5, 0x60, 0xcb, 0xe8, 0xc7, 0x99, 0xec, 0x3c, 0xc3, 0x0f, 0x42, 0x1e, + 0x91, 0x1c, 0xb8, 0xaa, 0xc1, 0xcd, 0x54, 0x9d, 0xc3, 0x6c, 0x47, 0x62, 0x2c, 0xab, 0xf7, 0xea, + 0xa8, 0x59, 0x0e, 0x36, 0x8d, 0x6a, 0xcf, 0xe1, 0x3c, 0xc1, 0x65, 0xdd, 0x2d, 0x83, 0xd6, 0x34, + 0xb4, 0x91, 0x6a, 0x19, 0x52, 0xc1, 0xeb, 0x1c, 0x4e, 0x47, 0x40, 0x65, 0xb5, 0x58, 0x47, 0xcd, + 0xfb, 0x41, 0x91, 0xc3, 0x09, 0x50, 0x79, 0x50, 0x4e, 0xa7, 0x9a, 0x45, 0xb0, 0x53, 0xca, 0x4f, + 0x22, 0x9b, 0x52, 0xf7, 0x2f, 0xc2, 0xab, 0x87, 0xc0, 0x9c, 0x18, 0x97, 0xe7, 0x5e, 0xc5, 0x8b, + 0xdb, 0x6e, 0x73, 0x61, 0xe4, 0xb5, 0xbd, 0x3b, 0xc0, 0x99, 0x73, 0xea, 0x38, 0x77, 0x37, 0xcb, + 0x1c, 0xf3, 0xf0, 0x52, 0xc7, 0x9b, 0xb2, 0xd6, 0xd6, 0x3e, 0xa6, 0x2f, 0xaf, 0x77, 0x74, 0x39, + 0x71, 0xd1, 0xd5, 0xc4, 0x45, 0x7f, 0x26, 0x2e, 0xfa, 0x3a, 0x75, 0x0b, 0x57, 0x53, 0xb7, 0xf0, + 0x6b, 0xea, 0x16, 0xde, 0xed, 0x33, 0xae, 0x86, 0xa3, 0x33, 0xaf, 0x2f, 0x42, 0x3f, 0x12, 0x03, + 0xda, 0x79, 0xd9, 0x69, 0x73, 0xe1, 0x1b, 0xab, 0xf6, 0x4d, 0xef, 0x51, 0x25, 0x31, 0x85, 0xb3, + 0xa2, 0xfe, 0xba, 0xf6, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x60, 0xd1, 0xae, 0x26, 0x04, + 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -491,17 +500,27 @@ func (m *MsgRegisterKeys) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.MinaPublicKey) > 0 { - i -= len(m.MinaPublicKey) - copy(dAtA[i:], m.MinaPublicKey) - i = encodeVarintTx(dAtA, i, uint64(len(m.MinaPublicKey))) + if m.IsUser { + i-- + if m.IsUser { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.MinaAddress) > 0 { + i -= len(m.MinaAddress) + copy(dAtA[i:], m.MinaAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.MinaAddress))) i-- dAtA[i] = 0x2a } - if len(m.CosmosPublicKey) > 0 { - i -= len(m.CosmosPublicKey) - copy(dAtA[i:], m.CosmosPublicKey) - i = encodeVarintTx(dAtA, i, uint64(len(m.CosmosPublicKey))) + if len(m.CosmosAddress) > 0 { + i -= len(m.CosmosAddress) + copy(dAtA[i:], m.CosmosAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.CosmosAddress))) i-- dAtA[i] = 0x22 } @@ -605,14 +624,17 @@ func (m *MsgRegisterKeys) Size() (n int) { if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.CosmosPublicKey) + l = len(m.CosmosAddress) if l > 0 { n += 1 + l + sovTx(uint64(l)) } - l = len(m.MinaPublicKey) + l = len(m.MinaAddress) if l > 0 { n += 1 + l + sovTx(uint64(l)) } + if m.IsUser { + n += 2 + } return n } @@ -923,7 +945,7 @@ func (m *MsgRegisterKeys) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field CosmosPublicKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CosmosAddress", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -950,14 +972,14 @@ func (m *MsgRegisterKeys) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.CosmosPublicKey = append(m.CosmosPublicKey[:0], dAtA[iNdEx:postIndex]...) - if m.CosmosPublicKey == nil { - m.CosmosPublicKey = []byte{} + m.CosmosAddress = append(m.CosmosAddress[:0], dAtA[iNdEx:postIndex]...) + if m.CosmosAddress == nil { + m.CosmosAddress = []byte{} } iNdEx = postIndex case 5: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MinaPublicKey", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field MinaAddress", wireType) } var byteLen int for shift := uint(0); ; shift += 7 { @@ -984,11 +1006,31 @@ func (m *MsgRegisterKeys) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.MinaPublicKey = append(m.MinaPublicKey[:0], dAtA[iNdEx:postIndex]...) - if m.MinaPublicKey == nil { - m.MinaPublicKey = []byte{} + m.MinaAddress = append(m.MinaAddress[:0], dAtA[iNdEx:postIndex]...) + if m.MinaAddress == nil { + m.MinaAddress = []byte{} } iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsUser", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsUser = bool(v != 0) default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:])