Pre-requisite Readings
- Prerequisites - Set up Go and build the
simdbinary
Create a key
- Create a new key for your validator:
- Store the address for later use:
Next steps
You have just created your first key. The keyring is now ready to manage keys for interacting with your blockchain node. If you are running through this tutorial as a test, continue to Run a node to initialize your blockchain and start your node. For more information on the keyring and its various backends, continue reading below.Reference: Keyring backends
The Cosmos SDK keyring supports multiple storage backends. The private key can be stored in different locations such as a file or the operating system’s own key storage.The os backend
The os backend relies on operating system-specific defaults to handle key storage
securely. Typically, an operating system’s credential subsystem handles password prompts,
private keys storage, and user sessions according to the user’s password policies. Here
is a list of the most popular operating systems and their respective passwords manager:
- macOS: Keychain
- Windows: Credentials Management API
- GNU/Linux:
libsecret convenient frontend, the latter is a kwallet
client. keyctl is a secure backend that leverages the Linux’s kernel security key management system
to store cryptographic keys securely in memory.
os is the default option since operating system’s default credentials managers are
designed to meet users’ most common needs and provide them with a comfortable
experience without compromising on security.
The recommended backends for headless environments are file and pass.
The file backend
The file backend more closely resembles the keybase implementation used prior to
v0.38.1. It stores the keyring encrypted within the app’s configuration directory. This
keyring will request a password each time it is accessed, which may occur multiple
times in a single command resulting in repeated password prompts. If using bash scripts
to execute commands using the file option you may want to utilize the following format
for multiple prompts:
The pass backend
The pass backend uses the pass utility to manage on-disk
encryption of keys’ sensitive data and metadata. Keys are stored inside gpg encrypted files
within app-specific directories. pass is available for the most popular UNIX
operating systems as well as GNU/Linux distributions. Please refer to its manual page for
information on how to download and install it.
The password store must be set up prior to first use:
<GPG_KEY_ID> with your GPG key ID. You can use your personal GPG key or an alternative
one you may want to use specifically to encrypt the password store.
The kwallet backend
The kwallet backend uses KDE Wallet Manager, which comes installed by default on the
GNU/Linux distributions that ships KDE as default desktop environment. Please refer to
KWallet Handbook for more
information.
The keyctl backend
The Kernel Key Retention Service is a security facility that
has been added to the Linux kernel relatively recently. It allows sensitive
cryptographic data such as passwords, private key, authentication tokens, etc
to be stored securely in memory.
The keyctl backend is available on Linux platforms only.
The test backend
The test backend is a password-less variation of the file backend. Keys are stored
unencrypted on disk.
Provided for testing purposes only. The test backend is not recommended for use in production environments.
The memory backend
The memory backend stores keys in memory. The keys are immediately deleted after the program has exited.
Provided for testing purposes only. The memory backend is not recommended for use in production environments.
Setting backend using the env variable
You can set the keyring-backend using env variable:BINNAME_KEYRING_BACKEND. For example, if your binary name is gaia-v5 then set: export GAIA_V5_KEYRING_BACKEND=pass
Additional key management
By default, the keyring generates asecp256k1 keypair. The keyring also supports ed25519 keys, which may be created by passing the --algo ed25519 flag. A keyring can hold both types of keys simultaneously, and the Cosmos SDK’s x/auth module supports both public key algorithms natively.
For help with key management commands, use simd keys --help or simd keys [command] --help.