How to Acquire ckETH

Jennifer Tran
The Internet Computer Review
6 min readDec 20, 2023

This article provides an overview of how Ethereum holders can acquire chain-key Ether, or ckETH, an Internet Computer (ICP)-native token that represents Ether (ETH), the native token of Ethereum.

Overview

Currently, holders of ETH on Ethereum can acquire ckETH using ICLighthouse or Etherscan as outlined in the documentation below.

In addition, ICP holders can acquire ckETH by swapping ICP or another ICRC-1 token for ckETH.

How does ckETH work?

ckETH is the digital twin of ETH on ICP. Ethereum holders can acquire ckETH using these five easy steps:

  1. Obtain an ICP principal or wallet address.
  2. Deposit your ETH: Ethereum holders can deposit Ether to the deposit function in the ckETH helper contract on Ethereum 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175 and specify their ICP principal or wallet address in step one where they want their minted ckETH to appear.
  3. Mint ckETH: The ICP ckETH canister smart contract will then mint the same amount of ckETH to the indicated ICP principal or wallet address.
  4. Use ckETH: The ICP principal or wallet address can now use ckETH natively on the Internet Computer.
  5. Convert back to ETH any time: When the ICP principal wants to convert ckETH back to ETH, they can request the ckETH canister smart contract with the ETH amount and Ethereum address to which they want to send the ETH. The wallet address 0xb25eA1D493B49a1DeD42aC5B1208cC618f9A9B80 will send the ETH to the wallet address noted here.

Check out this DFINITY forum post to learn more about how ckETH works.

Using ICLighthouse

Step 1: Obtain an ICP principal or wallet address.

ICLighthouse allows for authentication using Plug Wallet or Internet Identity.

Step 2: Deposit ETH

Navigate to this link: https://iclight.io/account.

Connect using either Plug Wallet or Internet Identity.

You will be asked to choose [Network] — [Token] to [Network] — [Token].

Choose Ethereum Mainnet — ETH (Ethereum Mainnet) to IC Network — ckETH (IC Network) as the option. Your page will look similar to this:

Click on Continue.

The next screen will ask you to input the amount of ETH that you would like to transfer in exchange for ckETH. Enter the ETH amount (minimum of 0.03 ETH) and then click on Send with Metamask.

You will be requested to sign and pay a gas fee for the transaction.

You will be shown a pending transaction and a block confirmation screen after you confirm your transaction.

An example of Mint modal when transaction and block confirmation is pending

The estimated block confirmation time is currently about 20 minutes. The status of the transaction will be updated as soon as the block is confirmed.

An example of the Mint modal when transaction and block confirmation are confirmed

Close out of the modal once the transaction and block are listed as confirmed.

You will see your ckETH balance change on the main page.

An example of the ckETH balance amount on a user profile on ICLighthouse

Using Etherscan

Step 1: Obtain an ICP principal or wallet address and convert it to 32 bytes.

There are several ways to obtain an ICP principal easily including Bitfinity Wallet and NNS Wallet.

Finding Your Principal

Your ICP principal or wallet address is also the address that you will use to receive ICRC-1 tokens.

Bitfinity:

NNS Wallet:

Under My Tokens, choose ckETH. In the main section, copy the principal ID shown (a combination of letters with a copy button to the right of it).

It will have the same format as this:

fczpy-fkvmu-4nvmb-sgthc-skdig-yo6vt-2lcrd-rjgzk-vhf4i-iqsp7-mae

Convert the ICP principal or wallet address to 32 bytes

You must convert the ICP principal or wallet address to 32 bytes to pass in as an argument in Step 3.

Input your ICP principal from Step 1 in the Principal -> 32 bytes Conversion section in this link: https://sv3dd-oaaaa-aaaar-qacoa-cai.raw.icp0.io/dashboard.

Your ICP principal in 32 bytes is the returned result.

For example, the 32-byte equivalent of the ICP principal fczpy-fkvmu-4nvmb-sgthc-skdig-yo6vt-2lcrd-rjgzk-vhf4i-iqsp7-mae is 0x1d556538dab03234ce292868361deacf4b1447149b2aa9cbc422127fd8020000.

An example of using the Principal -> 32 bytes Conversion section

Step 2: Deposit ETH

You must deposit ETH using the deposit function in the ckETH helper contract on Ethereum 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175 and specify the 32-byte ICP principal or wallet address created in Step 1 to receive ckETH.

Navigate to this Etherscan link for the Ethereum contract address 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175: https://etherscan.io/address/0x7574eB42cA208A4f6960ECCAfDF186D627dCC175#writeContract

Scroll down to under the Write Contract tab. Click on Connect to Web3:

You will now be prompted to connect your Ethereum wallet (either Metamask, WalletConnect, or Coinbase Wallet).

The section will show your connected Ethereum wallet address once your wallet is connected:

Click on the deposit function dropdown.

  • Input the ETH amount that you would like to deposit in exchange for ckETH in the deposit input.
  • Input the 32-byte ICP principal that you received from Step 2 in the _principal input.
An example of the deposit function dropdown and list of inputs

Click on Write.

Please note to only to send ETH on Ethereum using the deposit function in the ckETH helper contract 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175 on Ethereum. Any other method will result in the loss of ETH.

You will be requested to sign and pay a gas fee for the transaction. Please make sure that the ETH amount is correct.

You will see a View Your Transaction button under the deposit function section after you sign.

An example of the View Your Transaction button is shown in the deposit function section.

The View Your Transaction button can navigate to a link to a transaction similar to this that shows your wallet address interacting with contract address 0x7574eB42cA208A4f6960ECCAfDF186D627dCC175: https://etherscan.io/tx/0x7be3408a897c972506e041a673cbc81ba6d719357664cf4c11b8d56632cf2f71.

You will need to wait until both the Ethereum transaction succeeds and the block is confirmed to receive ckETH. The estimated block confirmation time is currently about 20 minutes.

An example of a transaction that is successful and its block confirmed

You can check the ckETH Minter Dashboard on ICP to confirm that ckETH has been sent to you once the Ethereum transaction is successful and the block is confirmed.

A minted event will show the ETH amount in WEI (ETH amount * 10¹⁸), the transaction hash, and your ICP principal.

An example of a minted event confirmation on the ckETH Minter Dashboard

Withdrawing ckETH to ETH

ICLighthouse supports withdrawing ckETH back to ETH. You can follow similar steps as acquiring ckETH for ICLighthouse but instead, use the option IC Network — ckETH (IC Network) to Ethereum Mainnet — ETH (Ethereum Mainnet).

DFINITY is also working on supporting ckETH on the NNS Dapp.

--

--