OutCast3k / coinbin

Javascript Bitcoin Wallet. Supports Multisig, Stealth, HD, SegWit, Bech32, Time Locked Addresses, RBF and more!
https://coinb.in/
MIT License
908 stars 624 forks source link

Unable to sign multisig P2WPKH(P2MS) or P2SH(P2WPKH(P2MS)) #166

Closed coinflippa closed 6 years ago

coinflippa commented 6 years ago

Step to reproduce:

  1. Create a P2WPKH or P2SH(P2WPKH) multisig address use bitcoinjs-lib
  2. Fund address
  3. Create transaction and sign with 1 private key
  4. Build transaction incomplete

Example output from P2SH(P2WPKH(P2MS))

020000000001013f1a2bb908f5ec5996a272dd3c8eaa5ced03120cffe9bdca727b82f5e14f38ff01000000232200202255099b3badf765cfc7ee882a46f4572b2b9a14f18acc768d6e8fce3790acb2ffffffff01e00f970000000000160014f4f7a919e1cf2864e8e9c54925583475ed1cef6a05004830450221008dfa97bf05da0307f6484e79be7cbc1b3c48234fdc1f0abf0ea93199cfcfa962022074ecfac469b3377d1dd1d87cd2d9afd98fcbc0d33864d54daf85884a7fefd43501000069522103421bdf5825c26fa96fe1402a49df9901f31973dc9fab189d9ff4d8af853d0c4c21022b1e2fcfe441df558097e7300e4c23a5f459f3ea45c8828962c589fc88d435432102f1e2e15743951c4465ea76fac762693aa509161f84dbaa1e4a2a15acaf3ab4c053ae00000000

Paste output into coinb.in verify. Decoded successfully but Signed icon is X. Segwit true.

Paste output into coinb.in sign. Paste private key. Click sign. Output is below.

020000000001013f1a2bb908f5ec5996a272dd3c8eaa5ced03120cffe9bdca727b82f5e14f38ff01000000232200202255099b3badf765cfc7ee882a46f4572b2b9a14f18acc768d6e8fce3790acb2ffffffff01e00f970000000000160014f4f7a919e1cf2864e8e9c54925583475ed1cef6a05004830450221008dfa97bf05da0307f6484e79be7cbc1b3c48234fdc1f0abf0ea93199cfcfa962022074ecfac469b3377d1dd1d87cd2d9afd98fcbc0d33864d54daf85884a7fefd43501000069522103421bdf5825c26fa96fe1402a49df9901f31973dc9fab189d9ff4d8af853d0c4c21022b1e2fcfe441df558097e7300e4c23a5f459f3ea45c8828962c589fc88d435432102f1e2e15743951c4465ea76fac762693aa509161f84dbaa1e4a2a15acaf3ab4c053ae00000000

Attempt to broadcast:

error: {'code': 1, 'message': 'the transaction was rejected by network rules.\n\n64: non-mandatory-script-verify-flag (Dummy CHECKMULTISIG argument must be zero)\n[020000000001013f1a2bb908f5ec5996a272dd3c8eaa5ced03120cffe9bdca727b82f5e14f38ff01000000232200202255099b3badf76...

Similar error for P2WPKH(P2MS)

dabura667 commented 6 years ago

second signature is not present.

that's why it failed.

coinflippa commented 6 years ago

I signed it once in my code and again with coinbin.

I may have pasted the wrong code.

Before coinbin

020000000001013f1a2bb908f5ec5996a272dd3c8eaa5ced03120cffe9bdca727b82f5e14f38ff01000000232200202255099b3badf765cfc7ee882a46f4572b2b9a14f18acc768d6e8fce3790acb2ffffffff01e00f970000000000160014f4f7a919e1cf2864e8e9c54925583475ed1cef6a05004830450221008dfa97bf05da0307f6484e79be7cbc1b3c48234fdc1f0abf0ea93199cfcfa962022074ecfac469b3377d1dd1d87cd2d9afd98fcbc0d33864d54daf85884a7fefd43501000069522103421bdf5825c26fa96fe1402a49df9901f31973dc9fab189d9ff4d8af853d0c4c21022b1e2fcfe441df558097e7300e4c23a5f459f3ea45c8828962c589fc88d435432102f1e2e15743951c4465ea76fac762693aa509161f84dbaa1e4a2a15acaf3ab4c053ae00000000

After coinbin

020000000001013f1a2bb908f5ec5996a272dd3c8eaa5ced03120cffe9bdca727b82f5e14f38ff01000000232200202255099b3badf765cfc7ee882a46f4572b2b9a14f18acc768d6e8fce3790acb2ffffffff01e00f970000000000160014f4f7a919e1cf2864e8e9c54925583475ed1cef6a05004830450221008dfa97bf05da0307f6484e79be7cbc1b3c48234fdc1f0abf0ea93199cfcfa962022074ecfac469b3377d1dd1d87cd2d9afd98fcbc0d33864d54daf85884a7fefd43501000069522103421bdf5825c26fa96fe1402a49df9901f31973dc9fab189d9ff4d8af853d0c4c21022b1e2fcfe441df558097e7300e4c23a5f459f3ea45c8828962c589fc88d435432102f1e2e15743951c4465ea76fac762693aa509161f84dbaa1e4a2a15acaf3ab4c053ae00000000

Neither broadcast. Key is cSK6eYv2up1ZHBwv6VB4ESmsTXNYmUwg48KHHBG1qNgt7TRmfHkp

dabura667 commented 6 years ago

oh, I overlooked the bitcoinjs-lib part

coinbin and bitcoinjs-lib are incompatible.