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


The Liquid Network is a production Bitcoin sidechain built with Elements, supporting confidential transactions, asset issuance and programmable smart contracts.

© 2026 Liquid Network
All rights reserved.

Feedback and Requests

We'd be happy to hear your suggestions on how to improve this site.

Simplicity Forum

Discuss SimplicityHL, tooling and applications on Liquid at community.simplicity-lang.org.

Liquid Dev Community

Community Telegram group where most of the Liquid developers hang out. Go to t.me/liquid_devel to join.