Getting Blockchain Ready on Cloud

by | Nov 10, 2017 | Member News

Parv Gupta on November 8, 2017

There has been a lot of hype around blockchain in the market for few years while it is getting adopted by various organizations, thanks to the cloud. However, blockchain is so much more than just storing data. It can also store program state, which is crucial for distributed execution of the smart contract or chain code.

These smart contracts or chain codes are thin programs which require blockchain virtual machine (Ethereum Virtual Machine for Ethereum protocol) to execute the business logic contained in them. You don’t need to have a physical infrastructure to execute these thin programs. You only pay a nominal gas price for the execution, which is given to the miners for running these virtual machines. This concept is similar to running a piece of code on Azure Functions or AWS Lambda, which is billed based on resource consumption and execution. But a distinct feature which blockchain provides is its new layer of cryptographic encryption used for transaction validation and recording state transition of the program. Using this new encryption technology, instead of traditional TLS/SSL certificate based technology, organizations can improve the trust within the business units they connect with and provide secure access control.

Building the blockchain infrastructure on cloud

Building the blockchain infrastructure can be expensive for enterprises and organizations. To overcome this challenge, pioneers in cloud computing Microsoft Azure and IBM Bluemix are providing Blockchain-as-a-Service (BaaS). Setting up blockchain infrastructure using BaaS has become easier than ever .  Both the cloud providers specialize on different blockchain protocols. Here is a brief on them-

– Microsoft Azure – Focusing highly on creating the environment for rapid development /test scenarios and enterprise scale. Here are the different solutions available on Azure.

  • Ethereum Consortium – With this solution template, you can deploy and configure a multi-member Ethereum blockchain network within minutes. Along with custom scripts, you can automate the configuration and focus on creating the applications.
  • STRATO Blockchain by BlockApps – Easily deploy BlockApps Virtual Machine for rapid deployment of Ethereum based enterprise solutions. With the client written in Haskell which provides RESTful API to enable developers for faster smart contract deployment.
  • Chain Core Developer Edition – Build prototypes on the Chain Core enterprise software for enabling transfer of financial assets on the permissioned blockchain network.
  • Ethereum Studio – This is the first complete blockchain development stack, which runs online. It has a sandboxed live Ethereum network, an IDE for building smart contract and web3 applications.
  • Emercoin Blockchain Engine – Another development tool for creating applications and services off the Emercoin Blockchain Engine.

– IBM Bluemix – In collaboration with Linux Foundation, IBM is building the Hyperledger project, having an umbrella of tools to create blockchain applications. Within Hyperledger project, the ongoing sub-projects are Hyperledger Fabric and Hyperledger Composer.

  • Hyperledger Fabric – It is the blockchain framework which leverages containerization technology, like Docker, to host the distributed ledger and chain-code (smart contracts). Create permissioned blockchains, along with PBFT consensus and Golang or Java chaincode to create the distributed applications which are highly flexible, confidential and scalable. The consensus doesn’t require mining, unlike other platforms where expensive computation is required, resulting in cost & time optimization to assure the transactions.
  • Hyperledger Composer – To create the applications on the fabric, an application framework known as Hyperledger Composer is available which simplifies the application development. The abstraction provided by the framework enables creation of business-centric application & integration with DevOps tools to test and build.

IBM Bluemix has membership plans (only Enterprise at the time of writing), which does all the heavy lifting of creating the highly available network and composer tools. The membership plan available is quite expensive, but since the project is open source, you can head over to Github and start from scratch, getting to know the insides of the fabric. If you wish to go the open source way, you must have strong knowledge of Docker, otherwise, it is a challenge in itself to configure the tools.

Building Distributed Applications on Blockchain

With the platform ready, its time to build the applications. There are multiple languages and tools available which the developer can leverage. Let’s delayer the components available at developers disposal.

  • APIs coming from the clients or parity in the form of RPC/IPC can be integrated with multiple languages using the integration libraries, like JavaScript(web3js), Java(web3j), .NET(Nethereum).
  • Using blockchain as an intermediate database,to permanently store the cryptographic hashes or keys in distributed hash tables of the larger data sets stored off-chain.
  • Build smart contracts or chain-code in languages like Solidity, Golang and Java.
  • Integrate with hypermedia protocols like InterPlanetary File System(IPFS) & Ethereum Swarm and decentralized messaging platform like Ethereum Whisper.

What’s next?

Cloud is all about providing services in different models. We have covered the services being offered in Infrastructure-as-a-Service(IaaS) model in this article. However, not everyone is comfortable deploying blockchain in this model, with all the low-level details and steep learning curve. Users are looking for safe-to-fail environments to test smart contracts and concepts, before making a call if their proof of concept is production ready. This brings in a new question – how about blockchain as SaaS? Through SaaS, business users can run their smart contracts, distributed applications, while purely focusing on enhancing business value. The cloud vendor will configure and provide necessary customization options for further enhancements in the environment, helping users in the rapid development of the application.

Translate »