With HEAD on the 0.93-bugfix branch, we an interesting error in a TXSIGCOLLECT generated by armoryd. If there was a change output, the change output was an old-style multisig script, rather than the new p2sh style. For example, this testnet transaction, and its decomposition:
python armoryd.py --testnet createlockboxustxtoaddress msj42CCGruhRsFrGATiUuh25dtxYtnpbTx 0.00001
=====TXSIGCOLLECT-7wVXpYd2======================================
AQAAAAsRCQcAAAAAAf0yAwEAAAALEQkHFlKTRmxBEIR+RS7+7Bn3BHT1Knrc7z9X
teo0PybMXhwBAAAA4AEAAAABMHL7+n0jQTpbJEMuaGIWgk8bPIQAqVqLIktH9Rhs
kq8AAAAAa0gwRQIhAIUOb2E0rRgyH1GDH6M+zSe7Wywdn9SDh0WaF6G2iXJEAiBl
dLUvW2Y98+ts300DviZzHdCraWvvwdmGuiUGmgftlAEhAqrp5NO+YM0ZtRBP/fcB
YEfiGgenxpbnfmRzDfrd92UV/////wLEUNvCAQAAABl2qRQlHSkniekJJ+sqkMjw
HpdKOvMYx4isAKAlJgAAAAAXqRTGlTR6NgKKM+8ygdYqQaT0cskvWocAAAAA/QsB
U0EEcaqfnSuuk4Af7OcIjanGzUf2Y8Cx/gXLgv0q3URd5H1eczOHOCO3AWMYxTJ+
Lu651FCjylV3Kv1FLVsIQpDjWkEEzrop2hr5ag8u982mlQuL4rrrGt8SwNXv67cN
vKoIa6ApzYKgz7je32W4dgzycfK4pQRmu/C5M5xf/vvipBZTJkEE1aQrkOnXFWFV
Zhl5UwoJ0uEuJS70EE5WESdKeufisJQGVzB7EpvvlI6pMtLT8g4aBRPJ6E/YUPdD
7mai4zSNH0EE/+7DDlt2V/EvUiSearKC52inqCm3khOFCvYBId6kn9IwWYZ3kp5j
e+7ZYkv8+2JyH/fxSojZllIVIGUcmT4/QVSuAAD/////BEEEcaqfnSuuk4Af7OcI
janGzUf2Y8Cx/gXLgv0q3URd5H1eczOHOCO3AWMYxTJ+Lu651FCjylV3Kv1FLVsI
QpDjWgAAQQTOuinaGvlqDy73zaaVC4viuusa3xLA1e/rtw28qghroCnNgqDPuN7f
Zbh2DPJx8rilBGa78LkznF/+++KkFlMmAABBBNWkK5Dp1xVhVWYZeVMKCdLhLiUu
9BBOVhEnSnrn4rCUBlcwexKb75SOqTLS0/IOGgUTyehP2FD3Q+5mouM0jR8AAEEE
/+7DDlt2V/EvUiSearKC52inqCm3khOFCvYBId6kn9IwWYZ3kp5je+7ZYkv8+2Jy
H/fxSojZllIVIGUcmT4/QQAAAjQBAAAACxEJBxl2qRSF60f+mPNJBl1vBE4npKxU
Gvee4ois6AMAAAAAAAAAAAROT05FAAAA/SgBAQAAAAsRCQf9CwFTQQRxqp+dK66T
gB/s5wiNqcbNR/ZjwLH+BcuC/SrdRF3kfV5zM4c4I7cBYxjFMn4u7rnUUKPKVXcq
/UUtWwhCkONaQQTOuinaGvlqDy73zaaVC4viuusa3xLA1e/rtw28qghroCnNgqDP
uN7fZbh2DPJx8rilBGa78LkznF/+++KkFlMmQQTVpCuQ6dcVYVVmGXlTCgnS4S4l
LvQQTlYRJ0p65+KwlAZXMHsSm++Ujqky0tPyDhoFE8noT9hQ90PuZqLjNI0fQQT/
7sMOW3ZX8S9SJJ5qsoLnaKeoKbeSE4UK9gEh3qSf0jBZhneSnmN77tliS/z7YnIf
9/FKiNmWUhUgZRyZPj9BVK4IdSUmAAAAAAAABE5PTkUAAAA=
================================================================
...
'outputs': [ { 'addrstr': '',
'authdata': '',
'authmethod': 'NONE',
'contribid': '',
'contriblabel': '',
'hasaddrstr': False,
'ismultisig': True,
'isp2sh': False,
'magicbytes': '0b110907',
'p2shscript': '',
'scripttypeint': 3,
'scripttypestr': 'Multi-Signature',
'txoutscript': '53410471aa9f9d2bae93801fece7088da9c6cd47f663c0b1fe05cb82fd2add445de47d5e7333873823b7016318c5327e2eeeb9d450a3ca55772afd452d5b084290e35a4104ceba29da1af96a0f2ef7cda6950b8be2baeb1adf12c0d5efebb70dbcaa086ba029cd82a0cfb8dedf65b8760cf271f2b8a50466bbf0b9339c5ffefbe2a41653264104d5a42b90e9d7156155661979530a09d2e12e252ef4104e5611274a7ae7e2b0940657307b129bef948ea932d2d3f20e1a0513c9e84fd850f743ee66a2e3348d1f4104ffeec30e5b7657f12f52249e6ab282e768a7a829b79213850af60121dea49fd230598677929e637beed9624bfcfb62721ff7f14a88d996521520651c993e3f4154ae',
'txoutvalue': 639989000,
'version': 1,
'wltlocator': ''},
{ 'addrstr': 'msj42CCGruhRsFrGATiUuh25dtxYtnpbTx',
'authdata': '',
'authmethod': 'NONE',
'contribid': '',
'contriblabel': '',
'hasaddrstr': True,
'ismultisig': False,
'isp2sh': False,
'magicbytes': '0b110907',
'p2shscript': '',
'scripttypeint': 0,
'scripttypestr': 'Standard (PKH)',
'txoutscript': '76a91485eb47fe98f349065d6f044e27a4ac541af79ee288ac',
'txoutvalue': 1000,
'version': 1,
'wltlocator': ''}],
...
Transaction summary:
UnsignedTx ID: G2EhcNgd
Curr TxID : 348a4c33feaafb73076cd070bcc57b6f0049584883af00925ff5192b236030df
Version : 1
Lock Time : 0
Fee (BTC) : 0.0001
#Inputs : 1
1c5ecc26:1 / Multi-Signature* / (M=3, N=4) / 6.40000000 / PubSz: (65 65 65 65)
#Outputs : 2
Recip: [Multisig 3-of-4] (not P2SH but would be 2NBMEXDBRPPeu3SGBV1bw79JycNnz4dwR19) 6.39989 BTC
Recip: msj42CCGruhRsFrGATiUuh25dtxYtnpbTx 0.00001 BTC
Tx has 1 inputs:
(3-of-4) AllSigned: False AllSlots: _ _ _ _ ReqSorted: _ _ _
This patch fixes the problem and the change output is properly created as a p2sh script.
diff --git a/armoryd.py b/armoryd.py
index e8052f1..185a4a5 100644
--- a/armoryd.py
+++ b/armoryd.py
@@ -1962,7 +1962,7 @@ class Armory_Json_Rpc_Server(jsonrpc.JSONRPC):
self.convLBDictToList())
outputPairs.append( [ustxScr['Script'], totalChange] )
else:
- outputPairs.append( [lbox.binScript, totalChange] )
+ outputPairs.append( [script_to_p2sh_script(lbox.binScript), totalChange] )
random.shuffle(outputPairs)
# If this has nothing to do with lockboxes, we need to make sure