@agoric/cosmos 0.35.0-u20.0 → 0.35.0-u21.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 (113) hide show
  1. package/.clang-format +116 -0
  2. package/CHANGELOG.md +14 -2
  3. package/Makefile +38 -67
  4. package/ante/ante.go +2 -2
  5. package/ante/inbound_test.go +1 -1
  6. package/app/app.go +173 -142
  7. package/app/export.go +6 -6
  8. package/app/genesis.go +4 -0
  9. package/app/sim_test.go +299 -50
  10. package/app/upgrade.go +125 -24
  11. package/app/upgrade_test.go +1 -1
  12. package/cmd/agd/agvm.go +1 -1
  13. package/cmd/agd/main.go +1 -1
  14. package/cmd/libdaemon/main.go +34 -1
  15. package/daemon/cmd/root.go +26 -35
  16. package/daemon/cmd/root_test.go +5 -4
  17. package/daemon/cmd/testnet.go +221 -95
  18. package/daemon/main.go +1 -0
  19. package/git-revision.txt +1 -1
  20. package/go.mod +93 -58
  21. package/go.sum +148 -95
  22. package/package.json +6 -3
  23. package/proto/agoric/swingset/genesis.proto +7 -11
  24. package/proto/agoric/swingset/msgs.proto +56 -75
  25. package/proto/agoric/swingset/query.proto +7 -10
  26. package/proto/agoric/swingset/swingset.proto +79 -108
  27. package/proto/agoric/vbank/genesis.proto +5 -5
  28. package/proto/agoric/vbank/msgs.proto +1 -2
  29. package/proto/agoric/vbank/vbank.proto +42 -52
  30. package/proto/agoric/vibc/msgs.proto +8 -11
  31. package/proto/agoric/vstorage/genesis.proto +6 -9
  32. package/proto/agoric/vstorage/query.proto +19 -48
  33. package/proto/agoric/vstorage/vstorage.proto +4 -10
  34. package/proto/agoric/vtransfer/genesis.proto +7 -7
  35. package/proto/buf.gen.gogo.yaml +8 -0
  36. package/proto/buf.gen.pulsar.yaml +17 -0
  37. package/proto/buf.gen.swagger.yaml +5 -0
  38. package/proto/buf.yaml +10 -0
  39. package/scripts/protocgen.sh +14 -21
  40. package/third_party/proto/amino/amino.proto +79 -0
  41. package/third_party/proto/cosmos/base/v1beta1/coin.proto +7 -2
  42. package/third_party/proto/cosmos/ics23/v1/proofs.proto +243 -0
  43. package/third_party/proto/cosmos/msg/v1/msg.proto +30 -0
  44. package/third_party/proto/cosmos/upgrade/v1beta1/upgrade.proto +17 -5
  45. package/third_party/proto/cosmos_proto/cosmos.proto +16 -1
  46. package/third_party/proto/gogoproto/gogo.proto +2 -2
  47. package/third_party/proto/google/protobuf/any.proto +6 -3
  48. package/third_party/proto/ibc/core/channel/v1/channel.proto +1 -1
  49. package/third_party/proto/ibc/core/client/v1/client.proto +4 -2
  50. package/types/address_hooks.go +2 -2
  51. package/types/address_hooks_test.go +3 -3
  52. package/types/ibc_packet.go +3 -3
  53. package/types/ibc_packet_test.go +3 -3
  54. package/vm/client.go +32 -7
  55. package/vm/proto_json.go +2 -2
  56. package/x/swingset/abci.go +1 -1
  57. package/x/swingset/alias.go +0 -1
  58. package/x/swingset/config.go +1 -1
  59. package/x/swingset/keeper/extension_snapshotter.go +1 -1
  60. package/x/swingset/keeper/extension_snapshotter_test.go +1 -1
  61. package/x/swingset/keeper/keeper.go +1 -1
  62. package/x/swingset/keeper/keeper_test.go +1 -1
  63. package/x/swingset/keeper/querier.go +1 -30
  64. package/x/swingset/keeper/swing_store_exports_handler.go +1 -1
  65. package/x/swingset/keeper/swing_store_exports_handler_test.go +1 -1
  66. package/x/swingset/module.go +1 -14
  67. package/x/swingset/types/default-params.go +24 -16
  68. package/x/swingset/types/genesis.pb.go +2 -2
  69. package/x/swingset/types/msgs.pb.go +4 -3
  70. package/x/swingset/types/msgs_test.go +1 -1
  71. package/x/swingset/types/query.pb.go +4 -3
  72. package/x/swingset/types/swingset.pb.go +2 -2
  73. package/x/vbank/genesis.go +1 -1
  74. package/x/vbank/keeper/querier.go +1 -21
  75. package/x/vbank/module.go +1 -16
  76. package/x/vbank/types/genesis.pb.go +2 -2
  77. package/x/vbank/types/msgs.pb.go +3 -2
  78. package/x/vbank/types/query.pb.go +4 -3
  79. package/x/vbank/types/vbank.pb.go +2 -2
  80. package/x/vbank/vbank_test.go +95 -16
  81. package/x/vibc/keeper/keeper.go +8 -5
  82. package/x/vibc/keeper/migrations.go +36 -0
  83. package/x/vibc/keeper/triggers.go +1 -1
  84. package/x/vibc/module.go +9 -17
  85. package/x/vibc/types/expected_keepers.go +5 -10
  86. package/x/vibc/types/ibc_module.go +4 -4
  87. package/x/vibc/types/msgs.go +1 -1
  88. package/x/vibc/types/msgs.pb.go +5 -4
  89. package/x/vibc/types/receiver.go +2 -2
  90. package/x/vlocalchain/keeper/keeper.go +3 -3
  91. package/x/vlocalchain/types/vlocalchain.pb.go +1 -1
  92. package/x/vlocalchain/vlocalchain_test.go +6 -6
  93. package/x/vstorage/alias.go +0 -1
  94. package/x/vstorage/client/cli/query.go +1 -1
  95. package/x/vstorage/genesis.go +1 -1
  96. package/x/vstorage/keeper/keeper.go +6 -5
  97. package/x/vstorage/keeper/keeper_test.go +24 -24
  98. package/x/vstorage/keeper/querier.go +1 -32
  99. package/x/vstorage/keeper/querier_test.go +41 -6
  100. package/x/vstorage/module.go +1 -14
  101. package/x/vstorage/types/genesis.pb.go +2 -2
  102. package/x/vstorage/types/query.pb.go +8 -5
  103. package/x/vstorage/types/vstorage.pb.go +2 -2
  104. package/x/vstorage/vstorage_test.go +3 -3
  105. package/x/vtransfer/genesis.go +1 -1
  106. package/x/vtransfer/ibc_middleware.go +4 -4
  107. package/x/vtransfer/ibc_middleware_test.go +10 -11
  108. package/x/vtransfer/keeper/keeper.go +5 -5
  109. package/x/vtransfer/module.go +1 -14
  110. package/x/vtransfer/types/expected_keepers.go +2 -18
  111. package/x/vtransfer/types/genesis.pb.go +2 -2
  112. package/x/vtransfer/utils_test.go +15 -15
  113. package/daemon/cmd/genaccounts.go +0 -195
@@ -12,30 +12,30 @@ import (
12
12
 
13
13
  app "github.com/Agoric/agoric-sdk/golang/cosmos/app"
14
14
  "github.com/Agoric/agoric-sdk/golang/cosmos/vm"
15
+ dbm "github.com/cometbft/cometbft-db"
16
+ "github.com/cometbft/cometbft/libs/log"
15
17
  "github.com/cosmos/cosmos-sdk/codec"
16
18
  "github.com/cosmos/cosmos-sdk/store"
19
+ "github.com/cosmos/cosmos-sdk/testutil/sims"
17
20
  "github.com/cosmos/cosmos-sdk/testutil/testdata"
18
21
  "github.com/iancoleman/orderedmap"
19
22
  "github.com/stretchr/testify/suite"
20
- "github.com/tendermint/tendermint/libs/log"
21
- dbm "github.com/tendermint/tm-db"
22
23
 
23
24
  "github.com/Agoric/agoric-sdk/golang/cosmos/types"
24
25
  swingsettesting "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/testing"
25
26
  swingsettypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/swingset/types"
26
27
  vibctypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc/types"
27
28
 
29
+ tmproto "github.com/cometbft/cometbft/proto/tendermint/types"
28
30
  "github.com/cosmos/cosmos-sdk/baseapp"
29
31
  sdk "github.com/cosmos/cosmos-sdk/types"
30
32
  authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
31
33
  banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
32
- packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v6/packetforward/types"
33
- ibctransfertypes "github.com/cosmos/ibc-go/v6/modules/apps/transfer/types"
34
- channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
35
- ibcexported "github.com/cosmos/ibc-go/v6/modules/core/exported"
36
- ibctesting "github.com/cosmos/ibc-go/v6/testing"
37
- "github.com/cosmos/ibc-go/v6/testing/simapp"
38
- tmproto "github.com/tendermint/tendermint/proto/tendermint/types"
34
+ packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v7/packetforward/types"
35
+ ibctransfertypes "github.com/cosmos/ibc-go/v7/modules/apps/transfer/types"
36
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
37
+ ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
38
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
39
39
  )
40
40
 
41
41
  const (
@@ -109,7 +109,6 @@ func (s *IntegrationTestSuite) nextChannelOffset(instance int) int {
109
109
  func SetupAgoricTestingApp(instance int) TestingAppMaker {
110
110
  return func() (ibctesting.TestingApp, map[string]json.RawMessage) {
111
111
  db := dbm.NewMemDB()
112
- encCdc := app.MakeEncodingConfig()
113
112
  mockController := func(ctx context.Context, needReply bool, jsonRequest string) (jsonReply string, err error) {
114
113
  // fmt.Printf("controller %d got: %s\n", instance, jsonRequest)
115
114
 
@@ -124,7 +123,7 @@ func SetupAgoricTestingApp(instance int) TestingAppMaker {
124
123
  return jsonReply, nil
125
124
  }
126
125
  appd := app.NewAgoricApp(mockController, vm.NewAgdServer(), log.TestingLogger(), db, nil,
127
- true, map[int64]bool{}, app.DefaultNodeHome, simapp.FlagPeriodValue, encCdc, simapp.EmptyAppOptions{}, interBlockCacheOpt())
126
+ true, sims.EmptyAppOptions{}, interBlockCacheOpt())
128
127
  genesisState := app.NewDefaultGenesisState()
129
128
 
130
129
  t := template.Must(template.New("").Parse(`
@@ -22,11 +22,11 @@ import (
22
22
  "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc"
23
23
  vibctypes "github.com/Agoric/agoric-sdk/golang/cosmos/x/vibc/types"
24
24
 
25
- clienttypes "github.com/cosmos/ibc-go/v6/modules/core/02-client/types"
26
- channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
27
- porttypes "github.com/cosmos/ibc-go/v6/modules/core/05-port/types"
28
- host "github.com/cosmos/ibc-go/v6/modules/core/24-host"
29
- ibcexported "github.com/cosmos/ibc-go/v6/modules/core/exported"
25
+ clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
26
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
27
+ porttypes "github.com/cosmos/ibc-go/v7/modules/core/05-port/types"
28
+ host "github.com/cosmos/ibc-go/v7/modules/core/24-host"
29
+ ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
30
30
  )
31
31
 
32
32
  var _ porttypes.ICS4Wrapper = (*Keeper)(nil)
@@ -12,8 +12,8 @@ import (
12
12
  cdctypes "github.com/cosmos/cosmos-sdk/codec/types"
13
13
  "github.com/cosmos/cosmos-sdk/types/module"
14
14
 
15
+ abci "github.com/cometbft/cometbft/abci/types"
15
16
  sdk "github.com/cosmos/cosmos-sdk/types"
16
- abci "github.com/tendermint/tendermint/abci/types"
17
17
  )
18
18
 
19
19
  // type check to ensure the interface is properly implemented
@@ -86,19 +86,6 @@ func (AppModule) Name() string {
86
86
 
87
87
  func (am AppModule) RegisterInvariants(ir sdk.InvariantRegistry) {}
88
88
 
89
- func (am AppModule) Route() sdk.Route {
90
- return sdk.NewRoute(types.RouterKey, NewHandler(am.keeper))
91
- }
92
-
93
- func (am AppModule) QuerierRoute() string {
94
- return ModuleName
95
- }
96
-
97
- // LegacyQuerierHandler returns the sdk.Querier for module
98
- func (am AppModule) LegacyQuerierHandler(legacyQuerierCdc *codec.LegacyAmino) sdk.Querier {
99
- return nil
100
- }
101
-
102
89
  func (am AppModule) RegisterServices(cfg module.Configurator) {
103
90
  }
104
91
 
@@ -3,9 +3,8 @@ package types
3
3
  import (
4
4
  sdk "github.com/cosmos/cosmos-sdk/types"
5
5
  capability "github.com/cosmos/cosmos-sdk/x/capability/types"
6
- connection "github.com/cosmos/ibc-go/v6/modules/core/03-connection/types"
7
- channel "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
8
- ibcexported "github.com/cosmos/ibc-go/v6/modules/core/exported"
6
+ channel "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
7
+ ibcexported "github.com/cosmos/ibc-go/v7/modules/core/exported"
9
8
  )
10
9
 
11
10
  // ChannelKeeper defines the expected IBC channel keeper
@@ -21,18 +20,3 @@ type ChannelKeeper interface {
21
20
  ChanCloseInit(ctx sdk.Context, portID, channelID string, chanCap *capability.Capability) error
22
21
  TimeoutExecuted(ctx sdk.Context, channelCap *capability.Capability, packet ibcexported.PacketI) error
23
22
  }
24
-
25
- // ClientKeeper defines the expected IBC client keeper
26
- type ClientKeeper interface {
27
- GetClientConsensusState(ctx sdk.Context, clientID string) (connection ibcexported.ConsensusState, found bool)
28
- }
29
-
30
- // ConnectionKeeper defines the expected IBC connection keeper
31
- type ConnectionKeeper interface {
32
- GetConnection(ctx sdk.Context, connectionID string) (connection connection.ConnectionEnd, found bool)
33
- }
34
-
35
- // PortKeeper defines the expected IBC port keeper
36
- type PortKeeper interface {
37
- BindPort(ctx sdk.Context, portID string) *capability.Capability
38
- }
@@ -6,8 +6,8 @@ package types
6
6
  import (
7
7
  fmt "fmt"
8
8
  github_com_cosmos_cosmos_sdk_types "github.com/cosmos/cosmos-sdk/types"
9
- _ "github.com/gogo/protobuf/gogoproto"
10
- proto "github.com/gogo/protobuf/proto"
9
+ _ "github.com/cosmos/gogoproto/gogoproto"
10
+ proto "github.com/cosmos/gogoproto/proto"
11
11
  io "io"
12
12
  math "math"
13
13
  math_bits "math/bits"
@@ -5,10 +5,10 @@ import (
5
5
  "strconv"
6
6
 
7
7
  sdk "github.com/cosmos/cosmos-sdk/types"
8
- clienttypes "github.com/cosmos/ibc-go/v6/modules/core/02-client/types"
9
- channeltypes "github.com/cosmos/ibc-go/v6/modules/core/04-channel/types"
10
- host "github.com/cosmos/ibc-go/v6/modules/core/24-host"
11
- ibctesting "github.com/cosmos/ibc-go/v6/testing"
8
+ clienttypes "github.com/cosmos/ibc-go/v7/modules/core/02-client/types"
9
+ channeltypes "github.com/cosmos/ibc-go/v7/modules/core/04-channel/types"
10
+ host "github.com/cosmos/ibc-go/v7/modules/core/24-host"
11
+ ibctesting "github.com/cosmos/ibc-go/v7/testing"
12
12
  )
13
13
 
14
14
  // acknowledgePacketWithResult sends a MsgAcknowledgement to the channel associated with the endpoint.
@@ -36,8 +36,8 @@ func ParseAckFromFilteredEvents(events sdk.Events, filteredType string) ([]byte,
36
36
  for _, ev := range events {
37
37
  if ev.Type == filteredType {
38
38
  for _, attr := range ev.Attributes {
39
- if string(attr.Key) == channeltypes.AttributeKeyAck { //nolint:staticcheck // DEPRECATED
40
- return attr.Value, nil
39
+ if attr.Key == channeltypes.AttributeKeyAck { //nolint:staticcheck // DEPRECATED
40
+ return []byte(attr.Value), nil
41
41
  }
42
42
  }
43
43
  }
@@ -59,12 +59,12 @@ func ParsePacketFromFilteredEvents(events sdk.Events, filteredType string) (chan
59
59
  if ev.Type == filteredType {
60
60
  packet := channeltypes.Packet{}
61
61
  for _, attr := range ev.Attributes {
62
- switch string(attr.Key) {
62
+ switch attr.Key {
63
63
  case channeltypes.AttributeKeyData: //nolint:staticcheck // DEPRECATED
64
- packet.Data = attr.Value
64
+ packet.Data = []byte(attr.Value)
65
65
 
66
66
  case channeltypes.AttributeKeySequence:
67
- seq, err := strconv.ParseUint(string(attr.Value), 10, 64)
67
+ seq, err := strconv.ParseUint(attr.Value, 10, 64)
68
68
  if err != nil {
69
69
  return channeltypes.Packet{}, err
70
70
  }
@@ -72,19 +72,19 @@ func ParsePacketFromFilteredEvents(events sdk.Events, filteredType string) (chan
72
72
  packet.Sequence = seq
73
73
 
74
74
  case channeltypes.AttributeKeySrcPort:
75
- packet.SourcePort = string(attr.Value)
75
+ packet.SourcePort = attr.Value
76
76
 
77
77
  case channeltypes.AttributeKeySrcChannel:
78
- packet.SourceChannel = string(attr.Value)
78
+ packet.SourceChannel = attr.Value
79
79
 
80
80
  case channeltypes.AttributeKeyDstPort:
81
- packet.DestinationPort = string(attr.Value)
81
+ packet.DestinationPort = attr.Value
82
82
 
83
83
  case channeltypes.AttributeKeyDstChannel:
84
- packet.DestinationChannel = string(attr.Value)
84
+ packet.DestinationChannel = attr.Value
85
85
 
86
86
  case channeltypes.AttributeKeyTimeoutHeight:
87
- height, err := clienttypes.ParseHeight(string(attr.Value))
87
+ height, err := clienttypes.ParseHeight(attr.Value)
88
88
  if err != nil {
89
89
  return channeltypes.Packet{}, err
90
90
  }
@@ -92,7 +92,7 @@ func ParsePacketFromFilteredEvents(events sdk.Events, filteredType string) (chan
92
92
  packet.TimeoutHeight = height
93
93
 
94
94
  case channeltypes.AttributeKeyTimeoutTimestamp:
95
- timestamp, err := strconv.ParseUint(string(attr.Value), 10, 64)
95
+ timestamp, err := strconv.ParseUint(attr.Value, 10, 64)
96
96
  if err != nil {
97
97
  return channeltypes.Packet{}, err
98
98
  }
@@ -1,195 +0,0 @@
1
- package cmd
2
-
3
- import (
4
- "bufio"
5
- "encoding/json"
6
- "errors"
7
- "fmt"
8
-
9
- "github.com/spf13/cobra"
10
-
11
- "github.com/cosmos/cosmos-sdk/client"
12
- "github.com/cosmos/cosmos-sdk/client/flags"
13
- "github.com/cosmos/cosmos-sdk/codec"
14
- "github.com/cosmos/cosmos-sdk/crypto/keyring"
15
- "github.com/cosmos/cosmos-sdk/server"
16
- sdk "github.com/cosmos/cosmos-sdk/types"
17
- authtypes "github.com/cosmos/cosmos-sdk/x/auth/types"
18
- authvesting "github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
19
- banktypes "github.com/cosmos/cosmos-sdk/x/bank/types"
20
- "github.com/cosmos/cosmos-sdk/x/genutil"
21
- genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types"
22
- )
23
-
24
- const (
25
- flagVestingStart = "vesting-start-time"
26
- flagVestingEnd = "vesting-end-time"
27
- flagVestingAmt = "vesting-amount"
28
- )
29
-
30
- // AddGenesisAccountCmd returns add-genesis-account cobra Command.
31
- func AddGenesisAccountCmd(cdc codec.Codec, defaultNodeHome string) *cobra.Command {
32
- cmd := &cobra.Command{
33
- Use: "add-genesis-account <address_or_key_name> <coin>[,...]",
34
- Short: "Add a genesis account to genesis.json",
35
- Long: `Add a genesis account to genesis.json.
36
- If the address is specified by name, it will be looked up in the local Keybase.
37
- The comma-separated list of initial tokens must contain valid denominations.
38
- Accounts may optionally be supplied with vesting parameters.
39
- `,
40
- Args: cobra.ExactArgs(2),
41
- RunE: func(cmd *cobra.Command, args []string) error {
42
- clientCtx := client.GetClientContextFromCmd(cmd)
43
-
44
- serverCtx := server.GetServerContextFromCmd(cmd)
45
- config := serverCtx.Config
46
-
47
- config.SetRoot(clientCtx.HomeDir)
48
-
49
- addr, err := sdk.AccAddressFromBech32(args[0])
50
- if err != nil {
51
- inBuf := bufio.NewReader(cmd.InOrStdin())
52
- keyringBackend, err := cmd.Flags().GetString(flags.FlagKeyringBackend)
53
- if err != nil {
54
- return err
55
- }
56
-
57
- // attempt to lookup address from Keybase if no address was provided
58
- kb, err := keyring.New(sdk.KeyringServiceName(), keyringBackend, clientCtx.KeyringDir, inBuf, cdc)
59
- if err != nil {
60
- return err
61
- }
62
-
63
- info, err := kb.Key(args[0])
64
- if err != nil {
65
- return fmt.Errorf("failed to get key from Keybase: %s", err)
66
- }
67
-
68
- addr, err = info.GetAddress()
69
- if err != nil {
70
- return fmt.Errorf("failed to get address from Keybase: %s", err)
71
- }
72
- }
73
-
74
- coins, err := sdk.ParseCoinsNormalized(args[1])
75
- if err != nil {
76
- return fmt.Errorf("failed to parse coins: %s", err)
77
- }
78
-
79
- vestingStart, err := cmd.Flags().GetInt64(flagVestingStart)
80
- if err != nil {
81
- return err
82
- }
83
- vestingEnd, err := cmd.Flags().GetInt64(flagVestingEnd)
84
- if err != nil {
85
- return err
86
- }
87
- vestingAmtStr, err := cmd.Flags().GetString(flagVestingAmt)
88
- if err != nil {
89
- return err
90
- }
91
-
92
- vestingAmt, err := sdk.ParseCoinsNormalized(vestingAmtStr)
93
- if err != nil {
94
- return fmt.Errorf("failed to parse vesting amount: %s", err)
95
- }
96
-
97
- // create concrete account type based on input parameters
98
- var genAccount authtypes.GenesisAccount
99
-
100
- balances := banktypes.Balance{Address: addr.String(), Coins: coins.Sort()}
101
- baseAccount := authtypes.NewBaseAccount(addr, nil, 0, 0)
102
-
103
- if !vestingAmt.IsZero() {
104
- baseVestingAccount := authvesting.NewBaseVestingAccount(baseAccount, vestingAmt.Sort(), vestingEnd)
105
-
106
- if (balances.Coins.IsZero() && !baseVestingAccount.OriginalVesting.IsZero()) ||
107
- baseVestingAccount.OriginalVesting.IsAnyGT(balances.Coins) {
108
- return errors.New("vesting amount cannot be greater than total amount")
109
- }
110
-
111
- switch {
112
- case vestingStart != 0 && vestingEnd != 0:
113
- genAccount = authvesting.NewContinuousVestingAccountRaw(baseVestingAccount, vestingStart)
114
-
115
- case vestingEnd != 0:
116
- genAccount = authvesting.NewDelayedVestingAccountRaw(baseVestingAccount)
117
-
118
- default:
119
- return errors.New("invalid vesting parameters; must supply start and end time or end time")
120
- }
121
- } else {
122
- genAccount = baseAccount
123
- }
124
-
125
- if err := genAccount.Validate(); err != nil {
126
- return fmt.Errorf("failed to validate new genesis account: %s", err)
127
- }
128
-
129
- genFile := config.GenesisFile()
130
- appState, genDoc, err := genutiltypes.GenesisStateFromGenFile(genFile)
131
- if err != nil {
132
- return fmt.Errorf("failed to unmarshal genesis state: %s", err)
133
- }
134
-
135
- authGenState := authtypes.GetGenesisStateFromAppState(clientCtx.Codec, appState)
136
-
137
- accs, err := authtypes.UnpackAccounts(authGenState.Accounts)
138
- if err != nil {
139
- return fmt.Errorf("failed to get accounts from any: %s", err)
140
- }
141
-
142
- if accs.Contains(addr) {
143
- return fmt.Errorf("cannot add account at existing address %s", addr)
144
- }
145
-
146
- // Add the new account to the set of genesis accounts and sanitize the
147
- // accounts afterwards.
148
- accs = append(accs, genAccount)
149
- accs = authtypes.SanitizeGenesisAccounts(accs)
150
-
151
- genAccs, err := authtypes.PackAccounts(accs)
152
- if err != nil {
153
- return fmt.Errorf("failed to convert accounts into any's: %s", err)
154
- }
155
- authGenState.Accounts = genAccs
156
-
157
- authGenStateBz, err := clientCtx.Codec.MarshalJSON(&authGenState)
158
- if err != nil {
159
- return fmt.Errorf("failed to marshal auth genesis state: %s", err)
160
- }
161
-
162
- appState[authtypes.ModuleName] = authGenStateBz
163
-
164
- bankGenState := banktypes.GetGenesisStateFromAppState(clientCtx.Codec, appState)
165
- bankGenState.Balances = append(bankGenState.Balances, balances)
166
- bankGenState.Balances = banktypes.SanitizeGenesisBalances(bankGenState.Balances)
167
- bankGenState.Supply = bankGenState.Supply.Add(balances.Coins...)
168
-
169
- bankGenStateBz, err := clientCtx.Codec.MarshalJSON(bankGenState)
170
- if err != nil {
171
- return fmt.Errorf("failed to marshal bank genesis state: %s", err)
172
- }
173
-
174
- appState[banktypes.ModuleName] = bankGenStateBz
175
-
176
- appStateJSON, err := json.Marshal(appState)
177
- if err != nil {
178
- return fmt.Errorf("failed to marshal application genesis state: %s", err)
179
- }
180
-
181
- genDoc.AppState = appStateJSON
182
- return genutil.ExportGenesisFile(genDoc, genFile)
183
- },
184
- }
185
-
186
- cmd.Flags().String(flags.FlagHome, defaultNodeHome, "The application home directory")
187
- cmd.Flags().String(flags.FlagKeyringBackend, flags.DefaultKeyringBackend, "Select keyring's backend (os|file|kwallet|pass|test)")
188
- cmd.Flags().String(flags.FlagKeyringDir, "", "Keyring's key storage directory")
189
- cmd.Flags().String(flagVestingAmt, "", "amount of coins for vesting accounts")
190
- cmd.Flags().Int64(flagVestingStart, 0, "schedule start time (unix epoch) for vesting accounts")
191
- cmd.Flags().Int64(flagVestingEnd, 0, "schedule end time (unix epoch) for vesting accounts")
192
- flags.AddQueryFlagsToCmd(cmd)
193
-
194
- return cmd
195
- }