From 6b82f0c28896ffac9d1da5298e7399284a3da913 Mon Sep 17 00:00:00 2001 From: marbar3778 Date: Wed, 27 Sep 2023 13:33:12 +0200 Subject: [PATCH 1/3] bootstrap api from comet --- server/cmt_cmds.go | 65 +++------------------------------------------- 1 file changed, 3 insertions(+), 62 deletions(-) diff --git a/server/cmt_cmds.go b/server/cmt_cmds.go index f03694c93dfa..1ae122cae612 100644 --- a/server/cmt_cmds.go +++ b/server/cmt_cmds.go @@ -9,14 +9,9 @@ import ( cmtcfg "github.com/cometbft/cometbft/config" cmtjson "github.com/cometbft/cometbft/libs/json" - "github.com/cometbft/cometbft/light" "github.com/cometbft/cometbft/node" "github.com/cometbft/cometbft/p2p" pvm "github.com/cometbft/cometbft/privval" - cmtstore "github.com/cometbft/cometbft/proto/tendermint/store" - sm "github.com/cometbft/cometbft/state" - "github.com/cometbft/cometbft/statesync" - "github.com/cometbft/cometbft/store" cmtversion "github.com/cometbft/cometbft/version" "github.com/spf13/cobra" "sigs.k8s.io/yaml" @@ -28,7 +23,6 @@ import ( "github.com/cosmos/cosmos-sdk/client/grpc/cmtservice" rpc "github.com/cosmos/cosmos-sdk/client/rpc" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" - servercmtlog "github.com/cosmos/cosmos-sdk/server/log" "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" @@ -376,6 +370,7 @@ func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command { if err != nil { return err } + var apphash []byte if height == 0 { home := serverCtx.Viper.GetString(flags.FlagHome) db, err := openDB(home, GetAppDBBackend(serverCtx.Viper)) @@ -384,65 +379,11 @@ func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command { } app := appCreator(logger, db, nil, serverCtx.Viper) + apphash = app.CommitMultiStore().WorkingHash() height = app.CommitMultiStore().LastCommitID().Version } - blockStoreDB, err := cmtcfg.DefaultDBProvider(&cmtcfg.DBContext{ID: "blockstore", Config: cfg}) - if err != nil { - return err - } - blockStore := store.NewBlockStore(blockStoreDB) - - stateDB, err := cmtcfg.DefaultDBProvider(&cmtcfg.DBContext{ID: "state", Config: cfg}) - if err != nil { - return err - } - stateStore := sm.NewStore(stateDB, sm.StoreOptions{ - DiscardABCIResponses: cfg.Storage.DiscardABCIResponses, - }) - - genState, _, err := node.LoadStateFromDBOrGenesisDocProvider(stateDB, node.DefaultGenesisDocProviderFunc(cfg)) - if err != nil { - return err - } - - stateProvider, err := statesync.NewLightClientStateProvider( - cmd.Context(), - genState.ChainID, genState.Version, genState.InitialHeight, - cfg.StateSync.RPCServers, light.TrustOptions{ - Period: cfg.StateSync.TrustPeriod, - Height: cfg.StateSync.TrustHeight, - Hash: cfg.StateSync.TrustHashBytes(), - }, servercmtlog.CometLoggerWrapper{Logger: logger.With("module", "light")}) - if err != nil { - return fmt.Errorf("failed to set up light client state provider: %w", err) - } - - state, err := stateProvider.State(cmd.Context(), uint64(height)) - if err != nil { - return fmt.Errorf("failed to get state: %w", err) - } - - commit, err := stateProvider.Commit(cmd.Context(), uint64(height)) - if err != nil { - return fmt.Errorf("failed to get commit: %w", err) - } - - if err := stateStore.Bootstrap(state); err != nil { - return fmt.Errorf("failed to bootstrap state: %w", err) - } - - if err := blockStore.SaveSeenCommit(state.LastBlockHeight, commit); err != nil { - return fmt.Errorf("failed to save seen commit: %w", err) - } - - store.SaveBlockStoreState(&cmtstore.BlockStoreState{ - // it breaks the invariant that blocks in range [Base, Height] must exists, but it do works in practice. - Base: state.LastBlockHeight, - Height: state.LastBlockHeight, - }, blockStoreDB) - - return nil + return node.BootstrapState(context.Background(), cfg, cmtcfg.DefaultDBProvider, uint64(height), apphash) }, } From 054650d9b6badfe51a79046d9d8eb87d7b8441c0 Mon Sep 17 00:00:00 2001 From: marbar3778 Date: Wed, 27 Sep 2023 13:35:41 +0200 Subject: [PATCH 2/3] set apphash to nil --- server/cmt_cmds.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server/cmt_cmds.go b/server/cmt_cmds.go index 1ae122cae612..d0b05aa03620 100644 --- a/server/cmt_cmds.go +++ b/server/cmt_cmds.go @@ -370,7 +370,6 @@ func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command { if err != nil { return err } - var apphash []byte if height == 0 { home := serverCtx.Viper.GetString(flags.FlagHome) db, err := openDB(home, GetAppDBBackend(serverCtx.Viper)) @@ -379,11 +378,10 @@ func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command { } app := appCreator(logger, db, nil, serverCtx.Viper) - apphash = app.CommitMultiStore().WorkingHash() height = app.CommitMultiStore().LastCommitID().Version } - return node.BootstrapState(context.Background(), cfg, cmtcfg.DefaultDBProvider, uint64(height), apphash) + return node.BootstrapState(context.Background(), cfg, cmtcfg.DefaultDBProvider, uint64(height), nil) }, } From f58351bdf3c04f1c352f4ae10d0ce0b0917e816e Mon Sep 17 00:00:00 2001 From: marbar3778 Date: Wed, 27 Sep 2023 14:24:09 +0200 Subject: [PATCH 3/3] use cmd.context --- server/cmt_cmds.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/cmt_cmds.go b/server/cmt_cmds.go index d0b05aa03620..71563ee674c3 100644 --- a/server/cmt_cmds.go +++ b/server/cmt_cmds.go @@ -381,7 +381,7 @@ func BootstrapStateCmd(appCreator types.AppCreator) *cobra.Command { height = app.CommitMultiStore().LastCommitID().Version } - return node.BootstrapState(context.Background(), cfg, cmtcfg.DefaultDBProvider, uint64(height), nil) + return node.BootstrapState(cmd.Context(), cfg, cmtcfg.DefaultDBProvider, uint64(height), nil) }, }