Janus Wallet
Our wallet now has a new name! We cover recent development, discuss future plans and talk about the name choice for the wallet.
In ancient Roman religion and myth, Janus (/ˈdʒeɪnəs/ JAY-nəs; Latin: IANVS (Iānus), pronounced [ˈjaːnʊs]) is the god of beginnings, gates, transitions, time, duality, doorways, passages, frames, and endings.
Janus is a modern cryptocurrency wallet based on the JavaScript Electron UI toolkit. Janus open source wallet can be used for multiple different types of blockchains. It will work with RPC and daemon based wallets like Unigrid and also node based wallets like Cypherium.
Security
Janus is a secure cryptocurrency wallet. For daemon based wallets they are using the core blockchain and database to store your keys. Standard encryption is used on these types of wallets and can be encrypted from within settings if your wallet is new or unencrypted.
For node based wallets like Janus Cypherium, your private keys are stored encrypted in a local database. This is default and they will never be stored unencrypted. Those keys never leave your computer and are never sent across the network. For encryption of your keys we use Advanced Encryption Standard AES-256.
Fees
Janus wallet is free to use and open source to copy and use as your own. We only depend on donations to fund future development and do not charge any transaction fees to use our wallets.
Bitcoin-Qt
When satoshi nakamoto first built bitcoin he chose QT as that basis to build a cross platform GUI. In the beginning this was an extremely rudimentary application that served it's purpose well. Below is an image of Bitcoin-Qt and the early iterations of the GUI wallet.
As the years passed on this eventually was renamed to Bitcoin Core as more open source developers contributed to the project. With each iteration they kept building on top of the last to add more features to the wallet. One problem with this was that in the QT wallet the view and model are not separated. So as wallets grew in size as did the chain the performance of the GUI itself suffered. What ends up happening is when requesting data from the daemon (model) the GUI would have to wait for a response as they are one in the same by design in the Bitcion Qt wallet.
ElectronJS
Firstly let us talk a bit about what Electron is and how it got its start. ElectronJS is a javascript API which enables you to create cross-platform applications using web technologies like javascript, HTML, and css. These technologies have become standard across the web to building responsive UI and web apps. Now we're able to use this same technology to build desktop apps. This allows for extremely fast iterations and absolute control over the look and feel of our app.
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.
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.
Release
The Janus wallet will be releasing it's first MVP version for Cypherium. The publish date of this wallet will be shortly after the Cypherium chain transactions are enabled. Stay tuned for future updates and progress.