Member preview

Blockchain : how to choose the right tech for your business

Here we are, everyone around you is talking about blockchain and crypto-currencies. You have read some good papers to learn the concepts, maybe you went to some meetups to see a demo and some use cases. Now you want to start your decentralized blockchain project, the concepts convinced you in terms of transaction tracking and security. But there are some things you need to know before you start.

1-There are many blockchain technologies

Sometimes they are called decentralized registers, sometimes blockchain. Sometimes it’s not really decentralized because the nodes are controlled by a single entity, and sometimes the block chain is replaced by another innovative structure. Currently, there are about 1,500 cryptocurrencies and this figure is growing day by day. They can be classified in different categories :

Coin-oriented blockchains

These crypto-currencies are intended to allow money transfers very quickly anywhere in the world in a decentralized system (nobody controls this system).

Examples

Bitcoin

The first blockchain, Proof of work, No smart contracts
Who has not heard of Bitcoin? This blockchain is now well known around the world. It mainly serves as money for large transactions because of its high transaction costs as well as investment asset thanks to the prodigious rise of its value. However, it can not be used easily for anything other than a means of payment.

Litecoin

Blockchain, Proof of work, No smart contracts
Litecoin was created shortly after bitcoin by a former Google employee, Charlie Lee. It is also a chain based on the POW, but the algorithm is different. Its difficulty makes it possible to create blocks more quickly (2mn 30s), and their size is more important.

Bitcoin Cash

Bitcoin Fork, POW

Cryptocurrency similar to Bitcoin currency. Bitcoin Cash was created to increase the capacity of the chain in order to support the growth of the number of users. This required a hard fork of the Bitcoin protocol that took place on August 1, 2017. The size of the blocks is 8 MB, or 24 transactions per second, with the possibility to continue to increase the size of the blocks to maintain low transaction fees. This increase occurred simultaneously with the implementation of SegWit for Bitcoin. To survive the bifurcation with the Bitcoin protocol that implemented SegWit, the difficulty adjustment algorithm has been relaxed.

Monero

Anonymous and untraceable, Open Source, POW

Open source cryptocurrency focused on privacy and decentralization. Monero comes from a fork of the Bytecoin crypto-currency that uses the CryptoNote algorithm with some important differences: the block chain has an obscuration with a block’s mining time and a new reduced currency issue. On January 10, 2017, transaction encryption increased with the optional use of Bitcoin Core’s Gregory Maxwell’s Circle Confidential or Ring Confidential Transactions algorithm and the use of stealth addresses. This option, activated from block 12205167, is used to hide transaction amounts.

Ripple

Chaine privée, Code privé

Ripple is the name of a payment network and the payment protocol used. It was developed and published in 2012 by a company of the same name, to allow “global financial transactions secure, instant and almost free.” It is built on principles similar to those of Bitcoin blockchain, so sometimes considered a cryptocurrency. However, unlike Bitcoin, the source code of Ripple’s private technology, which means that it can not be verified by any third party. Ripple is a very popular network: many banks around the world use it as a base for their own settlement infrastructure, and its native currency XRP (ripples) has always been present in the 5 crypto-currencies by market capitalization in recent years.

Smart contracts platforms

These blockchains make it possible to create smart contracts. A contract is a script that is executed and that can interact with the blockchain that hosts it and can store data in this blockchain, so in a decentralized way. These platforms make it possible to build Dapps (Decentralized Apps) that can interact with these contracts to offer features or services to users.

Examples

Ethereum

Proven platform, Smart contracts, Decentralized, Proof of Work but soon Proof of stake
The ethereum is the blockchain offering the most advanced smart contracts at the moment. The documentation is well supplied. If the smart contracts must necessarily be written in Solidity (the ethereum language), the Dapps can be coded in any language thanks to the presence of an HTTP API to communicate with the blockchain.
Currently the transaction validation mechanism is POW, the amount of transaction per minute on the public chain is limited compared to other techs. However, this point will evolve. Ethereum should move to POS soon. It is also possible to create a private channel very easily.

NEO

Smart economy, digital identity, digital assets, Proof of stake
Called the Chinese Ethereum, NEO is a blockchain that aims to create a smart economy. It integrates the notion of digital identity as well as the notion of digital asset (assets). It is possible to create interactions between its concepts via smart contracts. The documentation is better and better, however there are still gaps, especially on asset management. The usage is more complicated than for Ethereum. It is possible to develop smart contracts in several languages (C #, Java, Python, Kotlin) and an HTTP API is present to interact with the blockchain. Dapps can be coded in any language. It is possible to create a private test chain very easily thanks to Docker.

Hyperledger

Private chain, PBFT, open source Linux Foundation technology supported by IBM

Many GAFA’s focused on blockchain topics when they were created. The Linux Foundation enabled the creation of an open source system, based on Practical Fault Byzantyne validation. IBM later injected money into the project to create the Hyperledger Fabric framework. The peculiarity of this project is that it is not based on a cryptocurrency thanks to its validation algorithm and certificate validation system. It also brings the concept of channel, which is a blockchain channel partitioning system.

Verge

Maximum anonymization, ultra fast transfers, TOR uses, reduced costs, SMART CONTRACTS (Q1 2018)
Verge is a chain whose goal is to secure and anonymize exchanges. The recently released Wraith protocol meets this need. It exploits the THOR network and generates false wallet addresses to hide transactions.

Nem

Complex, Multi layers, Proof of Importance

NEM is a platform based on a blockchain. Written in Java language, it was launched in March 2015. It offers its users a wide range of options: payment services, messaging, asset creation, … NEM can create “mosaics” — which are actually assets that you create on the blockchain. These can find their application in many areas: creation of stocks of bonds, currency, coupons, … It is also possible to imagine applications that could be used outside the financial sphere: marriage certificate , diploma, title deed, vote, …

Lisk

Side Chaines, Javascript, Delegated Proof of Stake

Lisk put everything on Javascript, promising a simplicity of handling never seen before, for the developers of DAPPs. It takes no more than 10 seconds to validate a transaction. Currently based on a fixed transaction fee (0.1 lisk / transaction) LSK transactions will soon see an implementation of transaction fees called “dynamic”, that is to say, proportional to the transaction amounts. The Lisk ToolKit is a framework for deploying your own sidechains and developing blockchain applications (DAPP). This means that you can develop independent social networks, messaging systems, games, financial applications, prediction markets, exchanges, storage platforms, contract execution platforms, online shops, IoT applications and more, only using Javascript.

Ark

Bridges between blockchains, Deleguated Proof of Stake

Ark allows interconnecting blockchains to facilitate access to information, but especially to multiply the functionality of blockchains daily. To link the blockchains together, Ark uses Smartbridges technology (literally, “smart bridges”.) The first Blockchains to be connected to the Ark platform are Bitcoin, Ethereum, Lisk, and Third Party Network Anonymous Integration.

Tokens based on smart contracts platforms

These tokens are used by a Dapps to provide a feature or service to users.

Example

Naga Coin

This German company is based on the chain ethereum to offer a marketplace of virtual objects. This type of ERC20 token is called the name of the norm on the ethereum string. This type of token has the advantage of being able to benefit from the network in place, while creating a parallel economy.

Projects using one or more tokens for a concrete application

These are separate projects that aim to solve an existing problem through blockchain technology or technology derived from it.

Examples

IOTA

IOT, Tangle, No block system
IOTA is not really a blockchain but rather a distributed protocol based on the “Tangle” technology. This technology has been designed to enable connected objects to make real-time micro-payments at no cost and exchange data. Unlike a blockchain or minors validate the transactions and are paid to do so, with the IOTA, to issue a transaction, it is necessary to validate the previous two. The cost of the transaction is therefore replaced by a small cost in calculation. The project is currently in beta and many developments are under development. We find in the development roadmap the possibility of developing extension modules to add functionalities to the network,
the addition of an authentication system to be able to exchange data privately.

There are so many chains now that I’ve missed them, but as you can see, there are many choices to start. Below 2 links to more exhaustive lists:


2 — Do you need smart contracts ?

If you have not heard of this word, then you have not done your homework properly.
Smart contracts are transactions in the blockchain associated with a piece of code executed with it. They can be written in different languages, and different functions are available in the stock / community API as tools to schedule a transaction with a time trigger. Sometimes called chaincode, smart contracts provide a framework for blockchain transactions on complex assets, and they allow for more complex and better controlled interactions.

Let’s look at an example of a smart hyperledger contract in Node.js:

const shim = require('fabric-shim');
const util = require('util');

let Chaincode = class {

// The smart contract has been initialized in the blockchain
async Init(stub) {
console.info('=========== Instantiated fabcar chaincode ===========');
return shim.success();
}

// Invocation method of the contract, with the called function
async Invoke(stub) {
let ret = stub.getFunctionAndParameters();
console.info(ret);

let method = this[ret.fcn];
if (!method) {
console.error('no function of name:' + ret.fcn + ' found');
throw new Error('Received unknown function ' + ret.fcn + ' invocation');
}
try {
let payload = await method(stub, ret.params);
return shim.success(payload);
} catch (err) {
console.log(err);
return shim.error(err);
}
}
// Contract function to recover a car
async queryCar(stub, args) {
if (args.length != 1) {
throw new Error('Incorrect number of arguments. Expecting CarNumber ex: CAR01');
}
let carNumber = args[0];

let carAsBytes = await stub.getState(carNumber); //get the car from chaincode state
if (!carAsBytes || carAsBytes.toString().length <= 0) {
throw new Error(carNumber + ' does not exist: ');
}
console.log(carAsBytes.toString());
return carAsBytes;
}
// Contract function to initialize the chain
async initLedger(stub, args) {
console.info('============= START : Initialize Ledger ===========');
let cars = [];
cars.push({
make: 'Toyota',
model: 'Prius',
color: 'blue',
owner: 'Tomoko'
});
cars.push({
make: 'Ford',
model: 'Mustang',
color: 'red',
owner: 'Brad'
});

for (let i = 0; i < cars.length; i++) {
cars[i].docType = 'car';
await stub.putState('CAR' + i, Buffer.from(JSON.stringify(cars[i])));
console.info('Added <--> ', cars[i]);
}
console.info('============= END : Initialize Ledger ===========');
}
// Contract function to create a car
async createCar(stub, args) {
console.info('============= START : Create Car ===========');
if (args.length != 5) {
throw new Error('Incorrect number of arguments. Expecting 5');
}

var car = {
docType: 'car',
make: args[1],
model: args[2],
color: args[3],
owner: args[4]
};

await stub.putState(args[0], Buffer.from(JSON.stringify(car)));
console.info('============= END : Create Car ===========');
}
// Contract function to recover all car
async queryAllCars(stub, args) {

let startKey = 'CAR0';
let endKey = 'CAR999';

let iterator = await stub.getStateByRange(startKey, endKey);

let allResults = [];
while (true) {
let res = await iterator.next();

if (res.value && res.value.value.toString()) {
let jsonRes = {};
console.log(res.value.value.toString('utf8'));

jsonRes.Key = res.value.key;
try {
jsonRes.Record = JSON.parse(res.value.value.toString('utf8'));
} catch (err) {
console.log(err);
jsonRes.Record = res.value.value.toString('utf8');
}
allResults.push(jsonRes);
}
if (res.done) {
console.log('end of data');
await iterator.close();
console.info(allResults);
return Buffer.from(JSON.stringify(allResults));
}
}
}
// Contract function to modify a car
async changeCarOwner(stub, args) {
console.info('============= START : changeCarOwner ===========');
if (args.length != 2) {
throw new Error('Incorrect number of arguments. Expecting 2');
}

let carAsBytes = await stub.getState(args[0]);
let car = JSON.parse(carAsBytes);
car.owner = args[1];

await stub.putState(args[0], Buffer.from(JSON.stringify(car)));
console.info('============= END : changeCarOwner ===========');
}
};

shim.start(new Chaincode());

3 — Which validation algorithm ?

Another point that you need to know is that there are many ways in a chain to validate new blocks. Some need processors or graphics cards working on validation algorithms, which of course use energy and generate heat.

Here is a non-exhaustive list of validation systems:

Proof of Work
In such a blockchain, to add a block to the chain, a node of the network must validate the transactions that will enter this block and must calculate a proof of work very resource consuming. All nodes validate transactions to try to form the next block. However, only the first node that successfully computes this proof of work will add this new block. When the other nodes in the network receive it, they will stop trying to build it and move on to the next block. This validation mechanism favors the nodes benefiting from the greatest computing power and secures the network. Indeed, the computing power needed to falsify the chain is too important.

Proof of Stake
The principle is to trust the biggest holders of the currency because they do not have interest to see the blockchain die and thus the price of the currency to fall. The amount in currency present in the portfolio linked to a node of the network corresponds directly to the chance that it will have to be elected to validate blocks of transactions. These nodes are paid when they validate transactions. So the bigger the wallet, the bigger the rewards.

Leased Proof of Stake
This consensus is based on proof of stake but allows for greater decentralization of block creation.
The problem of proof of stake is that only the big holders of money have a chance to create new blocks. Small actors have an almost infinite chance of being elected. LPOS allows small holders of money to rent their tokens to nodes of the network. However, they keep control of their tokens and can remove them at any time. So there are more nodes that are likely to create new blocks. The network is therefore more decentralized.

Delegated Proof of Stake
With the DPOS, the holders of the currency can vote for the nodes that will create the next blocks. They can also vote for network settings. This allows small holders to have a bigger influence on the network.

Proof of Importance
This is a variant of the POS in which the chance of creating a new block is related to the importance of a node in the network. This importance is not only based on the amount held by this node but also on the number of transactions made by this node as well as its reputation.

BFT et PBFT : (Practical) Byzantine Fault Tolerance
This algorithm is used in private blockchains, where each node has been validated. It comes from an old problem: the problem of Byzantine generals. The principle is to find a way to validate a message on a channel that we do not trust. The PBFT is an implementation of this algorithm with high performance.

Proof of Elapsed Time

Evidence of elapsed time is an algorithm designed to create a fair consensus model, which focuses primarily on efficiency. It revolves around the election of a leader on the largest possible number of participants in the network. In addition, the cost of controlling this process should be proportionate to the value it derives from it. This means that people have to invest time — see money — if they think they can steer the ecosystem in a particular direction. Last but not least, all participants must verify that the leader has been legitimately selected.

Some of these validation methods are faster than others, like 1s to 2 hours for bitcoin, so think about it. Like blockchain technologies, many validation algorithms exist now, and new ones are in the works. Each algorithm has its advantages and disadvantages on security criteria, speed of validation, valuation of minors, … you will have to choose the best method for your business. And if possible avoid POW validations that generate unnecessary processor work: heat a PC in 2018 for the sake of using a validation algorithm is still a shame.


4 — Give me money !

You must define if you need a cryptocurrency on your application. Some applications need assets like the definition of a car, a product, etc. But you may need a way to value this product, or maybe you just want to use the blockchain to transfer money more easily than with a bank account. These are used cases for cryptocurrency. Originally, as we saw in the previous point, it was used in POW or POS validation for miners or network maintainers, but you can use it with another validation system.


5 —Private / Public

Ask yourself if you need a private channel or if the public network will be your playground. This decision usually depends on the validation you need when you create transactions, contracts or assets. If you’re processing medical data, for example, you’ll probably prefer a private channel where you’ll trust all the nodes and minors that write on your channel.
This is not incompatible with a public transaction system where people can access the transaction history.

Example of use case for a private / public mix : Sawtooth chain monitoring sea fishing.


6 — The maturity of the projects

This point is very important. At present, the blockchain ecosystem is exploding. Some teams sell dreams but not everyone is an expert and their technology is not always revolutionary, just forks / copies or ethereum erc20 tokens.
Check the stars on github projects (open source projects are better for your blockchain experience, in order to understand the code), check the quantity and quality of the docs.
Check the languages ​​of the SDK to see if they are compatible with your team skills (eg doc Neo in Chinese). Explore ecosystem tools such as chain explorers to track transactions or blockchain state dashboards to see node workloads.
Another important point is the ease of installation. Prefer docker projects for easier cloud deployment.
Also check out investors on these projects like IBM or Intel.

Here is a list of the best projects we have tested that respect all these principles :

Ethereum
Neo
Hyperledger
Lisk

7 — SDK

If you want to interact with your chain, you will need an SDK. They are not always in the same language as the blockchain core, so look for the technology that best fits your teams. Most of the time, you will find Java SDKs and Node.js, sometimes Go or DotNet.


8 —Cloud providers

Some vendors are starting to offer blockchain cloud instances with graphical management. For example, you can deploy private ethereum or hyperledger strings on Azure. The IBM cloud also provides hyperledger instances with the Hyperledger Composer Management System.


9 — Side chains / Channels

You may need a way to separate the blocks from your channel because you may not want to mix all the data, or some users should not have access to the resources defined by some people. But you do not want to use a new network for that. Some technologies handle this problem with parallel chain systems or separate channels :

Hyperledger
Lisk
Nem

10 — Use cases

Maybe some inspiration would be welcome for some blockchain use cases. There are more and more everyday, here is a list of the most common:

Traceability of food / industry (fish, meat, milk, dental prostheses, airplane parts, …). Ex: Sawtooth
Exchanges of goods (Energy, Virtual Currency, MarketPlace). Ex: Naga Coin
Uniqueness / Artistic protection / DRM (photos, music, films, ..): Ex: Kodak

Another small list of use boxes below :


11 —Your own implementation ?

The last but not the least option is to develop your own blockchain implementation. It will allow you to apprehend the low level concepts and you will be able to conceive it entirely according to your needs. But be very careful with security, because a corrupted chain may require a fork to catch errors type hacking (injection of blocks) that is not always easy to achieve with a network of important minors (need to have a consensus on the network to accept a new version).
Here you will find a small example.


12— Synthesis

In this article we have evoked many technical points. Here is a table summarizing the technologies we have experienced for a blockchain POC with smart contracts :

When we did our tests, it quickly became apparent that not all projects are at the same point of maturity. That’s why this table does not have many entries. The chain we selected for our use case is HyperLedger. This private system is very well documented, and has the advantage of not requiring the management of a cryptocurrency. However, it requires deploying nodes.
Each case is different, for you to find the best solution for your project. The blockchain concept is fascinating, and this may be the next revolution in the web, so do not miss the turning point!

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.