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

Add dex module skeleton. #817

Merged
merged 3 commits into from
May 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,9 @@ import (
delaytypes "github.com/CoreumFoundation/coreum/v4/x/delay/types"
"github.com/CoreumFoundation/coreum/v4/x/deterministicgas"
deterministicgastypes "github.com/CoreumFoundation/coreum/v4/x/deterministicgas/types"
"github.com/CoreumFoundation/coreum/v4/x/dex"
dexkeeper "github.com/CoreumFoundation/coreum/v4/x/dex/keeper"
dextypes "github.com/CoreumFoundation/coreum/v4/x/dex/types"
"github.com/CoreumFoundation/coreum/v4/x/feemodel"
feemodelkeeper "github.com/CoreumFoundation/coreum/v4/x/feemodel/keeper"
feemodeltypes "github.com/CoreumFoundation/coreum/v4/x/feemodel/types"
Expand Down Expand Up @@ -210,6 +213,7 @@ var (
assetnft.AppModuleBasic{},
customparams.AppModuleBasic{},
delay.AppModuleBasic{},
dex.AppModuleBasic{},
)

// module account permissions.
Expand Down Expand Up @@ -289,6 +293,7 @@ type App struct {
NFTKeeper wnftkeeper.Wrapper
CustomParamsKeeper customparamskeeper.Keeper
DelayKeeper delaykeeper.Keeper
DEXKeeper dexkeeper.Keeper

// make scoped keepers public for test purposes
ScopedIBCKeeper capabilitykeeper.ScopedKeeper
Expand Down Expand Up @@ -346,7 +351,7 @@ func New(
wasmtypes.StoreKey, feemodeltypes.StoreKey, assetfttypes.StoreKey,
assetnfttypes.StoreKey, nftkeeper.StoreKey, ibcexported.StoreKey,
ibctransfertypes.StoreKey, delaytypes.StoreKey, customparamstypes.StoreKey,
group.StoreKey,
group.StoreKey, dextypes.StoreKey,
)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey, feemodeltypes.TransientStoreKey)
memKeys := sdk.NewMemoryStoreKeys(capabilitytypes.MemStoreKey)
Expand Down Expand Up @@ -718,6 +723,11 @@ func New(
)
app.IBCKeeper.SetRouter(ibcRouter)

app.DEXKeeper = dexkeeper.NewKeeper(
appCodec,
keys[dextypes.StoreKey],
)

/**** Module Options ****/

// NOTE: we may consider parsing `appOpts` inside module constructors. For the moment
Expand Down Expand Up @@ -804,6 +814,7 @@ func New(
wnftModule,
customParamsModule,
delayModule,
dex.NewAppModule(appCodec, app.DEXKeeper),
// always be last to make sure that it checks for all invariants and not only part of them
crisis.NewAppModule(app.CrisisKeeper, skipGenesisInvariants, app.GetSubspace(crisistypes.ModuleName)),
)
Expand Down Expand Up @@ -841,6 +852,7 @@ func New(
assetnfttypes.ModuleName,
nft.ModuleName,
delaytypes.ModuleName,
dextypes.ModuleName,
)

app.ModuleManager.SetOrderEndBlockers(
Expand Down Expand Up @@ -872,6 +884,7 @@ func New(
assetnfttypes.ModuleName,
nft.ModuleName,
delaytypes.ModuleName,
dextypes.ModuleName,
)

// NOTE: The genutils module must occur after staking so that pools are
Expand Down Expand Up @@ -909,6 +922,7 @@ func New(
assetfttypes.ModuleName,
assetnfttypes.ModuleName,
delaytypes.ModuleName,
dextypes.ModuleName,
}

app.ModuleManager.SetOrderInitGenesis(genesisModuleOrder...)
Expand Down
4 changes: 3 additions & 1 deletion app/upgrade/v4/upgrade.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,20 @@ import (
ibchookstypes "github.com/cosmos/ibc-apps/modules/ibc-hooks/v7/types"

"github.com/CoreumFoundation/coreum/v4/app/upgrade"
dextypes "github.com/CoreumFoundation/coreum/v4/x/dex/types"
)

// Name defines the upgrade name.
const Name = "v4"

// New makes an upgrade handler for v3 upgrade.
// New makes an upgrade handler for v4 upgrade.
func New(mm *module.Manager, configurator module.Configurator) upgrade.Upgrade {
return upgrade.Upgrade{
Name: Name,
StoreUpgrades: store.StoreUpgrades{
Added: []string{
ibchookstypes.StoreKey,
dextypes.StoreKey,
},
},
Upgrade: func(ctx sdk.Context, _ upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) {
Expand Down
201 changes: 201 additions & 0 deletions docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,24 @@
- [coreum/deterministicgas/v1/event.proto](#coreum/deterministicgas/v1/event.proto)
- [EventGas](#coreum.deterministicgas.v1.EventGas)

- [coreum/dex/v1/genesis.proto](#coreum/dex/v1/genesis.proto)
- [GenesisState](#coreum.dex.v1.GenesisState)

- [coreum/dex/v1/order.proto](#coreum/dex/v1/order.proto)
- [Order](#coreum.dex.v1.Order)

- [coreum/dex/v1/query.proto](#coreum/dex/v1/query.proto)
- [QueryOrdersRequest](#coreum.dex.v1.QueryOrdersRequest)
- [QueryOrdersResponse](#coreum.dex.v1.QueryOrdersResponse)

- [Query](#coreum.dex.v1.Query)

- [coreum/dex/v1/tx.proto](#coreum/dex/v1/tx.proto)
- [EmptyResponse](#coreum.dex.v1.EmptyResponse)
- [MsgPlaceOrder](#coreum.dex.v1.MsgPlaceOrder)

- [Msg](#coreum.dex.v1.Msg)

- [coreum/feemodel/v1/genesis.proto](#coreum/feemodel/v1/genesis.proto)
- [GenesisState](#coreum.feemodel.v1.GenesisState)

Expand Down Expand Up @@ -4124,6 +4142,189 @@ EventGas is emitted by deterministic gas module to report gas information.



<a name="coreum/dex/v1/genesis.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## coreum/dex/v1/genesis.proto



<a name="coreum.dex.v1.GenesisState"></a>

### GenesisState

```
GenesisState defines the module genesis state.
```






<!-- end messages -->

<!-- end enums -->

<!-- end HasExtensions -->

<!-- end services -->



<a name="coreum/dex/v1/order.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## coreum/dex/v1/order.proto



<a name="coreum.dex.v1.Order"></a>

### Order

```
Order is a single order of an orderbook.
```



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `id` | [string](#string) | | `id is unique order ID.` |





<!-- end messages -->

<!-- end enums -->

<!-- end HasExtensions -->

<!-- end services -->



<a name="coreum/dex/v1/query.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## coreum/dex/v1/query.proto



<a name="coreum.dex.v1.QueryOrdersRequest"></a>

### QueryOrdersRequest

```
QueryOrdersRequest defines the request type for the `Orders` query.
```







<a name="coreum.dex.v1.QueryOrdersResponse"></a>

### QueryOrdersResponse

```
QueryOrdersRequestResponse defines the response type for the `Orders` query.
```






<!-- end messages -->

<!-- end enums -->

<!-- end HasExtensions -->


<a name="coreum.dex.v1.Query"></a>

### Query

```
Query defines the gRPC query service.
```


| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
| `Orders` | [QueryOrdersRequest](#coreum.dex.v1.QueryOrdersRequest) | [QueryOrdersResponse](#coreum.dex.v1.QueryOrdersResponse) | `Orders queries all orders.` | GET|/coreum/dex/v1/orders |

<!-- end services -->



<a name="coreum/dex/v1/tx.proto"></a>
<p align="right"><a href="#top">Top</a></p>

## coreum/dex/v1/tx.proto



<a name="coreum.dex.v1.EmptyResponse"></a>

### EmptyResponse







<a name="coreum.dex.v1.MsgPlaceOrder"></a>

### MsgPlaceOrder

```
MsgPlaceOrder defines message to place an order on orderbook.
```



| Field | Type | Label | Description |
| ----- | ---- | ----- | ----------- |
| `sender` | [string](#string) | | `sender is message sender/signer.` |
| `order` | [Order](#coreum.dex.v1.Order) | | `order is an order to place on orderbook.` |





<!-- end messages -->

<!-- end enums -->

<!-- end HasExtensions -->


<a name="coreum.dex.v1.Msg"></a>

### Msg

```
Msg defines the Msg service.
```


| Method Name | Request Type | Response Type | Description | HTTP Verb | Endpoint |
| ----------- | ------------ | ------------- | ------------| ------- | -------- |
| `PlaceOrder` | [MsgPlaceOrder](#coreum.dex.v1.MsgPlaceOrder) | [EmptyResponse](#coreum.dex.v1.EmptyResponse) | `PlaceOrder is a method to place an order on orderbook.` | |

<!-- end services -->



<a name="coreum/feemodel/v1/genesis.proto"></a>
<p align="right"><a href="#top">Top</a></p>

Expand Down
7 changes: 7 additions & 0 deletions proto/coreum/dex/v1/genesis.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
syntax = "proto3";
package coreum.dex.v1;

option go_package = "github.com/CoreumFoundation/coreum/v4/x/dex/types";

// GenesisState defines the module genesis state.
message GenesisState {}
13 changes: 13 additions & 0 deletions proto/coreum/dex/v1/order.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
syntax = "proto3";
package coreum.dex.v1;

import "gogoproto/gogo.proto";

option go_package = "github.com/CoreumFoundation/coreum/v4/x/dex/types";
option (gogoproto.goproto_getters_all) = false;

// Order is a single order of an orderbook.
message Order {
// id is unique order ID.
string id = 1;
}
20 changes: 20 additions & 0 deletions proto/coreum/dex/v1/query.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
syntax = "proto3";
package coreum.dex.v1;

import "google/api/annotations.proto";

option go_package = "github.com/CoreumFoundation/coreum/v4/x/dex/types";

// Query defines the gRPC query service.
service Query {
// Orders queries all orders.
rpc Orders(QueryOrdersRequest) returns (QueryOrdersResponse) {
option (google.api.http).get = "/coreum/dex/v1/orders";
}
}

// QueryOrdersRequest defines the request type for the `Orders` query.
message QueryOrdersRequest {}

// QueryOrdersRequestResponse defines the response type for the `Orders` query.
message QueryOrdersResponse {}
24 changes: 24 additions & 0 deletions proto/coreum/dex/v1/tx.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
syntax = "proto3";
package coreum.dex.v1;

import "coreum/dex/v1/order.proto";
import "gogoproto/gogo.proto";

option go_package = "github.com/CoreumFoundation/coreum/v4/x/dex/types";
option (gogoproto.goproto_getters_all) = false;

// Msg defines the Msg service.
service Msg {
// PlaceOrder is a method to place an order on orderbook.
rpc PlaceOrder(MsgPlaceOrder) returns (EmptyResponse);
}

// MsgPlaceOrder defines message to place an order on orderbook.
message MsgPlaceOrder {
// sender is message sender/signer.
string sender = 1;
// order is an order to place on orderbook.
Order order = 2;
}

message EmptyResponse {}
Loading
Loading