Hello and welcome back to On the Brink. I'm Nick Carter. This is another episode in the proof of reserve miniseries. Here's a funny story. Some time ago, I developed a rubric to evaluate proofs of reserve along a few different dimensions and scored all of the major exchanges doing it. At the time, I gave OKX a sort of average score at first. They called me and asked me how they could improve their score and I gave them some feedback and they actually implemented it. It was amazing. As of right now, OKX is one of the top scores on my rubric. And we're releasing this episode today because they've just completed their 12th consecutive monthly PoR, which is pretty impressive. Not only have they done that, but they've also been refining the procedure the whole way, which we'll dig into in this episode. So, I'm delighted to be sitting down with Hong Fang, president of OKX, to cover their work in proof of reserve. Let's dig in.
Hello and welcome back to On the Brink. I'm Nick Carter. This is the proof of reserve miniseries. There's always more stuff to talk about with PoR. So, this will certainly not be the last episode, but this one I've wanted to do for a long time with Hong Fang, president of OKX. Hong, thanks for joining us.
Thank you for having me, Nick.
So, I feel like we've been chitchatting about PoR for a long time. So, I'm really glad we could sit down and this is an auspicious occasion. This is the 12th consecutive month of OKX's rebooted PoR program. So, congrats on that milestone. That's very exciting.
Yeah. No, I also want to put myself on record because since our first program back in November last year, we have been talking in the background and because our team want to get more feedback from the industry, particularly including yourself as a PoR guru, and want to get feedback in terms of how we actually can continue to iterate and improve the program. So really appreciate all the feedback you've given to us, particularly those constructive ones. So thank you.
Yeah. No, pleasure is all mine. You know I love it when people actually listen to me. So that's great. Not everyone does.
So before PoR, let's talk about OKX. You're kind of having a brand refresh. We were deprecating the OKCoin name and we're going OKX. Am I right about that?
Yeah, that's right. We have put that in motion already. We have a global platform for OKCoin. End of last year, early this year, we decided to bring OKCoin and OKX together and after a lot of internal work, we started to bring the two brands together. So for OKCoin, we are starting jurisdiction by jurisdiction where we feel ready from both external and internal product perspective. So one by one. Singapore is done. Most of the other jurisdictions in APAC next, moving to Europe and then US.
So it's interesting because I know you're a global organization, but where primarily are you focusing your efforts regulatory wise these days?
It's really global. I cannot really tell you which one is the most important one because we have quite a few license approvals and license applications in our pipeline and for each of them our key strategy is to really, on top of our global compliance program and legal infrastructure, we also have strong local leadership to really drive local both from a compliance perspective as well as from a business and product perspective. So we have local compliance officers as well. So there are quite a few important ones as you can imagine, right? From Europe we have Europe and UK, Dubai for MENA, in Asia we have Singapore and Hong Kong obviously, US is very important for us and we continue to work on US states. We actually have most of the states already.
Waiting for more clarity in the place here.
We all are. We all are. I feel like OKX has had a really good 2023 in terms of market share. So, congrats on that. And you guys were all over the conference circuit as well. Big presence at Token 2049. So, whatever you're doing, it seems to be working.
Some of our teams are definitely happy about that. But more importantly, I feel like it's also combined efforts from product perspective and business perspective. Ultimately it's about what we build for the customers and whether those are things that can fit into local infrastructure, local framework, right? That's more sustainable.
So on the proof of reserve front, such an interesting topic because initially it was a very bottom-up thing with folks asking for it and only a small handful of exchanges doing it and then every time there was a major collapse like Quadriga, actually it's always a major collapse that catalyzes it. First you had Gox, there was a spate of PoRs, actually OKCoin did one back in 2014.
Along with some others. Then you had the Quadriga collapse and you had some PoRs after that. But of course after FTX, that's when it really took off. And then subsequent to that, now we see actual pieces of legislation that reference proof of reserve. Texas passed a bill. There was an act introduced in Congress, Senator Tillis' act called the Proof Act. I now talk to regulators globally that are trying to do it. And so this thing that really strikes me is that it's driven by the exchanges themselves, without people strictly asking them from the top down to do it. The exchanges themselves made the decision to do it. So tell us a little bit about that decision that you made to introduce a new modernized PoR system a year ago.
Yeah, I think you nailed it. It's really driven unfortunately by crisis moments in the industry. And the bottom line is about trust, right? When the trust score in the industry is at the lowest point, there's a stronger need to do something about it and increase that. There are different ways of increasing and building trust. One way is regulation, is definitely one way of approaching it. Having a third party auditor come in and do an audit is another way of doing it. From our perspective, when the FTX thing happened, we knew that it's important to do a proof of reserve and we actually tried to approach it from both angles, i.e. we do an internal technical or technological program to prove the solvency of the platform and then enhance it with auditor reviewing. Unfortunately in that timeframe, most of the others who have either done it before or potentially will be able to do it don't want to actually take on new clients. So I think that is also an impetus to push us internally to really double down and focus on doing the technical version of the on-chain PoR and really nail it. Like when we started in November, I think that was the first proof of reserve that we delivered covering three assets: BTC, Ethereum, and Tether. Those three assets cover I think more than 90% of the total customer assets on the platform. We knew back then that that program needs update. First it needs automation, we want to do it monthly because it's important to not provide just a point-in-time snapshot to the customer but to increase the frequency as much as possible and to keep it consistent so there's less room for maneuvering around the numbers on the exchange side.
So our product and engineering team focused on automating it. And I think our second program update was automated. And then we keep doing it on a monthly basis. And after that we also, obviously talking to you and a few others in the industry, we know that there are quite a few other things that we want to kind of fix in the program. First of all, there's the liability side. The first one that we did was a Merkle tree but it's not a full liability disclosure because if we disclose the full liability in our first version then theoretically people can go and check and figure out for each customer what their activity is and there's no privacy.
So we were kind of trying to provide more visibility at the full liability level without sacrificing the privacy for the customer. So for that we actually looked at BitMEX and we thought that BitMEX approach was a pretty good one. Basically randomly separating any individual customer's assets when we take the snapshot, separated it to more than one nodes. And as a result of that, that asset splitting exercise can help preserve privacy while we disclose the full liability. So we actually updated our proof of reserves program in March in our fifth PoR update to make it a full Merkle tree update. So that was one major gap that we see in our first program. The second biggest gap was the negative value of a node, which I...
Yes. Yeah. When we did our exercise that was one of the major weaknesses if you will that we identified ourselves and we also honestly I think when Binance did an audit the auditor also flagged that as well, right? So essentially from our perspective, from our platform perspective, we're not doing evil, we're not creating a non-negative node out of nowhere to cover up but from a customer perspective, customers don't know. Or as a third party, you don't know. So, it's hard for you to verify. That's where you kind of need an auditor where some way to prove that the platform is not doing that. And every customer's value is actually non-negative, is positive. So we knew back then that we actually need to do a ZK, zero knowledge proof upgrade to bridge that gap. So that was the second major update that we did in May which is our sixth proof of reserve update. We added the ZK-STARK update to basically prove among other things that for each customer that we have on our platform in our proof of reserves update, every customer has a non-negative asset balance with us that is being fully reserved. Obviously in that process we also added more assets. We added 18 assets in that process. Which operationally is actually a lot to cover.
Yeah, it's impressive because that's a small fraction of client assets but there's a fixed cost associated with every distinct asset that you're adding especially on different blockchains.
Yeah. Absolutely. And the calculation is also complicated, right? The process is complicated. It takes up your calculation cost and time and server and all that stuff.
Well, when you were designing your procedure were there other PoRs that you looked to for inspiration? I know you mentioned BitMEX. How did you determine what kind of software stack to use and things like that?
The team looked at BitMEX, looked at Kraken, also checked Vitalik's paper on ZK. I think they started with Merkle tree because they believe that Merkle tree is a good starting point and when they implemented the Merkle tree for the first proof of reserve update, they actually intentionally did something different from I think what Binance and some of the other platforms did. For example, they used a summation Merkle tree method instead of a plain Merkle tree method. So they actually add up all the hash value for each node layer by layer. So it's actually sum of every node. So there's no room to kind of game that.
To hide big negative balances.
Right. Yeah. And then our team also decided that we don't want to truncate the Merkle tree leaves and instead we use the full 32 bytes. So again there's no room for gaming it. And obviously we make sure that each customer has a unique ID and other stuff but they did a lot of analysis to decide on Merkle tree and then later when they started to evaluate zero knowledge technology obviously there are different technologies available. There's ZK-STARK and there's ZK-SNARK. I think those two are a pretty close choice for our team and I think we marginally feel like the ZK-STARK is better and more transparent and more secure.
And are there existing open source libraries that you can use for these kinds of things?
I'm sure they do. I don't have an engineering background so I don't think I can speak to that as eloquently as I would like to. But our team actually had quite a few people with that background. Our program is also open source as well. Both the Merkle tree version and the ZK version are both open source. So they put it out there as well.
That's one thing I've appreciated about a lot of these PoR initiatives at the exchange level is open sourcing the software for reuse purposes. So not being particularly greedy about it or anything and just hoping that even competitor exchanges end up using the same stack.
So for the benefit of the whole industry.
So for those who aren't as familiar with the ZK liability method, what does that prove to the user and what's the benefit relative to the Merkle approach?
So for our ZK-STARK approach what it basically does is it looks at all the liabilities that we as a platform hold for our customers, so basically all customers' assets that we as a platform hold custody for them. So it includes all the liabilities. It proves through zero knowledge proof technology that the exercise includes all customers. It's all inclusive. It proves that basically the sum that we show is indeed the sum of all the customers' balance. It also proves that for each customer included in the exercise, every customer has a positive asset balance because again different customers have different assets, particularly for a platform like ours where the customers have more complicated products where they can do margin, where they have leverage, they can borrow BTC or USDT and kind of end up trading altcoins or vice versa. So specific asset you may see negative value but combined you need to make sure that each customer has actually a positive number accounting for collaterals that they have on the platform. So that is also included in the ZK exercise and then also the process, basically the process of comparing the liabilities that we have calculated for the customer and when you compare that to the assets that the platform holds. So what we also do as part of the proof of reserves program is that we make public our public addresses, the on-chain addresses. We started with 23,000 plus addresses when we started with the three assets. Now we cover 22 assets actually and have like 450,000 addresses that we already put out there. So in that calculation the program would basically add up the assets value in those public addresses and then compare liability and assets so that ZK program would affirm that the two actually are comparable and the process of calculation and comparison has integrity. So basically that's what it does, it's almost functioning as an auditor. Basically, in math we trust, right? We want to self-regulate, we don't want to rely on the availability or trustworthiness of an auditor. We want to make sure as we can automate as much as we can, we can put as much as we can into the code and encourage our customers to verify for themselves.
The asset side of the attestation, you sign the addresses on chain, right? Am I right about that?
Yeah, yeah, yeah. We use private key to sign for the addresses, you know, it's an OKX address, something like that.
But do you broadcast that on chain or no?
It is broadcasted on chain?
So for 400,000 addresses, I'm not sure if we sign everyone but we do post all those addresses. I need to confirm if we, at least initially with the 23,000, I think we signed them for Bitcoin and Ethereum. I'm not sure as we add all the altcoins if we sign all the other addresses too.
Yeah. One, you know, I have my little proof of reserve evaluation rubric which I think you're familiar with and one of my criteria is attesting to the addresses and not everyone does that actually. You know not everyone actually proves that they have the addresses that they claim to control. And so some exchanges ask for you to take their word for it.
Which is not good enough in my opinion.
Let me, I will confirm if we have everyone attested or...
No, I mean they don't have to be signed on chain. You don't have to sign a message on chain. I mean you can prove ownership of an address by publishing a signature, you know. So in terms of the security model now that you've moved to ZK, do you need a sort of critical threshold of users to do the procedure or is the ZK proof that's created itself kind of sufficient at that point?
So that is actually a question that I ask our product and engineering team as well because I'm curious to know whether the program itself is sufficient enough. The answer I got, a technical answer I got is yes it is sufficient.
As in if just one user runs the ZK proof they can have...
They can have assurances that the whole system works. No. Yeah. Let me explain. So I think what our product and engineering team working on this, what they believe is that number one because our program is open sourced. So that program can, the integrity of the setup can be challenged, openly challenged and verified by anyone who has either the intention and/or the capability of doing it. So theoretically if it is there but putting on my regular customer hat I would say, you know, I don't know, right? Particularly a customer who have seen this come and go and people end up just trusting and just take the words and don't really, like we would always say verify don't trust but most people probably just trust and so verify. So we have seen a lot of traffic coming to our proof of reserve basically landing page. About 600,000 unique users have come in and quite a lot of them actually have downloaded the code and actually do the exercise. But internally we haven't really mapped how many of those numbers of users or people who downloaded actually completed the process of verification because it is pretty complicated, right? It's not for everyone, let's be honest.