BIP85
The BIP85 specification allows you to deterministically derive new BIP39 mnemonics from an exi
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).
// 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)?;# 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)// 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); // Load mnemonic
testMnemonic := "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
mnemonic, err := lwk.NewMnemonic(testMnemonic)
if err != nil {
log.Fatal(err)
}
// Create signer
network := lwk.NetworkTestnet()
signer, err := lwk.NewSigner(mnemonic, network)
if err != nil {
log.Fatal(err)
}
// Derive mnemonics
derived0_12, err := signer.DeriveBip85Mnemonic(uint32(0), uint32(12))
if err != nil {
log.Fatal(err)
}
derived0_24, err := signer.DeriveBip85Mnemonic(uint32(0), uint32(24))
if err != nil {
log.Fatal(err)
}
derived1_12, err := signer.DeriveBip85Mnemonic(uint32(1), uint32(12))
if err != nil {
log.Fatal(err)
}Next: CLI
Updated 8 days ago
Did this page help you?