vbuterin / pybitcointools

SImple, common-sense Bitcoin-themed Python ECC library
1.28k stars 857 forks source link

How to apply_multisignatures to a tx with more than one input #66

Closed reiven closed 9 years ago

reiven commented 9 years ago

Hi, i have a rawtransaction with two inputs and two outputs , but i cannot get a fully signed transaction

rawtx = 01000000027952018283a70cd1de352494063ccd252ebb11ab9977ba97682d5587e950ad600000000000ffffffff2581265adfc01d079452bcdf8842deb5fb143c9da9a1888833e2c52d391de0d70000000000ffffffff02c0c62d000000000017a914a4c213e36f42e3f6d21513a42830159ee52912e78740420f000000000017a914c41f74428cc7a0b7420a64af0793a158db93c35d8700000000
sign1 = ['3046022100ff3fa484b39dc5449722668a62a08a3c71c4f8ec8639a8da468534226c75ea600221009682fed1598016582208dfdaec430afee364d8d8355321568ce900a48800e87c01','3046022100d5e151b6c97580d112b9d0b401644fa86d472d681541b0914b5a6ff75692e457022100d5fc829689e8be7b314b6b16ee16afcd91627a4b1fa957838591ad1873a6fb5e01']
sign2 = ['3046022100c68beb2e026fbde6a2dc7e311fb2d9a84b391b02932288002b23d240e00212280221008709e68c5fd4e254609ac883baa6be338a119fc560caa7d5f8676820cb55f27101', '3045022100f686d3830e24119b36cf3627b53df14bcb1971bb7f4ce85c10a599867d4177c70220651c453ccc22ab0f4cf0a08a23761abef1246d750a27caf285fefe92ef9cedba01']
rawtx2 = apply_multisignatures(rawtx, 0, redeem, [sign1[0], sign2[0]])
rawtx3 = apply_multisignatures(rawtx2, 1, redeem, [sign1[1], sign2[1]])

final hash: '01000000027952018283a70cd1de352494063ccd252ebb11ab9977ba97682d5587e950ad6000000000fd1e0100493046022100ff3fa484b39dc5449722668a62a08a3c71c4f8ec8639a8da468534226c75ea600221009682fed1598016582208dfdaec430afee364d8d8355321568ce900a48800e87c01493046022100c68beb2e026fbde6a2dc7e311fb2d9a84b391b02932288002b23d240e00212280221008709e68c5fd4e254609ac883baa6be338a119fc560caa7d5f8676820cb55f271014c875241045a6430c5b44755a3b7adcc3dd6d542e3ab71e0cf31fc92fbe027368d9c439411016ef6067a548a6235de76117c720ddaf1d776f7869b9df15b61b5f330f1bda441045240868d326f943acd099196bf55cb8800ce10ed5861ba4ae7687ef5d0f9b68544e73a0002c34cce90ce89915c3801eccd12bceb6a801a7a3d8902baf65a0e9252aeffffffff2581265adfc01d079452bcdf8842deb5fb143c9da9a1888833e2c52d391de0d700000000fd1d0100493046022100d5e151b6c97580d112b9d0b401644fa86d472d681541b0914b5a6ff75692e457022100d5fc829689e8be7b314b6b16ee16afcd91627a4b1fa957838591ad1873a6fb5e01483045022100f686d3830e24119b36cf3627b53df14bcb1971bb7f4ce85c10a599867d4177c70220651c453ccc22ab0f4cf0a08a23761abef1246d750a27caf285fefe92ef9cedba014c875241045a6430c5b44755a3b7adcc3dd6d542e3ab71e0cf31fc92fbe027368d9c439411016ef6067a548a6235de76117c720ddaf1d776f7869b9df15b61b5f330f1bda441045240868d326f943acd099196bf55cb8800ce10ed5861ba4ae7687ef5d0f9b68544e73a0002c34cce90ce89915c3801eccd12bceb6a801a7a3d8902baf65a0e9252aeffffffff02c0c62d000000000017a914a4c213e36f42e3f6d21513a42830159ee52912e78740420f000000000017a914c41f74428cc7a0b7420a64af0793a158db93c35d8700000000'

but on rcpclient, if i do a signrawtransaction of that hash, it keeps saying 'complete': False

What i'm doing wrong, or there is any missing step to do this?

Additional information: the address is a 2/2 multisig on tesnet

Thanks

themighty1 commented 9 years ago

iirc a testnet multsig address has a special signature which pybitcointools dont support , yet Edit: no, sorry, that was bip32 magic bytes. ignore this.

reiven commented 9 years ago

Thats weird, because i was able to sign transactions with one input!

reiven commented 9 years ago

My fault, i was using an invalid input tx Just to let you know: everything is working fine on testnet with pybitcointools!