Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Introduce Cosmos Scalars #9933

Merged
merged 41 commits into from Sep 21, 2021
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
0b6a4df
draft
cyberbono3 Aug 13, 2021
711d581
fix auth.proto
cyberbono3 Aug 13, 2021
6c82789
fix event.proto
cyberbono3 Aug 13, 2021
2a846b9
get rid of TODO
cyberbono3 Aug 13, 2021
e833de0
cleanup
cyberbono3 Aug 13, 2021
22e1baf
add scalar field to FieldOptions
cyberbono3 Aug 16, 2021
9264d4f
update
cyberbono3 Aug 16, 2021
b3dfa7e
fix reflection.proto
cyberbono3 Aug 16, 2021
d9776f4
fix genesis.proto
cyberbono3 Aug 16, 2021
1f3e244
fix vesting.proto
cyberbono3 Aug 16, 2021
73397e5
apply reviewer comments
cyberbono3 Aug 17, 2021
084c2a9
cleanup
cyberbono3 Aug 17, 2021
e4bd120
fix staking.proto
cyberbono3 Aug 17, 2021
1164971
Merge branch 'master' of https://github.com/cosmos/cosmos-sdk into cy…
cyberbono3 Aug 17, 2021
ca11a3d
fix bank.proto
cyberbono3 Aug 18, 2021
d4474df
fix abci.proto
cyberbono3 Aug 18, 2021
5f47cd4
fix commit_info.proto
cyberbono3 Aug 18, 2021
0376fe1
fix capability.proto
cyberbono3 Aug 18, 2021
505cdd2
fix tx.proto
cyberbono3 Aug 18, 2021
7232691
fix evidence.proto
cyberbono3 Aug 18, 2021
57dbae5
fix types.proto
cyberbono3 Aug 18, 2021
0730f2a
fix mint.proto
cyberbono3 Aug 18, 2021
3b4130d
update go_package in cosmos.proto
cyberbono3 Aug 19, 2021
0fffd04
remove interface_type from MessageOptions in cosmos.proto
cyberbono3 Aug 19, 2021
1e668e3
restore interface_type in cosmos.proto and include *.pb.go
cyberbono3 Aug 24, 2021
a7e6ffa
proto-gen
cyberbono3 Sep 15, 2021
61ccb2b
resolve merge conflicts
cyberbono3 Sep 15, 2021
d8d1e3f
make proto-gen
cyberbono3 Sep 15, 2021
fa0f0f1
update go.mod and protocgen.sh
cyberbono3 Sep 16, 2021
0532c92
remove interfacetype from protocgen.sh
cyberbono3 Sep 16, 2021
acf2615
scripts/protocgen.sh
cyberbono3 Sep 16, 2021
7a3123d
make test-all works properly
cyberbono3 Sep 16, 2021
c912dab
Merge branch 'master' of https://github.com/cosmos/cosmos-sdk into cy…
cyberbono3 Sep 16, 2021
aa30774
Merge branch 'master' into cyberbono3/introduce-cosmos-scalars
cyberbono3 Sep 16, 2021
41f81de
add changelog entry
cyberbono3 Sep 18, 2021
20419bf
merge master into my branch and resolve conflicts
cyberbono3 Sep 18, 2021
aa7e529
Update scripts/protocgen.sh
cyberbono3 Sep 20, 2021
c421312
add comments to cosmos.proto
cyberbono3 Sep 20, 2021
07303ab
Merge branch 'master' into cyberbono3/introduce-cosmos-scalars
atheeshp Sep 21, 2021
d1ed91c
Update CHANGELOG.md
amaury1093 Sep 21, 2021
193c335
Merge branch 'master' into cyberbono3/introduce-cosmos-scalars
amaury1093 Sep 21, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
16 changes: 8 additions & 8 deletions proto/cosmos/auth/v1beta1/auth.proto
Expand Up @@ -17,11 +17,11 @@ message BaseAccount {

option (cosmos_proto.implements_interface) = "AccountI";

string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
google.protobuf.Any pub_key = 2
[(gogoproto.jsontag) = "public_key,omitempty", (gogoproto.moretags) = "yaml:\"public_key\""];
uint64 account_number = 3 [(gogoproto.moretags) = "yaml:\"account_number\""];
uint64 sequence = 4;
uint64 account_number = 3 [(gogoproto.moretags) = "yaml:\"account_number\""], (cosmos_proto.scalar) = "cosmos.Int"];
uint64 sequence = 4 [(cosmos_proto.scalar) = "cosmos.Int"];
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved
}

// ModuleAccount defines an account for modules that holds coins on a pool.
Expand All @@ -40,11 +40,11 @@ message Params {
option (gogoproto.equal) = true;
option (gogoproto.goproto_stringer) = false;

uint64 max_memo_characters = 1 [(gogoproto.moretags) = "yaml:\"max_memo_characters\""];
uint64 tx_sig_limit = 2 [(gogoproto.moretags) = "yaml:\"tx_sig_limit\""];
uint64 tx_size_cost_per_byte = 3 [(gogoproto.moretags) = "yaml:\"tx_size_cost_per_byte\""];
uint64 max_memo_characters = 1 [(cosmos_proto.scalar) = "cosmos.Int"], (gogoproto.moretags) = "yaml:\"max_memo_characters\""];
uint64 tx_sig_limit = 2 [(cosmos_proto.scalar) = "cosmos.Int"], (gogoproto.moretags) = "yaml:\"tx_sig_limit\""];
uint64 tx_size_cost_per_byte = 3 [(cosmos_proto.scalar) = "cosmos.Int"], (gogoproto.moretags) = "yaml:\"tx_size_cost_per_byte\""];
uint64 sig_verify_cost_ed25519 = 4
[(gogoproto.customname) = "SigVerifyCostED25519", (gogoproto.moretags) = "yaml:\"sig_verify_cost_ed25519\""];
[(cosmos_proto.scalar) = "cosmos.Int"], (gogoproto.customname) = "SigVerifyCostED25519", (gogoproto.moretags) = "yaml:\"sig_verify_cost_ed25519\""];
uint64 sig_verify_cost_secp256k1 = 5
[(gogoproto.customname) = "SigVerifyCostSecp256k1", (gogoproto.moretags) = "yaml:\"sig_verify_cost_secp256k1\""];
[(cosmos_proto.scalar) = "cosmos.Int"], (gogoproto.customname) = "SigVerifyCostSecp256k1", (gogoproto.moretags) = "yaml:\"sig_verify_cost_secp256k1\""];
}
2 changes: 1 addition & 1 deletion proto/cosmos/auth/v1beta1/query.proto
Expand Up @@ -54,7 +54,7 @@ message QueryAccountRequest {
option (gogoproto.goproto_getters) = false;

// address defines the address to query for.
string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

// QueryAccountResponse is the response type for the Query/Account RPC method.
Expand Down
10 changes: 6 additions & 4 deletions proto/cosmos/authz/v1beta1/event.proto
@@ -1,24 +1,26 @@
syntax = "proto3";
package cosmos.authz.v1beta1;

import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/authz";

// EventGrant is emitted on Msg/Grant
message EventGrant {
// Msg type URL for which an autorization is granted
string msg_type_url = 2;
// Granter account address
string granter = 3;
string granter = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Grantee account address
string grantee = 4;
string grantee = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}

// EventRevoke is emitted on Msg/Revoke
message EventRevoke {
// Msg type URL for which an autorization is revoked
string msg_type_url = 2;
// Granter account address
string granter = 3;
string granter = 3 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Grantee account address
string grantee = 4;
string grantee = 4 [(cosmos_proto.scalar) = "cosmos.AddressString"];
}
4 changes: 2 additions & 2 deletions proto/cosmos/authz/v1beta1/genesis.proto
Expand Up @@ -15,8 +15,8 @@ message GenesisState {

// GrantAuthorization defines the GenesisState/GrantAuthorization type.
message GrantAuthorization {
string granter = 1;
string grantee = 2;
string granter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string grantee = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];

google.protobuf.Any authorization = 3 [(cosmos_proto.accepts_interface) = "Authorization"];
google.protobuf.Timestamp expiration = 4 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
Expand Down
5 changes: 3 additions & 2 deletions proto/cosmos/authz/v1beta1/query.proto
Expand Up @@ -4,6 +4,7 @@ package cosmos.authz.v1beta1;
import "google/api/annotations.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
import "cosmos/authz/v1beta1/authz.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/authz";

Expand All @@ -17,8 +18,8 @@ service Query {

// QueryGrantsRequest is the request type for the Query/Grants RPC method.
message QueryGrantsRequest {
string granter = 1;
string grantee = 2;
string granter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string grantee = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Optional, msg_type_url, when set, will query only grants matching given msg type.
string msg_type_url = 3;
// pagination defines an pagination for the request.
Expand Down
6 changes: 3 additions & 3 deletions proto/cosmos/authz/v1beta1/tx.proto
Expand Up @@ -32,8 +32,8 @@ service Msg {
// MsgGrant is a request type for Grant method. It declares authorization to the grantee
// on behalf of the granter with the provided expiration time.
message MsgGrant {
string granter = 1;
string grantee = 2;
string granter = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
string grantee = 2 [(cosmos_proto.scalar) = "cosmos.AddressString"];

cosmos.authz.v1beta1.Grant grant = 3 [(gogoproto.nullable) = false];
}
Expand All @@ -47,7 +47,7 @@ message MsgExecResponse {
// authorizations granted to the grantee. Each message should have only
// one signer corresponding to the granter of the authorization.
message MsgExec {
string grantee = 1;
string grantee = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
// Authorization Msg requests to execute. Each msg must implement Authorization interface
// The x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))
// triple and validate it.
Expand Down
6 changes: 3 additions & 3 deletions proto/cosmos/bank/v1beta1/bank.proto
Expand Up @@ -28,7 +28,7 @@ message Input {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated cosmos.base.v1beta1.Coin coins = 2
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
}
Expand All @@ -38,7 +38,7 @@ message Output {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];
repeated cosmos.base.v1beta1.Coin coins = 2
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
}
Expand Down Expand Up @@ -68,7 +68,7 @@ message DenomUnit {
// 1 denom = 1^exponent base_denom
// (e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with
// exponent = 6, thus: 1 atom = 10^6 uatom).
uint32 exponent = 2;
uint32 exponent = 2 [(cosmos_proto.scalar) = "cosmos.Int"];
// aliases is a list of string aliases for the given denom
repeated string aliases = 3;
}
Expand Down
3 changes: 2 additions & 1 deletion proto/cosmos/bank/v1beta1/genesis.proto
Expand Up @@ -4,6 +4,7 @@ package cosmos.bank.v1beta1;
import "gogoproto/gogo.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/bank/v1beta1/bank.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";

Expand Down Expand Up @@ -31,7 +32,7 @@ message Balance {
option (gogoproto.goproto_getters) = false;

// address is the address of the balance holder.
string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];

// coins defines the different coins this balance holds.
repeated cosmos.base.v1beta1.Coin coins = 2
Expand Down
5 changes: 3 additions & 2 deletions proto/cosmos/bank/v1beta1/query.proto
Expand Up @@ -6,6 +6,7 @@ import "gogoproto/gogo.proto";
import "google/api/annotations.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/bank/v1beta1/bank.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";

Expand Down Expand Up @@ -60,7 +61,7 @@ message QueryBalanceRequest {
option (gogoproto.goproto_getters) = false;

// address is the address to query balances for.
string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];

// denom is the coin denom to query balances for.
string denom = 2;
Expand All @@ -78,7 +79,7 @@ message QueryAllBalancesRequest {
option (gogoproto.goproto_getters) = false;

// address is the address to query balances for.
string address = 1;
string address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"];

// pagination defines an optional pagination for the request.
cosmos.base.query.v1beta1.PageRequest pagination = 2;
Expand Down
5 changes: 3 additions & 2 deletions proto/cosmos/bank/v1beta1/tx.proto
Expand Up @@ -4,6 +4,7 @@ package cosmos.bank.v1beta1;
import "gogoproto/gogo.proto";
import "cosmos/base/v1beta1/coin.proto";
import "cosmos/bank/v1beta1/bank.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/x/bank/types";

Expand All @@ -21,8 +22,8 @@ message MsgSend {
option (gogoproto.equal) = false;
option (gogoproto.goproto_getters) = false;

string from_address = 1 [(gogoproto.moretags) = "yaml:\"from_address\""];
string to_address = 2 [(gogoproto.moretags) = "yaml:\"to_address\""];
string from_address = 1 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.moretags) = "yaml:\"from_address\""];
string to_address = 2 [(cosmos_proto.scalar) = "cosmos.AddressString", (gogoproto.moretags) = "yaml:\"to_address\""];
repeated cosmos.base.v1beta1.Coin amount = 3
[(gogoproto.nullable) = false, (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coins"];
}
Expand Down
25 changes: 13 additions & 12 deletions proto/cosmos/base/abci/v1beta1/abci.proto
Expand Up @@ -4,6 +4,7 @@ package cosmos.base.abci.v1beta1;
import "gogoproto/gogo.proto";
import "tendermint/abci/types.proto";
import "google/protobuf/any.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/types";
option (gogoproto.goproto_stringer_all) = false;
Expand All @@ -13,13 +14,13 @@ option (gogoproto.goproto_stringer_all) = false;
message TxResponse {
option (gogoproto.goproto_getters) = false;
// The block height
int64 height = 1;
int64 height = 1 [(cosmos_proto.scalar) = "cosmos.Int"];
// The transaction hash.
string txhash = 2 [(gogoproto.customname) = "TxHash"];
// Namespace for the Code
string codespace = 3;
// Response code.
uint32 code = 4;
uint32 code = 4 [(cosmos_proto.scalar) = "cosmos.Int"];
// Result bytes, if any.
string data = 5;
// The output of the application's logger (raw string). May be
Expand All @@ -30,9 +31,9 @@ message TxResponse {
// Additional information. May be non-deterministic.
string info = 8;
// Amount of gas requested for transaction.
int64 gas_wanted = 9;
int64 gas_wanted = 9 [(cosmos_proto.scalar) = "cosmos.Int"];
// Amount of gas consumed by transaction.
int64 gas_used = 10;
int64 gas_used = 10 [(cosmos_proto.scalar) = "cosmos.Int"];
// The request transaction bytes.
google.protobuf.Any tx = 11;
// Time of the previous block. For heights > 1, it's the weighted median of
Expand All @@ -45,7 +46,7 @@ message TxResponse {
message ABCIMessageLog {
option (gogoproto.stringer) = true;

uint32 msg_index = 1;
uint32 msg_index = 1 [(cosmos_proto.scalar) = "cosmos.Int"];
string log = 2;

// Events contains a slice of Event objects that were emitted during some
Expand All @@ -72,10 +73,10 @@ message Attribute {
// GasInfo defines tx execution gas context.
message GasInfo {
// GasWanted is the maximum units of work we allow this tx to perform.
uint64 gas_wanted = 1 [(gogoproto.moretags) = "yaml:\"gas_wanted\""];
uint64 gas_wanted = 1 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.moretags) = "yaml:\"gas_wanted\""];

// GasUsed is the amount of gas actually consumed.
uint64 gas_used = 2 [(gogoproto.moretags) = "yaml:\"gas_used\""];
uint64 gas_used = 2 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.moretags) = "yaml:\"gas_used\""];
}

// Result is the union of ResponseFormat and ResponseCheckTx.
Expand Down Expand Up @@ -123,15 +124,15 @@ message SearchTxsResult {
option (gogoproto.stringer) = true;

// Count of all txs
uint64 total_count = 1 [(gogoproto.moretags) = "yaml:\"total_count\"", (gogoproto.jsontag) = "total_count"];
uint64 total_count = 1 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.moretags) = "yaml:\"total_count\"", (gogoproto.jsontag) = "total_count"];
// Count of txs in current page
uint64 count = 2;
uint64 count = 2 [(cosmos_proto.scalar) = "cosmos.Int"];
// Index of current page, start from 1
uint64 page_number = 3 [(gogoproto.moretags) = "yaml:\"page_number\"", (gogoproto.jsontag) = "page_number"];
uint64 page_number = 3 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.moretags) = "yaml:\"page_number\"", (gogoproto.jsontag) = "page_number"];
// Count of total pages
uint64 page_total = 4 [(gogoproto.moretags) = "yaml:\"page_total\"", (gogoproto.jsontag) = "page_total"];
uint64 page_total = 4 [(cosmos_proto.scalar) = "cosmos.Int", (gogoproto.moretags) = "yaml:\"page_total\"", (gogoproto.jsontag) = "page_total"];
// Max count txs per page
uint64 limit = 5;
uint64 limit = 5 [(cosmos_proto.scalar) = "cosmos.Int"];
// List of txs in current page
repeated TxResponse txs = 6;
}
8 changes: 5 additions & 3 deletions proto/cosmos/base/query/v1beta1/pagination.proto
@@ -1,6 +1,8 @@
syntax = "proto3";
package cosmos.base.query.v1beta1;

import "cosmos_proto/cosmos.proto";
cyberbono3 marked this conversation as resolved.
Show resolved Hide resolved

option go_package = "github.com/cosmos/cosmos-sdk/types/query";

// PageRequest is to be embedded in gRPC request messages for efficient
Expand All @@ -19,11 +21,11 @@ message PageRequest {
// offset is a numeric offset that can be used when key is unavailable.
// It is less efficient than using key. Only one of offset or key should
// be set.
uint64 offset = 2;
uint64 offset = 2 [(cosmos_proto.scalar) = "cosmos.Int"];

// limit is the total number of results to be returned in the result page.
// If left empty it will default to a value to be set by each app.
uint64 limit = 3;
uint64 limit = 3 [(cosmos_proto.scalar) = "cosmos.Int"];

// count_total is set to true to indicate that the result set should include
// a count of the total number of items available for pagination in UIs.
Expand All @@ -49,5 +51,5 @@ message PageResponse {

// total is total number of results available if PageRequest.count_total
// was set, its value is undefined otherwise
uint64 total = 2;
uint64 total = 2 [(cosmos_proto.scalar) = "cosmos.Int"];
}
2 changes: 1 addition & 1 deletion proto/cosmos/base/reflection/v2alpha1/reflection.proto
Expand Up @@ -47,7 +47,7 @@ message SigningModeDescriptor {
// name defines the unique name of the signing mode
string name = 1;
// number is the unique int32 identifier for the sign_mode enum
int32 number = 2;
int32 number = 2 [(cosmos_proto.scalar) = "cosmos.Int"];
// authn_info_provider_method_fullname defines the fullname of the method to call to get
// the metadata required to authenticate using the provided sign_modes
string authn_info_provider_method_fullname = 3;
Expand Down
7 changes: 4 additions & 3 deletions proto/cosmos/base/snapshots/v1beta1/snapshot.proto
Expand Up @@ -2,14 +2,15 @@ syntax = "proto3";
package cosmos.base.snapshots.v1beta1;

import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/snapshots/types";

// Snapshot contains Tendermint state sync snapshot info.
message Snapshot {
uint64 height = 1;
uint32 format = 2;
uint32 chunks = 3;
uint64 height = 1 [(cosmos_proto.scalar) = "cosmos.Int"];
uint32 format = 2 [(cosmos_proto.scalar) = "cosmos.Int"];
uint32 chunks = 3 [(cosmos_proto.scalar) = "cosmos.Int"];
bytes hash = 4;
Metadata metadata = 5 [(gogoproto.nullable) = false];
}
Expand Down
5 changes: 3 additions & 2 deletions proto/cosmos/base/store/v1beta1/commit_info.proto
Expand Up @@ -2,13 +2,14 @@ syntax = "proto3";
package cosmos.base.store.v1beta1;

import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/store/types";

// CommitInfo defines commit information used by the multi-store when committing
// a version/height.
message CommitInfo {
int64 version = 1;
int64 version = 1 [(cosmos_proto.scalar) = "cosmos.Int"];
repeated StoreInfo store_infos = 2 [(gogoproto.nullable) = false];
}

Expand All @@ -24,6 +25,6 @@ message StoreInfo {
message CommitID {
option (gogoproto.goproto_stringer) = false;

int64 version = 1;
int64 version = 1 [(cosmos_proto.scalar) = "cosmos.Int"];
bytes hash = 2;
}
5 changes: 3 additions & 2 deletions proto/cosmos/base/store/v1beta1/snapshot.proto
Expand Up @@ -2,6 +2,7 @@ syntax = "proto3";
package cosmos.base.store.v1beta1;

import "gogoproto/gogo.proto";
import "cosmos_proto/cosmos.proto";

option go_package = "github.com/cosmos/cosmos-sdk/store/types";

Expand All @@ -23,6 +24,6 @@ message SnapshotStoreItem {
message SnapshotIAVLItem {
bytes key = 1;
bytes value = 2;
int64 version = 3;
int32 height = 4;
int64 version = 3 [(cosmos_proto.scalar) = "cosmos.Int"];
int32 height = 4 [(cosmos_proto.scalar) = "cosmos.Int"];
}