bithyve / bitcoin-keeper

Secure today, plan for tomorrow. BIP 85 hot wallets, buy bitcoin, tor privacy.
https://bitcoinkeeper.app
MIT License
37 stars 12 forks source link

Registration: Wallet Policy Descriptor #5000

Open Parsh opened 4 weeks ago

Parsh commented 4 weeks ago

Task Description Currently, the desktop app doesn't support the registration of an output descriptor for Ledger, BitBox etc.

We'll require this functionality in order to register the wallet policy for the upcoming miniscript-based Assisted Vault feature.

ben-kaufman commented 4 weeks ago

As far as I'm aware, this is done by HWI on the first time display address or sign tx is called for the multisig, and the call for registration is not exposed independently by HWI.

Parsh commented 4 weeks ago

I wasn't able to register the wallet policy descriptor during signing w/ Ledger, however, I can see that the display_multisig_address has a parameter where a descriptor can be passed. Shall we therefore expose this method via our desktop app?

ben-kaufman commented 4 weeks ago

Well, we should expose the display address regardless, but can Also utilize it for the registration

Parsh commented 4 weeks ago

Upon going through the display_multisig_address method, it doesn't feel like it is built to consume a wallet policy descriptor like we've in case of Assisted Vault:

wsh(andor(pk([7569FB6F/48h/0h/0h/2h]xpub6FCu8GLu8erohpwprL56WV5PDyHYuNkaHJkNUZ6sHbLMzc8aC3htp8xuxFp2cRBXZbYEQnK6nxwc8FGSRKDp9itjS9r1JzmEgVUrBRCY4ZZ/<0;1>/*),or_i(c:or_i(pk_h([D3581891/48h/0h/0h/2h]xpub6F9vndtyzVd55uZrJxr2YU4JAX4tPLUGviu54b26jjaxx4VZ41mnmLvCw6HoMJL9wqXCgG63PKzpTJdiwuqJPKBy3rbSUF5uVH8pVmeSW68/<0;1>/*),pk_h([32a79517/48h/0h/0h/2h]xpub6E2yYbUi6EGwwWdG8vTAnogCJxYL9UBvzzbWXMWjMbfn17BewsTHj52LgRSZJJmYVCiDisA5v73vFEUQ2RFF833xXbwwJASfcd3R6GGCESY/<0;1>/*)),after(856722)),and_v(and_v(v:pk([D3581891/48h/0h/0h/2h]xpub6F9vndtyzVd55uZrJxr2YU4JAX4tPLUGviu54b26jjaxx4VZ41mnmLvCw6HoMJL9wqXCgG63PKzpTJdiwuqJPKBy3rbSUF5uVH8pVmeSW68/<2;3>/*),v:pk([32a79517/48h/0h/0h/2h]xpub6E2yYbUi6EGwwWdG8vTAnogCJxYL9UBvzzbWXMWjMbfn17BewsTHj52LgRSZJJmYVCiDisA5v73vFEUQ2RFF833xXbwwJASfcd3R6GGCESY/<2;3>/*)),after(856725))))

If it can then we are good to go.

Parsh commented 4 weeks ago

Liana is using the following to interface w/ hardware wallets that currently support miniscript: https://github.com/wizardsardine/async-hwi

ben-kaufman commented 3 days ago

This is an issue only for Ledger I think, not BitBox02. Since Ledger only keeps the hmac from the registration, which we'll need to pass it when we want to use a registered wallet. However HWI doesn't support it currently, so some changes will be required to HWI to support that.