Building a multi user Ethereum wallet on ICP using Alloy

ic-alloy is an open source project to make the Alloy.rs support libraries available to ICP developers. Using Alloy instead of interacting with the EVM RPC canister directly provides a drastically simpler developer experience.

As an example of how to use Alloy on ICP and as a template/starting point for other projects I built a simple multi user Ethereum wallet.

Live demo: https://7vics-6yaaa-aaaai-ap7lq-cai.icp0.io
Frontend source code: ic-alloy-basic-eth-frontend
Backend source code: ic-alloy-basic-eth

Features:

  • Login with Internet Identity to generate an Ethereum wallet address
  • Receive and send Ethereum to other users

The wallet canister uses the identity of the calling user as a derivation path when creating addresses, every user get their own address.

To sign the transfer transaction the canister uses threshold ECDSA signatures generated by the subnet nodes.

Frontend stack:

Backend stack:

More content is coming for ic-alloy:

  • Better documentation, best practices how to build ETH<>ICP apps
  • A blog post and/or video with a walkthrough of the wallet project

:technologist: If you would like to get involved and contribute to ic-alloy, send me a DM.

6 Likes