feat: BIP-39 master seed for unified key derivation

Replace fragmented random key generation with a single 24-word BIP-39
mnemonic that deterministically derives all node keys: Ed25519 (DID),
secp256k1 (Nostr/Bitcoin), BIP-84 xprv (Bitcoin Core), and LND aezeed
entropy. New onboarding flow: seed generate → word verification → identity
naming. Restore path enabled via 24-word entry. Includes seed RPC handlers,
mock backend support, LND/Bitcoin Core wallet-from-seed integration, and
UI polish across settings and discover views.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-31 01:41:24 +01:00
parent 5da9e217e6
commit 19dcfd4f31
50 changed files with 2200 additions and 258 deletions

View File

@@ -69,7 +69,6 @@ impl DevDataManager {
#[cfg(test)]
mod tests {
use super::*;
use std::path::PathBuf;
#[tokio::test]
async fn test_map_volume_path() {

View File

@@ -8,6 +8,7 @@ use std::sync::{Arc, Mutex, atomic::{AtomicBool, AtomicU32, Ordering}};
/// Container state matching podman's real states.
#[derive(Debug, Clone, PartialEq)]
#[allow(dead_code)]
pub enum MockContainerState {
Created,
Running,
@@ -28,6 +29,7 @@ impl MockContainerState {
/// A simulated container.
#[derive(Debug, Clone)]
#[allow(dead_code)]
pub struct MockContainer {
pub name: String,
pub image: String,
@@ -36,6 +38,7 @@ pub struct MockContainer {
}
/// Mock podman runtime for testing orchestration logic without real containers.
#[allow(dead_code)]
pub struct MockPodman {
containers: Arc<Mutex<HashMap<String, MockContainer>>>,
/// When true, `podman pull` will fail (simulates registry down).
@@ -50,6 +53,7 @@ pub struct MockPodman {
images: Arc<Mutex<Vec<String>>>,
}
#[allow(dead_code)]
impl MockPodman {
pub fn new() -> Self {
Self {