Create Multi Platform Crypto Wallet's Backbone with Trust Wallet Core

Job ID: 37272821

Budget: €250 – €750 EUR

I am looking for a skilled developer to create the backbone/core functionalities of a multi-platform crypto wallet with Trust Wallet Core's Wasm/NPM library. The ideal candidate should have experience in developing web-based and mobile wallets and be familiar with Trust Wallet Core (https://www.npmjs.com/package/@trustwallet/wallet-core), Angular and Ionic Framework.

We currently have implemented a simple boilerplate in Angular + Ionic to test out Wallet core's functionalities, currently we have implemented a test app with some simple methods to generate new wallets, encrypt it with the user's password and save them locally, import a new wallet, and decrypt it. We will provide the github repository as an example. Note: our test app is badly optimized and should only be used as an example.

We are looking for a developer familiar with Ionic, Angular and blockchain/crypto development to develop the core functionalities of our multi platform crypto wallet, if we are satisfied with the result, we will extend the project to other features as well, as of now the following user flow should be achieved:


-User should be able to generate a new wallet in a 2 step process: the user first sets a password and chooses if he wants to generate a 12 or 24 words mnemonic, then the mnemonic generated through wallet-core is revealed, when the user confirms that he saved the mnemonic, the wallet should be encrypted with the user's password (that should be stored in memory during the session) using wallet-core's encryption functionalities and saved locally.

- User should be able to similarly import a 12 or 24 words mnemonic, the mnemonic should be encrypted and stored locally the same way as for the wallet creation process.

- The user should be able to create and import multiple wallets.

-The user's password should be stored in memory for the duration of the session (until the user closes the browser's window or puts the mobile app in background/closes it), as to be able to provide the user with multiple wallets creation/import features without prompting the user to enter the password everytime, this would also ensure that the password is the same for all the wallets.

- The user should be prompted by a modal or screen to enter the password every time he opens the app/webapp if he already has a wallet, if not he should be redirected to a welcome screen that would allow him to create or import a wallet.

-Two components and the necessary methods should be developed to allow the user to switch between wallets and chains of the same wallet, we should keep track and store the last active wallet as to allow the user to open directly the wallet he was using before leaving or closing the app.

- We should not keep in memory the wallet's mnemonic or private keys while the user doesn't need them, we should only keep the user's password in memory and use it to derive the mnemonic or private keys for the chains when needed (for example we should derive the private keys when the user signs a transaction or the mnemonic when the user wants to backup his wallet).

- User should be able to derive multiple wallets from the same mnemonic, (for example when you create a secondary wallet on metamask) and be able to export the private key of the derived wallets.

- User should be able To send transactions and see his wallet's balances for all the supported chains provided by wallet core, for example when switching to wallet A on ethereum, he should be able to see his eth and tokens balances, and be able to send a transaction using wallet core's functionalities, for both balances and gas fees you can use the API providers you feel are the best.

- User should be able to "receive" a transaction by generating a qr code of his active wallet's address, and also be able to copy it.

-User should be able to see his transaction's history.

The project should be developed using Angular + Ionic and be multi platform: Web, Android and iOS.

You can use Ionic's UI components, there is no need to work on the design.

Please only get in touch if you are an experienced developer, if succesfully completed, we will extend the project. Thank you!