Skip to main content

ckERC20

Advanced
Ethereum
Chain-key tokens

What is ckERC20?

Chain-key ERC-20 (ckERC20) tokens are ICRC-2-compliant tokens that are backed 1:1 by the corresponding ERC-20-compliant token on Ethereum. For example, there are chain-key tokens for USDC and LINK.

The full list of chain-key tokens can be viewed on the Internet Computer dashboard under 'Chain Fusion.'

Just like other chain-key tokens, such as ckBTC and ckETH, the ckERC20 tokens do not rely on any centralized bridge to facilitate the conversion between the ckERC20 token and the ERC-20 token, which makes the conversion substantially more secure compared to other traditional 'wrapped' tokens.

ckERC20 tokens offer the same advantages over their counterparts on Ethereum, including faster and cheaper transactions.

A ckERC20 token can be created for any ERC-20 token. The process of adding a ckERC20 token requires creating an NNS proposal.

Note that the same requirements as for any other type of chain-key token apply.

How it works

The ckERC20 functionality is provided by two canisters, the ckETH minter and the ledger suite orchestrator (LSO), and a helper smart contract on Ethereum:

Canister / contract                                                                                  Ethereum mainnet                                                                                                                                                                    Sepolia testnet                                                                                                                                                                    
ckETH Minter                        sv3dd-oaaaa-aaaar-qacoa-cai (Canister dashboard)jzenf-aiaaa-aaaar-qaa7q-cai (Canister dashboard)
LSO                    vxkom-oyaaa-aaaar-qafda-cai                                                                          2s5qh-7aaaa-aaaar-qadya-cai                                                                          
Helper0x6abDA0438307733FC299e9C229FD3cc074bD8cC0                                                            0x674Cdbe64Df412DA9bAb1596e00c1520979B5A23                                                      

Note that the helper smart contract might change. It is therefore recommended to request the ckETH minter info and extract the helper smart contract address from the response to assure you have the latest contract address.

The ckETH minter is responsible for handling ERC-20 deposits and withdrawal requests. The ckETH minter handles these tasks because ERC-20 transfers require an Ethereum transaction with a fee in ETH.

The ledger suite orchestrator is responsible for a set of ICRC ledger suites, one ledger suite per ckERC20 token. Each ledger suite consists of a ledger, an index, and possibly one or more archive canisters.

The ledger suite orchestrator makes it possible to handle all ckERC20 tokens in a scalable manner.

Specifically, it can:

  • Spawn a new ICRC ledger suite when adding a new ckERC20 token via an NNS proposal.

  • Upgrade all managed ledger suites via an NNS proposal.

  • Top up the canisters of all managed ledger suites with cycles.

Deploying ckERC20 tokens

Tokens deployed on other networks that use the ERC-20 standard can be launched on ICP as ckERC20 tokens. To propose a new ckERC20 be launched on the mainnet, there are several technical and non-technical steps that should be completed. Learn more in creating a new ckERC20 token.

ckERC20 production application examples

Resources