Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ledger: Unable to sign non-standard derivation paths #702

Open
KayBeSee opened this issue Aug 9, 2023 · 0 comments
Open

Ledger: Unable to sign non-standard derivation paths #702

KayBeSee opened this issue Aug 9, 2023 · 0 comments

Comments

@KayBeSee
Copy link
Contributor

KayBeSee commented Aug 9, 2023

I am working on being able to sign BitGo multisig vaults with hardware wallets. BitGo uses non-standard derivation paths for their vaults where you provide a master xpub and then they derive addresses from m/0/0/<10;11>/**. (see docs).

In hwilib/devices/ledger_bitcoin/wallet.py#L117, the key_placeholder_suffix is hardcoded to only support /**.

Is there a way to make the MultisigWallet class support additional arguments for a custom key_placeholder_suffix?

I think you could take the values of the bip32derivation paths in the global data and then compare/substring them and pass the value into the MultisigWallet constructor.

It would probably happen somewhere around hwilib/devices/ledger.py#L265-L291

Alternatively, this functionality could be supported by decoupling the register_wallet functionality from the sign_tx functionality, which would allow for a wallet descriptor to be explicitly passed in which would allow the transaction to be signed when presented (related to #647)

cc @bigspider

Example PSBT
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant