ckBTC and KYT Compliance

@theguy i won’t be able to make the space due to work but I just wanted to say that while I completely agree with your points about transparency, and about Toniq being a single point of failure, I do agree with proceeding with the current plan that DF has laid out.

I don’t agree with the way this was handled; but, I also acknowledge that blocking this would rob the network of this capability. If we do that it will be just as bad as the risk you are worried about with Toniq causing an outage…

It’s not ideal but it is the current state of things.


Thankyou Lightning!

Personal view is, I don’t understand the wider impact of delaying this while Devs consult in another thread for a better solution like @JxBrian said

I personally don’t agree with going forward as dfinity has shown before that it moves resources to more “Sexy” development meaning this could be the state for the forseeable future till there is an incident

Plus I don’t understand how Dominic can live with himself after attacking AWS for centralization for months and now releasing something with a central point of failure.Its embarrassing for him. Its embarrassing for us as a chain and its embarrassing for me as someone who tries to reach out to the wider web 3 community


Failing this ofc, just let dfinity do it, or just onboard a few others, no ones been given the opportunity, what stops us from doing this from the get go?

I have 0 understand of this and I guess I disagree that this is just the current state as I think some actions with quick turnaround can be taken

As @Manu and @Jan said multiple times, it’s fairly easy and anyone can spin up its own ckBTC solution, so why toniq isn’t spinning their own then ?

I personally have no trust in toniq and trusting DFinity is as far as I can push my trust in a centralized entity.

Then toniq will have what they want for their targeted (US) users, a toniq version of the “ckBTC, powered by ICP”, and gated by their KYT provider of choice, for their jurisdiction. (They could even setup a SNS at some point if they want to hand over their ckBTC version)

I cannot think of anyone that is already fine with the current proposition from the foundation that could complain with what I just propose. Or is there anything else that the foundation is not telling us ?

This way the ckBTC feature will stay as a tool for anyone to pick up and tweak for their needs and not a flawed solution from the start.
I see no reason why the foundation and the NNS should be involved in this. And if there is a fuck up at some point, both of their reputation will be safe.


And neither should anyone have to trust any other entity other than Dfinity when using an NNS held service! Its bad enough we have to trust the KYT service let along Toniq in the middle

Also a very good point that maybe @bob11 can tackle along with @NS01 s previous points

If this is the route Dfinity wants to go, let it happen. I trust in their judgement. Surely they wouldn’t have worked so hard on ckBTC that they wouldn’t want to tarnish it.


With all due respect, I just wanted to ask specifically about the above statement on timing. For those of us who’re actively seeking funding, and for pilot customers, not delivering on our words is terribly damaging to an entrepreneur’s / startup’s image, in an already negative economic environment. Following the healthy discussions on this thread, my only ask from the leadership at DFINITY is to make an announcement if/when there’s going to be a deviation from the above timing statement, before delays occur, so that entrepreneurs can do expectancy management better with their lifeline of prospect investors & pilot-customers. The last time a very respected person from DFINITY tweeted “in the coming weeks” for ckBTC, those of us who took that literally took a beating unfortunately. Hence my ask. For the record, I think DFINITY rocks :star_struck:, and it’s irrelevant how underrated IC is for us buiDLers out there.


For something as big as ckBTC, I personally wouldnt want a little SNS running it, entrusted with billion dollar worth of people’s BTCs. I dont know if anyone would trust it. It should remain with the NNS. Forks of it can be ran by SNSs.
Tainted BTC seems like can wreck havoc of you have ckBTC that isnt backed by usable BTC. So I hope to see incentives for more KYT providers to join in.


I think these concerns have already been addressed in this forum thread, but at this point it’s hard to find because some of the typical actors have decided to confuse the proposal details with endless posts and misinformation. If you just focus on the information provided by @Jan and @bob11 then I’d be surprised if you still have these concerns. In my opinion, the proposal should be evaluated based on the content of the proposal as described by the author.


@Kyle_Langham Thanks for the call today

Can we make transparent what the initial fees will be for the KYT Sub provider?

“I understand why you want ckBTC shipped really fast”
Honestly, I think everyone wants it to be shipped, Dfinity and Toniq and the community included. I think it will be a massive benefit to the ICP ecosystem as a whole. To be extra clear, we’re not pushing for cutting corners in order to release as soon as possible. Dfinity has done all of the development here, and they are fairly uncompromising when it comes to releasing products. For example, 12 confirmations is 2x what WBTC uses on ETH, but they didn’t feel comfortable reducing it further right now. This shows how conservative the foundation is in releasing product. So none of this is half baked. All is well thought out.

“there is no financial reason to be a KYT provider”
Anyone building a business leveraging KYT has an incentive to ensure ckBTC stays up and running. This includes DeFi projects, SoFi projects, and NFT projects. In our case, we’re building a business leveraging ckBTC as the primary currency, so we are incentivized to ensure that ckBTC works properly. Other dApps will likely feel the same way. So I think this is the incentive.

“I imagine they will tell me the price and that will be a no-go for us”
Yeah, it is pretty expensive. Not ideal, but it is what it is for now.

“They might not have the same view as yourself and could just switch off the service?”
In the case that a KYT provider fails to provide KYT, it will be known very quickly and Dfinity (or anyone) would need to submit a new proposal to add a new principal to the KYT canister to add a new API key. However, you have to sign a 1-year contract up front for Chainalysis, so we’re essentially guaranteed a 1 year window already with an initial API key.

“does the call go to a Toniq server as a middle man”
There is no middle man. The KYT canister will be NNS controlled, and the KYT provider only has permissions to add API key. So no point of failure here.

“Then why is that not Dfinity?”
This is probably better for Manu or Jan to answer as they’ll have more context from the Dfinity side.

Thanks for the thoughtful reply. All good questions.


Before toniq entered in the equation… how did dfinity plan on paying for the KYT canister.

Or was that not thought about…?

1 Like

The idea was always to find someone (or multiple someones) willing to be a KYT provider.

KYT meaning:

  1. Accept payments in ckBTC
  2. Add API key into the KYT canister

Dfinity was talking with many people about trying to fill this need. A few KYT providers (Chainalysis, Elliptic, and a few more), a few businesses, I think even a foundation. KYT providers don’t do things like this, so it was a hard sell.

Then Toniq offered to be the KYT provider (get a Chainalysis subscription, accept payments in crypto, and interact with a canister to insert and rotate API keys).

Dfinity is still in conversations with others who may (or may not) be willing to be a KYT provider.

Payment would be from fees collected from the ckBTC minting process.


Thanks for the reply Bob!

The 1 year contract is a good point. If the canister is calling the API direct then this give a bit more security.

I do appreciate your role in helping Dfinity/ ckBTC. Nothing that I’m saying is a direct reflection on trust in Toniq. Its purely an academic discussion about process/ design.

I dont think we’re at the optimal solution. but it’s sounding like for legal reasons etc we might be initially stuck this way.

I hope long term there is a move to remove any single point of failure. The issue with adding more keys is a smaller chuck of fees for each party making it even more tricky. Not easy!


The reason got my inquiry is; if that money that was supposed to fund KYT is laying somewhere now that toniq has taken over than responsibility… then I’d like to propose for a loan or grant to fuel a canister that will adopt multiple KYT regulators on board.
I have a non profit that would directly benefit as a result of such a business nature.

Personally I would prefer a non-KYT ckbtc but it would be nearly impossible to get a grant for such a canister.

However, I am comfortable overseeing development of a multiple agency regulatory KYT canister system.
Even if I would want to solely build a multi-KYT mechanism, I would still have to fund that canister for operational cost and money is a big issue for startups.

So how did dfinity envision funding KYT and are there grants available for development of other systems other than what is currently being worked on?


Yes, although at volume you get cheaper per call pricing. So I think there is a case for multiple KYT providers (2/3 consensus perhaps) and at volume it is still affordable. This is one ideal path forward, though there may be others.


Yeah, I don’t think there are any funds set aside. The plan has always been to pay for the per call KYT pricing with a per call fee at the ckBTC minter level. So if cost per call is $0.50 (yes, KYT calls are expensive) then you peel off $0.50 worth of ckBTC in the minting process and send it back to the KYT canister for the KYT provider to cover the per call pricing. The KYT subscription has to be paid upfront, so you pay some 5 figure sum upfront, and then you get per call fees back. So initially out quite a bit of money, but then you make it up over time as you get volume.


Wow, great info @bob11

How is this scalable?

Say you have a millions calls, hypothetically at $0.50 per call then the operational cost is at nearly $500K? Math isn’t my strength but from my understanding of those numbers there will be no competition on such a system. Basically one KYT company will dictate how transactions are done.

Now, what if there are multiple KYT for ckbtc; competition could definitely drive the price down. One KYT entity might say our price to developers is set to hypothetically $0.50. Then another KYT might say something like, the first transaction in our system is $0.50 and after that, since this person making the call is in our system and the customer is also in our system now we will charge the second and multiple transactions at $0.25 which is half the cost. You see, such a system is scalable as there is competition in the market to attract more customers.

Maybe I am thinking about this too simplistically , correct me if I’m wrong…who is paying for KYT cost. In this case say that it’s toniq, do they bill the developer of a dApp to use the service? Or do they cover the cost for the developers making calls to the KYT canister.

Now if there is no KYT, then there is no operational cost. However I see why some jurisdictions might want KYT. So let’s go with a system that has multiple KYT. Is the above scenario I described do-able ?


The per call price decreases as you scale up volume. So the more KYT calls the less you pay per call. Once there is volume, then there is leverage to get better pricing from KYT providers.

And then users are the ones paying the KYT cost as a built-in wrapping fee. So take the per call price on the KYT side and build it into the ckBTC minter canister to cover that price. Does that make sense?


I don’t like how you say that there is better pricing form KYT providers with increase in volume. What we are talking about here is a decision that has been taken that has chosen toniq as a KYT provider and not other KYT providers…because all those other KYT have not set foot on the IC yet.

Now back to your point, while describing about dissolving neurons dfinity had a formula that took consideration of time and amount locked in to calculate how much customers would be rewarded.
In this case I think toniq has to provide transaction costs formula. Is it cheaper is someone converts 100BTC compared to a 1BTC; in the conversion to ckbtc. How much cheaper is it for a customer converting for the 1000th time compared to the 2nd time. Does the amount of BTC being converted play a role in reduction of the transactional cost?
You say it is cheaper with leverage, but what is taken into consideration when calculating that?

What I fail to understand is the role of KYT costs. It is fair that toniq volunteered to take operational cost but how much money they are spending is important to know. In this case what I am not understanding is say that I want to send 100BTC or convert 1BTC to ckbtc. If I am using dApp XYZ on the IC does that mean that the developer would pay for the operational cost for the 100BTC to be converted to ckbtc. And if no, that the developer of a dApp won’t pay, does the cost of using KYT go to the customer ?
To my understanding if the customer is being charged $$$ then there won’t be 1:1 parity between cbtc and BTC conversions. That is because there is a charge of KYT in the equation. The explanation is that if the customer is paying for the transactional cost then they won’t be getting their full BTC in the conversion. A small amount would be lost as a result of conversion to ckbtc. Now multiply this with the Law of large numbers and ckbtc wont be attractive to big investors or high transactional business entities.

1 Like