Input Output, an engineering company behind Cardano that builds cryptocurrencies and blockchains for academic institutions, government entities, and corporations today announced the release of Icarus, a reference implementation for a lightweight wallet.
Icarus was born out of a series of proof of concepts which began back in March of this year. A small section of the IOHK engineering team was interested to find out if they could demonstrate that it would be possible to create a lightweight Cardano wallet with all the features of Daedalus but that was easy to use and fast to set up.
“Whilst we are improving Daedalus synchronization speeds all the time, notably in the recent 1.3 release, we wanted to see if we could build something fast for Ada users who might not require the full features of Daedalus, or might not have the bandwidth or machine requirements to easily run Daedalus. Therefore, investigating whether it would be possible to build a wallet where the user did not have to download the whole blockchain – and could run in a browser or on a mobile device – was worth the effort of a small dedicated team. To build a wallet like this, we would need to prove that we could safely and securely store private keys and execute client-side cryptographic operations in the browser. In tandem, we would need to communicate with the Cardano nodes to provide users with their current UTxO state. If this could be accomplished, it would be no mean feat, hence the name Icarus – from the beginning we knew we would be flying close to the sun.”
Starting from the beginning of March, the IOHK team wanted to see if, within a month, it could build a skeleton Chrome extension application and verify that Cardano cryptography could be run in the browser using WebAssembly compiled from Rust. (The Rust library of Cardano primitives has been developed by Vincent Hanquez and Nicolas di Prima, IOHK Specialised Cryptographic Engineers. It has already been used for the paper wallet certificate feature in Daedalus and will evolve into Project Prometheus – which IOHK will be releasing more information on in due course.) To build this Chrome extension, the team would need to successfully demonstrate it could import and track a wallet balance. they have to do all this without sacrificing the IOHK engineering principles of quality and security.
The demo at the end of March went well and produced a functional prototype that could be developed. Once each demo had been given, the wider IOHK engineering team had a chance to review, critique and provide feedback about the design decisions the Icarus project team was taking, which proved invaluable to the process. After proof of concept 1, it was believed that good progress was being made and another month’s effort from the team would be worthwhile.
Proof of concept 2 was delivered in mid-April. The Rust engineers had spent the intervening time extending the Rust library to support the Cardano primitives for the creation, signing, and broadcast of transactions, and providing an API so that these could be run in the browser. On the application side, we wanted to see if we could reuse the UX/UI components of Daedalus to provide a smooth user experience. Fortunately, the IOHK Daedalus development team maintained a high-quality, portable UI framework for React, called React-Polymorph, which was found to be easily portable to the Chrome extension.
Proof of concept 3 in late May involved making Icarus fully interoperable with the Daedalus wallet. The team worked to develop a new Hierarchical Deterministic (HD) address scheme that Daedalus will use in the future and will ensure ongoing compatibility.
Brian McKenna, IOHK Project Manager continued:
“One important feature we built at this point was to allow the user to enter their Daedalus wallet recovery phrase in Icarus, and for their Ada in Daedalus to be transferred to the Icarus wallet. In effect, this allows users to retrieve their Ada without using the Daedalus wallet. We also optimized wallet restoration times. Finally, after only three months and three demo’s we had a fully functional prototype lightweight Cardano wallet!”
Now, before the team could ensure this was a reference implementation it could release to the community, they wanted to ensure that it performed at scale. This, along with some code clean-up, was the main task of the final proof of concept 4 in early June. To finalize, the IOHK team called upon the experience of Philipp Kant, in IOHK benchmarking, and Neil Davies, leading networking, and successfully conducted a series of rigorous stress and failover tests on the architecture.
The code base has been quality assured by Allied Testing, a leading quality assurance and testing company. We also engaged Kudelski Security, a cybersecurity consultancy, to perform a full security audit of the code – their report will be published soon.
The Rust library that was used to bring the Cardano cryptography into the browser has spawned another IOHK project, Project Prometheus. IOHK will be releasing more information on this in due course. Prometheus will maintain the open source spirit of Icarus and further extend the toolbox of Rust modules. The project will be made available to the open source community to easily build high-quality applications using Cardano.
The first iteration of Prometheus will be a full command line interface wallet, which the community can expect to see in September.
The segmented development team and rapid iteration approach to software development has worked well on Project Icarus and we will be employing this strategy again. We are happy that Ada holders will have the ability to store their Ada in the really cool Yoroi wallet and that developers have a high-quality reference implementation on which to base their own new light and mobile wallets for Cardano. The project has also given rise to Project Prometheus which is the natural evolution of the spirit of Icarus. We feel that we have developed, in quite a short time, a very useful quality assured and security audited reference implementation for a lightweight Cardano wallet. We encourage the open source community to fork the Icarus code base, compile it, and maybe even build your own wallet for Cardano. We welcome contributions and hope that this effort will benefit the entire community.