Cosmos Keys is a library for creating keys and signing messages on Cosmos. You can use it to generate keypairs and addresses and to sign messages for the Cosmos Network.
This library deals with tasks that are considered security-critical and should be used very carefully.
yarn add @lunie/cosmos-keys
import { getNewWallet } from "@lunie/cosmos-keys"
const { cosmosAddress, privateKey, publicKey } = getNewWallet()
// Attention: protect the `privateKey` at all cost and never display it anywhere!!
import { getNewWalletFromSeed } from "@lunie/cosmos-keys"
const seed = ...24 seed words here
//bech32prefix
const bech32prefix = 'cosmos';
const { cosmosAddress, privateKey, publicKey } = getNewWalletFromSeed(seed, bech32prefix)
// Attention: protect the `privateKey` at all cost and never display it anywhere!!
import { signWithPrivateKey } from "@lunie/cosmos-keys"
const privateKey = Buffer.from(...)
const signMessage = ... message to sign, generate messages with "@lunie/cosmos-js"
const signature = signWithPrivateKey(signMessage, privateKey)
import { signWithPrivateKey } from "@lunie/cosmos-keys"
import Cosmos from "@lunie/cosmos-js"
const privateKey = Buffer.from(...)
const publicKey = Buffer.from(...)
// init cosmos sender
const cosmos = Cosmos(STARGATE_URL, ADDRESS)
// create message
const msg = cosmos
.MsgSend({toAddress: 'cosmos1abcd09876', amounts: [{ denom: 'stake', amount: 10 }]})
// create a signer from this local js signer library
const localSigner = (signMessage) => {
const signature = signWithPrivateKey(signMessage, privateKey)
return {
signature,
publicKey
}
}
// send the transaction
const { included }= await msg.send({ gas: 200000 }, localSigner)
// await tx to be included in a block
await included()