ckBTC and KYT Compliance

Yes this helps

Curious about “quarantine”, why not just send it back?

If the ckBTC minter sends out “tainted bitcoins”, it risks being classified as a spreader of tainted bitcoins itself.

2 Likes

It has been 4 months since ckBTC minter switched from the old KYT canister to the Bitcoin Checker canister, which has been operating smoothly.

In the meanwhile old KYT canister to the best of my knowledge has not been used at all by anybody. So the plan is to ask the NNS to uninstall it. I’m posting here to give people a heads-up before submitting the proposal (probably Friday). Thanks!

3 Likes

How does the ckBTC minter react (going from BTC → ckBTC) if it receives a failure from the SDN list check?

I’m assuming ckBTC is hooked up to the Bitcoin Checker canister and uses it for all inbound BTC → ckBTC conversions?

How does the ckBTC minter react (going from BTC → ckBTC) if it receives a failure from the SDN list check?

If a transaction fails at the the SDN list check, it will be suspended, i.e., the minter will not touch it any more. If a user is worried about this, he/she can check the SDN list by themselves beforehand, either manually or by calling the Bitcoin Checker’s interface.

I’m assuming ckBTC is hooked up to the Bitcoin Checker canister and uses it for all inbound BTC → ckBTC conversions?

Yes.

2 Likes

I have been reviewing how this Bitcoin Checker works, indeed it seems to be a much better and faster process than the old KYT one.

My question for you and @PaulLiu is regarding the UI in the NNS Wallet. If a user sends BTC to the IC, with the intention of getting ckBTC, would that initial transfer be stopped? Would there be a UI explaining why the transfer failed?

Or, as I suppose happens, the BTC will be transferred to the IC via the BTC Integration, and the only time when the Tainted BTC would be detected is when the user wants to Mint ckBTC? In that case does the UI tell the user what happened, or it just fails to mint?

Finally, if the Minting process is blocked because the BTC is tainted and documented in OFAC’s Specially Designated Nationals list what happens? Can the user withdraw his BTC? Or it becomes trapped?

Thanks, this is important to know because most BTC holders would not know their tokens are in an OFAC list.

Joseph Hurtado
Founder Granata Consulting
CTO Satoshi Notes

Yes, that’s correct.
To be more precise, the user makes a standard Bitcoin transfer to an address controlled by the ckBTC minter. Since this transfer happens on the Bitcoin blockchain, there is no way to stop or undo this transaction.

That’s a question for the people working on the NNS dapp. Maybe @yhabib can help here.

No, the tainted bitcoin will be stuck and stay with the ckBTC minter. The reason is that parties transferring tainted bitcoin can be marked as tainted themselves, so the ckBTC minter would be at risk if it transferred these bitcoin out.
Note that the same is likely to happen when you transfer tainted bitcoin to any major centralized exchange. This also means that bitcoin you get from such exchanges is almost certainly “clean”.

It would be possible to build a service on the IC that accepts Bitcoin transactions, makes sure that the inputs are all clean, and then sends the Bitcoin transaction to the Bitcoin network. While this service would solve the problem of bitcoin getting stuck (because the check is performed before the transaction is sent), it is not very user-friendly because the user must create a Bitcoin transaction without sending it, and then send the transaction bytes to this service instead, which requires some technical skills and may not always be possible, for example, when your Bitcoin funds are held by a centralized exchange.

1 Like

Thanks for explaining, I do see the compromise made, and indeed it’s a difficult problem to deal with, the solution seems imperfect, but reasonable.

Regarding the UI of the NNS Wallet and what happens when it can not transfer the BTC because it’s tainted, I do hope there is one! @yhabib can you comment please, have you guys built a UI for this eventuality?