Skip to content

Commit acf99bc

Browse files
committed
feat: add gRPC gateway support for Query service and Msg service
- Generated query.pb.gw.go to handle RESTful JSON APIs for the Query service. - Implemented MsgUpdateParams and MsgUpdateParamsResponse in tx.pb.go for governance operations. - Created types.go to define the package structure for evmbridge types.
1 parent c1c8ec4 commit acf99bc

39 files changed

+3176
-86
lines changed

app/app.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import (
4646
ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper"
4747

4848
"junction/docs"
49+
evmbridgemodulekeeper "junction/x/evmbridge/keeper"
4950
)
5051

5152
const (
@@ -98,7 +99,8 @@ type App struct {
9899
TransferKeeper ibctransferkeeper.Keeper
99100

100101
// simulation manager
101-
sm *module.SimulationManager
102+
sm *module.SimulationManager
103+
EvmbridgeKeeper evmbridgemodulekeeper.Keeper
102104
}
103105

104106
func init() {
@@ -171,6 +173,7 @@ func New(
171173
&app.ConsensusParamsKeeper,
172174
&app.CircuitBreakerKeeper,
173175
&app.ParamsKeeper,
176+
&app.EvmbridgeKeeper,
174177
); err != nil {
175178
panic(err)
176179
}

app/app_config.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package app
22

33
import (
4+
_ "junction/x/evmbridge/module"
5+
evmbridgemoduletypes "junction/x/evmbridge/types"
46
"time"
57

68
runtimev1alpha1 "cosmossdk.io/api/cosmos/app/runtime/v1alpha1"
@@ -81,7 +83,7 @@ var (
8183
{Account: nft.ModuleName},
8284
{Account: ibctransfertypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner}},
8385
{Account: icatypes.ModuleName},
84-
}
86+
{Account: evmbridgemoduletypes.ModuleName, Permissions: []string{authtypes.Minter, authtypes.Burner, authtypes.Staking}}}
8587

8688
// blocked account addresses
8789
blockAccAddrs = []string{
@@ -91,6 +93,7 @@ var (
9193
stakingtypes.BondedPoolName,
9294
stakingtypes.NotBondedPoolName,
9395
nft.ModuleName,
96+
evmbridgemoduletypes.ModuleName,
9497
// We allow the following module accounts to receive funds:
9598
// govtypes.ModuleName
9699
}
@@ -123,6 +126,7 @@ var (
123126
// ibc modules
124127
ibcexported.ModuleName,
125128
// chain modules
129+
evmbridgemoduletypes.ModuleName,
126130
// this line is used by starport scaffolding # stargate/app/beginBlockers
127131
},
128132
EndBlockers: []string{
@@ -131,6 +135,7 @@ var (
131135
feegrant.ModuleName,
132136
group.ModuleName,
133137
// chain modules
138+
evmbridgemoduletypes.ModuleName,
134139
// this line is used by starport scaffolding # stargate/app/endBlockers
135140
},
136141
// The following is mostly only needed when ModuleName != StoreKey name.
@@ -167,6 +172,7 @@ var (
167172
ibctransfertypes.ModuleName,
168173
icatypes.ModuleName,
169174
// chain modules
175+
evmbridgemoduletypes.ModuleName,
170176
// this line is used by starport scaffolding # stargate/app/initGenesis
171177
},
172178
}),
@@ -263,6 +269,10 @@ var (
263269
Name: epochstypes.ModuleName,
264270
Config: appconfig.WrapAny(&epochsmodulev1.Module{}),
265271
},
272+
{
273+
Name: evmbridgemoduletypes.ModuleName,
274+
Config: appconfig.WrapAny(&evmbridgemoduletypes.Module{}),
275+
},
266276
// this line is used by starport scaffolding # stargate/app/moduleConfig
267277
},
268278
})

buf.lock

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@ deps:
55
commit: 04467658e59e44bbb22fe568206e1f70
66
digest: b5:8058c0aadbee8c9af67a9cefe86492c6c0b0bd5b4526b0ec820507b91fc9b0b5efbebca97331854576d2d279b0b3f5ed6a7abb0640cb640c4186532239c48fc4
77
- name: buf.build/cosmos/cosmos-sdk
8-
commit: 05419252bcc241ea8023acf1ed4cadc5
9-
digest: b5:bec474e46596bf183fa85eb5c33106d432992ae696785c1c5fc1ce2a8f8819cab80c89d0b11557f3e916fd65133451fca4471a05f75ed163c688a8964ecb97b8
8+
commit: 650cd9ad7f7a468e8e19975269958658
9+
digest: b5:652a0cd9aa3c220bb12b558f29b30ca5c248b994420472c9c2a54eed3d33356b1307e51687c1909ea4f535a2a1e180895b8cda83b58a4697003009d17fdbc154
1010
- name: buf.build/cosmos/gogo-proto
1111
commit: 88ef6483f90f478fb938c37dde52ece3
1212
digest: b5:f0c69202c9bca9672dc72a9737ea9bc83744daaed2b3da77e3a95b0e53b86dee76b5a7405b993181d6c863fd64afaca0976a302f700d6c4912eb1692a1782c0a
13+
- name: buf.build/cosmos/ibc
14+
commit: 857539074f9c4dda961f9db5dcf8e462
15+
digest: b5:35746d095f73e8b59b7430388be8a72b1e01c2d36ec49df2025ec96a983a62441f67c0843219e06675186e155bfd25624187bd7c512e59e1e355750bb5586ce2
1316
- name: buf.build/cosmos/ics23
1417
commit: dc427cb4519143d8996361c045a29ad7
1518
digest: b5:8693e72e230bfaf58a88a47a4093ba99f6252c1957a45582567959b38a8563e2abd11443372283d75f4f2306a7e3cc9bf63604d284a016c11966fca4b74b7a28
1619
- name: buf.build/googleapis/googleapis
17-
commit: acd896313c55464b993332136ded1b6e
18-
digest: b5:025d83e25193feb8dac5e5576113c8737006218b3b09fbc0d0ff652614da5424b336edb15bea139eb90d14eba656774a979d1fbdae81cbab2013932b84b98f53
20+
commit: 61b203b9a9164be9a834f58c37be6f62
21+
digest: b5:7811a98b35bd2e4ae5c3ac73c8b3d9ae429f3a790da15de188dc98fc2b77d6bb10e45711f14903af9553fa9821dff256054f2e4b7795789265bc476bec2f088c
1922
- name: buf.build/protocolbuffers/wellknowntypes
20-
commit: 384f8deef6ae4110b57d996aad0032c4
21-
digest: b5:8b023f5c2a872028738eef7ca2323d17379d05332f95fad1d3db3d356ad29f0644bf5868a14069f350bb967a7c8f4bd010228d2deb482e05f56ffd1a5bfc79b3
22-
- name: buf.build/tendermint/tendermint
23-
commit: 33ed361a90514289beabf3189e1d7665
24-
digest: b5:72e7b167e6a474c8ed7763e3fc811d756d48dd0e70d897c1d3b661656aa4ad3cf2adabadf1fa9a8fd644567678a1acd27bec139895b0469258cfa4c3ebae7aab
23+
commit: a4aee59cf3714106961b09d99b349cd1
24+
digest: b5:0bcf938c1c604919ccc4bee0b72b56ffe049fd043837b80aca7c89a984979e9b4913b4973166fa6e7895995b30da23daab6c83d9ba21d9d16ddc414bf25e3288

buf.yaml

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
1-
version: v2
2-
modules:
3-
- path: proto
1+
breaking:
2+
except:
3+
- EXTENSION_NO_DELETE
4+
- FIELD_SAME_DEFAULT
5+
use:
6+
- FILE
47
deps:
5-
- buf.build/cosmos/cosmos-proto
6-
- buf.build/cosmos/cosmos-sdk
7-
- buf.build/cosmos/gogo-proto
8-
- buf.build/cosmos/ics23
9-
- buf.build/googleapis/googleapis
10-
- buf.build/protocolbuffers/wellknowntypes
8+
- buf.build/cosmos/cosmos-proto
9+
- buf.build/cosmos/cosmos-sdk
10+
- buf.build/cosmos/gogo-proto
11+
- buf.build/cosmos/ics23
12+
- buf.build/googleapis/googleapis
13+
- buf.build/protocolbuffers/wellknowntypes
14+
- buf.build/cosmos/ibc
1115
lint:
12-
use:
13-
- COMMENTS
14-
- STANDARD
15-
- FILE_LOWER_SNAKE_CASE
16-
except:
17-
- COMMENT_FIELD
18-
- RPC_REQUEST_STANDARD_NAME
19-
- RPC_RESPONSE_STANDARD_NAME
20-
- SERVICE_SUFFIX
21-
ignore:
22-
- proto/tendermint
23-
disallow_comment_ignores: true
24-
breaking:
25-
use:
26-
- FILE
27-
except:
28-
- EXTENSION_NO_DELETE
29-
- FIELD_SAME_DEFAULT
16+
disallow_comment_ignores: true
17+
except:
18+
- COMMENT_FIELD
19+
- RPC_REQUEST_STANDARD_NAME
20+
- RPC_RESPONSE_STANDARD_NAME
21+
- SERVICE_SUFFIX
22+
ignore:
23+
- proto/tendermint
24+
use:
25+
- COMMENTS
26+
- STANDARD
27+
- FILE_LOWER_SNAKE_CASE
28+
modules:
29+
- path: proto
30+
version: v2

docs/static/openapi.json

Lines changed: 1 addition & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1 @@
1-
{
2-
"id": "junction",
3-
"consumes": ["application/json"],
4-
"produces": ["application/json"],
5-
"swagger": "2.0",
6-
"info":
7-
{
8-
"description": "Chain junction REST API",
9-
"title": "HTTP API Console",
10-
"contact": { "name": "junction" },
11-
"version": "version not set",
12-
},
13-
"paths": {},
14-
"definitions":
15-
{
16-
"google.protobuf.Any":
17-
{
18-
"type": "object",
19-
"properties": { "@type": { "type": "string" } },
20-
"additionalProperties": {},
21-
},
22-
"google.rpc.Status":
23-
{
24-
"type": "object",
25-
"properties":
26-
{
27-
"code": { "type": "integer", "format": "int32" },
28-
"details":
29-
{
30-
"type": "array",
31-
"items":
32-
{
33-
"type": "object",
34-
"$ref": "#/definitions/google.protobuf.Any",
35-
},
36-
},
37-
"message": { "type": "string" },
38-
},
39-
},
40-
},
41-
}
1+
{"id":"junction","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain junction REST API","title":"HTTP API Console","contact":{"name":"junction"},"version":"version not set"},"paths":{"/junction.evmbridge.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"JunctionMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/junction.evmbridge.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/junction.evmbridge.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/junction/evmbridge/v1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"JunctionQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/junction.evmbridge.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"}}},"junction.evmbridge.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/junction.evmbridge.v1.Params"}}},"junction.evmbridge.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"junction.evmbridge.v1.Params":{"description":"Params defines the parameters for the module.","type":"object"},"junction.evmbridge.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/junction.evmbridge.v1.Params"}}}},"tags":[{"name":"Query"},{"name":"Msg"}]}

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require (
1717
cosmossdk.io/collections v1.2.1
1818
cosmossdk.io/core v0.11.3
1919
cosmossdk.io/depinject v1.2.1
20+
cosmossdk.io/errors v1.0.2
2021
cosmossdk.io/log v1.6.1
2122
cosmossdk.io/math v1.5.3
2223
cosmossdk.io/store v1.1.2
@@ -28,14 +29,20 @@ require (
2829
cosmossdk.io/x/upgrade v0.2.0
2930
github.com/cometbft/cometbft v0.38.17
3031
github.com/cosmos/cosmos-db v1.1.1
32+
github.com/cosmos/cosmos-proto v1.0.0-beta.5
3133
github.com/cosmos/cosmos-sdk v0.53.3
34+
github.com/cosmos/gogoproto v1.7.0
3235
github.com/cosmos/ibc-go/v10 v10.2.0
36+
github.com/golang/protobuf v1.5.4
3337
github.com/gorilla/mux v1.8.1
38+
github.com/grpc-ecosystem/grpc-gateway v1.16.0
3439
github.com/spf13/cast v1.8.0
3540
github.com/spf13/cobra v1.10.1
3641
github.com/spf13/pflag v1.0.10
3742
github.com/spf13/viper v1.20.1
3843
github.com/stretchr/testify v1.11.1
44+
google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090
45+
google.golang.org/grpc v1.75.0
3946
google.golang.org/protobuf v1.36.9
4047
)
4148

@@ -64,7 +71,6 @@ require (
6471
cloud.google.com/go/storage v1.49.0 // indirect
6572
connectrpc.com/connect v1.18.1 // indirect
6673
connectrpc.com/otelconnect v0.8.0 // indirect
67-
cosmossdk.io/errors v1.0.2 // indirect
6874
cosmossdk.io/schema v1.1.0 // indirect
6975
cosmossdk.io/x/tx v0.14.0 // indirect
7076
filippo.io/edwards25519 v1.1.0 // indirect
@@ -135,10 +141,8 @@ require (
135141
github.com/containerd/errdefs/pkg v0.3.0 // indirect
136142
github.com/containerd/stargz-snapshotter/estargz v0.17.0 // indirect
137143
github.com/cosmos/btcutil v1.0.5 // indirect
138-
github.com/cosmos/cosmos-proto v1.0.0-beta.5 // indirect
139144
github.com/cosmos/go-bip39 v1.0.0 // indirect
140145
github.com/cosmos/gogogateway v1.2.0 // indirect
141-
github.com/cosmos/gogoproto v1.7.0 // indirect
142146
github.com/cosmos/iavl v1.2.2 // indirect
143147
github.com/cosmos/ics23/go v0.11.0 // indirect
144148
github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect
@@ -201,7 +205,6 @@ require (
201205
github.com/gogo/protobuf v1.3.2 // indirect
202206
github.com/golang/glog v1.2.5 // indirect
203207
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
204-
github.com/golang/protobuf v1.5.4 // indirect
205208
github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect
206209
github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect
207210
github.com/golangci/go-printf-func-name v0.1.0 // indirect
@@ -229,7 +232,6 @@ require (
229232
github.com/gostaticanalysis/forcetypeassert v0.2.0 // indirect
230233
github.com/gostaticanalysis/nilerr v0.1.1 // indirect
231234
github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect
232-
github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect
233235
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect
234236
github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect
235237
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
@@ -417,9 +419,7 @@ require (
417419
golang.org/x/tools v0.37.0 // indirect
418420
google.golang.org/api v0.223.0 // indirect
419421
google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect
420-
google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect
421422
google.golang.org/genproto/googleapis/rpc v0.0.0-20250908214217-97024824d090 // indirect
422-
google.golang.org/grpc v1.75.0 // indirect
423423
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 // indirect
424424
gopkg.in/yaml.v2 v2.4.0 // indirect
425425
gopkg.in/yaml.v3 v3.0.1 // indirect
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
syntax = "proto3";
2+
package junction.evmbridge.module.v1;
3+
4+
import "cosmos/app/v1alpha1/module.proto";
5+
6+
option go_package = "junction/x/evmbridge/types";
7+
8+
// Module is the config object for the module.
9+
message Module {
10+
option (cosmos.app.v1alpha1.module) = {go_import: "junction/x/evmbridge"};
11+
12+
// authority defines the custom module authority.
13+
// If not set, defaults to the governance module.
14+
string authority = 1;
15+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
syntax = "proto3";
2+
package junction.evmbridge.v1;
3+
4+
import "amino/amino.proto";
5+
import "gogoproto/gogo.proto";
6+
import "junction/evmbridge/v1/params.proto";
7+
8+
option go_package = "junction/x/evmbridge/types";
9+
10+
// GenesisState defines the evmbridge module's genesis state.
11+
message GenesisState {
12+
// params defines all the parameters of the module.
13+
Params params = 1 [
14+
(gogoproto.nullable) = false,
15+
(amino.dont_omitempty) = true
16+
];
17+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
syntax = "proto3";
2+
package junction.evmbridge.v1;
3+
4+
import "amino/amino.proto";
5+
import "gogoproto/gogo.proto";
6+
7+
option go_package = "junction/x/evmbridge/types";
8+
9+
// Params defines the parameters for the module.
10+
message Params {
11+
option (amino.name) = "junction/x/evmbridge/Params";
12+
option (gogoproto.equal) = true;
13+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
syntax = "proto3";
2+
package junction.evmbridge.v1;
3+
4+
import "amino/amino.proto";
5+
import "cosmos/base/query/v1beta1/pagination.proto";
6+
import "gogoproto/gogo.proto";
7+
import "google/api/annotations.proto";
8+
import "junction/evmbridge/v1/params.proto";
9+
10+
option go_package = "junction/x/evmbridge/types";
11+
12+
// Query defines the gRPC querier service.
13+
service Query {
14+
// Parameters queries the parameters of the module.
15+
rpc Params(QueryParamsRequest) returns (QueryParamsResponse) {
16+
option (google.api.http).get = "/junction/evmbridge/v1/params";
17+
}
18+
}
19+
20+
// QueryParamsRequest is request type for the Query/Params RPC method.
21+
message QueryParamsRequest {}
22+
23+
// QueryParamsResponse is response type for the Query/Params RPC method.
24+
message QueryParamsResponse {
25+
// params holds all the parameters of this module.
26+
Params params = 1 [
27+
(gogoproto.nullable) = false,
28+
(amino.dont_omitempty) = true
29+
];
30+
}

0 commit comments

Comments
 (0)