Description
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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