signature – Looking for Elegant resolution to PSBT Multi-sig Signing

signature – Looking for Elegant resolution to PSBT Multi-sig Signing


I’m making an attempt to signal an incoming PSBT in customized software program I am constructing and I am having hassle understanding how the signing technique of a PSBT really works. I’ve a Trezor the place the xPub I used within the 2-of-3 multi-sig setup is definitely the kid of the principle key of the Trezor (for instance’s sake, say the xPub is positioned at m/26H).

From my understanding, I can use HWI to signal the PSBT, however I do not know what info is critical for me to supply and what the Trezor assumes. I believe that the Trezor fetches the personal key for every of the inputs based mostly on the derivation path within the decoded PSBT, however I wish to substitute it with the right path for my program, Ex: If the PSBT exhibits m/44/0/0/1/0, I would like to exchange it with m/26H/44/0/0/1/0 as a result of keep in mind; my xPub isn’t from the seed however fairly considered one of its kids. Additionally, I imagine for multi-sig signing, I would like to supply the opposite public keys used within the transaction in an effort to create the subsequent script, however is not that included within the PSBT? If not, is it even potential for me to get the general public keys of the opposite 2 wallets if all I’ve are their xPubs? (Would not hardened derivation stop me from discovering little one public keys due to this fact if the PSBT makes use of keys at, say, path m/44H/0H/0H/1/0, I can not generate the keys?)​

Total, my aim is to easily signal a PSBT with my restoration key that exists in my Trezor. And, here is all the data I’ve:

  • PSBT (created and signed by one key in BlueWallet)

  • Derivation path from seed xPub to the pockets xPub (instance: m/26H will get the xPub of the restoration pockets)

  • The opposite two pockets xPubs

Let me know if I must make any further clarifications.
Thanks.

Leave a Reply

Your email address will not be published. Required fields are marked *