fix(x/genutil): fix logic error in simapp start (#20693)

This commit is contained in:
Matt Kocubinski 2024-06-17 10:01:10 -05:00 committed by GitHub
parent 6335631348
commit 65ac3f42ec
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,7 +33,9 @@ func ExportGenesisFile(genesis *types.AppGenesis, genFile string) error {
// ExportGenesisFileWithTime creates and writes the genesis configuration to disk.
// An error is returned if building or writing the configuration to file fails.
func ExportGenesisFileWithTime(genFile, chainID string, validators []cmttypes.GenesisValidator, appState json.RawMessage, genTime time.Time) error {
func ExportGenesisFileWithTime(
genFile, chainID string, validators []cmttypes.GenesisValidator, appState json.RawMessage, genTime time.Time,
) error {
appGenesis := types.NewAppGenesisWithVersion(chainID, appState)
appGenesis.GenesisTime = genTime
appGenesis.Consensus.Validators = validators
@ -46,13 +48,17 @@ func ExportGenesisFileWithTime(genFile, chainID string, validators []cmttypes.Ge
}
// InitializeNodeValidatorFiles creates private validator and p2p configuration files.
func InitializeNodeValidatorFiles(config *cfg.Config, keyType string) (nodeID string, valPubKey cryptotypes.PubKey, err error) {
func InitializeNodeValidatorFiles(config *cfg.Config, keyType string) (
nodeID string, valPubKey cryptotypes.PubKey, err error,
) {
return InitializeNodeValidatorFilesFromMnemonic(config, "", keyType)
}
// InitializeNodeValidatorFilesFromMnemonic creates private validator and p2p configuration files using the given mnemonic.
// If no valid mnemonic is given, a random one will be used instead.
func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic, keyType string) (nodeID string, valPubKey cryptotypes.PubKey, err error) {
func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic, keyType string) (
nodeID string, valPubKey cryptotypes.PubKey, err error,
) {
if len(mnemonic) > 0 && !bip39.IsMnemonicValid(mnemonic) {
return "", nil, fmt.Errorf("invalid mnemonic")
}
@ -81,14 +87,15 @@ func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic, keyT
if len(mnemonic) == 0 {
switch keyType {
case "ed25519":
privKey = tmed25519.GenPrivKey()
filePV = loadOrGenFilePV(tmed25519.GenPrivKey(), pvKeyFile, pvStateFile)
case "bls12_381":
privKey, err = cmtbls12381.GenPrivKey()
if err != nil {
return "", nil, err
}
filePV = loadOrGenFilePV(privKey, pvKeyFile, pvStateFile)
default:
privKey = tmed25519.GenPrivKey()
filePV = loadOrGenFilePV(tmed25519.GenPrivKey(), pvKeyFile, pvStateFile)
}
} else {
switch keyType {
@ -100,11 +107,10 @@ func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic, keyT
default:
privKey = tmed25519.GenPrivKeyFromSecret([]byte(mnemonic))
}
filePV = privval.NewFilePV(privKey, pvKeyFile, pvStateFile)
filePV.Save()
}
filePV = privval.NewFilePV(privKey, pvKeyFile, pvStateFile)
filePV.Save()
tmValPubKey, err := filePV.GetPubKey()
if err != nil {
return "", nil, err
@ -117,3 +123,19 @@ func InitializeNodeValidatorFilesFromMnemonic(config *cfg.Config, mnemonic, keyT
return nodeID, valPubKey, nil
}
// loadOrGenFilePV loads a FilePV from the given filePaths
// or else generates a new one and saves it to the filePaths.
func loadOrGenFilePV(privKey cmtcrypto.PrivKey, keyFilePath, stateFilePath string) *privval.FilePV {
_, err := os.Stat(keyFilePath)
exists := !os.IsNotExist(err)
var pv *privval.FilePV
if exists {
pv = privval.LoadFilePV(keyFilePath, stateFilePath)
} else {
pv = privval.NewFilePV(privKey, keyFilePath, stateFilePath)
pv.Save()
}
return pv
}