Blockchain Usage Part 2

Smith Garg
7 min readNov 18, 2017

--

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

(We have covered hashing and mining earlier in the blog.)

Once bitcoin became famous there were miners (mining software) written to use the computer graphics card or GPU to mine faster. This difference in mining speed between a normal miner (also known as CPU mining) 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.

With time there were specialized machines called ASIC and FPGA which tilted the bar even further, sometimes in tune of up to 100 times.

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

Litecoin was announced on October 9th, 2011 as a faster coin. Three major changes were:

  1. Faster block time — 2.5 minutes vs 10 minutes on bitcoin
  2. Increased number of coins — 84 million vs 21 million
  3. 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.

Privacy

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 take bitcoin from many people and then 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:

Zcash

Johns Hopkins University professor Matthew D. Green and his graduate students Ian Miers and Christina Garman set out to resolve the above 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 while the ones 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:

Block information

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. If any “t” accounts are involved the amounts show up.

Transaction Information

https://explorer.zcha.in/transactions/ac8c02e26f0c01f72113920666c77cf357a649ab60d6dc2e00315e44e3e982c

This shows a transaction from a “z” account to potentially a mixture of “z” and “t” accounts. Amounts to “t” account is shown but not to “z”. So, transaction amounts between z type accounts are completely hidden.

Monero

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:

Block info

Transaction information

Transaction amounts (“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:

  1. Storing anything on blockchain requires a fee. So, storing information on these special addresses is not free.
  2. 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:

a. Block size defines the maximum possible size of a block in the chain. So, if we look at our blockchain example:

Complete Blockchain

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.

b. Transaction times are tied directly to block generation time. Bitcoin’s generation time is 10 minutes. So, adding a transaction to the bitcoin ledger takes at least 10 minutes. It is true for 1 BTC as well as 0.00001 BTC. In comparison, Litecoin’s block time is 2.5 minutes. So transactions as 4 times faster

c. Some of the additional features like full anonymity cannot be delivered on bitcoin blockchain.

d. Hashing Algorithm — Sometimes a feature can only be provided by changing the hashing algorithm. Example being CPU mining friendly. Today, bitcoin’s SHA256 hashing algorithm is not sufficient.

e. Limited Scripting — 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”.

Originally published at The Blockchain Blog.

--

--