lightningnetwork / lnd

Lightning Network Daemon ⚡️
MIT License
7.69k stars 2.08k forks source link

Expose more flexible key derivation to gRPC #4437

Closed michaelWuensch closed 1 year ago

michaelWuensch commented 4 years ago

Background

I want to implement LNURL - auth. The specification suggests to use the following derivation path: m/138'/long1/long2/long3/long4 And then sign a message with that key.

Full specification can be found here: https://github.com/btcontract/lnurl-rfc/blob/master/lnurl-auth.md

I think this key derivation is currently not possible to achieve with lnd over gRPC.

Furthermore if I want to follow the specification in LNURL - auth, I also need to be able to derive private keys. And lastly the signature is done on the sha256 hash of the message. To work with LNURL auth, it needs to sign the message directly.

michaelWuensch commented 4 years ago

After further research I learned that it is impossible to achieve interoperability with non LND wallets, as LND is the only one that uses aezeed so far. This means we can use a custom derivation path for LND which is already possible. (Although it would still be good to have a more flexible key derivation.)

The showstopper for LNURL-auth is that we cannot sign a message directly. I have created a separate issue for that now. #4474

hsjoberg commented 4 years ago

After further research I learned that it is impossible to achieve interoperability with non LND wallets, as LND is the only one that uses aezeed so far.

Yes, lnd uses aezseed instead of BIP32/HD wallet.
But I still think we should stay as close to the lnurl-auth as possible. As we cannot derive the full "BIP44" path, we have to violate the spec right now.

guggero commented 1 year ago

I think the parts that can be addressed here were addressed in #4474, so I'm going to close the issue. If you disagree, please re-open.