A (24:32)
Yeah, absolutely. And just, just the fact that all of that compute is going to make your phone hot, drain your battery. You know, there's just a lot of work that is really required in order to do it in this way. So for me personally, I don't think that the BEP approach is inherently a bad approach. It's a very private approach because all the work's being done on the client. I don't want to knock the devs that are going down that path because it is a very private way and there is a use case for that. If you're an activist, you can't run a server. You are probably prepared to sit and wait, you will make a plan, but for, you know, 95% of people in the world, it's just not going to work for them. So you know, they're prepared to give up a little bit of privacy for a system that works and gets them privacy in a different way. That's, that's what I would say. So I decided to say, well, I don't think that this client side scanning approach is the right approach. Let me try a different way of doing it. Let me see if I can move this onto a server and do it in the most performant way that I can imagine. And so the first thing I did was take all of that, tweak information, all of those transactions reduced to a single key, put that in a database and then scan that using a custom database function. And I did that because I didn't want to have to retrieve all of that data from the database, do the compute on it and then, you know, figure out what to do next. I kind of wanted to keep the compute as close to the data as I could. So that was the reason for doing it in a database function. Right. So I did that and I managed to bring the scanning Time down from hours down to minutes, which was a huge step forward, but we were still talking about minutes. And now we have a server involved, so you've kind of added that on. So it wasn't really a solution at that point. It was just a step forward. It was just a step in the right direction. Right. You had to kind of get down to a much better state. For example, if I had a public server, you know, I would be able to serve one client. That's just not going to work. So the next step was to say, well, how can we do this thing faster? How can we do the compute faster? And I sort of looked at the whole thing and it turns out that because every transaction is kind of in terms of scanning, independent from the others, it either contains a payment to you or it doesn't. You have this situation where the, the, the sort of, the literature on this calls it embarrassingly parallel. I actually looked this term up today. It's a Wikipedia term because it keeps appearing in all kinds of other searches that I'm doing. But it basically means that you can compute independently of the other computations that you're doing. And it turns out GPUs do this kind of thing really well, much better than sort of a pipeline where they have to rely on one of the other inputs in order to do the compute. So what I did is I, is I basically implemented the scanning function in a GPU and I managed to bring that scan time down from minutes down to seconds. Right. So we're now talking 30 seconds, that kind of thing. Right. So really a big step forward. And I was starting to get quite excited about this, but, you know, it was still, it was still open, but it wasn't great. The other thing that moving the compute onto a GPU did was it relieved the burden on the cpu. So if you have a server running and then every time someone comes along and says, I want to scan my silent payments address and the server says, okay, right, I'm not going to do anything else but scan your silent payments address. You don't have a public server at that point. You just have a block which is doing only one thing. So you have to offload, load it in order to be able to not only achieve the speed, but also just to have the server able to do normal server, server things. So, right, so now we have a situation where we have a GPU silent payments scanning algorithm, but what we don't have is enough speed yet to really run a public server. And I think the public server server is really the Critical point. You know, if you think, think, think about it. I would guess most people who listen, listen to this, run their own node, but most people out there rely on the public servers in order to be able to retrieve information about their wallet. And we might say that that's not ideal, but it's just the truth of the world. And we can only take people down a path where we can make Bitcoin useful to them and then hope that they will run a node in future to increase their own privacy. But we can't force them to do it. And certainly, you know, asking them to run a node right off the bat is just going to ensure that they never use Bitcoin at all. So for me personally, getting silent payments to a point where we could have a public server was a critical step. It was a requirement. Otherwise this technology is just not interesting at all and I shouldn't build it in. So it was important to get the next step. What was the next next step? And it turned out that the next step was improving the performance of the gpu. And that was actually, you know, there was, there's, there's, there's a guy who came along into my. I think he posted on delving Bitcoin a month or two, two back and said, hey, I've got this new project, it's called ultra fast secp256k1, which is the curve Bitcoin uses. And his kind of focus is how can I make the fastest library that can do various kinds of cryptographic functions that bitcoiners need. And he's just been relentless at this. And with his help, we've managed to take the scanning time of silent payments, not just sort of 10% or 15% or 20% better, which is typically the kind of performance improvements that you can get when you do this kind of work. I mean, there are people out there who will spend a month getting 5% out of a particular algorithm and consider that a huge win. So, you know, I think it's important to frame this in the right context because I was not expecting even close to the results that emerged. And the result that emerged is we managed to get this thing 14 times faster than it was. That is just massive. I was jaw on the floor, could not believe that it was as fast as it was. But the nice thing about silent payments scanning is that it's either right or it's not. You either find all of the transactions or you don't. And as a result, we have a system which can now do years of scanning in seconds on a public server without having to run, you know, 20 GPUs or doing something nuts.