Skip to content

Commit

Permalink
feat(sequencer): Implement new create sequencer design (#985)
Browse files Browse the repository at this point in the history
Co-authored-by: Michael Tsitrin <[email protected]>
  • Loading branch information
zale144 and mtsitrin authored Jul 26, 2024
1 parent 6cbcd75 commit 0d734ac
Show file tree
Hide file tree
Showing 88 changed files with 4,519 additions and 1,020 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ Ref: https://keepachangelog.com/en/1.0.0/

### Features

- (rollapp) [#999](https://github.com/dymensionxyz/dymension/issues/999) Handle sequencer information updates.
- (rollapp) [#996](https://github.com/dymensionxyz/dymension/issues/996) Handle rollapp information updates.
- (sequencer) [#955](https://github.com/dymensionxyz/dymension/issues/979) Rework the sequencer registration flow.
- (app) [#972](https://github.com/dymensionxyz/dymension/pull/972) Refactor upgrade handlers.
- (delayedack) [#972](https://github.com/dymensionxyz/dymension/pull/972) Use pagination when deleting rollapp packets.
- (denommetadata) [#955](https://github.com/dymensionxyz/dymension/issues/955) Add IBC middleware to create denom metadata from rollapp, on IBC transfer.
Expand Down
62 changes: 35 additions & 27 deletions app/apptesting/test_suite.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@ import (
"strings"

"github.com/cometbft/cometbft/libs/rand"
"github.com/cosmos/cosmos-sdk/crypto/types"

codectypes "github.com/cosmos/cosmos-sdk/codec/types"
"github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1"
"github.com/cosmos/cosmos-sdk/crypto/keys/ed25519"
sdk "github.com/cosmos/cosmos-sdk/types"
bankutil "github.com/cosmos/cosmos-sdk/x/bank/testutil"
"github.com/stretchr/testify/suite"

"github.com/dymensionxyz/dymension/v3/app"
"github.com/dymensionxyz/dymension/v3/testutil/sample"

rollappkeeper "github.com/dymensionxyz/dymension/v3/x/rollapp/keeper"
rollapptypes "github.com/dymensionxyz/dymension/v3/x/rollapp/types"
sequencerkeeper "github.com/dymensionxyz/dymension/v3/x/sequencer/keeper"
Expand All @@ -31,16 +30,19 @@ type KeeperTestHelper struct {
Ctx sdk.Context
}

func (s *KeeperTestHelper) CreateDefaultRollapp() string {
return s.CreateRollappWithName(rand.Str(8))
func (s *KeeperTestHelper) CreateDefaultRollappWithProposer() (string, string) {
return s.CreateRollappWithNameWithProposer(rand.Str(8))
}

func (s *KeeperTestHelper) CreateRollappWithName(name string) string {
func (s *KeeperTestHelper) CreateRollappWithNameWithProposer(name string) (string, string) {
pubkey := ed25519.GenPrivKey().PubKey()
addr := sdk.AccAddress(pubkey.Address())

alias := strings.NewReplacer("_", "", "-", "").Replace(name) // base it on rollappID to avoid alias conflicts
msgCreateRollapp := rollapptypes.MsgCreateRollapp{
Creator: alice,
RollappId: name,
InitialSequencerAddress: sample.AccAddress(),
InitialSequencerAddress: addr.String(),
Bech32Prefix: strings.ToLower(rand.Str(3)),
GenesisChecksum: "1234567890abcdefg",
Alias: alias,
Expand All @@ -60,31 +62,37 @@ func (s *KeeperTestHelper) CreateRollappWithName(name string) string {
msgServer := rollappkeeper.NewMsgServerImpl(*s.App.RollappKeeper)
_, err := msgServer.CreateRollapp(s.Ctx, &msgCreateRollapp)
s.Require().NoError(err)
return name

err = s.CreateSequencer(s.Ctx, name, pubkey)
s.Require().NoError(err)
return name, addr.String()
}

func (s *KeeperTestHelper) CreateDefaultSequencer(ctx sdk.Context, rollappId string) string {
pubkey1 := secp256k1.GenPrivKey().PubKey()
addr1 := sdk.AccAddress(pubkey1.Address())
pkAny1, err := codectypes.NewAnyWithValue(pubkey1)
s.Require().Nil(err)
func (s *KeeperTestHelper) CreateDefaultSequencer(ctx sdk.Context, rollappId string) (string, error) {
pubkey := ed25519.GenPrivKey().PubKey()
return sdk.AccAddress(pubkey.Address()).String(), s.CreateSequencer(ctx, rollappId, pubkey)
}

func (s *KeeperTestHelper) CreateSequencer(ctx sdk.Context, rollappId string, pubKey types.PubKey) error {
addr := sdk.AccAddress(pubKey.Address())
// fund account
err = bankutil.FundAccount(s.App.BankKeeper, ctx, addr1, sdk.NewCoins(bond))
err := bankutil.FundAccount(s.App.BankKeeper, ctx, addr, sdk.NewCoins(bond))
s.Require().Nil(err)

pkAny, err := codectypes.NewAnyWithValue(pubKey)
s.Require().Nil(err)

sequencerMsg1 := sequencertypes.MsgCreateSequencer{
Creator: addr1.String(),
DymintPubKey: pkAny1,
Creator: addr.String(),
DymintPubKey: pkAny,
Bond: bond,
RollappId: rollappId,
Description: sequencertypes.Description{},
Metadata: sequencertypes.SequencerMetadata{},
}

msgServer := sequencerkeeper.NewMsgServerImpl(s.App.SequencerKeeper)
_, err = msgServer.CreateSequencer(ctx, &sequencerMsg1)
s.Require().Nil(err)
return addr1.String()
return err
}

func (s *KeeperTestHelper) PostStateUpdate(ctx sdk.Context, rollappId, seqAddr string, startHeight, numOfBlocks uint64) (lastHeight uint64, err error) {
Expand Down Expand Up @@ -114,15 +122,15 @@ func (s *KeeperTestHelper) FundAcc(acc sdk.AccAddress, amounts sdk.Coins) {
}

// FundModuleAcc funds target modules with specified amount.
func (suite *KeeperTestHelper) FundModuleAcc(moduleName string, amounts sdk.Coins) {
err := bankutil.FundModuleAccount(suite.App.BankKeeper, suite.Ctx, moduleName, amounts)
suite.Require().NoError(err)
func (s *KeeperTestHelper) FundModuleAcc(moduleName string, amounts sdk.Coins) {
err := bankutil.FundModuleAccount(s.App.BankKeeper, s.Ctx, moduleName, amounts)
s.Require().NoError(err)
}

// StateNotAltered validates that app state is not altered. Fails if it is.
func (suite *KeeperTestHelper) StateNotAltered() {
oldState := suite.App.ExportState(suite.Ctx)
suite.App.Commit()
newState := suite.App.ExportState(suite.Ctx)
suite.Require().Equal(oldState, newState)
func (s *KeeperTestHelper) StateNotAltered() {
oldState := s.App.ExportState(s.Ctx)
s.App.Commit()
newState := s.App.ExportState(s.Ctx)
s.Require().Equal(oldState, newState)
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

76 changes: 76 additions & 0 deletions app/upgrades/v4/types/operating_status.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 0 additions & 9 deletions app/upgrades/v4/types/params.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions app/upgrades/v4/types/rollapp.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 0d734ac

Please sign in to comment.