Thursday, August 1, 2013

Announcing a proof of concept for libtxchain

In this blog's inaugural post, I'd like to announce the release of the proof-of-concept version of libtxchain-java.  I first described the original idea in a post to the Bitcoin forum and decided to write the proof of concept after encouragement by some of the core developers.  I've also created a GitHub repository.

I'm starting this blog for a number of reasons.  Expect to see lots of technical tidbits about all things Bitcoin, updates about the development process of this new library, and thoughts about events happening in the Bitcoin market.  This post, though, is about what libtxchain-java is and why the technology it demonstrates matters.

Since blockchain space is a finite resource in Bitcoin-like systems, Mike Hearn has described the concept of "payment channels," which are now implemented in bitcoinj.  This idea allows two parties to establish a contract with a special Bitcoin transaction, and then negotiate which party gets how much of that contract as time goes on.  With such a system, you can do things like pay a wireless access point for bandwidth one megabyte at a time and only use a couple of transactions, as each transaction can take minutes if not hours to confirm.

The libtxchain-java implementation goes a step further by supporting minimal-trust chaining of payment channels.  Thus, instead of creating a connection to each wireless AP through which you want to connect to the Internet, waiting for 10-60 minutes each time, you can instead create a connection to a virtual ISP which has similar connections to lots of APs.  You pay your ISP, which passes the payment on to the AP you're using at any particular time.  You have only one setup transaction, rather than one per AP.  The payments are instant, and almost trust-free (you have to trust, though you can verify by way of reputation, that the other party is sane and not out to destroy you at its own expense).  Other than destroying your own money, there's not a lot of room to cheat when the incentives are set up correctly.  This can instantly create a new business model for small ISPs and fund the operation of meshnets.

The whole point is to allow payments (and micropayments) to occur from anyone, to anyone else, instantly and in a decentralized fashion.  Everything from instant vending machine purchases to paying for Wi-Fi and having constant Internet/VoIP access without need for a cell phone plan, from paying for a protein folding simulation on a peer-to-peer computing resource market to paying for an automatic summary, with full analysis, of all the known research about the genetic factors that cause a certain type of tumor, becomes possible with Bitcoin.

Here are just a few reasons many Bitcoiners would think this is important.  First, its adoption will instantly create a trustless investment use for bitcoins other than hoarding:  running a node and charging transit fees.  This will fund full network nodes without the necessity of mining.  The additional demand for bitcoins to commit to the payment channels will immediately reduce the amount available for sale, driving the price up.  It will be possible to have exchanges which don't require depositing money with the server in order to trade because they act as minimal-trust intermediaries - and it will even be possible to send bitcoins instantly between exchanges for arbitrage.  Adoption will soar due to availability of easy, nearly-free, instant micropayments from anyone to anyone else - no waiting for 10-60 minutes for a confirmation!

Meshnets can develop which are aware of Bitcoin - meshnet virtual ISPs will act as chained payment intermediary nodes while local meshnet hubs can act as Bitcoin nodes for local merchants and consumers.  This will make Bitcoin itself more resilient in the event of Internet outages in rural communities or disasters, natural or man-made.

Even governments and banks will love this technology because it can allow a formal economy to develop within Bitcoin, while civil libertarians will be more likely to use an informal, privacy-enhancing version of the network which doesn't leak transaction details to the block chain.  I plan on developing this code into a non-privacy-intrusive, though not necessarily automatically mixing, public domain version.  I'm also exploring the possibility of offering AML compliance features commercially for businesses in jurisdictions where running such an intermediary node is a regulated activity.

My wife asked me if I had described to the Interwebs why this is important to me, and suggested doing so.  To me, what's important is not the abundance of profit opportunities it offers to Bitcoin owners, but what this technology makes possible:  a distributed exchange in computing resources and information.  Here's what I mean, and why it matters.

By a distributed exchange, I mean that it will be possible to instantly, using a fully decentralized peer-to-peer network, make micropayments in exchange for competitively-provided storage, processing power, bandwidth (anonymous or not), or information/analysis, which could be just a result - possibly cached - of the use of the above-named computing resources.

This is why it matters:  when there's an efficient, transparent, distributed peer-to-peer market in these things, they will become commoditized even as they become more specialized - like a computer division of labor.  Think of it:  mining rigs with GPUs and FPGAs turned to using that computing power and electricity to fold proteins, mine data, design experiments and analyze their results because they get paid for it.  A way to profit from computing equipment and electricity usage that benefits humanity rather than solving cryptographic hashes, and still adds to the value of the Bitcoin economy.  A way to make money by installing and operating meshnet components, and from making meshnet communication more efficient and/or private.

The commoditization of computing power for rent will result in technological progress for many applications.  Maybe people will be willing to donate money toward cures for certain diseases that affect them, and use the resources bought by that money to further research into a cure.  Maybe people will be interested in learning about their ancestry, and will be willing to buy automated searching and summarization services.  Maybe some entrepreneurs will build ASICs that make these things more efficient, or develop really good caching and query algorithms that make it cheaper to store the knowledge gleaned from the above uses of computing resources and use that knowledge to reply to other queries.  As information itself becomes commoditized, automated analysis of unstructured data into structured information and knowledge will become cheaper and more efficient.  Even a distributed system for selling reputation records, like a distributed credit report system for self-regulating markets, may develop.

In the end, this will result in a fully distributed, global meshnet that can stand up to outages and enable efficient commerce and much essential communication (maybe a peer-to-peer emergency broadcast system a-la BitMessage but meant for a meshnet?).  It will result in a global network of computing power for rent on demand, living anywhere from a tinkerer's basement on a solar-powered farm all the way up to giant data centers in major cities, focused on the problems deemed most important by the global market:  finding cures to diseases and solutions to environmental problems, increasing our understanding of the universe, constantly learning from us and teaching us in return, and allowing us to have a more resilient, sustainable society.

Such a network could even be considered a form of limited, distributed artificial intelligence.  Rather than a self-aware and separate intelligence, it would be a humanity-aware intelligence, knowledge, information, and learning market.  The network would be imbued with the intelligence of the human race and dedicated to its progress.