BIP85
The BIP85 specification allows you to deterministically derive new BIP39 mnemonics from an existing mnemonic. This is useful for creating separate wallets or accounts while maintaining a single backup.
Deriving a Mnemonic
To derive a BIP85 mnemonic, you need a software signer initialized with a mnemonic (hardware wallet-based signers are not supported at the moment). The derived mnemonic is obtained with Signer::derive_bip85_mnemonic(), which takes an index (0-based) and a word_count (12 or 24).
Rust
// Load mnemonic
let mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about";
// Create signer
let is_mainnet = false;
let signer = SwSigner::new(mnemonic, is_mainnet)?;
// Derive menmonics
let derived_0_12 = signer.derive_bip85_mnemonic(0, 12)?;
let derived_0_24 = signer.derive_bip85_mnemonic(0, 24)?;
let derived_1_12 = signer.derive_bip85_mnemonic(1, 12)?;
Python
# Load mnemonic
test_mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
mnemonic = Mnemonic(test_mnemonic)
# Create signer
network = Network.testnet()
signer = Signer(mnemonic, network)
# Derive mnemonics
derived_0_12 = signer.derive_bip85_mnemonic(0, 12)
derived_0_24 = signer.derive_bip85_mnemonic(0, 24)
derived_1_12 = signer.derive_bip85_mnemonic(1, 12)
Javascript
// Load mnemonic
const mnemonic = new lwk.Mnemonic("abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about");
// Create signer
const network = lwk.Network.testnet();
const signer = new lwk.Signer(mnemonic, network);
console.log("Signer created");
// Derive menmonics
const derived_0_12 = await signer.derive_bip85_mnemonic(0, 12);
const derived_0_24 = await signer.derive_bip85_mnemonic(0, 24);
const derived_1_12 = await signer.derive_bip85_mnemonic(1, 12);
Next: CLI