ckETH: a canister-issued Ether twin token on the IC

Note also that ckETH currently prioritizes correctness and security over availability, as it requires cloudflare, publicnode, and ankr to all fully agree on the state of ethereum. Any disagreement means ckETH waits and tries again until agreement is found. This is great for security & correctness, as it’s incredibly unlikely that cloudflare publicnode and ankr are all at the same time returning the same incorrect data. On the other hand, it sacrifices some availability, as one provider being incorrect/unavailable means delays in ETH<>ckETH conversions.

This could easily be changed of course, so if this would happen more often, perhaps saying something like “3 out of 4 providers must agree” makes more sense.

4 Likes

Pretty sure you can.

We’ve been waiting to long, for user experience, I think it’s time to fix this.

1 Like

Quick update on this issue: we notice that the cloudflare RPC interface is still returning very strange responses, returning incorrect tx counts, omitting events, etc. We hoped it would perhaps resolve itself (nodes perhaps needing to resync after upgrade) but it hasn’t, and we did not manage to get into contact with cloudflare to resolve the issue on their side. To that end, we submitted NNS proposal 128365, which proposes to upgrade the ckETH minter to remove its dependency on cloudflare, replacing it with LlamaNodes. We expect that all pending ETH → ckETH conversions would go through soon after the upgrade is adopted.

8 Likes

Guys, any update on this? I’ve had ETH that I converted in to ckETH tied up on IC Light now for over 5 days. Massivly inconvenient. It’s also not a small amount of funds that I have zero access to or a way of reversing.

Any update would be appreciated.

Thank you.

1 Like

Sorry, ignore my question. Just saw this.

The CodeGov team has reviewed this proposal (128365) and voted to adopt. Our results and comments can be found on OpenChat at this link.

4 Likes

Proposal 128365 was just adopted and the ckETH minter can read the Ethereum state again now that the problematic cloudflare RPC node was replaced. All pending ETH → ckETH transactions have been processed.

11 Likes

Great, thanks Manu for the update. Appreciate it.

Hi everyone,

Those who’re interested in testing the ckERC20 tokens, we have upgraded the testing version of the ckETH minter on ICP mainnet and added the Sepolia version of the USDC token to it.

You can obtain Sepolia ETH (from some faucet, like this or this or this) and Sepolia USDC from here.

Once you have both the Sepolia ETH and USDC, you can deposit ETH to mint ckETH as before and deposit USDC to mint ckUSDC. Note that while you don’t need ckETH to deposit USDC, you will need it to withdraw ckUSDC and receive USDC back. Some of your ckSepoliaETH will be used by the minter canister to pay for the transfer transaction on the Sepolia testnet.

You can find all instructions here.

The canister IDs of ckSepoliaETH minter can be found here, and the ckSepoliaETH minter also exposes a dashboard showing conversions and the corresponding Ethereum transactions both for ckETH and ckERC20 transactions.

Please note that you can also invoke the get_minter_info on the Sepolia minter dashboard to get all ids and ckERC20 tokens supported.

Note that there is no nice front-end yet, so you’ll have to be comfortable with some dfx calls especially for the last step. If you’re a developer and aim to support converting between ERC20 and the corresponding ck-twin token in your dapp, then you can also start experimenting with ckUSDC.

Please keep the following in mind:

  • This is still under development, so things may break, and the state of the canister might be reset upon upgrades.
  • It is expected that there are still bugs. Please help us make ckETH/ckUSDC rock solid by reporting those here.
  • In case the instructions don’t work for you, please report back, and we’ll be happy to help and improve the instructions.
34 Likes

That’s fantastic, huge news indeed! Thanks so much for the dedicated work of the DFINITY team!

7 Likes

where can we check ckETH liquidity (and future ckUSDC)?

2 Likes

On the dashboard: Ethereum - ICP Dashboard.

I assume, that ckUSDC will be made available there as well.

3 Likes

During the iteration process of ckETH and ckERC20, why not design extensive marketing campaigns and invite users from the entire blockchain market to participate in small-scale, large-scale testing activities transitioning from USDC to ckUSDC?

Dfinity should collaborate with Dapp and swap developers, using ICP or other SNS token airdrops as subsidies to invite more potential users to participate in minting and testing. Otherwise, relying solely on high-end development tools and professional developers will severely limit its impact. Even if ckUSDC is launched, the audience and user base will be very limited.

Many Layer 2 projects are adept at rallying a wide range of users for testing and airdrops. It is hoped that developers can learn from the excellent marketing techniques of other projects.

2 Likes

@christian @Manu It’s been 5 hours and my ckSepoliaUSDC withdrawal is still pending.


Hi @curry

Looking at the logs, it seems there was unfortunately a huge spike of transaction fees on Sepolia and that explains why your withdrawal is currently not being processed, because the burned amount of ckETH currently doesn’t cover the transaction fees. This should resolved itself, once the transaction fees decrease

In more details:

  • Your withdrawal request was accepted around block 5_757_343, where the base fee per gas was 16 wei.
  • So the maximum transaction fee was evaluated as ((2 * base_fee_per_gas) + max_priority_fee_per_gas) * 65_000 == 97_500_002_080_000 , where the factor 2 accounts (most of the time) for potential increase in base_fee_per_gas and max_priority_fee_per_gas was in that case 1.5 gwei. This amount was burn on the ckETH ledger to pay for the (future) transaction fee and so the corresponding transaction will not be crafted if the currently estimated transaction fee is higher than this value.
  • The current (Block 5_759_470) base fee per gas is 203_989 wei and the minter expects to have at least 97_524_096_930_000 wei to pay for the transaction fee.
5 Likes

Good news @curry

As expected, once the fees were back to normal your withdrawal was processed by the minter and the corresponding Ethereum transaction was successfully sent.

2 Likes

It’s a pleasure to share that the ICLight front-end already supports.

3 Likes

Yes it does. And yes it is super clean of a UI. :handshake:

Hi everyone,

An important update regarding ckERC20 on Sepolia: the deposit helper smart contract was changed to use OpenZeppelin SafeERC20 methods to be able to also support not fully ERC-20 compliant tokens (e.g. USDT) in the future.

That means that ckERC20 deposits are only processed when going through the new helper smart contract:

  1. Before: 0xE1788E4834c896F1932188645cc36c54d1b80AC1
  2. Now: 0x70e02Abf44E62Da8206130Cd7ca5279a8F6d6241

:information_source: As mentioned in the doc, you should always retrieve the erc20_helper_contract_address from the get_minter_info endpoint before making a deposit. This is particularly relevant for front-ends.

5 Likes