Ethereum & EVM integration
Smart contracts on ICP can directly interact with the Ethereum network and other networks that are using the Ethereum Virtual Machine (EVM), such as Polygon and Avalanche. This integration is possible thanks to ICP's HTTPS outcalls and threshold ECDSA features, which allow Ethereum transactions to be queried and ICP smart contracts to sign and submit transactions to Ethereum.
Threshold ECDSA: A smart contract can have a secret key that is stored in a secure and decentralized way using chain-key cryptography. Messages sent by the smart contract can be signed using this key, enabling signed transactions to be sent to Ethereum from the smart contract.
HTTPS outcalls: To query information from Ethereum and other EVM networks, HTTPS outcalls are used. HTTPS outcalls can obtain information from external sources. In this integration, they're used to obtain data from RPC-JSON services by querying Ethereum's transactions, addresses, and block information. To facilitate RPC-JSON calls, the EVM RPC canister has been created and deployed on the mainnet, providing an API endpoint that smart contracts can use.
EVM RPC canister
Canisters deployed on ICP are able to communicate with the Ethereum blockchain and other EVM-compatible networks using the EVM RPC canister. This canister sends API requests to JSON-RPC services such as CloudFlare, Alchemy, Ankr, BlockPI, or Public Node using HTTPS outcalls.
This enables functionality similar to traditional Ethereum dapps, including querying Ethereum smart contract states and submitting raw transactions.
Beyond the Ethereum blockchain, this canister also has partial support for Polygon, Avalanche, and other popular EVM networks. Check out ChainList.org for an extensive list of compatible networks and RPC providers.
You can learn how to use the EVM RPC canister.
ckETH
ICP implements a smart contract that uses threshold ECDSA and chain-key cryptography to provide a ckETH token (chain-key ETH) that is backed 1:1 by ETH.
The primary value of chain-key tokens, such as ckETH, is that it can be transferred with the low finality time (within seconds) and for a fraction of the cost of a transaction on the token's native network (in this instance, a ETH transaction on Ethereum).
Use cases and sample dapps
The threshold ECDSA API provides a way for smart contracts to sign transactions with their secret keys. The EVM RPC canister allows smart contracts to read the Ethereum network information and send signed transactions.
The ckETH token is suitable for the common use cases of holding, transferring, and trading ETH.
Sample apps:
Online betting platforms like VaultBet.
Social applications that support sending crypto to other users, like OpenChat.
Crowdfunding platforms that accept ETH such as Funded.
Digital identities that can be used to hold multi-chain assets like NFID.
View the full list of Ethereum ecosystem examples.