UNIGRID Electron GUI wallet
Why Electron for our new UNIGRID GUI wallet and why move away from Qt? This is a question we get asked a lot within our community. In this post we would like to layout the reasoning to a who, what, and why we chose this for UNIGRID.
Electron was initially built to help GitHub create a cross platform text editor called Atom. Since this time it has been made open source and grown in capabalities and adoption. Some of the popular apps built using Electron inlcude but are not limited to.
For the majority of cypro currency wallets out there which have forked off bitcoin they all use Qt. An inherent flaw in the initial design of the Qt wallets is the front end is not separate from the backend (daemon). So what can and does end up happening is the front end will request data that might take some time to process. While it's processing the UI can become completely unresponsive until that data is retreived. This can also happen when the front end is processing some data it will in turn lock the backend.
With Electron we are able to decouple the view from the backend. How our wallet works is that a daemon which runs in the background is embeded inside the Electron build. When the app starts it also launches this daemon. So at no point in time will the front end ever stop responding to user interaction if the backend (daemon) is busy. You might see an indicator that a process is being handled although that's it.
Another issue many users have faced with just about every crpyto currency wallet out there is updates. How many times have you had to keep on top of your #announcement channel's @everybody? As developers this also poses a challenge on our end because we might need you to update in an urgent manner if there is an issue. What typically ends up happening is we have to watch the network until +70% wallets are on the latest version until a spork is enabled on our end to change protocols. It's a very teadious process for all involved.
Now with Electron this no longer becomes an issue. We can simply tag a new release, make it live, and everyone will see there is an update. The app will download this update in the background so no further step is needed by the end user. You simply download the wallet from GitHub once and it will always notify you of new updates! The above image shows you what might happen in the instance there is a mandatory update like a change in protocol. For cosmetic updates which could potentially happen on a daily/weekly basis there will just be an indicator in the top right like you see in the image below.
We've also included in this latest wallet an auto bootstrapping process. The daemon in the background will check the difference between the explorer and current block heights. If it finds there is a big enough gap in blocks a bootstrap is downloaded and extracted from our servers.
In the future once the UNIGRID network is running the wallet will play an integral role. In anticipation of this future we needed a UI which was much faster for us to make changes and make additions. One of the main hurdles cryptocurrnency has had to mass adoption is simplicity of use. With our new wallet we plan to break down that barrier to entry. To that end Electron and UNIGRID are a harmoneous match that will continue to improve the users experience and expand adoption.
Another bonus in using Electron for us is that the speed of development and iterations is multitudes faster. For one we are able to edit design components and see those changes in real time. This tremendously speeds up the process of making changes and focusing on the work that matters. The ease of use for developers and flexibility is also a major imporovement for us along with other teams like neutron and swipp who contribute to the advancement of the wallet.
We've created quite a few videos on the WIP of this wallet that you can watch in the below playlist. You can also follow along our build progress by checking out the current branch on Github.