Completed: ICDevs.org Bounty #27b - NoKeyWallet - Rust - up to $10k

Hey,

I’m interested along with @nikolas-con for this bounty.

Design Overview

The project will have 2 parts, a rust library with unit tests and an example project with an ICP canister and a simple frontend. We will also make a Readme on how to use the library and how to import the Rust library in other projects.

  1. Rust library
  • Functions: create_public_key, get_caller_public_key, sign_raw_transaction, get_caller_transactions, clear_caller_history, stable_save and stable_restore
  • Dependencies: At the moment we are editing the signed transaction hex manually and we don’t use external libraries other than ic_cdk, ic_cdk_macros, candid. In the final version we probably use a few libraries to sign the transaction instead of doing it manually.
  • Consideration: The library should support different types of EVM transactions (eg. eip-2718, eip-1559, history)
  1. Example project (Rust canister + React frontend)
  • Functionality: Connect wallet (Plug wallet), Create Ethereum wallet, Transfer ETH

  • Dependencies: ethers, hardhat, ethereumjs-tx, react

The example project will show how to use the library. It will be a simple No Key wallet with ICP.

Estimated timeline

  1. Create a POC that signs an EVM transaction on ICP - Done
  2. Setup a proper project to accommodate the library (including tests, example project etc) - 1w
  3. Add functions to the Rust library to create user public key and manage transactions history and nonces - 2w
  4. Handle different transaction types - 2w
  5. Implement stable save and restore - 1w
  6. Add unit tests for the Rust library - 2w
  7. Implement example project to showcase a no key Ethereum wallet 1w

Open-source contributions

  1. IDLE Finance bounty #18
  1. IDLE Finance bounty #11
  1. Open Source project (I maintain)