Inquiry About Derivation Path for Phoenix Wallet's bc1p (Taproot) Address
Dear Phoenix Wallet Technical Support, I am reaching out to inquire about the specific derivation path used by Phoenix Wallet to generate its bc1p (Taproot) addresses. I have noticed that when I import the 12-word mnemonic phrase from Phoenix Wallet into another wallet (e.g., UniSat), the Taproot addresses generated do not match the bc1p addresses shown in Phoenix Wallet. I suspect this is due to a difference in the derivation path used. Could you please confirm the exact derivation path (e.g., m/86'/0'/0' or a custom path) that Phoenix Wallet uses for generating its Taproot (bc1p) addresses? Additionally, if there are any specific settings or considerations for recovering these addresses in other wallets, I would appreciate your guidance. Thank you for your assistance!
Phoenix uses the swap-in potentiam scheme to allow trustless swaps from on-chain to Lightning. You can find information about that mechanism here, as well as the original post from ZmnSCPxj here.
To watch this address from another wallet (that supports descriptors), you can use the recovery procedure described in lightning-kmp:
https://github.com/ACINQ/lightning-kmp/blob/master/RECOVERY.md#pending-swap-in-transactions
Thank you for the response. I understand that Phoenix uses the swap-in mechanism for bc1p addresses, and I've reviewed the recovery procedure in lightning-kmp. However, I still couldn't match the addresses after testing various derivation paths (e.g., m/86'/0'/0'/0/n, m/86'/0'/n'/0/0, and custom purposes). Could you please specify the exact derivation path used for swap-in addresses? For example, does it use a custom purpose value like m/200'/0'/0', or a specific account index? Additionally, how does Phoenix determine the address index for each new swap-in address? Thank you!
I need the derivation path of bc1p, boss
However, I still couldn't match the addresses after testing various derivation paths (e.g., m/86'/0'/0'/0/n, m/86'/0'/n'/0/0, and custom purposes). Could you please specify the exact derivation path used for swap-in addresses?
That's because it's not only about the derivation path. As @dpad85 explained, we're using BIP 32 to derive your public key, but the script used is a swap-in-potentiam script, not a p2wpkh or standard p2tr key-path. That script must be spent to send to your final single-key address: to spend it, you must either wait for the timeout, or obtain a signature from our node. That is detailed in the link shared in the previous answer to your comment.
How do I get the signature from your node? What is the specific operation method?
Bastien Teinturier @.***> 于2025年5月26日周一 17:29写道:
t-bast left a comment (ACINQ/phoenix#715) https://github.com/ACINQ/phoenix/issues/715#issuecomment-2909053636
However, I still couldn't match the addresses after testing various derivation paths (e.g., m/86'/0'/0'/0/n, m/86'/0'/n'/0/0, and custom purposes). Could you please specify the exact derivation path used for swap-in addresses?
That's because it's not only about the derivation path. As @dpad85 https://github.com/dpad85 explained, we're using BIP 32 to derive your public key, but the script used is a swap-in-potentiam script, not a p2wpkh or standard p2tr key-path. That script must be spent to send to your final single-key address: to spend it, you must either wait for the timeout, or obtain a signature from our node. That is detailed in the link shared in the previous answer to your comment.
— Reply to this email directly, view it on GitHub https://github.com/ACINQ/phoenix/issues/715#issuecomment-2909053636, or unsubscribe https://github.com/notifications/unsubscribe-auth/A3LMWECEOJRSDEKEFCA7R533ALNGHAVCNFSM6AAAAAB52LSN72VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDSMBZGA2TGNRTGY . You are receiving this because you were mentioned.Message ID: @.***>