Merge branch 'develop' into jack/gaiacli-config-node
This commit is contained in:
commit
5476c4e664
|
@ -4,4 +4,6 @@
|
|||
* @ebuchman @rigelrozanski @cwgoes
|
||||
|
||||
# Precious documentation
|
||||
/docs/ @zramsay @jolesbi
|
||||
/docs/README.md @zramsay
|
||||
/docs/DOCS_README.md @zramsay
|
||||
/docs/.vuepress/ @zramsay
|
||||
|
|
|
@ -5,6 +5,7 @@ BREAKING CHANGES
|
|||
* Gaia REST API (`gaiacli advanced rest-server`)
|
||||
|
||||
* Gaia CLI (`gaiacli`)
|
||||
- [#3399](https://github.com/cosmos/cosmos-sdk/pull/3399) Add `gaiad validate-genesis` command to facilitate checking of genesis files
|
||||
|
||||
* Gaia
|
||||
|
||||
|
|
|
@ -982,3 +982,14 @@ func TestSlashingGetParams(t *testing.T) {
|
|||
require.Equal(t, int64(0), sinfo.StartHeight)
|
||||
require.False(t, sinfo.Tombstoned)
|
||||
}
|
||||
|
||||
func TestValidateGenesis(t *testing.T) {
|
||||
t.Parallel()
|
||||
f := InitFixtures(t)
|
||||
|
||||
// start gaiad server
|
||||
proc := f.GDStart()
|
||||
defer proc.Stop(false)
|
||||
|
||||
f.ValidateGenesis()
|
||||
}
|
||||
|
|
|
@ -205,6 +205,12 @@ func (f *Fixtures) GDTendermint(query string) string {
|
|||
return strings.TrimSpace(stdout)
|
||||
}
|
||||
|
||||
// ValidateGenesis runs gaiad validate-genesis
|
||||
func (f *Fixtures) ValidateGenesis() {
|
||||
cmd := fmt.Sprintf("gaiad validate-genesis --home=%s", f.GDHome)
|
||||
executeWriteCheckErr(f.T, cmd)
|
||||
}
|
||||
|
||||
//___________________________________________________________________________________
|
||||
// gaiacli keys
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ func main() {
|
|||
rootCmd.AddCommand(gaiaInit.TestnetFilesCmd(ctx, cdc))
|
||||
rootCmd.AddCommand(gaiaInit.GenTxCmd(ctx, cdc))
|
||||
rootCmd.AddCommand(gaiaInit.AddGenesisAccountCmd(ctx, cdc))
|
||||
rootCmd.AddCommand(gaiaInit.ValidateGenesisCmd(ctx, cdc))
|
||||
rootCmd.AddCommand(client.NewCompletionCmd(rootCmd, true))
|
||||
|
||||
server.AddCommands(ctx, cdc, rootCmd, newApp, exportAppStateAndTMValidators)
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
package init
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/cosmos/cosmos-sdk/cmd/gaia/app"
|
||||
"github.com/cosmos/cosmos-sdk/codec"
|
||||
"github.com/cosmos/cosmos-sdk/server"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/tendermint/tendermint/types"
|
||||
)
|
||||
|
||||
// Validate genesis command takes
|
||||
func ValidateGenesisCmd(ctx *server.Context, cdc *codec.Codec) *cobra.Command {
|
||||
return &cobra.Command{
|
||||
Use: "validate-genesis [file]",
|
||||
Args: cobra.RangeArgs(0, 1),
|
||||
Short: "validates the genesis file at the default location or at the location passed as an arg",
|
||||
RunE: func(cmd *cobra.Command, args []string) (err error) {
|
||||
|
||||
// Load default if passed no args, otherwise load passed file
|
||||
var genesis string
|
||||
if len(args) == 0 {
|
||||
genesis = ctx.Config.GenesisFile()
|
||||
} else {
|
||||
genesis = args[0]
|
||||
}
|
||||
|
||||
//nolint
|
||||
fmt.Fprintf(os.Stderr, "validating genesis file at %s\n", genesis)
|
||||
|
||||
var genDoc types.GenesisDoc
|
||||
if genDoc, err = loadGenesisDoc(cdc, genesis); err != nil {
|
||||
return errors.Errorf("Error loading genesis doc from %s: %s", genesis, err.Error())
|
||||
}
|
||||
|
||||
var genstate app.GenesisState
|
||||
if err = cdc.UnmarshalJSON(genDoc.AppState, &genstate); err != nil {
|
||||
return errors.Errorf("Error unmarshaling genesis doc %s: %s", genesis, err.Error())
|
||||
}
|
||||
|
||||
if err = app.GaiaValidateGenesisState(genstate); err != nil {
|
||||
return errors.Errorf("Error validating genesis file %s: %s", genesis, err.Error())
|
||||
}
|
||||
|
||||
fmt.Printf("File at %s is a valid genesis file for gaiad\n", genesis)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
|
@ -21,7 +21,7 @@ module.exports = {
|
|||
},
|
||||
nav: [
|
||||
{ text: "Back to Cosmos", link: "https://cosmos.network" },
|
||||
{ text: "RPC", link: "../rpc/" }
|
||||
{ text: "RPC", link: "https://cosmos.network/rpc/" }
|
||||
],
|
||||
sidebar: [
|
||||
{
|
||||
|
|
|
@ -83,12 +83,20 @@ type BaseAccount struct {
|
|||
|
||||
// String implements fmt.Stringer
|
||||
func (acc BaseAccount) String() string {
|
||||
return fmt.Sprintf(`Account %s:
|
||||
var pubkey string
|
||||
|
||||
if acc.PubKey != nil {
|
||||
pubkey = sdk.MustBech32ifyAccPub(acc.PubKey)
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`Account:
|
||||
Address: %s
|
||||
Pubkey: %s
|
||||
Coins: %s
|
||||
PubKey: %s
|
||||
AccountNumber: %d
|
||||
Sequence: %d`, acc.Address, acc.Coins,
|
||||
acc.PubKey.Address(), acc.AccountNumber, acc.Sequence)
|
||||
Sequence: %d`,
|
||||
acc.Address, pubkey, acc.Coins, acc.AccountNumber, acc.Sequence,
|
||||
)
|
||||
}
|
||||
|
||||
// Prototype function for BaseAccount
|
||||
|
@ -183,8 +191,15 @@ type BaseVestingAccount struct {
|
|||
|
||||
// String implements fmt.Stringer
|
||||
func (bva BaseVestingAccount) String() string {
|
||||
var pubkey string
|
||||
|
||||
if bva.PubKey != nil {
|
||||
pubkey = sdk.MustBech32ifyAccPub(bva.PubKey)
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`Vesting Account:
|
||||
Address: %s
|
||||
Address: %s
|
||||
Pubkey: %s
|
||||
Coins: %s
|
||||
AccountNumber: %d
|
||||
Sequence: %d
|
||||
|
@ -192,10 +207,8 @@ func (bva BaseVestingAccount) String() string {
|
|||
DelegatedFree: %s
|
||||
DelegatedVesting: %s
|
||||
EndTime: %d `,
|
||||
bva.Address, bva.Coins,
|
||||
bva.AccountNumber, bva.Sequence,
|
||||
bva.OriginalVesting, bva.DelegatedFree,
|
||||
bva.DelegatedVesting, bva.EndTime,
|
||||
bva.Address, pubkey, bva.Coins, bva.AccountNumber, bva.Sequence,
|
||||
bva.OriginalVesting, bva.DelegatedFree, bva.DelegatedVesting, bva.EndTime,
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -395,8 +408,15 @@ func NewContinuousVestingAccount(
|
|||
}
|
||||
|
||||
func (cva ContinuousVestingAccount) String() string {
|
||||
var pubkey string
|
||||
|
||||
if cva.PubKey != nil {
|
||||
pubkey = sdk.MustBech32ifyAccPub(cva.PubKey)
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`Continuous Vesting Account:
|
||||
Address: %s
|
||||
Address: %s
|
||||
Pubkey: %s
|
||||
Coins: %s
|
||||
AccountNumber: %d
|
||||
Sequence: %d
|
||||
|
@ -405,10 +425,9 @@ func (cva ContinuousVestingAccount) String() string {
|
|||
DelegatedVesting: %s
|
||||
StartTime: %d
|
||||
EndTime: %d `,
|
||||
cva.Address, cva.Coins,
|
||||
cva.AccountNumber, cva.Sequence,
|
||||
cva.OriginalVesting, cva.DelegatedFree,
|
||||
cva.DelegatedVesting, cva.StartTime, cva.EndTime,
|
||||
cva.Address, pubkey, cva.Coins, cva.AccountNumber, cva.Sequence,
|
||||
cva.OriginalVesting, cva.DelegatedFree, cva.DelegatedVesting,
|
||||
cva.StartTime, cva.EndTime,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue