Post
Topic
Board Armory
Re: Armory 0.93 testing release! (with 0.05 BTC bug bounty)
by
STRML
on 30/01/2015, 13:43:51 UTC
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:

Code:
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.

Code:
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