Chain-key tokens
One common way that blockchain networks can enable cross-chain workflows is by 'wrapping' tokens. A wrapped token typically represents an underlying asset on a different blockchain, such as wrapped Bitcoin deployed on Ethereum. Traditional wrapped tokens involve an intermediary that needs to be trusted.
ICP introduces a more secure alternative to wrapped tokens known as chain-key tokens. Chain-key tokens are created using ICP's chain-key cryptography protocols, such as threshold signing. Each chain-key token is deployed on ICP and backed 1:1 with the native token held 100% onchain by an ICP smart contract. There are no intermediaries or centralized bridges used for chain-key tokens.
Chain-key tokens can be swapped for one another seamlessly. Making transactions with chain-key tokens on ICP is often faster and cheaper than transactions on the token's native network.
How to use chain-key tokens in a canister
Each implementation of a chain-key token implements an ICRC token standard so that they can be easily integrated by services such as wallets and DEXs. ICRC standards are used to define the token type, such as fungible or non-fungible, and how that token can be used. To implement smart contracts that use chain-key tokens, simply make calls from a smart contract to the ICRC ledger for the chain-key token you wish to use. Using chain-key tokens does not require implementing a specific type of smart contract, and implementation is not restricted to a specific programming language.
Requirements for chain-key tokens
In addition to the requirement that a chain-key token must adhere to an ICRC token standard, there are additional requirements to ensure a high degree of security and decentralization for all chain-key tokens:
The chain-key token must be a true digital "twin" in the sense that any user can convert the native token to the chain-key token and vice versa, paying only for the transfer and conversion fees. This implies that the chain-key token must be fully backed by the corresponding native token at all times. Conversions may be delayed if one chain is temporarily unavailable but all conversions must be finalized eventually.
All conversions must be transparent. All tokens must be traceable onchain.
The canister handling the conversions must use chain-key signatures to manage the underlying native token. Moreover, it must read data from the native chain in a decentralized manner.
All canisters must be decentralized, meaning:
- All source code must be open source.
- Builds must be reproducible.
- The canisters must be immutable or controlled by a DAO, for example, an SNS or a threshold canister with a large number of verified voters.
Know-your-transaction (KYT) checks
The ckBTC minter interacts with a dedicated KYT canister that executes KYT checks. Checks are applied to both incoming and outgoing transactions.
The ckETH and ckERC20 minters implement a local OFAC checklist for both incoming and outgoing transactions.
Available chain-key tokens
The current chain-key tokens are supported:
ckBTC: A 1:1 digital twin of Bitcoin.
ckETH: A 1:1 digital twin of Ethereum.
ckERC20 tokens such as ckLINK, ckPEPE, and ckUSDC.