Creeping centralization can come in many forms – are the Web Application Server wars a lesson from the past?!
First some history of the IT industry (you can skip this bit if you just want the meat…)
Travel back in time with me to the late nineties…. I started my career during the Web Application Server wars. The web was taking off in the late nineties and companies like WebLogic (quickly acquired by BEA) spotted a need in the marked for a Web Application Server.
They were solving an obvious problem: it was a real pain to write proper applications. Sure: you could write HTML and run it on Apache. And you could use the CGI interface to have scripts run to generate basic dynamic content. But it was painful to do anything more sophisticated
If you were a bank that wanted to build an online banking service that interfaced with your core banking system, it needed a huge amount of effort and care… and you were wholly responsible for figuring out how to manage session state, failover, transactionality and everything else. And what we quickly found was that everybody needed a similar set of code “middleware” services – and were building for themselves each time.
And one solution to this problem was the web application server. This was a server, usually written in Java, that provided a defined set of APIs and an execution environment for web applications. You could think of it as having two faces: one face spoke “web” – it sent and received HTTP. The other face spoke “enterprise” – it provided a set of APIs, SLAs and common behaviours that app developers could rely on to build their applications.
Products like BEA WebLogic, as it became, Netscape Enterprise Server, IBM WebSphere Application Server and Microsoft’s Internet Information Services platform were all designed to solve this problem… and it became a billion-dollar industry.
Sure – somebody still had to buy, configure, install and manage these platforms (usually in corporate datacenters, running on expensive hardware) but at least there was now a clear separation: and a division of labour emerged: J2EE developers, App Server administrators, infrastructure engineers and so on.
Today is different but not that different!
Fast-forward to today and the world is different: we take a rich execution environment for granted and the state-of-the-art consists of cloud offerings that protect the developer from worrying about anything apart from their code: infrastructure, connectivity, bandwidth, middleware configuration is all delegated to the platform. (IBM’s BlueMix is a recent example of such a service)
But the insight is the same: in any field, we see lower levels of the stack become standardized and commoditized. A small number of specialized players, with economies of scale and benefitting from experience-curve effects, begin to dominate.
So I’ve often wondered if we’ll see something similar in the Bitcoin space. Are there any parallels we can draw and, if so, what can we learn from them?
Can we see any parallels with Bitcoin infrastructure?
Look back a few years and anybody wanting to build a product or service on Bitcoin had to do it all for themselves.
For example, it seems that Mt.Gox wrote their own custom implementation of the Bitcoin protocol – which is not, perhaps, surprising given the nature of its business and the maturity of the ecosystem when it was founded. I guess that’s similar to people who wrote their own HTTP servers or implemented custom schemes for producing dynamic content back in the nineties.
More recently, APIs like BitcoinJ and platforms like BitsOfProof have emerged as credible abstraction layers upon which interesting products and services can be built. In both cases, developers typically run and maintain their own instance(s) of Bitcoinj or BitsOfProof, etc. So one could argue this is a parallel to the on-premise app-server days of the web.
So it’s tempting to ask… are the parallels with the web appropriate? If so, what happens if cloud-based services for Bitcoin developers emerge?
And, of course, we don’t need to imagine. These services already exist. chain.com is one such example.
Chain.com is a cloud-based Bitcoin API for developers. From their website, it appears that they maintain a set of Bitcoin nodes and ensure they are well-run and well-connected, perhaps in the way that Amazon or IBM might maintain app servers, infrastructure, routers and connectivity to major peering points on the internet.
And developers simply write their Bitcoin product or service in a language of their choice, calling the Chain APIs as and when they need to interface with the Bitcoin network. One can imagine that coding against Chain.com makes it an order of magnitude more easy to get a new Bitcoin company up and running. You don’t need to worry about any of the infrastructure detail: Bitcoin is abstracted away to a set of easy-to-use, well-documented, high-level APIs.
You might hardly even know you were even using Bitcoin!
And that’s a really important subtlety: if you are not running your own Bitcoin nodes, how do you know the information your service provider is giving you is accurate? How do you know you’re connected to the “real” network and seeing the real blockchain and that your transactions are making it across the network?
Now I’m sure the chain.com team are hugely competent and ethical people. This post is emphatically not a criticism of them or their service. But one does need to be open-eyed about the tradeoffs one is making as an engineer. And one approach app developers could take might simply be to maintain their own independent copy of Bitcoin core to act as a monitor/sentinel. It’s probably not a show-stopper.
And I can see this sort of service being immensely popular: it is a lot of effort to install and maintain Bitcoin network infrastructure… keeping it patched, making sure you really are well-connected to the Bitcoin network and so on… and if your business has latency dependencies (mining? Exchanges?) then you also need to worry about making sure your nodes are “close” to other major nodes. And so on and so forth.
Figuring out how to do this sort of stuff well has good scale effects and there will be big learning/experience curves. Just as cloud vendors can run web infrastructure better and cheaper than most companies could do themselves, we should probably expect to see small startups outsourcing their Bitcoin network integration to firms like chain.com – and maybe even hosting providers who include Bitcoin APIs and network abstraction as a core part of their service offering.
So, leaving aside the concerns this might raise around decentralization and ask yourself:
if a cloud-based Bitcoin API/application platform were to become really popular, who is best placed to deliver it?
Until a few weeks ago, I would have said I expected more firms like chain.com to be founded over the coming months and for a handful of them to gain critical mass and become the dominant application platform players of the future.
And then CoinTerra bought BitsOfProof
It was one of those lightbulb moments for me when I heard about it. Of course! How Obvious!
It makes perfect sense. Think about the capabilities and advantages that big mining firms have that they could use to build a powerful hosting proposition for developers:
- Hosting in low-cost locations
- They already maintain massive farms of servers, usually in locations with cheap power. They could easily offer colocation to their clients
- Massive hashing power
- They could commit SLAs to application clients that nobody else could make – “At this SLA, we will guarantee your transactions make it into a block within x hours”, perhaps?
- Optimised network connectivity
- The mining firms must surely have deep knowledge of the Bitcoin network topology so I suspect they could make promises about transaction propagation times and other time-critical requirements that would measure to some clients – “You will see transactions from other people faster on our platform than if you ran your own node”, perhaps?
- 100% Virgin coins on tap
- Mining companies can offer businesses who use their APIs access to freshly-minted coins… no taint, no need to ask where they came from
- … and I’m sure there are more
Many observers, myself included, have tended to ignore mining, regarding it as an infrastructure function, with the main debate being around the threat of concentration of hashing power. What I missed until now is that a well-run mining platform is also a phenomenally powerful platform from which to build up the stack to middleware/APIs and beyond.
So the question for me is: what happens if (when?) one of the mining firms offers a hosted application environment for Bitcoin companies with a really easy-to-use abstraction API over the Bitcoin network? Commentators such as Tim Swanson have written extensively about the incentive structure of Bitcoin mining but I’ve not yet seen an analysis that thinks through the implications of vertical integration of the sort I outline here – and what it would mean for any security analysis of the system as a whole.
If anybody’s aware of one, I’d love to read a copy.
Disclaimer: I’ve not spoken to any of the firms named in this post and I have no insight into their product plans
Reblogged this on aainslie.
Hi Richard,
isn’t it similar to internet network providers ? They own and maintain the physical equipment and deliver an API (IP protocol) to access it.
Hi Richard,
You might be interested to check out digitalBTC, an Australian listed company who are currently doing bitcoin mining and are planning to expand into other services e.g. Wallet, transaction processing, API, liquidity provision. The future is coming faster than we can even predict it! See their site here: http://www.digitalbtc.com/
Stephan
Hi Richard,
You’d think there would be more interest or attention paid to this aspect of bitcoin mining, but since bitcoin is all about decentralization, the opportunities probably get ignored. The capabilities and advantages are really compelling and explain why our goal has been to be a fully integrated PaaS or Software as a Service provider.
Overall, this is indeed a very natural progression and we’ve seen this happen in the enterprise space with IBM, HP, Oracle and more recently Facebook and Google. VMware helped virtualize the hardware and manufacturers became more vertically integrated either acquiring DB companies or middleware companies. Cisco cutoff HP as a partner and entered into the datacenter server market with their Nexus product line, Oracle used their clout in DB, bought SUN and now competes directly against IBM, HP. Facebook and Google have decided to build their own custom hardware and release open source versions of their data layers (Hadoop, BigTable, Presto, RocksDB etc).
This is happening at a much faster pace in the Bitcoin world. The first step in this evolution is when a mining hardware manufacturer starts offering cloud mining services, virtualizing the hardware in a sense. You can see that with KNC, CoinTerra and of course PeerNova which formed from the merger of HighBitCoin and CloudHashing.com. Given our deep technology and enterprise background, we designed our infrastructure layer with scale, reliability and efficiency in mind. We frequently compare our tech stack to other vertically integrated Platform-as-a-Service players in the tech industry and most FinTech folks get it right away.
With security becoming a major issue with the current x86 based technology stack and patchwork of platform/applications used to power global payments, we anticipate that a fully integrated vertical stack starting from cryptographic servers, platform/API and blockchain related applications will offer compelling value in some business contexts. For reference, see what the Founder of the world’s best cybersecurity firm (FireEye/Mandiant) and PeerNova investor, had to say in an interview with Coindesk: http://www.coindesk.com/fireeye-bitcoin-secure-global-payments-infrastructure/
Thanks
Prakash
Hi Prakash, Thanks for taking the time to write such a detailed comment and for sharing that link. It’s taken me longer than I’d care to admit to realise what was possible (and already happening!) in this space… so I’m glad to know I’m on the right tracks with my write-up.
Richard, interesting article. Another development path is also feasible. As blockchain matures to include sidechains and treechains we could see a specialized decentralized app servers cloud emerge that is not co-located with the miner pools. These app servers will provide extended compute and storage services beyond what Ethereum is offering, to inter-connect the blockchain with the Web and mobiles. Much like Salesforce legitimized SaaS, a new Chainforce will redefine multi-tenant apps on a chain. A merge between bitcoin and the Internet will perhaps be called a Tradenet. I am trying to imagine such future in this whitepaper ( github.com/urbien/tradle/blob/master/README.md ). Would love to chat with you on the effects of blockchain on enterprise architecture reshaping in the next 5 years.
@gene – thanks for the comment. Very intriguing idea. Yes – it would be great to chat.