Ethereum Node/Client Synchronization and Scalability Issue
You have heard more and more about blockchain, cryptocurrency, the many success ICO stories , and wanted to learn more and perhaps do your own ICO one day. It would not take long for you to learn that compared to Bitcoin, Ethereum provides much more flexibility and ground work done for you that it is not only peer-to-peer digital payment system, but also a platform that allows other decentralized applications to be built using smart contract.
The platform also allows new cryptocurrency (ERC20 Token) to be created at ease. So that is why so many people choose to use ERC20 Token on Ethereum network, so let Ethereum takes care of detail things like protocol, transaction, confirmation, blockchain, mining, and so on, and so forth, and so we can focus more on the other aspect of the business.
And so you started to get first development tools starting with the standard and official Ethereum client which is also a Ethereum wallet, called Ethereum Mist Wallet. Then you learn that in order for it work you need to get it synchronized with the network for you to be able to see your last balance, but more than that you need it sync-ed before you can deploy your own smart contract. I shall talk about other development tools like remix, truffle, ganache, infura, solc in another article, but wanted to express the frustration on that first tool getting the Ethereum client/node sync-ed.
If you started all these late (after September 2017) like me you will find that you hardly get any of Ethereum client sync-ed. Ethereum Mist (with its underlying geth node) with fast synchronization mode always behind the actual Ethereum network by 200 blocks or so, and never gets sync-ed up after hours, and days, and weeks (!)
You started looking at other clients (ethereum node) like Parity (with the warp mode) which supposed the second most popular ethereum client, the first 95% of blockchain data gets synchronized in minutes, however again the last hundreds of blocks takes forever?!
What really happens? Ethereum compared to bitcoin supposedly promises scalability, reliability and growth potential but now you cannot even get the node sync-ed. My current conclusion after much googling and answers from some experts is Ethereum is facing scalability issue. There are too many people using Ethereum to various activities, congesting the network, some blame goes to those cryptokitties for sure.
What this place, I will be publishing how I overcome the issue and successfully deploy smart contract to the Ethereum mainnet.
Note: all these do not stop Smart contract development, because you can use the Ethereum testnet (Ropsten, Kovan, etc) to deploy your smart contract during development and test out. It is relatively easier to get ethereum node sync-ed to testnet.