Hi everyone,
excited to announce the finalisation of our project IC-EVM Connect.
Project Highlights
The ICP-EVM Proxy is a proof-of-concept (PoC) project designed to enhance interoperability between the Internet Computer Protocol (ICP) and EVM-compatible platforms, such us decentralized exchanges (DEXes): ICPSwap, ICPEx, and others, through integration with Dexscreener and similar platforms.
The project focus on developing an adapter to facilitate the translation of ICRC-3 (ICRC-1/standards/ICRC-3 at main · dfinity/ICRC-1 · GitHub) logs into EVM-compatible RPC. It aims to standardize the ICRC-3 protocol for DEXs developed on IC, simplifying integration with third-party tools and enhancing interoperability within the IC ecosystem.
Our work allows exposing this information as an EVM to any other tooling, enabling and facilitating further integration work.
Key Components
- Counter Canister: A simple Rust-based canister that serves as an example of basic ICP functionality. It generates events when incrementing or retrieving the counter value.
- DEX Canister: A Rust-based canister that implements basic decentralized exchange functionality. It manages currency pairs, token operations (mint/burn), and generates ICRC-3 compatible events for all operations.
- Logger Canister: A Rust-based canister that implements ICRC-3 compatible logging. It captures and stores events generated by other canisters (like the Counter and DEX Canisters) in a standardized format.
- EVM Adapter Proxy: A Go-based service that acts as a bridge between ICP and EVM-compatible systems. It performs two main functions:
- Retrieves ICRC-3 log data from the Logger Canister and translates it into EVM-compatible event logs.
- Exposes EVM RPC compatible methods, allowing interaction with ICP canisters using familiar Ethereum tooling.
- SubQuery Indexer: A Node.js-based service that indexes the translated EVM-compatible data. It provides a GraphQL API for efficient querying of the indexed data.
Workflow
- Users can interact with both Counter and DEX Canisters:
- Counter operations: increment and get value
- DEX operations: manage currency pairs, mint/burn tokens, check balances
- All operations generate events that are captured and stored by the Logger Canister in ICRC-3 format
- The EVM Adapter Proxy retrieves logs from the Logger Canister and translates them into EVM-compatible formats
- The SubQuery Indexer processes the translated data, making it queryable through a GraphQL API
Use Cases
This PoC demonstrates potential use cases such as:
- Enabling Ethereum developers to interact with ICP canisters using familiar tools and methods
- Allowing ICP dapps to integrate with existing Ethereum-based analytics or monitoring tools
- Facilitating cross-chain applications that span both ICP and EVM-compatible blockchains
- Demonstrating DEX functionality with standardized event logging and querying
Limitations
As a proof-of-concept, this project has several limitations and is not intended for production use. Some key points to note:
- Simplified implementation of ICRC-3 logging and EVM event translation
- Limited error handling and edge case coverage
- Not optimized for high-throughput or large-scale deployments
- In-memory storage for logs in the Logger Canister, which is not suitable for long-term or high-volume data storage
- Basic DEX functionality without order matching or complex trading features
Future Work
The ultimate goal of this project is to establish a uniform DEX interface akin to that used by Ethereum, promoting a standardized, easily accessible ecosystem for DEX applications across various platforms.
We are currently seeking feedback from the community and are excited about the potential for this integration to become a foundational step toward broader interoperability and usability.
Links
Repository: GitHub - Zondax/icp-icrc3-evm-adapter
Video: https://youtu.be/jWLZR3kmFVQ
Website: https://zondax.ch/
X: x.com