zkSNACKs / zIPs

zkSNACKs' Improvement Proposals
37 stars 15 forks source link

Multi Signature with PSBT #60

Open MaxHillebrand opened 5 years ago

MaxHillebrand commented 5 years ago

Problem

If one key is secure, then three keys must be thrice as secure. Right. Right? Anyway. Multi Signature is one of the most powerful scripts in Bitcoin, a premiere wallet should support such a brilliant feature.

Solution

This might be a rather complex change, however, I'd say that PSBT is a very good tool to accomplish the task! Wasabi already utilizes HWI, and I think it includes the ability to generate an unsigned multisig PSBT. It might be more difficult to implement the signing of such multisig transactions...

Cold Card [ping @peter-conalgo] and Wasabi [ping @nopara73] are already a great combination, and it will be unbelievable when Wasabi can support the software part of the air-gapped multisig. I'll investigate the details of what must be included in the implementation, but I think it's "only" to specify the multisig input and outputs, plus all the PSBT details...

We can use the ColdCard Electrum branch as code reference.

Consideration

Schnorr MuSig will fundamentally change the concept of multi signatures, and since it will be upgraded to the protocol in #twoweeks, it might be justified to wait until this and focus developer time elsewhere... But I think that supporting script based multisig is useful already, especially considering PSBT.

And I due think it's good to start with the comparatively easy setup of the hardware multisig, and later working on hot wallet.

lontivero commented 5 years ago

@MaxHillebrand we cannot have multisig in wasabi because the keys discovery is based on our compact filters and they only know about segwit p2wpkh scripts. If tomorrow MuSig is implemented as a p2wpkh script (i think that's the idea) then it will be easy to implement.

MaxHillebrand commented 5 years ago

I did not know that, but I thought that BIP158 also includes p2wsh transactions? For Schnorr MuSig there will be a new SegWit v1 that includes a tapscript spending condition.