@agoric/cosmos 0.35.0-u18.4 → 0.35.0-u18a.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/ante/inbound_test.go +2 -2
  3. package/app/app.go +26 -9
  4. package/app/upgrade.go +47 -134
  5. package/daemon/cmd/root.go +48 -15
  6. package/git-revision.txt +1 -1
  7. package/go.mod +82 -71
  8. package/go.sum +200 -167
  9. package/package.json +2 -2
  10. package/proto/agoric/swingset/swingset.proto +25 -0
  11. package/proto/agoric/vbank/vbank.proto +7 -0
  12. package/types/address_hooks.go +242 -0
  13. package/types/address_hooks_test.go +221 -0
  14. package/x/swingset/genesis.go +99 -21
  15. package/x/swingset/keeper/keeper.go +16 -7
  16. package/x/swingset/module.go +17 -2
  17. package/x/swingset/testing/queue.go +8 -0
  18. package/x/swingset/types/default-params.go +31 -5
  19. package/x/swingset/types/expected_keepers.go +2 -2
  20. package/x/swingset/types/msgs.go +34 -12
  21. package/x/swingset/types/params.go +53 -43
  22. package/x/swingset/types/params_test.go +75 -9
  23. package/x/swingset/types/swingset.pb.go +386 -56
  24. package/x/vbank/README.md +6 -1
  25. package/x/vbank/keeper/keeper.go +4 -9
  26. package/x/vbank/keeper/migrations.go +30 -0
  27. package/x/vbank/module.go +8 -2
  28. package/x/vbank/types/params.go +43 -2
  29. package/x/vbank/types/vbank.pb.go +105 -36
  30. package/x/vbank/vbank_test.go +12 -7
  31. package/x/vibc/keeper/keeper.go +2 -5
  32. package/x/vibc/keeper/triggers.go +3 -6
  33. package/x/vibc/types/receiver.go +11 -5
  34. package/x/vstorage/testing/queue.go +10 -3
  35. package/x/vtransfer/ibc_middleware.go +5 -1
  36. package/x/vtransfer/ibc_middleware_test.go +511 -145
  37. package/x/vtransfer/keeper/keeper.go +215 -50
  38. package/x/vtransfer/types/genesis.pb.go +1 -0
  39. package/x/vtransfer/utils_test.go +111 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,46 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.35.0-u18a.0](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmos@0.35.0-u18.5...@agoric/cosmos@0.35.0-u18a.0) (2025-02-07)
7
+
8
+
9
+ ### Features
10
+
11
+ * **cosmos:** Next upgrade is agoric-upgrade-18a ([b87159a](https://github.com/Agoric/agoric-sdk/commit/b87159ad77c3c13ae0c2123cb1373d59463f68ef))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **vtransfer:** some tweaks for ack handling ([a6d295a](https://github.com/Agoric/agoric-sdk/commit/a6d295a730126580262f96c383a4c69412a2e54e))
17
+
18
+
19
+
20
+ ## [0.35.0-u18.5](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmos@0.35.0-u18.4...@agoric/cosmos@0.35.0-u18.5) (2024-12-24)
21
+
22
+
23
+ ### Features
24
+
25
+ * **cosmos:** Support arbitrary core eval builder arguments ([#10767](https://github.com/Agoric/agoric-sdk/issues/10767)) ([a944f4c](https://github.com/Agoric/agoric-sdk/commit/a944f4cdf36012e8c07fe0804de5e9f3532db3ce)), closes [#10752](https://github.com/Agoric/agoric-sdk/issues/10752) [#10752](https://github.com/Agoric/agoric-sdk/issues/10752)
26
+ * **cosmos:** use `x/vbank` ConsensusVersion to upgrade monitoring ([0e367d3](https://github.com/Agoric/agoric-sdk/commit/0e367d3e9870622acc8a38afe57c2b6cbe629341))
27
+ * migrate upgrade of v7-board from upgrade 19 to upgrade 18 ([#10761](https://github.com/Agoric/agoric-sdk/issues/10761)) ([837776e](https://github.com/Agoric/agoric-sdk/commit/837776e6eb693603bce4ed3f9af5c659c9a19d2d)), closes [#10760](https://github.com/Agoric/agoric-sdk/issues/10760)
28
+ * upgrade v7-board and test it ([#10516](https://github.com/Agoric/agoric-sdk/issues/10516)) ([d8a109e](https://github.com/Agoric/agoric-sdk/commit/d8a109edcc78c977ef856131b52dd449e6a9d724)), closes [#10394](https://github.com/Agoric/agoric-sdk/issues/10394)
29
+ * **vbank:** new param `allowed_monitoring_accounts` ([5ac4c52](https://github.com/Agoric/agoric-sdk/commit/5ac4c527b5a3e85bb14ba91a32bcbb6beb0097c9))
30
+ * **vtransfer:** extract base address from parameterized address ([3d44b53](https://github.com/Agoric/agoric-sdk/commit/3d44b5363324baa803a2d9523ce11ded7cce1ed1))
31
+ * **vtransfer:** port some `address-hooks.js` functions to Go ([159098b](https://github.com/Agoric/agoric-sdk/commit/159098bbfaddf4448da4778aa29fbc072aed80a9))
32
+ * **x/swingset:** Add parameters for controlling vat cleanup budget ([02c8138](https://github.com/Agoric/agoric-sdk/commit/02c8138bb2090bc995bfe517bc52952014458984)), closes [#8928](https://github.com/Agoric/agoric-sdk/issues/8928)
33
+ * **x/swingset:** Define default vat cleanup budget as { default: 5, kv: 50 } ([d86ee6d](https://github.com/Agoric/agoric-sdk/commit/d86ee6d5cf0882a53ac3a6e3b802e4002c4c1d12))
34
+ * **x/swingset:** Read beansPerUnit in each message handler and pass down to helpers ([55b9b49](https://github.com/Agoric/agoric-sdk/commit/55b9b49d5f77be9db33ae132a8f7b7017a90d0a9))
35
+ * **x/swingset:** Require a non-empty vat cleanup budget to include `default` ([28c4d8b](https://github.com/Agoric/agoric-sdk/commit/28c4d8bf9897f1ff744e64ea0e681ee41064aafd))
36
+
37
+
38
+ ### Bug Fixes
39
+
40
+ * **agd:** upgrade all orchestration vats to new liveslots ([59fa82c](https://github.com/Agoric/agoric-sdk/commit/59fa82c4740e1ddace28e1389e3c7c875bcdf93e))
41
+ * **cosmos:** return an error if version is unsupported ([d17e55b](https://github.com/Agoric/agoric-sdk/commit/d17e55b5d5c0a178e49ed9a0402ed52827074426))
42
+ * **x/swingset:** Let migration see incomplete Params structs ([315cdd5](https://github.com/Agoric/agoric-sdk/commit/315cdd56e0955ba26d624ca3a4997888abc1d635))
43
+
44
+
45
+
6
46
  ## [0.35.0-u18.4](https://github.com/Agoric/agoric-sdk/compare/@agoric/cosmos@0.35.0-u18.3...@agoric/cosmos@0.35.0-u18.4) (2024-12-17)
7
47
 
8
48
  **Note:** Version bump only for package @agoric/cosmos
@@ -215,7 +215,7 @@ func (msk mockSwingsetKeeper) GetBeansPerUnit(ctx sdk.Context) map[string]sdkmat
215
215
  return nil
216
216
  }
217
217
 
218
- func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, addr sdk.AccAddress, beans sdkmath.Uint) error {
218
+ func (msk mockSwingsetKeeper) ChargeBeans(ctx sdk.Context, beansPerUnit map[string]sdkmath.Uint, addr sdk.AccAddress, beans sdkmath.Uint) error {
219
219
  return fmt.Errorf("not implemented")
220
220
  }
221
221
 
@@ -223,6 +223,6 @@ func (msk mockSwingsetKeeper) GetSmartWalletState(ctx sdk.Context, addr sdk.AccA
223
223
  panic(fmt.Errorf("not implemented"))
224
224
  }
225
225
 
226
- func (msk mockSwingsetKeeper) ChargeForSmartWallet(ctx sdk.Context, addr sdk.AccAddress) error {
226
+ func (msk mockSwingsetKeeper) ChargeForSmartWallet(ctx sdk.Context, beansPerUnit map[string]sdkmath.Uint, addr sdk.AccAddress) error {
227
227
  return fmt.Errorf("not implemented")
228
228
  }
package/app/app.go CHANGED
@@ -137,13 +137,22 @@ import (
137
137
 
138
138
  const appName = "agoric"
139
139
 
140
- // FlagSwingStoreExportDir defines the config flag used to specify where a
141
- // genesis swing-store export is expected. For start from genesis, the default
142
- // value is config/swing-store in the home directory. For genesis export, the
143
- // value is always a "swing-store" directory sibling to the exported
144
- // genesis.json file.
145
- // TODO: document this flag in config, likely alongside the genesis path
146
- const FlagSwingStoreExportDir = "swing-store-export-dir"
140
+ const (
141
+ // FlagSwingStoreExportDir defines the config flag used to specify where a
142
+ // genesis swing-store export is expected. For start from genesis, the default
143
+ // value is config/swing-store in the home directory. For genesis export, the
144
+ // value is always a "swing-store" directory sibling to the exported
145
+ // genesis.json file.
146
+ // TODO: document this flag in config, likely alongside the genesis path
147
+ FlagSwingStoreExportDir = "swing-store-export-dir"
148
+ // FlagSwingStoreExportMode defines the export mode for the swing store
149
+ // Alongside the default mode `operational`, there are two other modes
150
+ //
151
+ // 1- `skip` mode will skip the swing store export altogether
152
+ //
153
+ // 2- `debug` mode will export all the available store
154
+ FlagSwingStoreExportMode = "swing-store-export-mode"
155
+ )
147
156
 
148
157
  var (
149
158
  // DefaultNodeHome default home directories for the application daemon
@@ -673,6 +682,7 @@ func NewAgoricApp(
673
682
  app.EvidenceKeeper = *evidenceKeeper
674
683
 
675
684
  swingStoreExportDir := cast.ToString(appOpts.Get(FlagSwingStoreExportDir))
685
+ swingStoreExportMode := cast.ToString(appOpts.Get(FlagSwingStoreExportMode))
676
686
 
677
687
  // NOTE: Any module instantiated in the module manager that is later modified
678
688
  // must be passed by reference here.
@@ -702,7 +712,14 @@ func NewAgoricApp(
702
712
  icaModule,
703
713
  packetforward.NewAppModule(app.PacketForwardKeeper),
704
714
  vstorage.NewAppModule(app.VstorageKeeper),
705
- swingset.NewAppModule(app.SwingSetKeeper, &app.SwingStoreExportsHandler, setBootstrapNeeded, app.ensureControllerInited, swingStoreExportDir),
715
+ swingset.NewAppModule(
716
+ app.SwingSetKeeper,
717
+ &app.SwingStoreExportsHandler,
718
+ setBootstrapNeeded,
719
+ app.ensureControllerInited,
720
+ swingStoreExportDir,
721
+ swingStoreExportMode,
722
+ ),
706
723
  vibcModule,
707
724
  vbankModule,
708
725
  vtransferModule,
@@ -877,7 +894,7 @@ func NewAgoricApp(
877
894
  for _, name := range upgradeNamesOfThisVersion {
878
895
  app.UpgradeKeeper.SetUpgradeHandler(
879
896
  name,
880
- upgrade18Handler(app, name),
897
+ upgrade18aHandler(app, name),
881
898
  )
882
899
  }
883
900
 
package/app/upgrade.go CHANGED
@@ -1,10 +1,7 @@
1
1
  package gaia
2
2
 
3
3
  import (
4
- "encoding/json"
5
4
  "fmt"
6
- "strings"
7
- "text/template"
8
5
 
9
6
  "github.com/Agoric/agoric-sdk/golang/cosmos/vm"
10
7
  swingsetkeeper "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/keeper"
@@ -14,13 +11,7 @@ import (
14
11
  )
15
12
 
16
13
  var upgradeNamesOfThisVersion = []string{
17
- "agoric-upgrade-18-mainnet",
18
- "agoric-upgrade-18-devnet",
19
- "agoric-upgrade-18-emerynet",
20
- "agoric-upgrade-18-basic",
21
- "agoric-upgrade-18-basic-2",
22
- "agoric-upgrade-18-emerynet-rc3",
23
- "agoric-upgrade-18-a3p",
14
+ "agoric-upgrade-18a",
24
15
  }
25
16
 
26
17
  // isUpgradeNameOfThisVersion returns whether the provided plan name is a
@@ -54,15 +45,8 @@ func isPrimaryUpgradeName(name string) bool {
54
45
  return false
55
46
  }
56
47
  switch name {
57
- case validUpgradeName("agoric-upgrade-18-mainnet"),
58
- validUpgradeName("agoric-upgrade-18-devnet"),
59
- validUpgradeName("agoric-upgrade-18-emerynet"),
60
- validUpgradeName("agoric-upgrade-18-basic"),
61
- validUpgradeName("agoric-upgrade-18-a3p"):
48
+ case validUpgradeName("agoric-upgrade-18a"):
62
49
  return true
63
- case validUpgradeName("agoric-upgrade-18-basic-2"),
64
- validUpgradeName("agoric-upgrade-18-emerynet-rc3"):
65
- return false
66
50
  default:
67
51
  panic(fmt.Errorf("unexpected upgrade name %s", validUpgradeName(name)))
68
52
  }
@@ -79,87 +63,24 @@ func isFirstTimeUpgradeOfThisVersion(app *GaiaApp, ctx sdk.Context) bool {
79
63
  return true
80
64
  }
81
65
 
82
- func buildProposalStepWithArgs(moduleName string, entrypoint string, opts map[string]any) (vm.CoreProposalStep, error) {
83
- t := template.Must(template.New("").Parse(`{
84
- "module": "{{.moduleName}}",
85
- "entrypoint": "{{.entrypoint}}",
86
- "args": [ {{.optsArg}} ]
87
- }`))
88
-
89
- optsArg, err := json.Marshal(opts)
90
- if err != nil {
91
- return nil, err
92
- }
93
-
94
- var result strings.Builder
95
- err = t.Execute(&result, map[string]any{
96
- "moduleName": moduleName,
97
- "entrypoint": entrypoint,
98
- "optsArg": string(optsArg),
99
- })
100
- if err != nil {
101
- return nil, err
102
- }
103
- jsonStr := result.String()
104
- jsonBz := []byte(jsonStr)
105
- if !json.Valid(jsonBz) {
106
- return nil, fmt.Errorf("invalid JSON: %s", jsonStr)
107
- }
108
- proposal := vm.ArbitraryCoreProposal{Json: jsonBz}
109
- return vm.CoreProposalStepForModules(proposal), nil
110
- }
111
-
112
- func getVariantFromUpgradeName(upgradeName string) string {
113
- switch upgradeName {
114
- case "agoric-upgrade-18-mainnet":
115
- return "MAINNET"
116
- case "agoric-upgrade-18-devnet":
117
- return "DEVNET"
118
- case "agoric-upgrade-18-emerynet":
119
- return "EMERYNET"
120
- case "agoric-upgrade-18-basic":
121
- return ""
122
- case "agoric-upgrade-18-a3p":
123
- return "A3P_INTEGRATION"
124
- default:
125
- return ""
126
- }
127
- }
128
-
129
- func replaceElectorateCoreProposalStep(upgradeName string) (vm.CoreProposalStep, error) {
130
- variant := getVariantFromUpgradeName(upgradeName)
131
-
132
- if variant == "" {
133
- return nil, nil
134
- }
135
-
136
- return buildProposalStepWithArgs(
137
- "@agoric/builders/scripts/inter-protocol/replace-electorate-core.js",
138
- "defaultProposalBuilder",
139
- map[string]any{
140
- "variant": variant,
141
- },
142
- )
143
- }
66
+ // func upgradeMintHolderCoreProposal(upgradeName string) (vm.CoreProposalStep, error) {
67
+ // variant := getVariantFromUpgradeName(upgradeName)
144
68
 
145
- func replacePriceFeedsCoreProposal(upgradeName string) (vm.CoreProposalStep, error) {
146
- variant := getVariantFromUpgradeName(upgradeName)
69
+ // if variant == "" {
70
+ // return nil, nil
71
+ // }
147
72
 
148
- if variant == "" {
149
- return nil, nil
150
- }
73
+ // return buildProposalStepWithArgs(
74
+ // "@agoric/builders/scripts/vats/upgrade-mintHolder.js",
75
+ // "defaultProposalBuilder",
76
+ // map[string]any{
77
+ // "variant": variant,
78
+ // },
79
+ // )
80
+ // }
151
81
 
152
- return buildProposalStepWithArgs(
153
- "@agoric/builders/scripts/inter-protocol/updatePriceFeeds.js",
154
- "defaultProposalBuilder",
155
- map[string]any{
156
- "variant": variant,
157
- },
158
- )
159
- }
160
-
161
- // upgrade18Handler performs standard upgrade actions plus custom actions for upgrade-18.
162
- func upgrade18Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgradetypes.Plan, module.VersionMap) (module.VersionMap, error) {
82
+ // upgrade18aHandler performs standard upgrade actions plus custom actions for upgrade-18a.
83
+ func upgrade18aHandler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgradetypes.Plan, module.VersionMap) (module.VersionMap, error) {
163
84
  return func(ctx sdk.Context, plan upgradetypes.Plan, fromVm module.VersionMap) (module.VersionMap, error) {
164
85
  app.CheckControllerInited(false)
165
86
 
@@ -175,45 +96,37 @@ func upgrade18Handler(app *GaiaApp, targetUpgrade string) func(sdk.Context, upgr
175
96
  return module.VersionMap{}, fmt.Errorf("cannot run %s as first upgrade", plan.Name)
176
97
  }
177
98
 
178
- replaceElectorateStep, err := replaceElectorateCoreProposalStep(targetUpgrade)
179
- if err != nil {
180
- return nil, err
181
- } else if replaceElectorateStep != nil {
182
- CoreProposalSteps = append(CoreProposalSteps, replaceElectorateStep)
183
- }
184
-
185
- priceFeedUpdate, err := replacePriceFeedsCoreProposal(targetUpgrade)
186
- if err != nil {
187
- return nil, err
188
- } else if priceFeedUpdate != nil {
189
- CoreProposalSteps = append(CoreProposalSteps,
190
- priceFeedUpdate,
191
- // The following have a dependency onto the price feed proposal
192
- vm.CoreProposalStepForModules(
193
- "@agoric/builders/scripts/vats/add-auction.js",
194
- ),
195
- vm.CoreProposalStepForModules(
196
- "@agoric/builders/scripts/vats/upgradeVaults.js",
197
- ),
198
- )
199
- }
99
+ // CoreProposals for Upgrade 19. These should not be introduced
100
+ // before upgrade 18 is done because they would be run in n:upgrade-next
101
+ //
102
+ // upgradeMintHolderStep, err := upgradeMintHolderCoreProposal(targetUpgrade)
103
+ // if err != nil {
104
+ // return nil, err
105
+ // } else if upgradeMintHolderStep != nil {
106
+ // CoreProposalSteps = append(CoreProposalSteps, upgradeMintHolderStep)
107
+ // }
108
+ //
109
+ // CoreProposalSteps = append(CoreProposalSteps,
110
+ // vm.CoreProposalStepForModules(
111
+ // "@agoric/builders/scripts/inter-protocol/replace-feeDistributor.js",
112
+ // ),
113
+ // vm.CoreProposalStepForModules(
114
+ // "@agoric/builders/scripts/vats/upgrade-paRegistry.js",
115
+ // ),
116
+ // vm.CoreProposalStepForModules(
117
+ // "@agoric/builders/scripts/vats/upgrade-provisionPool.js",
118
+ // ),
119
+ // vm.CoreProposalStepForModules(
120
+ // "@agoric/builders/scripts/vats/upgrade-bank.js",
121
+ // ),
122
+ // vm.CoreProposalStepForModules(
123
+ // "@agoric/builders/scripts/vats/upgrade-agoricNames.js",
124
+ // ),
125
+ // vm.CoreProposalStepForModules(
126
+ // "@agoric/builders/scripts/vats/upgrade-asset-reserve.js",
127
+ // ),
128
+ // )
200
129
 
201
- // Each CoreProposalStep runs sequentially, and can be constructed from
202
- // one or more modules executing in parallel within the step.
203
- CoreProposalSteps = append(CoreProposalSteps,
204
- vm.CoreProposalStepForModules(
205
- // Upgrade Zoe (no new ZCF needed).
206
- "@agoric/builders/scripts/vats/upgrade-zoe.js",
207
- ),
208
- // Revive KREAd characters
209
- vm.CoreProposalStepForModules(
210
- "@agoric/builders/scripts/vats/revive-kread.js",
211
- ),
212
- vm.CoreProposalStepForModules(
213
- // Upgrade to include a cleanup from https://github.com/Agoric/agoric-sdk/pull/10319
214
- "@agoric/builders/scripts/smart-wallet/build-wallet-factory2-upgrade.js",
215
- ),
216
- )
217
130
  }
218
131
 
219
132
  app.upgradeDetails = &upgradeDetails{
@@ -386,6 +386,12 @@ const (
386
386
  ExportedSwingStoreDirectoryName = "swing-store"
387
387
  )
388
388
 
389
+ var allowedSwingSetExportModes = map[string]bool{
390
+ swingset.SwingStoreExportModeDebug: true,
391
+ swingset.SwingStoreExportModeOperational: true,
392
+ swingset.SwingStoreExportModeSkip: true,
393
+ }
394
+
389
395
  // extendCosmosExportCommand monkey-patches the "export" command added by
390
396
  // cosmos-sdk to add a required "export-dir" command-line flag, and create the
391
397
  // genesis export in the specified directory if the VM is running.
@@ -396,31 +402,52 @@ func extendCosmosExportCommand(cmd *cobra.Command) {
396
402
  panic(err)
397
403
  }
398
404
 
405
+ var keys []string
406
+ for key := range allowedSwingSetExportModes {
407
+ keys = append(keys, key)
408
+ }
409
+
410
+ cmd.Flags().String(
411
+ gaia.FlagSwingStoreExportMode,
412
+ swingset.SwingStoreExportModeOperational,
413
+ fmt.Sprintf(
414
+ "The mode for swingstore export (%s)",
415
+ strings.Join(keys, " | "),
416
+ ),
417
+ )
418
+
399
419
  originalRunE := cmd.RunE
400
420
 
401
421
  extendedRunE := func(cmd *cobra.Command, args []string) error {
402
422
  serverCtx := server.GetServerContextFromCmd(cmd)
403
423
 
404
424
  exportDir, _ := cmd.Flags().GetString(FlagExportDir)
425
+ swingStoreExportMode, _ := cmd.Flags().GetString(gaia.FlagSwingStoreExportMode)
426
+
405
427
  err := os.MkdirAll(exportDir, os.ModePerm)
406
428
  if err != nil {
407
429
  return err
408
430
  }
409
431
 
410
432
  genesisPath := filepath.Join(exportDir, ExportedGenesisFileName)
411
- swingStoreExportPath := filepath.Join(exportDir, ExportedSwingStoreDirectoryName)
412
433
 
413
- err = os.MkdirAll(swingStoreExportPath, os.ModePerm)
414
- if err != nil {
415
- return err
434
+ // Since none mode doesn't perform any swing store export
435
+ // There is no point in creating the export directory
436
+ if swingStoreExportMode != swingset.SwingStoreExportModeSkip {
437
+ swingStoreExportPath := filepath.Join(exportDir, ExportedSwingStoreDirectoryName)
438
+
439
+ err = os.MkdirAll(swingStoreExportPath, os.ModePerm)
440
+ if err != nil {
441
+ return err
442
+ }
443
+ // We unconditionally set FlagSwingStoreExportDir as for export, it makes
444
+ // little sense for users to control this location separately, and we don't
445
+ // want to override any swing-store artifacts that may be associated to the
446
+ // current genesis.
447
+ serverCtx.Viper.Set(gaia.FlagSwingStoreExportDir, swingStoreExportPath)
416
448
  }
417
- // We unconditionally set FlagSwingStoreExportDir as for export, it makes
418
- // little sense for users to control this location separately, and we don't
419
- // want to override any swing-store artifacts that may be associated to the
420
- // current genesis.
421
- serverCtx.Viper.Set(gaia.FlagSwingStoreExportDir, swingStoreExportPath)
422
449
 
423
- if hasVMController(serverCtx) {
450
+ if hasVMController(serverCtx) || swingStoreExportMode == swingset.SwingStoreExportModeSkip {
424
451
  // Capture the export in the genesisPath.
425
452
  // This will fail if a genesis.json already exists in the export-dir
426
453
  genesisFile, err := os.OpenFile(
@@ -453,7 +480,16 @@ func (ac appCreator) appExport(
453
480
  jailAllowedAddrs []string,
454
481
  appOpts servertypes.AppOptions,
455
482
  ) (servertypes.ExportedApp, error) {
456
- if OnExportHook != nil {
483
+ swingStoreExportMode, ok := appOpts.Get(gaia.FlagSwingStoreExportMode).(string)
484
+ if !(ok && allowedSwingSetExportModes[swingStoreExportMode]) {
485
+ return servertypes.ExportedApp{}, fmt.Errorf(
486
+ "export mode '%s' is not supported",
487
+ swingStoreExportMode,
488
+ )
489
+ }
490
+
491
+ // We don't have to launch VM in case the swing store export is not required
492
+ if swingStoreExportMode != swingset.SwingStoreExportModeSkip && OnExportHook != nil {
457
493
  if err := OnExportHook(ac.agdServer, logger, appOpts); err != nil {
458
494
  return servertypes.ExportedApp{}, err
459
495
  }
@@ -464,10 +500,7 @@ func (ac appCreator) appExport(
464
500
  return servertypes.ExportedApp{}, errors.New("application home is not set")
465
501
  }
466
502
 
467
- var loadLatest bool
468
- if height == -1 {
469
- loadLatest = true
470
- }
503
+ loadLatest := height == -1
471
504
 
472
505
  gaiaApp := gaia.NewAgoricApp(
473
506
  ac.sender, ac.agdServer,
package/git-revision.txt CHANGED
@@ -1 +1 @@
1
- ff46c4aac
1
+ 4e4d2b4ded