The Scoop on JoinMarket and Confidential Transactions
Today we’ll be taking a gander at JoinMarket and Confidential Transactions. I’ve known of these technologies for a while but have not used them nor do I plan to until the volume of utilization increases. As it stands, I don’t find a pressing need for obfuscating transaction history further than it already goes with BTC. I already generate new addresses each time I request payments. I can’t see why anyone other than a money launderer would desire a form of mixing service or transact. Now I know we can potentially bring pseudo-anonymity to perhaps full anonymity. Not to copy Jeff Goldblum, ‘We knew we could, but did we stop to think if we should?’ should be considered here.
I found out about Joinmarket (JM) a few weeks ago when lurking on the #bitcoin IRC chat room and overheard Belcher mentioning that he coauthored it. JM is a marketplace that utilizes Coinjoin transactions. Coinjoin is a means of anonymizing transactions by allowing different users to make joint payments to a given output address, thus obfuscating the origin sender. Join market is a command line tool designed to pool resources together in common to allow them to act as a peer to peer mixer, giving bitcoin holders a method to earn small fees from mixing in the process. Join market is live and in action using GitHub as a repo source. it appears to be a few python scripts and to connect potential markets via Tor-connected IRC chatrooms. Their IRC room revealed an order book. At the time I checked there are 178 market orders possible by 53 different counter parties.
The way it works is you can post your wallet and depth levels into the joinmarket for a fee of your choosing. In the picture, we see someone generous and freely offered BTC mixing in JM for just under 130 BTC. That means you could mix up to 130 BTC in a transaction and have it not linked to your addresses explicitly. It appears that the market is there for peer mixing if you’re interested. To acquire the client you simply git pull the repo using a command line terminal on your os (If using windows you should download a gitbash interpreter.)
Confidential transactions (CT) is an entire system and concept, proposed by Greg Maxwell. Also known as Confidential Values, CT removes the amount 8-Byte amount field in bitcoin and instead implies the values instead through additively homomorphic commitments, using the commutative property of addition.
The added benefit of removing the amount field data would be the addition of a memo data contained instead — a feature that could enable the storage of invoice data or even a refund address — potentially. (Imagine a world where bitcoin payments possibilities to enable real-time shopping with a QR code scanner… and you had 2048 characters to indicate address phone number message and shipping speed all from an app using the tv and a phone).
However, all is not yet clear with CT. For with the concept alone using Petersen based commitments, it is very easy to overflow data – overflowing data out of range will cause the value to go negative. Though to further complicate matters, it appears that the way to solve this overflow issue is with an assertion of a boolean based container system, specifically combining Petersen commits with ring signatures. Using this method, we break down the private key into a corresponding 33-bit key container-space that would either resolve as a 0 (valid and spendable) or a not using the inferred reference methodology explained above.
The final closing of Maxwell’s paper suggests that Confidential Values work implemented in tandem with Segregated Witness and can potentially solve issues with tracking amounts in the Coinjoin and mainly join market’s implementation. There was even recent discussion of how CT could implement via a soft-forking change, on the Bitcoin Mailing List. It will be very interesting to see if either of these efforts gain more traction throughout the year through usage or discussion amongst the community, though they take time and review. I’m going to start the rumor that if we can’t soft-fork implement CT into main-net BTC, then it’s going into Blockstream Elements.
What are your thoughts? Would you use JoinMarket as a service, why are why not? Do you consider CT to be too crazy difficult and/or unnecessary to implement? Why or why not?
Photo Credits: Frankenmint