github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/libs/cosmos-sdk/server/init.go (about) 1 package server 2 3 import ( 4 "fmt" 5 6 "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/crypto/keys" 7 8 clkeys "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/keys" 9 sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types" 10 ) 11 12 // GenerateCoinKey returns the address of a public key, along with the secret 13 // phrase to recover the private key. 14 func GenerateCoinKey() (sdk.AccAddress, string, error) { 15 16 // generate a private key, with recovery phrase 17 info, secret, err := clkeys.NewInMemoryKeyBase().CreateMnemonic( 18 "name", keys.English, "pass", keys.Secp256k1, "") 19 if err != nil { 20 return sdk.AccAddress([]byte{}), "", err 21 } 22 addr := info.GetPubKey().Address() 23 return sdk.AccAddress(addr), secret, nil 24 } 25 26 // GenerateSaveCoinKey returns the address of a public key, along with the secret 27 // phrase to recover the private key. 28 func GenerateSaveCoinKey(keybase keys.Keybase, keyName, keyPass string, overwrite bool, mnemonicInput string) (sdk.AccAddress, string, error) { 29 // ensure no overwrite 30 if !overwrite { 31 _, err := keybase.Get(keyName) 32 if err == nil { 33 return sdk.AccAddress([]byte{}), "", fmt.Errorf( 34 "key already exists, overwrite is disabled") 35 } 36 } 37 38 // generate a private key, with recovery phrase 39 info, secret, err := keybase.CreateMnemonic(keyName, keys.English, keyPass, keys.Secp256k1, mnemonicInput) 40 if err != nil { 41 return sdk.AccAddress([]byte{}), "", err 42 } 43 44 return sdk.AccAddress(info.GetPubKey().Address()), secret, nil 45 }