Skip to content

Commit 064c9ba

Browse files
cool-developetac0turtleAlex | Interchain Labs
authored
feat(store/v2): build the migration manager in the root store factory (#22336)
Co-authored-by: marbar3778 <marbar3778@yahoo.com> Co-authored-by: Marko <marko@baricevic.me> Co-authored-by: Alex | Interchain Labs <alex@skip.money>
1 parent c79e19d commit 064c9ba

File tree

25 files changed

+4131
-252
lines changed

25 files changed

+4131
-252
lines changed

api/cosmos/store/v2/commit_info.pulsar.go

Lines changed: 2048 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/grpc/reflection/reflection.pb.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
syntax = "proto3";
2+
package cosmos.store.v2;
3+
4+
import "gogoproto/gogo.proto";
5+
import "google/protobuf/timestamp.proto";
6+
7+
option go_package = "cosmossdk.io/store/v2/proof";
8+
9+
// CommitInfo defines commit information used by the multi-store when committing
10+
// a version/height.
11+
message CommitInfo {
12+
int64 version = 1;
13+
repeated StoreInfo store_infos = 2;
14+
google.protobuf.Timestamp timestamp = 3 [(gogoproto.nullable) = false, (gogoproto.stdtime) = true];
15+
bytes commit_hash = 4;
16+
}
17+
18+
// StoreInfo defines store-specific commit information. It contains a reference
19+
// between a store name and the commit ID.
20+
//
21+
message StoreInfo {
22+
string name = 1;
23+
CommitID commit_id = 2;
24+
string structure = 3;
25+
}
26+
27+
// CommitID defines the commitment information when a specific store is
28+
// committed.
29+
message CommitID {
30+
option (gogoproto.goproto_stringer) = false;
31+
32+
int64 version = 1;
33+
bytes hash = 2;
34+
}

scripts/init-simapp-v2.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ $SIMD_BIN config set client keyring-backend test
1111
$SIMD_BIN config set client keyring-default-keyname alice
1212
$SIMD_BIN config set app rest.enable true
1313
$SIMD_BIN config set app telemetry.prometheus-retention-time 600
14-
$SIMD_BIN config set app store.options.sc-type iavl-v2
1514
sed -i '' 's/timeout_commit = "5s"/timeout_commit = "1s"/' "$SIMD_HOME"/config/config.toml
1615
sed -i '' 's/prometheus = false/prometheus = true/' "$SIMD_HOME"/config/config.toml
1716

1817
$SIMD_BIN keys add alice --indiscreet
1918
$SIMD_BIN keys add bob --indiscreet
2019
aliases=""
2120
for i in $(seq 10); do
22-
alias=$(dd if=/dev/urandom bs=16 count=24 2> /dev/null | base32 | head -c 32)
21+
alias=$(dd if=/dev/urandom bs=16 count=24 2> /dev/null | base64 | head -c 32)
2322
$SIMD_BIN keys add "$alias" --indiscreet
2423
aliases="$aliases $alias"
2524
done

server/v2/cometbft/abci_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -913,7 +913,7 @@ func assertStoreLatestVersion(t *testing.T, store types.Store, target uint64) {
913913
require.Equal(t, target, version)
914914
commitInfo, err := store.GetStateCommitment().GetCommitInfo(version)
915915
require.NoError(t, err)
916-
require.Equal(t, target, commitInfo.Version)
916+
require.Equal(t, target, uint64(commitInfo.Version))
917917
}
918918

919919
func TestOptimisticExecution(t *testing.T) {

server/v2/cometbft/internal/mock/mock_store.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func (s *MockStore) GetLatestVersion() (uint64, error) {
3737
return 0, err
3838
}
3939

40-
return lastCommitID.Version, nil
40+
return uint64(lastCommitID.Version), nil
4141
}
4242

4343
func (s *MockStore) StateLatest() (uint64, corestore.ReaderMap, error) {
@@ -99,7 +99,7 @@ func (s *MockStore) LastCommitID() (proof.CommitID, error) {
9999
v, err := s.GetStateCommitment().GetLatestVersion()
100100
bz := sha256.Sum256([]byte{})
101101
return proof.CommitID{
102-
Version: v,
102+
Version: int64(v),
103103
Hash: bz[:],
104104
}, err
105105
}

server/v2/server.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,15 @@ func (s *Server[T]) Start(ctx context.Context) error {
101101
}()
102102
}
103103

104-
if err := <-resCh; err != nil {
105-
return fmt.Errorf("failed to start servers: %w", err)
104+
for i := 0; i < len(s.components); i++ {
105+
select {
106+
case err := <-resCh:
107+
if err != nil {
108+
return fmt.Errorf("failed to start servers: %w", err)
109+
}
110+
case <-ctx.Done():
111+
return nil
112+
}
106113
}
107114

108115
<-ctx.Done()

simapp/v2/app_config.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ import (
3737
_ "cosmossdk.io/x/bank" // import for side-effects
3838
banktypes "cosmossdk.io/x/bank/types"
3939
_ "cosmossdk.io/x/bank/v2" // import for side-effects
40-
bankv2types "cosmossdk.io/x/bank/v2/types"
41-
bankmodulev2 "cosmossdk.io/x/bank/v2/types/module"
4240
_ "cosmossdk.io/x/circuit" // import for side-effects
4341
circuittypes "cosmossdk.io/x/circuit/types"
4442
_ "cosmossdk.io/x/consensus" // import for side-effects
@@ -156,7 +154,7 @@ var (
156154
accounts.ModuleName,
157155
authtypes.ModuleName,
158156
banktypes.ModuleName,
159-
bankv2types.ModuleName,
157+
// bankv2types.ModuleName,
160158
distrtypes.ModuleName,
161159
stakingtypes.ModuleName,
162160
slashingtypes.ModuleName,
@@ -297,10 +295,10 @@ var (
297295
Name: epochstypes.ModuleName,
298296
Config: appconfig.WrapAny(&epochsmodulev1.Module{}),
299297
},
300-
{
301-
Name: bankv2types.ModuleName,
302-
Config: appconfig.WrapAny(&bankmodulev2.Module{}),
303-
},
298+
// {
299+
// Name: bankv2types.ModuleName,
300+
// Config: appconfig.WrapAny(&bankmodulev2.Module{}),
301+
// },
304302
},
305303
}
306304
)

simapp/v2/simdv2/cmd/testnet.go

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
"cosmossdk.io/server/v2/cometbft"
2727
"cosmossdk.io/server/v2/store"
2828
banktypes "cosmossdk.io/x/bank/types"
29-
bankv2types "cosmossdk.io/x/bank/v2/types"
3029
stakingtypes "cosmossdk.io/x/staking/types"
3130

3231
"github.com/cosmos/cosmos-sdk/client"
@@ -423,13 +422,6 @@ func initGenFiles[T transaction.Tx](
423422
}
424423
appGenState[banktypes.ModuleName] = clientCtx.Codec.MustMarshalJSON(&bankGenState)
425424

426-
var bankV2GenState bankv2types.GenesisState
427-
clientCtx.Codec.MustUnmarshalJSON(appGenState[bankv2types.ModuleName], &bankV2GenState)
428-
if len(bankV2GenState.Balances) == 0 {
429-
bankV2GenState = getBankV2GenesisFromV1(bankGenState)
430-
}
431-
appGenState[bankv2types.ModuleName] = clientCtx.Codec.MustMarshalJSON(&bankV2GenState)
432-
433425
appGenStateJSON, err := json.MarshalIndent(appGenState, "", " ")
434426
if err != nil {
435427
return err
@@ -532,16 +524,3 @@ func writeFile(name, dir string, contents []byte) error {
532524

533525
return os.WriteFile(file, contents, 0o600)
534526
}
535-
536-
// getBankV2GenesisFromV1 clones bank/v1 state to bank/v2
537-
// since we not migrate yet
538-
// TODO: Remove
539-
func getBankV2GenesisFromV1(v1GenesisState banktypes.GenesisState) bankv2types.GenesisState {
540-
var v2GenesisState bankv2types.GenesisState
541-
for _, balance := range v1GenesisState.Balances {
542-
v2Balance := bankv2types.Balance(balance)
543-
v2GenesisState.Balances = append(v2GenesisState.Balances, v2Balance)
544-
v2GenesisState.Supply = v2GenesisState.Supply.Add(balance.Coins...)
545-
}
546-
return v2GenesisState
547-
}

store/v2/commitment/iavl/exporter.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,16 @@ func (e *Exporter) Close() error {
3838

3939
return nil
4040
}
41+
42+
// EmptyExporter is a Exporter for an empty tree.
43+
type EmptyExporter struct{}
44+
45+
// Next returns ExportDone.
46+
func (e *EmptyExporter) Next() (*snapshotstypes.SnapshotIAVLItem, error) {
47+
return nil, commitment.ErrorExportDone
48+
}
49+
50+
// Close does nothing.
51+
func (e *EmptyExporter) Close() error {
52+
return nil
53+
}

0 commit comments

Comments
 (0)