@@ -151,25 +151,28 @@ impl VssClient {
151151 ) -> Result < Self , VssError > {
152152 let secp = Secp256k1 :: new ( ) ;
153153
154- // Derive LDK keys from full 64-byte seed (matching ldk-node's key derivation)
155- let ldk_master_xprv =
156- Xpriv :: new_master ( Network :: Bitcoin , & seed) . map_err ( |e| VssError :: ConnectionError {
157- error_details : format ! ( "Failed to create master key: {}" , e) ,
154+ // Derive app keys from truncated 32-byte seed (backward compatible with v0.4.0)
155+ let truncated_seed: [ u8 ; 32 ] = seed[ ..32 ] . try_into ( ) . unwrap ( ) ;
156+ let app_master_xprv =
157+ Xpriv :: new_master ( Network :: Bitcoin , & truncated_seed) . map_err ( |e| {
158+ VssError :: ConnectionError {
159+ error_details : format ! ( "Failed to create app master key: {}" , e) ,
160+ }
158161 } ) ?;
159-
160- let ldk_vss_xprv = ldk_master_xprv
162+ let app_vss_xprv = app_master_xprv
161163 . derive_priv (
162164 & secp,
163165 & [ ChildNumber :: Hardened {
164166 index : VSS_HARDENED_CHILD_INDEX ,
165167 } ] ,
166168 )
167169 . map_err ( |e| VssError :: ConnectionError {
168- error_details : format ! ( "Failed to derive VSS key: {}" , e) ,
170+ error_details : format ! ( "Failed to derive app VSS key: {}" , e) ,
169171 } ) ?;
172+ let app_vss_seed_bytes: [ u8 ; 32 ] = app_vss_xprv. private_key . secret_bytes ( ) ;
170173
171- // LNURL auth uses the full seed derivation path
172- let lnurl_auth_xprv = ldk_vss_xprv
174+ // LNURL auth from app path (matches v0.4.0 server identity)
175+ let lnurl_auth_xprv = app_vss_xprv
173176 . derive_priv (
174177 & secp,
175178 & [ ChildNumber :: Hardened {
@@ -188,27 +191,22 @@ impl VssClient {
188191
189192 let header_provider = Arc :: new ( lnurl_auth_jwt_provider) ;
190193
191- let ldk_vss_seed_bytes: [ u8 ; 32 ] = ldk_vss_xprv. private_key . secret_bytes ( ) ;
192-
193- // Derive app keys from truncated 32-byte seed (backward compatible with old app version)
194- let truncated_seed: [ u8 ; 32 ] = seed[ ..32 ] . try_into ( ) . unwrap ( ) ;
195- let app_master_xprv =
196- Xpriv :: new_master ( Network :: Bitcoin , & truncated_seed) . map_err ( |e| {
197- VssError :: ConnectionError {
198- error_details : format ! ( "Failed to create app master key: {}" , e) ,
199- }
194+ // Derive LDK keys from full 64-byte seed (matching ldk-node's key derivation)
195+ let ldk_master_xprv =
196+ Xpriv :: new_master ( Network :: Bitcoin , & seed) . map_err ( |e| VssError :: ConnectionError {
197+ error_details : format ! ( "Failed to create LDK master key: {}" , e) ,
200198 } ) ?;
201- let app_vss_xprv = app_master_xprv
199+ let ldk_vss_xprv = ldk_master_xprv
202200 . derive_priv (
203201 & secp,
204202 & [ ChildNumber :: Hardened {
205203 index : VSS_HARDENED_CHILD_INDEX ,
206204 } ] ,
207205 )
208206 . map_err ( |e| VssError :: ConnectionError {
209- error_details : format ! ( "Failed to derive app VSS key: {}" , e) ,
207+ error_details : format ! ( "Failed to derive LDK VSS key: {}" , e) ,
210208 } ) ?;
211- let app_vss_seed_bytes : [ u8 ; 32 ] = app_vss_xprv . private_key . secret_bytes ( ) ;
209+ let ldk_vss_seed_bytes : [ u8 ; 32 ] = ldk_vss_xprv . private_key . secret_bytes ( ) ;
212210
213211 Self :: new_with_header_provider (
214212 base_url,
0 commit comments