We looked at two major uses of blockchain in our part 1. Here we expand our understanding looking at two more changes (but not usage) in blockchain space. We will tie this information in an ICO evaluation piece later.
Hashing Algorithm Change
Bitcoin started with normal or “CPU Mining”. As bitcoin became famous people started to find ways to mine faster. There were miners (mining software) written to use the computer graphics card or GPUs. This difference in mining speed between CPU and GPU mining was nearly 5-10 times. That means for the same amount of work, GPU owners were earning 5-10 times more coins compared to CPU miners.
This is not a bitcoin problem per se but an algorithm problem. So, any coin, example like Peercoin, which uses SHA-256 also has a similar problem.
This lead to people trying to find alternative hashing algorithms. Something which made GPU mining difficult. One of the earlier attempt to this was using scrypt algorithm.
Litecoin was announced on October 9th, 2011 as a faster coin. Three major changes were:
- Faster block time – 2.5 minutes vs 10 minutes on bitcoin
- Increased number of coins – 84 million vs 21 million
- Hashing algorithm – Scrypt instead of SHA256
The general idea of Litecoin was to be silver to Bitcoin’s gold. Compared to Bitcoin’s gold colored “B” icon, the coin has a silver colored “L”. Additionally, this was one of first implementation of dual mining. People could mine bitcoin as well as Litecoin using the same software.
CPU mining was not the highlight feature of Litecoin. But, scrypt algorithm was used for the coin’s Proof of Work for precisely because it could be mined using CPU. With time people did find a way to mine Litecoin on GPUs too.
Nowadays, many coins which start with explicitly seeking to make it easier to CPU mine; but most of them are unable to hold that position for long. So, CPU mining is effectively dead.
In bitcoin, addresses are a series of numbers and letter which provides some level of anonymity. But, the public ledger has a downside. As we saw in our post on blockchain explorers, once I know your bitcoin address checking your balances and transactions is very easy. Every trail and transaction exists in the public domain. So, it is not fully anonymous rather half or pseudo anonymous.
People have tried to find ways around it. Bitcoin allows anyone to create unlimited number of addresses. So, one of the ways to avoid the above issue is to create a new address for every transaction. This is not a long-term solution as blockchain explorer can show a predictable pattern of transactions.
This lead to creation of bitcoin mixer/ tumbler services. These services confuse the trail of transactions by shuffling the coins between multiple address. At the end of the cycle, original owner receives the coins to a new address. There is no direct link between original and ending accounts. So, there is a certain degree of anonymity.
There are couple of issues with these services –
One, these are third party services. So, you have to trust the people running these service with your bitcoins. This is not ideal.
Secondly, over time mixer might end up using some old addresses. This again creates a public trail of transactions.
So, people came up with ways to have anonymity on blockchain. Two major coins in this area are:
Johns Hopkins University professor Matthew Green and his students Ian Miers and Christina Garman set out to resolve the issue of pseudo anonymity on bitcoin. Their proposal is called Zerocoin. The idea behind Zerocoin was to create a mixing service on the blockchain; thus, making every transaction untraceable. The actual technology enabling the untraceable accounts is referred as “zero knowledge proofs or zk-SNARKs
Zerocoin was first implemented into a fully functional cryptocurrency called Zcoin which was released Oct 2016.
There are two different type of accounts on Zerocoin. Account starting “z” are untraceable. Accounts starting with “t” are traceable.
Zcash has a block time of 2.5 minutes and total supply of 21 million.
Looking at the Zcash blockchain explorer:
You can see most addresses start with “t” and hence show full amounts. Z-type accounts are hidden and no transaction information can be found.
There are transactions marked with heading – JoinSplits (example transaction – https://explorer.zcha.in/transactions/826453061a02dded44d6ef43633e927a47624d505e42be658c25f7964e4605ae).
These are the transactions which involve at least one “z” account – either on the receiver or sender side. Amounts show up only for “t” accounts.
Monero was announced in 2014. Features announced were:
- Untraceable payments
- Un-linkable transactions
- Blockchain analysis resistance
Monero’s block time is 120 seconds.
Monero uses a technology called “ring signatures” to obfuscate transactions. So, if you look at:
Transaction amounts or “output total” are marked “confidential”.
Interestingly, both Monero and Zcash started with CPU friendly algorithm. Over time people have written GPU miners to tilt the advantage in favor of GPU miners. So, as a rule of thumb – if you want to mine coins, it’s better to have GPUs.
Now let’s answer the perennial question:
Why do we need Altcoin?
There are good reasons for creating an new coins and not going the OMNI way.
(Note: I am going to use address and account interchangeably.)
First let’s deal with why can’t we build coins directly on top of bitcoin just like OMNI.
Bitcoin transactions have a fixed format.
So, the only way to store information on bitcoin blockchain is to use address. The process is rather cumbersome. (Steps can be found at – http://www.righto.com/2014/02/ascii-bernanke-wikileaks-photographs.html (Read – “How to put your own message in the blockchain”)
There are two caveats here:
- Storing anything on blockchain requires a fee. So, storing information on these special addresses is not free.
- Bitcoin doesn’t recognize these addresses. So, any coin sent to these “un-spendable” addresses are lost forever.
OMNI uses these un-spendable addresses to store information. Let’s take an example – Here’s the transfer of an asset named Tether on OMNI:
The amount transferred was 8495 Tethers.
While the same transaction on bitcoin blockchain has a different structure:
The un-spendable account which holds information about transfer shows up as “Unable to decode output address”.
While OMNI can read these un-spendable accounts, bitcoin cannot. As far as bitcoin is concerned these accounts are completely nonsense. This adds a layer of complexity on using bitcoin blockchain as the backbone.
We also need to consider other bitcoin features, like:
It defines the maximum possible size of a block in the chain. So, if we look at our blockchain example:
Currently it has 3 transactions – 2 transfers and 1 reward. Total number of transactions – 4 transfer + 2 rewards (yellow). The length is 3 blocks.
Let’s say I reduce the block size to 2 transactions. Then every block will contain 1 transfer and 1 reward transaction (yellow). This means each transfer needs a reward. This will cause a radical change. With 4 transfers each of them needing 1 reward, my number of blocks will swell to 5 – 4 transactions blocks and 1 Genesis
Similarly, if I increase the block size to 5 transactions. Every block will contain 4 transfers and 1 reward. With 4 transfers in total I can accommodate everything in one block. My number of blocks will be 2 – One Genesis and one Transfer.
In cryptocurrency, megabytes is the measure of block size.
Bitcoin’s block size is 1 MB. At this size 1 bitcoin block can store a maximum of 4200 transactions. The OMNI transactions will also be a part of this limited 4200 “seats”.
Nowadays, increased fees is a serious concern on Bitcoin. It is exactly due to small block size. So, if all coins were use Bitcoin as the base we might see even more heavy fees.
Block Generation Time
Transaction times are tied directly to block generation time. Bitcoin’s generation time is 10 minutes. So, a bitcoin transaction takes at least 10 minutes. The amount doesn’t matter. It is as true for 1 BTC as it is for 0.00001 BTC. In comparison, Litecoin’s block time is 2.5 minutes. So, transactions are 4 times faster.
Hashing Algorithm and Features
Some features require changing the hashing algorithm. Example being CPU mining friendly. Today, bitcoin’s SHA256 hashing algorithm cannot deliver that promise.
While features like full anonymity cannot be delivered on the existing bitcoin blockchain.
Bitcoin uses a scripting language to interact with the blockchain. The language is somewhat restrictive. It was exactly this issue that led to creation of a new coin and the “Rise of ICOs”.
Also published on Medium.