Input Output, an engineering firm behind Cardano that creates cryptocurrencies and blockchains for academic institutions, government agencies and corporations, today announced the release of Icarus, a reference implementation for a lightweight wallet.
Ikarus was born out of a series of proof-of-concepts that started back in March of this year. A small part of the IOHK development team was interested in finding out if they could demonstrate that it was possible to create a lightweight Cardano wallet with all of Daedalus’ features, but which was easy to use and quick to set up.
[perfectpullquote align=”full” bordertop=”false” cite=”Brian McKenna, IOHK Project Manager” link=”” color=”” class=”” size=””]“While we are constantly improving the Daedalus synchronization speed, especially in the latest version 1.3, we wanted to find out if we could develop something quickly for Ada users who may not need all of Daedalus’ functions or who do not have the bandwidth or the computer Requirements to easily run Daedalus. Therefore, it was worth the effort of a small dedicated team to investigate whether it would be possible to create a wallet in which the user did not have to download the entire blockchain – and which could be run in a browser or on a mobile device. To create such a wallet, we would need to demonstrate that we can securely store private keys and perform client-side cryptographic operations in the browser. At the same time, we would have to communicate with the Cardano nodes in order to provide the users with their current UTxO status. If this could be achieved it would be no easy task, hence the name Icarus – we knew from the start that we would be flying close to the sun. “[/perfectpullquote]
Starting in early March, the IOHK team wanted to check whether a Skeleton Chrome extension application could be built within a month and verify that the Cardano cryptography could be run in the browser using WebAssembly compiled from Rust. (The Rust library with Cardano primitives was developed by Vincent Hanquez and Nicolas di Prima, IOHK Specialized Cryptographic Engineers. It was already used for the “Paper Wallet Certificate” function in Daedalus and will evolve into Project Prometheus. IOHK will be more Publish information in due course.) To create this Chrome extension, the team must successfully demonstrate that a wallet balance can be imported and tracked. You must do all of this without compromising IOHK’s technical principles of quality and safety.
The demo at the end of March went well and produced a functional prototype that could be developed. After each demo, the broader IOHK engineering team had the opportunity to review, criticize and provide feedback on the design decisions made by the Icarus project team, which was invaluable to the process. After Proof of Concept 1, it was assumed that good progress had been made and that another month of the team would be worth it.
The proof of concept 2 was delivered in mid-April. The Rust engineers had meanwhile expanded the Rust library to support the Cardano basics for creating, signing, and transmitting transactions and to provide an API so that they could be executed in the browser. On the application side, we wanted to see if we could reuse Daedalus’ UX / UI components to ensure a smooth user experience. Fortunately, the IOHK Daedalus development team maintained a high quality, portable UI framework for React called React-Polymorph, which can be easily ported to the Chrome extension.
Proof of Concept 3 at the end of May included full interoperability of Icarus with the Daedalus wallet. The team worked to develop a new hierarchical determinist (HD) addressing scheme that Daedalus will use in the future and ensure continued compatibility.
Brian McKenna, IOHK project manager continued:
“An important feature that we created at this point was that the user could enter their recovery phrase for the Daedalus wallet in Icarus and transfer their Ada in Daedalus to the Icarus wallet. This allows users to access their Ada without using the Daedalus wallet. We have also optimized the recovery times for wallets. After just three months and three demos, we finally had a fully functional prototype of a lightweight Cardano wallet! “
Before the team could make sure it was a reference implementation to share with the community, they wanted to make sure it worked on a large scale. This, along with some code cleanups, was the main task of the final Proof of Concept 4 in early June. Finally, the IOHK team leveraged Philipp Kant’s experience in IOHK benchmarking and Neil Davies, the leading network, and successfully ran a series of rigorous stress and failover tests on the architecture.
The code base was quality assured by Allied Testing, a leading quality assurance and testing company. We also hired Kudelski Security, a cybersecurity consultancy, to do a full security review of the code. The report will be published shortly.
The Rust library that brought Cardano cryptography to the browser spawned another IOHK project, Project Prometheus. IOHK will publish further information on this in due course. Prometheus will keep the open source spirit of Icarus and further expand the toolbox of Rust modules. The project is made available to the open source community to easily create high quality applications with Cardano.
The first iteration of Prometheus will be a full command line interface wallet that the community can expect in September.
[perfectpullquote align=”full” bordertop=”false” cite=”Brian McKenna, IOHK Project Manager” link=”” color=”” class=”” size=””]The segmented development team and fast iteration approach to software development worked well at Project Icarus and we will be applying that strategy again. We’re excited that Ada owners can keep their Ada in the really cool Yoroi wallet and that developers have a high quality reference implementation on which to build their own new Light and Mobile wallets for Cardano. The project also spawned the Prometheus project, which depicts the natural evolution of the mind of Icarus. We believe that we have developed a very useful, quality assured and security-tested reference implementation for a lightweight Cardano wallet in a relatively short period of time. We encourage the open source community to expand, compile, and possibly even create your own wallet for Cardano on the Icarus code base. We welcome contributions and hope that these efforts benefit the entire community.[/perfectpullquote]