Wallets and Keys
To make changes on a network, you will need to start sending transactions to it. This in tern involves managing private keys and addresses. Luckily, CosmPy makes this relatively straightforward.
The following code outlines how to both generate a completely new private key and how to recover a previously generated one:
from cosmpy.aerial.wallet import LocalWallet from cosmpy.crypto.keypairs import PrivateKey # To create a random private key: private_key = PrivateKey() # To recover an existing private key: private_key = PrivateKey('<base64 encoded private key>')
PrivateKey object is one of CosmPy's low level primitives. This is why it is generally paired with a
Wallet object in most scenarios. Below, a
LocalWallet (a kind of
Wallet) is created using the private key:
Creating the wallet allows users to query useful information such as the address from the wallet directly.
To use cosmpy with an existing account, extract the private key and convert it into a base64 encoded string.
For example, to do this on macOS or Linux for the Fetch.ai network using its FetchD CLI:
If you have the mnemonic phrase to an account, you can get the associated private key as follows:
from bip_utils import Bip39SeedGenerator, Bip44, Bip44Coins mnemonic = "person knife december tail tortoise jewel warm when worry limit reward memory piece cool sphere kitchen knee embody soft own victory sauce silly page" seed_bytes = Bip39SeedGenerator(mnemonic).Generate() bip44_def_ctx = Bip44.FromSeed(seed_bytes, Bip44Coins.COSMOS).DeriveDefaultPath() wallet = LocalWallet(PrivateKey(bip44_def_ctx.PrivateKey().Raw().ToBytes()))
Of course in real applications, you should never include a mnemonic in public code.
Custom prefix network:¶
In case you are using a network other than fetch.ai's, you can provide the custom prefix when creating the wallet: