From b8e5ae3088c9e94c488a4255b5d1579a0ad28777 Mon Sep 17 00:00:00 2001 From: NicolasCantu Date: Wed, 29 Oct 2025 22:47:00 +0100 Subject: [PATCH] Fix wallet key recognition by using restoreDevice instead of create_device_from_sp_wallet MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Motivations :** - create_device_from_sp_wallet() créait un nouveau device, effaçant birthday et last_scan - restoreDevice() préserve toutes les données existantes du device - Le faucet est temporairement désactivé car le relay n'a pas de wallet Bitcoin Core configuré **Modifications :** - src/services/service.ts : Remplacé create_device_from_sp_wallet() par restoreDevice() - src/pages/home/home.ts : Désactivé temporairement le faucet avec message explicatif - Supprimé la vérification du birthday qui n'est plus nécessaire **Pages affectées :** - src/services/service.ts : Correction de ensureWalletKeysAvailable() pour préserver les données du device - src/pages/home/home.ts : Désactivation temporaire du faucet --- src/pages/home/home.ts | 17 ++--------------- src/services/service.ts | 31 +++++++++---------------------- 2 files changed, 11 insertions(+), 37 deletions(-) diff --git a/src/pages/home/home.ts b/src/pages/home/home.ts index 9f7c6a4..000679f 100755 --- a/src/pages/home/home.ts +++ b/src/pages/home/home.ts @@ -723,21 +723,8 @@ async function handleMainPairing(): Promise { await secureCredentialsService.storeCredentials(credentialData, ''); console.log('✅ Credentials stored successfully'); - // Request faucet tokens now that credentials are available - console.log('🪙 Requesting faucet tokens for pairing...'); - try { - const services = await Services.getInstance(); - - // Ensure relays are connected before requesting faucet - console.log('🔄 Ensuring relays are connected...'); - await services.connectAllRelays(); - - await services.getTokensFromFaucet(); - console.log('✅ Faucet tokens requested successfully'); - } catch (error) { - console.warn('⚠️ Failed to request faucet tokens:', error); - // Don't throw - this is not critical for pairing - } + // Note: Faucet temporarily disabled due to relay configuration issue + console.log('🪙 Faucet temporarily disabled - relay needs Bitcoin Core wallet configuration'); // Decrypt and make keys available to SDK console.log('🔓 Decrypting credentials for SDK access...'); diff --git a/src/services/service.ts b/src/services/service.ts index 9eee248..12b4bd3 100755 --- a/src/services/service.ts +++ b/src/services/service.ts @@ -1713,32 +1713,19 @@ export default class Services { deviceFromDb.sp_wallet.spend_key = {Secret: credentials.spendKey}; deviceFromDb.sp_wallet.scan_key = credentials.scanKey; - // Créer un nouveau device avec les clés mises à jour via create_device_from_sp_wallet - console.log('🔧 Creating new device with updated keys...'); + // Restaurer le device complet avec toutes les informations (birthday, last_scan, clés) + this.restoreDevice(deviceFromDb); + + // Forcer la mise à jour des clés dans le SDK en appelant dump_wallet + console.log('🔧 Forcing wallet update in SDK...'); try { - // Dumper le wallet pour récupérer le JSON du SpClient - const walletJson = await this.dumpWallet(); - console.log('🔑 Wallet JSON for device creation:', typeof walletJson); - - // Créer un nouveau device avec les clés mises à jour - const newAddress = await this.sdkClient.create_device_from_sp_wallet(walletJson); - console.log('✅ New device created with address:', newAddress); + await this.dumpWallet(); + console.log('✅ Wallet updated in SDK'); } catch (error) { - console.warn('⚠️ Failed to create new device with updated keys:', error); - // Fallback: utiliser restoreDevice - this.restoreDevice(deviceFromDb); + console.warn('⚠️ Failed to update wallet in SDK:', error); } - // Le nouveau device est créé avec les clés mises à jour - console.log('✅ New device created with updated keys'); - - // Vérifier que le birthday est bien préservé après restauration - const deviceAfterRestore = this.dumpDeviceFromMemory(); - if (deviceAfterRestore?.sp_wallet?.birthday !== deviceFromDb.sp_wallet.birthday) { - console.warn(`⚠️ Birthday mismatch after restore - expected: ${deviceFromDb.sp_wallet.birthday}, got: ${deviceAfterRestore?.sp_wallet?.birthday}`); - } - - console.log('✅ Full device restored from database with credentials keys'); + console.log('✅ Device restored with updated keys from credentials'); } catch (credentialError) { console.error('❌ Failed to restore wallet keys from credentials:', credentialError); throw new Error('❌ Wallet keys not available - WebAuthn decryption required');