Is the new format stable now? For how long will the current format be supported?
Yes, we've done 5-way simulfunding and 7-of-7 multi-sig spending with this format and we plan to move forward with our release in its current form. We expect that in the future, a variety of multi-sig services will standardize these formats to allow interoperability, but many such services are scrambling to get
anything functional and standardizing would inhibit the design process. So far, we see no reason that we will have to change the format at all, until that standardization occurs -- in which case everyone will be changing. (much like how Armory and Electrum had their own deterministic wallet algorithms, then BIP32 was standardized and now everyone is moving torwards that).
From a glance, I'm not sure that you should be using .decode('utf-8') when doing the serializations. This is binary data, not unicode. Construct all pieces as raw binary and convert to hex. There shouldn't be any utf-8 calls in it.
binascii.hexlify() returns ASCII-encoded hex only, at least in Python 3:
Python 3.4.1 (default, May 19 2014, 17:23:49)
[GCC 4.9.0 20140507 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import binascii
>>> foo = binascii.hexlify(b'\x00')
>>> foo
b'00'
>>>
>>> foo.decode('utf-8')
'00'
>>>
Why do you need the last line? Wouldn't you end up with some of the binary chars being converted to ASCII/unicode characters? My apologies for being naive about python3 ... I'm not actually that familiar with it, beyond the fact that if I were to rewrite Armory from scratch, I'd use python3 from the start.