Ethereum <> ICP
A true World Computer enables a multi-chain environment where centralized bridges are obsolete and smart contracts can seamlessly communicate across blockchains. ICP already integrates with the Bitcoin Network, and native ETH integration is underway.
Smart contracts on the Internet Computer are the glue between the world’s most important blockchains.
X-Chain smart contract calls
As a world computer on a mission to realize blockchain singularity, the Internet Computer (ICP) must be capable of creating a multi-chain environment by integrating with the world's major blockchains. Native Bitcoin integration, which brings smart contracts to Bitcoin, and Bitcoin to the ICP, has already been deployed.
Next on the list is kickstarting a native trustless integration with the Ethereum network. An ETH <> ICP integration will enable smart contracts on both networks to interact with each other. The Internet Computer could then securely read the balance of an ETH or ERC-20 account, for example, and sign and submit Ethereum transactions, including ETH and ERC-20 transfers.
Reversely, the integration would also enable Ethereum smart contracts to interact with ICP smart contracts. Ethereum smart contracts would then be able to offload heavy, expensive computations onto the Internet Computer, for example.
X-chain smart contract calls enable a wide range of use cases like swapping ERC-20 tokens, natively holding ETH and major stable coins such as USDC, or trading ETH NFTs without wrapping on ICP based NFT marketplaces.
The future of blockchain is multi-chain!
Like native Bitcoin on ICP, Ethereum transactions could be signed using ECDSA signatures. ICP already now offers threshold ECDSA signing capabilities, referred to as chain-key ECDSA signing:
- Every canister smart contract would have an ECDSA key pair (actually, it can have many) that it could use to derive an Ethereum address and sign transactions.
- A private signing key would be secret shared among many nodes and periodically reshared.
- ECDSA signatures are computed using cryptographic multi-party computation (MPC) protocols, which are resilient against attacks by malicious parties.
Chain-key ECDSA signing could be accessed by canisters through the ECDSA API.
Beyond chain-key ECDSA signing, the Internet Computer blockchain and the Ethereum network require integration on a protocol level to allow two-way calls between smart contracts on the Internet Computer and Ethereum without any additional parties or trust assumptions. This will be powered by an on-chain Ethereum RPC API running on the Internet Computer based on direct integration with the Ethereum network. Canister smart contracts will be able to interact with this API directly.
As the implementation of an on-chain Ethereum full node API is a sizeable project, the ETH <> ICP integration will be built in two phases - and in close collaboration with the ICP community.
Solving the Ethereum challenge
While the Ethereum network is currently the world's largest smart contract blockchain in terms of market cap, TVL, and daily DeFi volume, it has many pain points such as costly gas fees and limited scalability, which delay adoption and create major obstacles for developers. The Internet Computer, with its reverse gas model and ability to scale and perform at high speed, could offer a multi-chain environement that will make it possible for new and inexperienced users to enjoy the full utility benefits of ETH. Ethereum integration will unfold in two phases:
Phase 1: HTTPS outcalls
The ICP community has started building the necessary functionality in the form of a readily-deployable canister that offers the on-chain Ethereum full node API and uses HTTPS outcalls to cloud API providers to securely query the Ethereum blockchain and send transaction to it. ICP community members and DFINITY engineering teams are currently working together to improve this solution. Phase 1 will allow for a simple and smooth migration path to Phase 2, a full protocol integration.
Phase 2: On-chain Ethereum API
Phase 2 involves full protocol-level integration to realize an on-chain Ethereum API on the Internet Computer. This API will be enabled by running Ethereum full nodes next to each ICP replica on a large ICP subnet, and communicating with these subnets from the replicas through ICP consensus. This approach has trust properties very similar to running an Ethereum full node on chain on the Internet Computer, and is perceived as such by canisters. Due to the nature of complexity, Phase 2 it will take quite some time to complete.
In February 2023, the ICP DeFi community convened at the DFINITY headquarters in Zurich during a DeFi focused ICP.Lab to discuss an Ethereum integration. The outcome: As a protocol-level integration will take some time to complete, the community came up with a short-term solution to bring liquidity from Ethereum to the Internet Computer — one that enables using ETH and ERC-20 tokens for use cases such as the IC’s DEXs, lending protocols, or marketplaces.
This Phase 1 of the Ethereum integration has already been realized by the ICP community. An open sourced canister providing an on-chain Ethereum RPC API is available to the public, and can be deployed in dapps as a gateway to the Ethereum network.
The next steps are to refine the APIs by adding further functionality to simplify building dapps. Phase 1 will also entail improving the canister, security checks, and deploying the canister on a system subnet to add IPv4 support, as the majority of API providers only support IPv4.
Chain-key ETH & ERC-20
The Ethereum integration will enable the use of chain-key tokens such as ckETH and ckERC-20 tokens, including ckUSDC and ckUSDT stablecoins, to turbocharge ICP DEXs and bring major liquidity to the ICP ecosystem. It’s fast, low-tx-fee ETH on the Internet Computer with no centralized intermediary.
Build your own Ethereum
IC Web3 Canister
The ic-web3 library by Rocklabs has been extended to offer an on-chain Ethereum RPC API, using HTTPS outcalls as transport to communicate with Ethereum RPC API providers.
EVM Utils Canister
An ICP community member has implemented a helper canister to offer Ethereum-related functionality for Motoko programmers. Run this canister to gain access to functionality such as Keccak hashing or creating transactions to enable your Motoko canister with this functionality.
Omnic cross-chain messaging
Omnic cross-chain messaging is a community-built protocol offering infrastructure for cross-chain message exchange between the IC and other blockchains, including Ethereum. Omnic uses chain-key ECDSA signing for obtaining a strong trust model.
Paranic cross-chain asset bridge
The Paranic project allows for exchanging assets between the IC and other blockchains, including Ethereum. The project uses the Omnic cross-chain messaging protocol as foundational layer.
ERC-721 IC assets tutorial
This tutorial explains hosting metadata for ERC-721 NFTs on the Internet Computer and thus allows Ethereum NFT deployments to reduce their dependency on public cloud providers for hosting the NFT metadata such as images. This makes Ethereum NFTs much more potent than today when being hosted on public cloud.
Uniswap user interface
A demo that hosts a Uniswap user interface on the Internet Computer to solve the shortcoming of the typical way of deploying Ethereum frontends on public cloud services. The blueprint of this project can be applied to any Ethereum dapp to strengthen its trust model by hosting the frontend on the IC instead of a public cloud provider.
No key wallet
This is an example project of a canister-based Ethereum wallet using chain-key ECDSA signing.