Blockchain is an emerging technology, so there are lots of challenges in the implementation of this technology. There are three major types of challenges: scalability, privacy leakage, and selfish mining (Zheng et al., 2018).
With the popularity of cryptocurrencies like Bitcoin and Ethereum, the number of miners is increased in huge numbers. With that, the number of transactions is also increasing day by day, making the blockchain network heavy. According to (Liu, 2019) the size of the Bitcoin blockchain has increased to a very high level and reached to 226 GB at the end of June 2019, which was around 150 GB in 2017. Thus, the load a blockchain is bearing can be seen. All the transactions that are produced have to be stored on the blockchain for the purpose of validation of each transaction, and also if we talk about Bitcoin blockchain it can only process around 5-7 transactions per second. With these numbers of transactions, a blockchain cannot achieve the processing of a large number of transactions in real time. The size of the block is around 1 MB (Madeira, 2016). This size of the block is considered as very small when compared to the number of transactions that might cause delay for many transactions, but if the size of the block is increased it will again slow down the broadcast speed.
Thus, the problem of scalability continues to be the greatest challenge for a block- chain. However, in recent past some methods were proposed that might optimize the storage issues of the blockchain.
Many organizations are moving on to blockchain technology because the technology is believed to be secure and provide privacy to the users of the blockchain because every time a transaction is created it is supported by the address of the user and not the original identity of the user. However, in the recent past it has been found that the blockchain does not guarantee the privacy of the transactions made (Ahmed Kosba, 2016). If it is a public blockchain, every user can read the transactions made by other users and all the transactions, balances, are completely visible to the other users. The problem of privacy leakage arises because the other users get to know the address of sender and receiver because their exchange is being done on the same address, so the real identity of the user can be found out.
There are several methods proposed like Mixing (Moser, 2013), Mixcoin (Joseph Bonneau, 2014), Coinjoin (Maxewell, 2013) and CoinShuffle (Ruffing et al., 2014). These methods are based on the mixing and shuffling of the addresses of the receiver in order to prevent theft.
The blockchain is inevitable to attacks from some miners, known as selfish miners. In the blockchain technology it is believed that if the nodes have 51% of the computing power then they can reverse the blockchain and thus can reverse the transactions. However, there are some recent researches that say if the node has less than 51% of computing power, still it would be dangerous for the blockchain.
In selfish mining, the selfish miner does not broadcast their mined blocks, and they wait for the private branch to get public. A private branch would get public only when some of the requirements are fulfilled. Now before the private blockchain gets open for public non-selfish miners are waiting for the private blockchain and wasting their resources on other branches whereas the selfish miners keep on mining the private chain without any interference from other miners, which enables the selfish miners to generate more profit than others.
In 2015, Saki Billah gave an approach to stop the selfish miners and proposed a Freshness Preferred Method and include an unforgeable timestamp, which might penalize the miners who are beholding the blocks (Billah, 2015), but the approach was vulnerable to a forgeable timestamp.
Then Saki Billah gave the idea of maximum acceptable time (mat). According to this approach a new block must be generated and received by the network with in maximum acceptable time for receiving a new block interval. So, within this mat, an honest miner would receive or generate a new block, and if the miner fails to generate a new one then it would create a dummy block. Thus, with this ZeroBlock approach the selfish miners would not be able to amplify their gain more than the expected.