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.
- 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)
- 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
- Create a POC that signs an EVM transaction on ICP - Done
- Setup a proper project to accommodate the library (including tests, example project etc) - 1w
- Add functions to the Rust library to create user public key and manage transactions history and nonces - 2w
- Handle different transaction types - 2w
- Implement stable save and restore - 1w
- Add unit tests for the Rust library - 2w
- Implement example project to showcase a no key Ethereum wallet 1w
Open-source contributions
- IDLE Finance bounty #18
- IDLE Finance bounty #11
- Open Source project (I maintain)