Questions about Chain Key Tokens(like ckbtc)

Hi everyone && Difinity teams, I have read all about the code of ckbtc minter, so I have some questions about ck-token here:

  1. Is chain-key(t-ECDSA) only an attribute of the ck-token?
  2. Are each transaction(includes mint, transfer, and approve, etc) should perform chain-key signature?
  3. What else can we do for the chain-key signature in ck-token?
1 Like

Let me try to answer your questions.

I’m not sure what you mean by that. Did you read the chain-key tokens page? If the information there does not answer your question, feel free to ask again!

The transactions that have an effect on the blockchain where the underlying asset lives require threshold-ECDSA signatures.
In the case of ckBTC, only burning ckBTC requires threshold-ECDSA signatures because the underlying bitcoins must be transferred (on the Bitcoin blockchain).

Threshold ECDSA makes it possible to get ECDSA signatures in a secure and decentralized manner. In theory, you can build any kind of dApp that uses/requires ECDSA signatures using this functionality.
As an example, the upcoming Ethereum integration also makes use of it to sign Ethereum transactions.

1 Like

Hi THLO, thx for your answer, and:
for question 1, yes, I have read the chain-key tokens page, what I mean is that in ckbtc minter code, there is ecdsa public key in CkBTCRequestState datastructure, so personally, I think maybe it’s an attribute of ckbtc.
for question 2,

I have a question, for your word, why does mint ckBTC not need t-ECDSA? Because when you mint a ckBTC, we need to transfer a BTC, then you can mint ckBTC,

AFAIU it is not needed because transferring something to the ckBTC minter does not require a transaction initiated by the IC. It only has to check if the transaction arrived properly (unless it’s transferred from some other account that’s backed by some canister on the IC).

1 Like

So you mean the minter just checks if the transaction arrived properly, and the burner process needs to perform a transaction, do I understand right?

yes, that is correct

1 Like

another question is, if we integrate with the eth network, and mint or burn a ckETH. Can we just do the same as the ckBTC?

In a very similar way, yes.

1 Like

Hi there, I have been considering a new question these days:
When we transfer a btc token to a canister address on btc network and mint a ckbtc on IC, there is a t-ecdsa signed transaction sent to btc network.
So if I want to build a new native chain key token on IC, should I write a specific canister(or ledger like icrc1) for recording transactions(mint, transfer, and burn transaction) that are signed by t-ecdsa algorithm? Then we can query the t-ecdsa transaction hash in that canister.

1 Like

I think it would be a good practice to copy the ckBTC model: You can use a standard (e.g. ICRC-1) ledger canister to manage balances and carry out transfers. An additional canister is used to mint and burn tokens and interact with the underlying asset. If ECDSA signatures are required to transfer the underlying asset, you would use the threshold ECDSA API here.

Of course, you may choose to pack everything into a single canister, or use more than two canisters…