And one more feature before the Amsterdam conference!
Simulfunding! This one will probably need some documentation, though. This is actually very similar to manual CoinJoin, but right now limited to sending to a single lockbox. The idea is that certain contracts/escrow will require multiple people to fund a lockbox at the same time, and there was no clean way to do it before I implemented this.
- Create the Lockbox: Pick an organizer. All parties send a public key to the organizer. He merges them into a lockbox, and sends the LOCKBOX block out to everyone to import into their lockbox manager
- Simulfunding: All parties that are funding the lockbox will create a "promissory note". This is a list of inputs, a change address, along with how much you are committing to funding and fee. The organizer collects and merges all PROMISSORY blocks into a single transaction. Its SIGCOLLECT block is passed around for signing, just like a regular lockbox-spend
- Spend from Lockbox: One party creates the proposed spend from the lockbox, and sends the SIGCOLLET block to everyone for signing.
Btw, on the latest devel branch, merging of signatures works, so you don't have to exactly circulate it anymore: just send it out to everyone and you can "Import/Merge" them into the "Review & Sign" window -- it will recognize you loaded the same tx and merge the signatures into the one already loaded (before, you had to sign it and pass it to the next person to accumulate sigs)
There's still some quirks with simulfunding, but it does work!
P.S. -- And
of course everything works with offline computers
All the messages/blocks that are passed between devices assume everything is offline. You can do simulfunding between N offline devices, and spend from a lockbox between N offline devices. I'm sure there are some services claiming to do multisig, but they don't have that kind of flexibility!
The simulfunding options menu. All users create promissory notes. One person merges them into a tx. Then all funders sign it.
Each user selects a source wallet and destination lockbox to create a promissory note. Then the organizer merges them into a funding transaction to be signed by all funders (right now no labels are passed through, so you only see how many participants there are and how much they are contributing, but not who is who...)
Once the promissory notes are collected, the parties have to sign. This works identically to spend-from-lockbox (it's the same dialog). Note that it only shows you the net value difference for each wallet, even though each "funder" is providing both inputs and change. Armory figures it out.
As you can see, the final transaction has three different input wallets, and change back to those wallets as well.