In his blog post of 24th October our team member Prince Sinha has covered the technical aspects of Anchoring feature which has been implemented as part of Dappros Platform update.
I would like to explain here in brief what this means for the business.
In my personal opinion it is better to build blockchain projects with Ethereum network simply because it’s largest in the world (after Bitcoin), has best ecosystem, set of development tools, and largest developers base according to our analytics on blockchain developers.
However most of public large scale networks starting from Ethereum currently suffer badly from the two following problems:
- transaction cost
- transaction speed
Why does this happen?
Consider for example Alice sending a payment 0.000005 ETH to Bob.
- First of all, all network nodes (from 7,500 to 25,000 globally across the world according to current estimates) start to compete for including this transaction into a cryptographic block where many other latest transactions are packed.
2. Once one of them wins the cryptographic competition and the block is considered to be “mined”, this information is communicated to all other nodes so that they can verify and validate this information.
3. After new block is validated, it’s included into blockchain meaning that now all these thousands of computers globally should store the information of how much Alice has sent to Bob, irrespective of the significance and amount of those transactions.
On average (current data) there are 7-10 transactions per second and around 700,000 transactions per day.
Maximum current version of Ethereum can support 15 transactions per second.
This often means your transaction has to queue and Bob can only see the confirmation and get funds in his wallet in minutes or sometimes over an hour after Alice has sent the payment.
This doesn’t work for business.
Business needs transactions to propagate faster, and there are hundreds of use cases where 15 transactions per second is simply not enough. For example, a blockchain network registering updates in GPS locations of thousands of containers equipped with smart tracking devices.
Another problem is transaction cost. Each transaction in public Ethereum network costs around $0.04 currently. It is justified and is determined automatically by the rules of the network. These payments go towards payments for the mining – basically paying the distributed infrastructure costs.
Indeed if you decide to store whole ledger of ALL worldwide transactions on EACH node in the network and you want your small Alice – Bob thing to be recorded by thousands of automated bookkeepers and witnessed by thousands of automated notaries, there is a price to pay and looking from this perspective, the price isn’t that much at all.
This cost may be fine for a money transfer, but again it doesn’t work when you simply need to store a piece of information or send a very small micro-payment, potentially even with one machine paying another. This becomes a limitation slowing down further adoption and destroying part of raison d’être of the blockchain.
These problems of course are being resolved right now and are likely to disappear in few years with blockchain networks becoming as fast as VISA and Mastercard.
The businesses however need solutions right now.
Another issue where public blockchain isn’t particularly great is privacy.
Be default public blockchain is a very open and democratic system where anybody can join and maintain a node. Which means anybody can get a copy of all information, all transactions etc on their system.
The above is great for running a decentralized money project such as Bitcoin, a public ICO (Initial Coin Offering) etc but not so great for enterprise use cases where privacy may be a concern. You may want in some cases to (a) benefit from the advantages of blockchain and distributed ledger technology but (b) limit data access to a certain group of persons or entities. Examples could be a logistics / supply chain informational system where partners exchange information between each other regarding the status and location of shipments (an example of such system is our TracyChain project) or a financial system between a set of banks where mutual settlements and other financial transactions are automatically processed via blockchain network and a system of smart contracts.
Outside parties and public blockchain exposure are not really necessary in such use cases, and will be even harmful from security point of view.
Private blockchain advantages
Good news here private blockchain is possible and it comes without the above-mentioned shortcomings.
You can launch your own copy of Ethereum network among the banking or supply chain partners with all the technology advantages of the real thing, but since you don’t have to host all the worldwide Alices and Bobs transactions data, your private blockchain is going to be lightning fast. Also there is no transaction cost as you could simply accept your own virtual Ether or some other token you can issue (pre-mine) in unlimited quantities.
However would the above implementations still be truly blockchain based? Can someone simply spin off 3 Amazon Web Services EC2 instances, install a copy of Ethereum network there and claim they have a new enterprise blockchain network?
Private blockchain shortcomings
Indeed private blockchains still have certain blockchains and some crypto enthusiasts would argue these aren’t “real” blockchains.
Problem is, when you run a small number of nodes and your data doesn’t get exposed to an outside world, the issue of trust isn’t completely solved.
For example, you’ve got a private blockchain where farmers and an agricultural fertiliser distributor track their mutual transactions on all purchases. Now imagine fertiliser company wants to raise extra funding and would like to expose this ledger to a private equity firm doing the due diligence. Alternatively they want to introduce another type of partner into the ecosystem, a financial services provider such as a bank or insurance company, who could leverage the data amassed in the distributed ledger and start providing value add services to the farmers.
It is actually a problem for rural farmers in some countries such as India to get access to reasonable financing and they are often forced to loan at exorbitant rates. To solve this problem as you already have millions of transactions recorded in your private blockchain, all this data could effectively serve as “credit history” when presented to a bank or insurance provider. The farmers who were paying on time and were steadily growing their business over years would in theory be eligible for good financing deals. This is a huge value add introduced by blockchain technology in this use case.
Only issue is, how would the newly joining partner (bank or insurance provider in our example) know that your private blockchain and its ledger is genuine? It is most likely that it’s only running on few servers of the fertiliser company. The farmers don’t know much about blockchain and they don’t run their own nodes of the system. It could well be, despite not as simply done as with a standard database, but still theoretically possible, that the company controlling the private blockchain is falsifying some data, for example modifying some historical records to make their numbers look better to impact their company valuation, or get paid more for the volume of data.
Anchoring is the answer
This is where anchoring comes to the rescue. Anchoring allows you to get the best of the two worlds: privacy, speed and zero transactional costs of a private blockchain + global reach and trust of the public blockchain.
The concept is fairly simple. Keep running all your thousands and millions of transactions in your private blockchain enjoying low costs and fast transaction clearance. Every N hours (for example, once per day) take a cryptographic hash of all your transactions actioned over this time period and send it to the public blockchain.
In public blockchain (Ethereum network in case of Dappros Platform) a special smart contract is deployed that is responsible for accepting data from private blockchain and storing it as a transaction in the public blockchain. This ensures that transaction gets propagated to tens of thousands of nodes distributed all over the world, just like with any other public blockchain network transaction.
The way cryptography works through the beauty of one-way mathematical hashing algorithms is that you don’t have to expose all the original data for hash verification to work. Not to the whole public blockchain at least. The hash cannot be reverse engineered into the original source data. So you keep running your transactions in private, with only partners and participants having access to the distributed ledger. At the same time you store a small “snapshot”, a thumbnail, a hash of all transactions on the public blockchain.
A blockchain ledger is immutable by design. This means unlike with ordinary database nobody can go back into the history and changes something in the data. You can do it physically but the whole cryptographic tree will be broken, the hashes won’t compute and simply all the thousands of nodes worldwide will not accept your change.
The above is what gives blockchain data validity and creditability. Provided that you put true data there in the first place, public blockchain adds robust tamper proof validation to your data. Which is less the case with private blockchain as when you only run it on 3 or say 11 servers, it may be feasible physically and computationally to change something in the historical transactions and recompute the blockchain from there.
Back to our example, once each 24 hours worth of data is hashed and stored into a public blockchain from your private one and you keep to that process over years, this allows you to reap the benefits of both private and public blockchains. The cost is low, as you only pay $0.04 per day (hour, week, month etc) as opposed to $0.04 for each transaction. The data is not exposed to the public, only a cryptographic hash is. The speed is really fast. The process of syncing data to public blockchain is asynchronous meaning your other processes don’t have to wait for that to finish.
Now when you want to prove certain transaction has indeed happened 2 years back on particular day, you can point to a specific hash stored in the public blockchain on thousands of computers globally. If you change anything in the original data, the hash will be completely different. Only the same combination of transactions on the particular day stored in your private blockchain results in the hash stored in the public blockchain, which can be easily verified.
Summary and Dappros Platform implementation
Anchoring helps to leverage the best of the two worlds (private blockchain and public blockchain networks) which is very useful in a plethora of business use cases.
Dappros has introduced public Ethereum / Ropsten anchoring into our private Ethereum blockchain cloud platform.
From now on, the transactions of our users will be hashed on regular basis and synchronised to public Ethereum or Ropsten blockchain.
This feature becomes automatically available for all shared cloud users after roll out.
Enterprise / dedicated plan users will need to choose whether to enable anchoring and also will have flexibility around frequency and other parameters of the anchoring smart contract.