From 3f4fd93858cd005dabd85e48a01b11daca7fe2fb Mon Sep 17 00:00:00 2001 From: Arc Date: Wed, 17 Dec 2025 00:42:39 +0000 Subject: [PATCH] boltz funding source seed fix Users should be able to have a seed created or replace with their own --- lnbits/settings.py | 20 ++++++++++++++++++- .../admin/lnbits-admin-funding-sources.js | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lnbits/settings.py b/lnbits/settings.py index 57297b4fe..90d751e43 100644 --- a/lnbits/settings.py +++ b/lnbits/settings.py @@ -6,6 +6,7 @@ import inspect import json import os import re +import secrets from datetime import datetime, timezone from enum import Enum from os import path @@ -18,6 +19,21 @@ from loguru import logger from pydantic import BaseModel, BaseSettings, Extra, Field, validator +def generate_default_boltz_mnemonic() -> str | None: + """ + Generate a BIP39 mnemonic using the bundled embit dependency. + If embit is unavailable at runtime, return None to avoid blocking startup. + """ + try: + from embit import bip39 + except Exception as exc: # pragma: no cover - dependency missing at runtime + logger.warning(f"Unable to generate Boltz mnemonic (embit missing): {exc}") + return None + + entropy = secrets.token_bytes(16) # 128 bits -> 12-word mnemonic + return bip39.mnemonic_from_bytes(entropy) + + def list_parse_fallback(v: str): v = v.replace(" ", "") if len(v) > 0: @@ -604,7 +620,9 @@ class BoltzFundingSource(LNbitsSettings): boltz_client_wallet: str | None = Field(default="lnbits") boltz_client_password: str = Field(default="") boltz_client_cert: str | None = Field(default=None) - boltz_mnemonic: str | None = Field(default=None) + boltz_mnemonic: str | None = Field( + default_factory=generate_default_boltz_mnemonic + ) class StrikeFundingSource(LNbitsSettings): diff --git a/lnbits/static/js/components/admin/lnbits-admin-funding-sources.js b/lnbits/static/js/components/admin/lnbits-admin-funding-sources.js index 50088da5e..892fa7288 100644 --- a/lnbits/static/js/components/admin/lnbits-admin-funding-sources.js +++ b/lnbits/static/js/components/admin/lnbits-admin-funding-sources.js @@ -167,9 +167,9 @@ window.app.component('lnbits-admin-funding-sources', { boltz_client_password: 'Wallet Password (can be empty)', boltz_mnemonic: { label: 'Liquid mnemonic (copy into greenwallet)', - readonly: true, copy: true, - qrcode: true + qrcode: true, + hint: 'Paste or type your liquid mnemonic' } } ],