Skip to content

Commit

Permalink
feat: implement rollup module
Browse files Browse the repository at this point in the history
  • Loading branch information
shiki-tak committed Jul 3, 2023
1 parent 17ab59d commit f86f448
Show file tree
Hide file tree
Showing 38 changed files with 9,814 additions and 0 deletions.
542 changes: 542 additions & 0 deletions docs/core/proto-docs.md

Large diffs are not rendered by default.

15 changes: 15 additions & 0 deletions proto/finschia/or/rollup/v1/genesis.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
syntax = "proto3";
package finschia.or.rollup.v1;

import "gogoproto/gogo.proto";

import "finschia/or/rollup/v1/rollup.proto";
import "finschia/or/rollup/v1/params.proto";

option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types";

message GenesisState {
repeated Rollup rollupList = 1 [(gogoproto.nullable) = false];
repeated Sequencer sequencerList = 2 [(gogoproto.nullable) = false];
Params params = 3 [(gogoproto.nullable) = false];
}
12 changes: 12 additions & 0 deletions proto/finschia/or/rollup/v1/params.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
syntax = "proto3";
package finschia.or.rollup.v1;

import "gogoproto/gogo.proto";

option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types";

// Params defines the parameters for the module.
message Params {
option (gogoproto.goproto_stringer) = false;

}
78 changes: 78 additions & 0 deletions proto/finschia/or/rollup/v1/query.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
syntax = "proto3";
package finschia.or.rollup.v1;

import "google/api/annotations.proto";

import "finschia/or/rollup/v1/rollup.proto";

import "cosmos/base/query/v1beta1/pagination.proto";
import "cosmos_proto/cosmos.proto";
import "google/protobuf/any.proto";
import "gogoproto/gogo.proto";

option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types";

service Query {
rpc Rollup(QueryRollupRequest) returns (QueryRollupResponse) {
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/{rollupName}";
}

rpc AllRollup(QueryAllRollupRequest) returns (QueryAllRollupResponse) {
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/rollup";
}

rpc Sequencer(QuerySequencerRequest) returns (QuerySequencerResponse) {
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/sequencer/{sequencerAddress}";
}

rpc SequencersByRollup(QuerySequencersByRollupRequest) returns (QuerySequencersByRollupResponse) {
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/sequencers_by_rollup/{rollupName}";
}

rpc Deposit(QueryDepositRequest) returns (QueryDepositResponse) {
option (google.api.http).get = "/finschia/or/rollup/v1/rollup/deposit/{rollupName}/{sequencerAddress}";
}
}

message QueryRollupRequest {
string rollupName = 1;
}

message QueryAllRollupRequest {
cosmos.base.query.v1beta1.PageRequest pagination = 1;
}

message QueryAllRollupResponse {
repeated Rollup rollup = 1 [(gogoproto.nullable) = false];
cosmos.base.query.v1beta1.PageResponse pagination = 2;
}

message QuerySequencerRequest {
string sequencerAddress = 1;
}

message QueryRollupResponse {
Rollup rollup = 1 [(gogoproto.nullable) = false];
}

message QuerySequencerResponse {
Sequencer sequencer = 1 [(gogoproto.nullable) = false];
}

message QuerySequencersByRollupRequest {
string rollupName = 1;
}

message QuerySequencersByRollupResponse {
string rollupName = 1;
repeated Sequencer sequencer_list = 2 [(gogoproto.nullable) = false];
}

message QueryDepositRequest {
string rollupName = 1;
string sequencerAddress = 2;
}

message QueryDepositResponse {
Deposit deposit = 1;
}
38 changes: 38 additions & 0 deletions proto/finschia/or/rollup/v1/rollup.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
syntax = "proto3";
package finschia.or.rollup.v1;

import "cosmos_proto/cosmos.proto";
import "google/protobuf/any.proto";
import "cosmos/base/v1beta1/coin.proto";
import "gogoproto/gogo.proto";

option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types";

message Rollup {
string rollupName = 1;
string creator = 2;
Sequencers permissionedAddresses = 3 [(gogoproto.nullable) = false];
uint64 maxSequencers = 4;
}

message Sequencer {
string sequencerAddress = 1;
google.protobuf.Any pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"];
string rollupName = 3;
}

message Deposit {
string rollupName = 1;
string SequencerAddress = 2;
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false];
}

message SequencersByRollup {
string rollupName = 1;
repeated Sequencer sequencers = 2 [(gogoproto.nullable) = false];
}

message Sequencers {
repeated string addresses = 1;
}

56 changes: 56 additions & 0 deletions proto/finschia/or/rollup/v1/tx.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
syntax = "proto3";
package finschia.or.rollup.v1;

import "cosmos_proto/cosmos.proto";
import "google/protobuf/any.proto";
import "gogoproto/gogo.proto";
import "cosmos/base/v1beta1/coin.proto";
import "finschia/or/rollup/v1/rollup.proto";

option go_package = "github.com/Finschia/finschia-sdk/x/or/rollup/types";

service Msg {
rpc CreateRollup(MsgCreateRollup) returns (MsgCreateRollupResponse);
rpc RegisterSequencer(MsgRegisterSequencer) returns (MsgRegisterSequencerResponse);
rpc Deposit(MsgDeposit) returns (MsgDepositResponse);
rpc Withdraw(MsgWithdraw) returns (MsgWithdrawResponse);
rpc RemoveSequencer(MsgRemoveSequencer) returns (MsgRemoveSequencerResponse);
}

message MsgCreateRollup {
string rollupName = 1;
string creator = 2;
Sequencers permissionedAddresses = 3 [(gogoproto.nullable) = false];
uint64 maxSequencers = 4;
}

message MsgRegisterSequencer {
string creator = 1;
google.protobuf.Any pubkey = 2 [(cosmos_proto.accepts_interface) = "cosmos.crypto.PubKey"];
string rollupName = 3;
cosmos.base.v1beta1.Coin value = 4 [(gogoproto.nullable) = false];
}

message MsgDeposit {
string rollupName = 1;
string sequencerAddress = 2;
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false];
}

message MsgWithdraw {
string rollupName = 1;
string sequencerAddress = 2;
cosmos.base.v1beta1.Coin value = 3 [(gogoproto.nullable) = false];
}

message MsgCreateRollupResponse {}

message MsgRegisterSequencerResponse {}

message MsgRemoveSequencer {}

message MsgRemoveSequencerResponse {}

message MsgDepositResponse {}

message MsgWithdrawResponse {}
17 changes: 17 additions & 0 deletions simapp/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ import (
upgradekeeper "github.com/Finschia/finschia-sdk/x/upgrade/keeper"
upgradetypes "github.com/Finschia/finschia-sdk/x/upgrade/types"

"github.com/Finschia/finschia-sdk/x/or/rollup"
rollupkeeper "github.com/Finschia/finschia-sdk/x/or/rollup/keeper"
rolluptypes "github.com/Finschia/finschia-sdk/x/or/rollup/types"

// unnamed import of statik for swagger UI support
_ "github.com/Finschia/finschia-sdk/client/docs/statik"
)
Expand Down Expand Up @@ -142,6 +146,7 @@ var (
vesting.AppModuleBasic{},
tokenmodule.AppModuleBasic{},
collectionmodule.AppModuleBasic{},
rollup.AppModuleBasic{},
)

// module account permissions
Expand All @@ -154,6 +159,7 @@ var (
stakingtypes.BondedPoolName: {authtypes.Burner, authtypes.Staking},
stakingtypes.NotBondedPoolName: {authtypes.Burner, authtypes.Staking},
govtypes.ModuleName: {authtypes.Burner},
rolluptypes.ModuleName: {authtypes.Burner},
}

// module accounts that are allowed to receive tokens
Expand Down Expand Up @@ -202,6 +208,8 @@ type SimApp struct {
TokenKeeper tokenkeeper.Keeper
CollectionKeeper collectionkeeper.Keeper

RollupKeeper rollupkeeper.Keeper

// the module manager
mm *module.Manager

Expand Down Expand Up @@ -254,6 +262,7 @@ func NewSimApp(
token.StoreKey,
collection.StoreKey,
authzkeeper.StoreKey,
rolluptypes.StoreKey,
)
tkeys := sdk.NewTransientStoreKeys(paramstypes.TStoreKey)
// NOTE: The testingkey is just mounted for testing purposes. Actual applications should
Expand Down Expand Up @@ -330,6 +339,8 @@ func NewSimApp(

app.AuthzKeeper = authzkeeper.NewKeeper(keys[authzkeeper.StoreKey], appCodec, app.BaseApp.MsgServiceRouter())

app.RollupKeeper = rollupkeeper.NewKeeper(appCodec, app.BankKeeper, app.AccountKeeper, keys[rolluptypes.StoreKey], keys[rolluptypes.MemStoreKey], app.GetSubspace(rolluptypes.ModuleName))

// register the proposal types
govRouter := govtypes.NewRouter()
govRouter.AddRoute(govtypes.RouterKey, govtypes.ProposalHandler).
Expand Down Expand Up @@ -387,6 +398,7 @@ func NewSimApp(
tokenmodule.NewAppModule(appCodec, app.TokenKeeper),
collectionmodule.NewAppModule(appCodec, app.CollectionKeeper),
authzmodule.NewAppModule(appCodec, app.AuthzKeeper, app.AccountKeeper, app.BankKeeper, app.interfaceRegistry),
rollup.NewAppModule(appCodec, app.RollupKeeper, app.AccountKeeper, app.BankKeeper),
)

// During begin block slashing happens after distr.BeginBlocker so that
Expand Down Expand Up @@ -414,6 +426,7 @@ func NewSimApp(
vestingtypes.ModuleName,
token.ModuleName,
collection.ModuleName,
rolluptypes.ModuleName,
)
app.mm.SetOrderEndBlockers(
crisistypes.ModuleName,
Expand All @@ -435,6 +448,7 @@ func NewSimApp(
foundation.ModuleName,
token.ModuleName,
collection.ModuleName,
rolluptypes.ModuleName,
)

// NOTE: The genutils module must occur after staking so that pools are
Expand Down Expand Up @@ -462,6 +476,7 @@ func NewSimApp(
vestingtypes.ModuleName,
token.ModuleName,
collection.ModuleName,
rolluptypes.ModuleName,
)

// Uncomment if you want to set a custom migration order here.
Expand Down Expand Up @@ -713,5 +728,7 @@ func initParamsKeeper(appCodec codec.BinaryCodec, legacyAmino *codec.LegacyAmino
paramsKeeper.Subspace(govtypes.ModuleName).WithKeyTable(govtypes.ParamKeyTable())
paramsKeeper.Subspace(crisistypes.ModuleName)

paramsKeeper.Subspace(rolluptypes.ModuleName)

return paramsKeeper
}
Loading

0 comments on commit f86f448

Please sign in to comment.