On Thu, Jun 14, 2012 at 9:22 AM, Gavin Andresen <gavinandresen@gmail.com> wrote:

I've been asked a couple of times: why doesn't signrawtx handle the
BIP 0010 (https://en.bitcoin.it/wiki/BIP_0010) transaction format?

I considered parsing/writing BIP 10 format for raw transactions, but
decided that reading/writing BIP 10 format should happen at a higher
level and not in the low-level RPC calls. So 'raw transactions' are
simply hex-encoded into JSON strings, and encoding/decoding them is
just a couple of lines of already-written-and-debugged code.


BIP 10 could use some improvement.  I created it for offline and multi-sig tx but there was no reception to it because no one was using offline or multi-sig tx at the time except for Armory (which only currently implements offline tx).  So I made something that fit my needs, and it has served its purpose well for me. But I also think it could be expanded and improved before there is wider adoption of it.  It's a little clunky and not very rigorous.

Elements of it that I'd really like to keep:

(1) Some aspects of human-readability -- even if regular users will never look at it, it should be possible for advanced users to manually copy&paste the data around and see what's going on in the transaction and what signatures are present.  I'm thinking of super-high-security situations where manual handling of such data may even be the norm.
(2) Should be compact -- I took the concept of ASCII-armoring from PGP/GPG, because, for the reason above, it's much easier and cleaner to view/select when copied inline.  If a random user accidentally runs across it, it will partially self-identify itself
(3) Includes all previous transactions so the device can verify transaction inputs without the blockchain.


Things that could be added:

-- It needs a BIP16 script entry (this was created for vanilla multi-sig before BIP 16 was created)
-- Comment lines
-- Version number
-- Use base58/64 encoding
-- Rigorous formatting spec
-- Binary representation
-- A better name than "Tx Distribution Proposal"

I'll be releasing the Beta version of Armory soon, and after that, I'll probably be thinking about a multi-signature support interface.  That would be a good time for me to tie in a better version of BIP 10 -- one that is compatible with other clients implementing the same thing.