Thanks for sharing an implementation of the Coinjoin protocol! I would've loved to find a README file in your project explaining how the mix is carried out. It is really hard to deduce it just by looking at the source. The specification in gmaxwell's post, while very insightful, is too high level to apply formal methods of validation. I am glad you have an implementation, but I think we all will benefit with a low level specification of what coinjoin.py does.
I mean, something like what I've done in
this post.