[00:07.550 --> 00:12.050] I hope to show you what we've got and what this is all about. [00:12.650 --> 00:19.990] The Veilid Protocol is pretty important in ways that may not be clear to someone that hasn't been involved in this development. [00:20.150 --> 00:21.350] We're going to cover a lot of that today. [00:21.870 --> 00:29.830] We also... I also wanted to give a shout out because two days ago, Cult of the Dead Cow celebrated their 40th anniversary. [00:30.490 --> 00:31.970] So give them a round of applause, guys. [00:40.280 --> 00:41.760] 40 years of activism. [00:42.600 --> 00:43.440] Who would have thought? [00:46.000 --> 00:46.880] All right. [00:47.340 --> 00:49.180] So here's our talk. [00:49.440 --> 00:52.980] We want to give a big shout out as well to Dildog, who's right there front and center. [00:53.240 --> 00:57.900] He is the genius behind almost all this code. [00:58.040 --> 00:59.240] We've had quite a bit of help. [00:59.240 --> 01:03.060] A great community of people that have volunteered their time to help as well. [01:04.380 --> 01:06.600] And yeah, let's get on with it. [01:09.440 --> 01:15.160] So coming to New York for hope, we wanted to localize this presentation a little bit. [01:15.180 --> 01:20.280] So we selected our favorite artist from New York, the Wu-Tang Clan. [01:20.560 --> 01:25.500] So this is all adjusted with titles of their songs in place of our sections. [01:26.080 --> 01:28.580] And that's wonderful CDC logo up front. [01:29.780 --> 01:31.320] So y'all been warned. [01:31.840 --> 01:32.960] How did we get here? [01:33.060 --> 01:35.220] This is the history of what brought us to build Baylib. [01:36.920 --> 01:52.860] One of the things that were a core thing for me is when we started talking about what we were going to do, these network diagrams that Paul Brand wrote for the Rand Corporation back in the 60s, like 1963, really just stuck in my head as we were starting to talk about how we were going to design things and what we were actually going to build. [01:59.110 --> 01:59.390] Or another. [02:00.670 --> 02:03.290] But centralized networks, we know how those work. [02:03.930 --> 02:06.210] That's any silo, any data silo. [02:06.330 --> 02:11.170] So your Amazons, your Facebooks, and we can go all the way back through history with this. [02:11.310 --> 02:17.550] This is a very common, frankly, early model before complexity could get into the system. [02:17.550 --> 02:23.730] And it's still in use, but now it's used for more malicious means to farm data, frankly, your data. [02:24.370 --> 02:33.350] And the, you know, the contentious thing that I put out there is that that data construct you build on the Internet. [02:33.790 --> 02:35.910] And I know this is a radical concept. [02:36.390 --> 02:40.130] It belongs to you, just like your right hand, just like you're part of your body. [02:40.310 --> 02:43.610] And being able to click a EULA and give that away is anathema to human rights. [02:45.910 --> 02:48.610] So, decentralized networks, we think of that like with the Fediverse. [02:48.930 --> 02:52.790] You can even call email a decentralized social platform in many ways. [02:52.970 --> 02:53.770] Used to be, at least. [02:54.810 --> 03:01.370] And, you know, distributed networks, which are really the mature state of what the Internet should be striving to become. [03:01.610 --> 03:02.850] Node-to-node communications. [03:02.850 --> 03:05.410] We see this with things all the time. [03:05.570 --> 03:08.750] All sorts of distributed networks are out there and in use regularly. [03:10.390 --> 03:13.450] And it makes it very expensive to farm your data, doesn't it? [03:13.450 --> 03:16.970] So, we decided to start looking down that path. [03:20.670 --> 03:27.990] The problems with centralized networks, pretty much data mining, expense forces profit. [03:28.290 --> 03:32.430] So, when you centralize a system, eventually, and shittification sets in. [03:32.510 --> 03:33.690] There's no way around that, right? [03:33.750 --> 03:35.930] You have to be able to pay to support that system. [03:36.170 --> 03:40.270] And you might have a benevolent dictator, but you probably don't. [03:40.270 --> 03:45.170] And eventually, that monetization needs to set in because of pressures that will fall on the organization. [03:46.390 --> 03:48.710] And, you know, capricious product as well. [03:48.810 --> 03:58.110] Because once that starts happening, once the shittification begins, features that you may have fallen in love with on the platform will be thrown aside in order to find a better margin. [04:02.960 --> 04:03.460] All right. [04:03.620 --> 04:03.660] All right. [04:03.660 --> 04:11.320] I'm going to talk about the weaknesses here of decentralized platforms, especially because we have the, you know, the man behind hackers town. [04:11.740 --> 04:15.180] So, I don't want to make him talk shit about his own community right now. [04:17.380 --> 04:22.460] But, the issues with decentralized networks right now, we have the data scraping. [04:23.220 --> 04:27.740] You know, just one more way to grab your data, sell it, and, you know, profit. [04:28.640 --> 04:29.440] The fiefdoms. [04:29.740 --> 04:35.480] You know, you have somebody in charge that doesn't like that person, so suddenly you're not able to talk to people that are friends with that person. [04:35.940 --> 04:42.020] Or, you know, people set their own rules and you walk into something not knowing what the rules are and break them. [04:42.900 --> 04:47.020] You know, it's inconsistent readability and capricious admins. [04:47.160 --> 04:50.100] That's more with the, same with the fiefdoms. [04:50.840 --> 04:55.600] Frankly, we feel that one person shouldn't be in charge of entire things. [04:55.740 --> 04:58.420] Like, it should be up to all of us. [05:01.960 --> 05:03.440] So, back in the game. [05:03.640 --> 05:04.620] What is Veilid? [05:05.460 --> 05:06.320] All right. [05:06.560 --> 05:08.960] So, you want, you got this one. [05:09.080 --> 05:10.320] You got, you go with this one. [05:10.620 --> 05:11.200] All right. [05:11.200 --> 05:12.120] Okay. [05:12.380 --> 05:16.020] So, the Veilid mission, and we are a 501c3 nonprofit. [05:16.700 --> 05:24.740] And we exist to develop, distribute, and maintain a privacy-focused communications platform and protocol for the purposes of defending human and civil rights. [05:25.220 --> 05:27.400] And then we have a quote by Ruth Bader Ginsburg. [05:27.800 --> 05:31.820] Fight for the things that you care about, but do it in a way that will lead others to join you. [05:32.220 --> 05:42.020] The reason we bring Veilid to conferences like this, why we are talking to you about it, and why we're not talking, you know, to a board of VCs or things like that, is because we believe in community. [05:42.860 --> 05:44.720] I don't come from a tech background. [05:44.940 --> 05:46.760] I come from an activism background. [05:46.760 --> 05:49.120] I come from, you know, working class. [05:49.420 --> 05:52.540] I was a bartender, like, just a couple years ago. [05:53.020 --> 06:01.980] And I really want to take the things that have been effective with activism and turn them into an online way of, you know, communicating. [06:01.980 --> 06:13.820] I want to take things like mutual aid and how we can organize and bringing in people from various walks of life and different points of views to make things work. [06:14.840 --> 06:22.620] And so that is a huge mission of ours, is to invite you all to come mess up the Internet with us. [06:22.960 --> 06:24.180] Like, in a good way. [06:25.780 --> 06:28.340] So, you know, it's a very good point. [06:28.340 --> 06:28.400] Right. [06:28.480 --> 06:32.940] One of the things that hackers.town, in particular, that we're a big fan of is community. [06:33.180 --> 06:33.280] Right. [06:33.400 --> 06:39.160] Being able to build some sort of support net that helps others, even if it's just talking about things. [06:39.280 --> 06:39.360] Right. [06:39.400 --> 06:40.580] It doesn't have to be tech. [06:40.720 --> 06:42.300] And that's a really big deal. [06:42.380 --> 06:43.440] There's not enough of it out there. [06:43.580 --> 06:44.240] It's how we started. [06:44.440 --> 06:56.280] And to us, building a system that allows you to control your own data footprint, your own construct, and not have it mined, is where the Internet was supposed to go and be. [06:56.280 --> 06:57.300] I don't know about you. [06:57.440 --> 06:58.600] I didn't get the Internet I wanted. [06:58.860 --> 06:59.240] Right. [06:59.380 --> 07:00.500] And I don't think any of us did. [07:01.920 --> 07:04.220] So, this is exactly how we're going to do it. [07:04.420 --> 07:05.340] We're going to dig into this. [07:05.500 --> 07:07.300] And I'm going to tell you, we ain't came to lose. [07:12.180 --> 07:13.360] So, we have Tor. [07:13.700 --> 07:14.840] We have IPVS. [07:15.380 --> 07:15.780] IPFS. [07:16.100 --> 07:16.860] They came before. [07:17.060 --> 07:18.500] We're acknowledging prior art here. [07:19.140 --> 07:21.860] You know, you've even got Noster, Scuttlebutt, Hole Punch. [07:22.040 --> 07:25.460] All of these things influence the way we think about what we were trying to build. [07:25.640 --> 07:25.880] Right. [07:26.080 --> 07:28.120] These prior arts are very important. [07:28.660 --> 07:32.540] You know, we could, even in a way, we could throw a signal up here pretty easily. [07:32.820 --> 07:36.060] You know, we admire the work they've done and what they've put out there. [07:36.480 --> 07:43.080] Ultimately, their centralization is what we have concerns about, not the actual product or the team itself. [07:43.360 --> 07:43.680] Right. [07:43.680 --> 07:57.900] So, you know, this is us wanting to say that we kind of took, conceptually at least, Tor and IPFS and wanted to combine them and make them performant and mobile first. [07:59.960 --> 08:07.360] We saw both of these, you know, all of these listed platforms already, but we also see the issues that come along with it. [08:07.500 --> 08:09.380] Especially when it comes to Tor. [08:09.560 --> 08:10.100] We love Tor. [08:10.220 --> 08:11.360] We love the idea of Tor. [08:13.040 --> 08:16.660] However, how many of your parents actually know what onion routing is? [08:17.740 --> 08:18.960] Hey, there's a couple of you. [08:19.040 --> 08:19.420] That's great. [08:19.740 --> 08:23.100] How many of your parents have heard of this big, scary dark web? [08:25.060 --> 08:35.040] Tor has a marketing problem and it's bad and it's making it so that everyday people are not willing to go and access these privacy based things. [08:35.040 --> 08:43.440] You know, nobody's, you know, IPFS is not something that everyday humans are going to be using. [08:43.920 --> 08:50.780] They, you know, and not to mention, we at the bottom mentioned Web3 apps and buying coins. [08:50.780 --> 08:58.220] And to me, that's an accessibility issue because people that are not tech savvy are going to be using those options. [09:00.340 --> 09:03.180] Barriers to entry matter more than we probably talk about. [09:03.180 --> 09:05.460] And we want to eliminate all of those we can. [09:07.120 --> 09:07.680] All right. [09:07.840 --> 09:11.540] So open-source peer to peer mobile first network to application framework. [09:11.940 --> 09:15.640] So when we started this, we talked about all these different ideas of what we're going to do. [09:16.300 --> 09:21.220] And ultimately it came down to getting down to, oh, peer to peer. [09:21.420 --> 09:21.780] Pardon me. [09:21.900 --> 09:23.020] I didn't say peer to peer out loud. [09:23.180 --> 09:23.420] You're right. [09:23.800 --> 09:24.080] Yeah. [09:24.340 --> 09:25.700] Mobile first peer to peer. [09:26.540 --> 09:27.720] We started this. [09:27.900 --> 09:32.720] We really talked about building an entire system. [09:32.720 --> 09:37.520] And as we went further down that discussion, it became more and more. [09:37.640 --> 09:39.840] We need to build a framework that others can build on. [09:39.960 --> 09:44.700] Others can use to get guaranteed privacy to their users. [09:44.940 --> 09:45.080] Right. [09:45.620 --> 09:49.320] Mobile first because we all have supercomputers in our pockets. [09:49.740 --> 09:50.040] Right. [09:50.040 --> 09:52.020] It made sense to utilize that. [09:52.140 --> 09:54.260] And you'll see how we're going to utilize that shortly. [09:55.100 --> 09:56.100] And yeah. [09:56.980 --> 10:00.060] Veilid can be included part of any user facing application. [10:00.300 --> 10:03.400] You can run it as a headless node on a endpoint if you want. [10:03.920 --> 10:07.900] So if you have a VM or something, and we'll talk about nodes later and how they work. [10:08.060 --> 10:09.860] But all that is available. [10:10.180 --> 10:13.800] So it basically will run on just about anything you want to throw it at. [10:14.820 --> 10:18.820] Someone here, I think, I don't remember, maybe they didn't make it. [10:18.920 --> 10:23.980] They actually sent me a screenshot right before we came on stage of it running on BSD. [10:25.460 --> 10:26.660] So it's doable. [10:32.600 --> 10:33.180] All right. [10:33.320 --> 10:34.860] So security first. [10:35.340 --> 10:41.100] It matters that we keep this secure because we can guarantee privacy better if it is secure. [10:43.000 --> 10:44.000] It's written in Rust. [10:44.120 --> 10:45.880] So we've got memory safety built in. [10:47.740 --> 10:50.560] It was the only real choice when it came to this. [10:50.720 --> 10:53.100] Only mature choice that we should make when building this. [10:54.220 --> 10:55.420] It will run anywhere. [10:55.780 --> 10:57.500] Linux, Mac, Windows, Android. [10:57.640 --> 10:58.100] We don't care. [10:58.640 --> 10:59.580] You know, shove it out there. [10:59.760 --> 11:00.460] Put it in Kubernetes. [11:00.680 --> 11:01.700] We're good with that, right? [11:02.000 --> 11:11.540] There are playbooks that have been developed and put out there that will even allow you to run this on a free tier at a cloud provider with very little input from you. [11:12.180 --> 11:13.580] So very good there. [11:13.900 --> 11:15.460] And standard protocols. [11:15.620 --> 11:18.040] We're using the protocols we all know and love. [11:18.580 --> 11:22.020] Ultimately, it didn't make sense to recreate the wheel at a base level. [11:22.600 --> 11:31.320] And it also makes it, you know, maybe a little more resilient to not go all the way down to the lowest networking level when we built this. [11:34.020 --> 11:35.160] It's an all-in network. [11:35.380 --> 11:39.560] There's no external services and no stun turn. [11:40.720 --> 11:43.160] We wanted to make it privacy focused from the very start. [11:43.800 --> 11:46.200] We do have a, you know, strong sense of ideals. [11:46.360 --> 11:49.420] We wanted to make sure that we don't have to go back and make it secure. [11:49.600 --> 11:52.620] We don't have to go back and fix the issues we have with privacy. [11:52.620 --> 11:55.420] From the very start, the goal is privacy. [11:57.020 --> 12:03.060] And we are using strong cryptography, which we will get into, so that, you know, it protects your IP as well. [12:03.640 --> 12:04.440] And resiliency. [12:05.540 --> 12:10.700] When it comes to mobile devices, they're constantly changing, you know, which cell tower they're connecting to. [12:10.840 --> 12:11.700] They're going through tunnels. [12:11.700 --> 12:17.180] They are, you know, going from your home Wi-Fi to, you know, 5G or 4G. [12:17.520 --> 12:21.180] So that's a big issue when it comes to developing mobile-first apps. [12:21.220 --> 12:22.760] But that was the goal. [12:23.040 --> 12:26.300] Mobile is how a lot of people are accessing the Internet these days. [12:26.300 --> 12:31.360] And we have to, since we want this to be accessible for people, we have to go to that level. [12:35.840 --> 12:37.680] Here's how you've got to protect your net, right? [12:37.820 --> 12:40.660] This is where we're going to start getting into the good stuff. [12:42.640 --> 12:44.260] All right, so nodes. [12:44.600 --> 12:49.440] Any application that is running on top of Veilid is itself a node. [12:51.300 --> 12:57.360] So basically, with it being a framework, all of your privacy will be baked in at the lowest level of that app. [12:57.520 --> 13:00.760] And anything running that app will have a Veilid node running. [13:01.880 --> 13:03.060] No nodes are special. [13:03.180 --> 13:03.640] They're not weighted. [13:04.900 --> 13:07.680] There is some weighting in determining routes. [13:07.680 --> 13:15.940] But, like, as far as, like, a node being special in a way that gets it improved routability. [13:16.080 --> 13:16.540] Not really. [13:16.760 --> 13:16.860] No. [13:18.480 --> 13:21.740] All nodes help each other out, regardless of the application running them. [13:22.660 --> 13:23.840] Oh yeah, we did that. [13:24.060 --> 13:27.800] So, basically, it doesn't matter whose app you're running. [13:28.020 --> 13:37.940] If it has Veilid at the base level of that app as the framework it's written in, it's going to be a node that will serve other Veilid nodes, regardless of what the app is they're running. [13:39.500 --> 13:43.080] Nodes are only limited by the resources they bring, configuration of the network they're on. [13:43.260 --> 13:43.920] That's it. [13:44.100 --> 13:47.180] We're not touching any kind of... [13:47.180 --> 13:50.720] We're not handicapping anything on this protocol. [13:50.980 --> 13:55.120] So, whatever you bring to the network is what you bring to the network. [13:55.120 --> 13:55.780] And that's great. [13:57.580 --> 13:58.060] Yeah. [13:58.300 --> 14:00.180] So, applications directly linking Veilid core. [14:02.820 --> 14:05.540] We... Linux... I can't read from over there, sorry. [14:06.360 --> 14:11.300] Linux, Mac, Windows, Android, iOS, web apps for everyone, right? [14:12.960 --> 14:13.940] Wasm is in there. [14:14.260 --> 14:15.760] Flutter and Dart are used. [14:15.980 --> 14:19.620] That was a choice we made because it was most easily accessible to develop in at the time. [14:20.260 --> 14:22.400] And headless nodes, which are interesting. [14:22.600 --> 14:25.340] It's what I mentioned earlier about running even on GCP free. [14:26.320 --> 14:29.200] You can run a headless node on just about anything. [14:29.500 --> 14:37.200] And the headless node actually acts as kind of a super powered router for the network, right? [14:37.360 --> 14:41.480] So, it's able to do extended traffic routing. [14:41.720 --> 14:44.300] And we'll get into how things are routed in a minute. [14:44.460 --> 14:48.760] It's a little complex, but it's good and simple in other ways that are unexpected. [14:48.760 --> 14:50.700] But we... you can run those as well. [14:52.760 --> 14:53.240] Protocols. [14:54.620 --> 14:57.960] TCP, WebSockets, stuff we all know and have used for a long time. [14:58.140 --> 15:02.260] This is not going to... it's not going to break anything, right? [15:02.420 --> 15:05.980] We're doing this so that we have familiar tools at the base level here. [15:07.520 --> 15:09.320] TCP, of course, sequenced, reliable. [15:09.680 --> 15:10.880] It made sense to have that in there. [15:11.040 --> 15:16.260] UDP used everywhere and, you know, fast protocol. [15:18.060 --> 15:21.460] WebSockets, you're even able to do HTTP and HTTPS to route this stuff. [15:21.620 --> 15:23.380] So, that's part of it. [15:23.600 --> 15:26.640] SSL is optional, interestingly enough. [15:27.000 --> 15:30.520] Because once you're on Veilid, your traffic's encrypted anyway. [15:31.240 --> 15:31.760] So... [15:35.360 --> 15:35.880] Yeah. [15:36.340 --> 15:36.900] Oh, and DNS. [15:37.320 --> 15:41.300] You have one DNS request at the very beginning when you boot one up. [15:41.400 --> 15:42.780] It has to find a bootstrap. [15:43.040 --> 15:47.460] So, that's the only thing that'll identify a Veilid node from that network traffic. [15:47.620 --> 15:49.300] Once it's past that, you're clean. [15:53.830 --> 15:56.550] So, like I said, I don't come from a tech background. [15:56.710 --> 16:03.630] I come from, you know, activism and, you know, working to, you know, change things that need to be changed. [16:04.710 --> 16:07.510] So, all devices are welcome and treated fairly. [16:07.930 --> 16:09.830] Every node is equal to another node. [16:10.750 --> 16:11.470] That's it. [16:11.850 --> 16:13.430] They're all treated the same. [16:13.970 --> 16:16.670] You can use the public Veilid network or build your own. [16:17.170 --> 16:18.630] Everything is open-sourced. [16:18.630 --> 16:28.730] We encourage people to come out, build on it, play with it, and, you know, build your own way of communication with your, you know, fellow people, your friends. [16:30.130 --> 16:32.790] And nodes help each other like mutual aid for connectivity. [16:33.190 --> 16:36.270] Like we said, whatever you bring to the network is what you can get out of it. [16:37.090 --> 16:38.370] And we feel that's fair. [16:38.970 --> 16:46.870] We are taking some really, you know, I guess, kind of communistic ideas here and putting them right online. [16:47.370 --> 16:47.850] So... [16:47.850 --> 16:49.230] We're sharing resources. [16:49.230 --> 16:50.510] We're sharing resources. [16:50.730 --> 16:54.170] Everybody brings what they have to the table and we all benefit because of that. [16:57.550 --> 16:58.170] All right. [16:58.310 --> 16:59.670] So let's talk some cryptography. [17:00.510 --> 17:02.090] As private as Mutang get. [17:04.730 --> 17:05.450] All right. [17:06.630 --> 17:07.170] All right. [17:07.210 --> 17:09.130] I'm not going to try and pronounce all of these. [17:10.110 --> 17:10.590] Okay. [17:11.630 --> 17:14.950] But just understand that we are not rolling around here. [17:14.950 --> 17:16.770] We are going with what is tried and true. [17:17.050 --> 17:20.950] And one of the most important things you want to walk away from this is knowing that we have built... [17:26.520 --> 17:28.620] Or, you know, the NSA approves them. [17:28.820 --> 17:30.280] They will be moved on. [17:34.870 --> 17:35.310] Yeah. [17:36.370 --> 17:43.050] I feel like letting the NSA approve the cryptography you use is kind of like letting Ronald McDonald build a food pyramid. [17:43.370 --> 17:44.530] It just doesn't make sense. [17:46.310 --> 17:50.510] So anyway, we aren't going to try to, you know, roll our own here. [17:50.590 --> 17:51.350] That would be a big mistake. [17:51.390 --> 17:52.730] So we are going with tried and true. [17:53.390 --> 17:59.190] You cryptography experts know a lot more about what each of those words and numbers mean than I do. [18:01.110 --> 18:06.750] You know, the quickest way to fail at something like this is to try to roll your own cryptography and invite new vulnerabilities in. [18:06.930 --> 18:08.430] So that was off the record. [18:10.470 --> 18:12.390] Well, what I said wasn't off the record. [18:12.570 --> 18:14.230] That was off the table, I should say. [18:14.370 --> 18:14.470] Yeah. [18:15.990 --> 18:16.790] Secure storage. [18:17.150 --> 18:17.290] Yeah. [18:17.510 --> 18:21.530] So this is kind of what we're doing for storage of data and media. [18:21.830 --> 18:24.090] It's a DHT at its core, right? [18:24.090 --> 18:28.190] There are no crypto blockchain kind of things here. [18:28.350 --> 18:31.790] And the reason for that is, once again, the barrier of entry we talked about before. [18:33.690 --> 18:38.970] So, basically, you do have the protective store going on on the endpoint. [18:39.190 --> 18:41.950] And we know that there are vulnerabilities involved in that. [18:42.290 --> 18:43.630] Pointed out with Signal recently. [18:43.790 --> 18:46.110] But it's what you have to do to play on certain OSs. [18:46.290 --> 18:48.110] So, you know, we had to go with that. [18:50.490 --> 18:53.470] The Rust Crate Key Ring Manager is available for that. [18:54.250 --> 18:55.530] That's published, by the way. [18:55.670 --> 18:57.110] Those crates are all published. [18:58.950 --> 19:00.390] TableStore is for... [19:00.390 --> 19:02.510] Once again, I'm over here trying to read up there. [19:02.570 --> 19:03.810] I'm an idiot at this. [19:05.250 --> 19:06.890] Encrypted key value database. [19:08.890 --> 19:10.430] So, SQLite on native. [19:11.470 --> 19:13.330] Indexed DB and browser, so on and so forth. [19:14.110 --> 19:14.570] Yeah. [19:14.890 --> 19:17.230] So, basically, it's a distributed storage system. [19:17.230 --> 19:29.550] And every node, much like, you know, when you think about things like BitTorrent, things like that, how they distribute all of those tiny pieces of data, then reconstruct it. [19:30.130 --> 19:31.230] That's really what we're doing. [19:31.450 --> 19:34.910] Each node has its own storage, and storage is broken up. [19:35.270 --> 19:41.330] There is a waiting that occurs with the data that's stored to make it more accessible or quicker to access. [19:41.870 --> 19:43.430] But that's really about it. [19:48.500 --> 19:53.280] So, obviously, you know, when we're building something private, first thing you want to do is end-to-end encrypted. [19:53.700 --> 19:54.100] Period. [19:54.440 --> 19:55.200] You just do it. [19:55.300 --> 19:57.460] That is the standard at this point. [19:58.200 --> 20:02.720] And all your storage is encrypted at rest, and your data is protected even if you lose your device. [20:03.000 --> 20:09.020] We have been working on getting our first app out, which I will talk about in a little bit. [20:10.620 --> 20:18.580] But one of the things we've been doing is making sure that you can access your, you know, accounts from various devices and be able to switch that. [20:18.580 --> 20:29.700] But when it comes to block storage, the easiest way that I've been able to put this so that, you know, people that aren't in the tech industry and, you know, aren't quite as computer literate can understand is... [20:29.700 --> 20:41.840] Remember that scene from Willy Wonka and the Chocolate Factory where Mike TV, you know, gets in front of the TV camera and he goes in tiny little bits and he flies across the room and he becomes real small. [20:42.660 --> 20:44.080] And it's kind of like that. [20:44.300 --> 20:50.560] Everything is torn up into tiny little bits and we're each just taking a little piece of everything and storing it ourselves. [20:51.920 --> 20:53.540] So that's how that works. [20:53.820 --> 20:58.320] It's a little bit of, you know, each node being equal and each node carrying its own weight. [21:00.000 --> 21:01.280] And y'all knew this was coming. [21:04.380 --> 21:11.680] All right, so we're going to get into the RPC schema and some of the caching, how this is going to work. [21:14.140 --> 21:23.980] So fully in schema and documented, basically, we've got what you need to take away from this is measuring node liveness and performance is done over RPC. [21:25.620 --> 21:28.260] Finding other nodes uses RPC, right? [21:28.420 --> 21:30.880] So the way you build your routing table comes out of that. [21:31.640 --> 21:36.240] Private routing, which we'll get into deeply in just a moment, is handled there. [21:36.240 --> 21:39.680] And your storage, you know, how do you find what you're going after? [21:39.960 --> 21:43.500] The really interesting thing here is the distributed hash table. [21:44.420 --> 21:52.200] When we think about distributed hash tables, at least traditionally, I had always thought of them as a storage problem in a way. [21:53.020 --> 21:55.920] The truth of the matter is, it's a search problem, right? [21:56.120 --> 21:57.680] They're easy to store data on. [21:57.800 --> 22:00.260] You just have to handle how do you reconstruct or find the data. [22:00.600 --> 22:05.100] And so we've spent quite a bit of time around that, trying to get that working. [22:05.840 --> 22:06.800] Things are good there. [22:06.960 --> 22:11.180] But when we approach it just as a search problem, it got way easier to do. [22:11.700 --> 22:13.900] So we are improving search on that right now. [22:14.080 --> 22:18.180] We're in the process of continuing to build that out and make it more performant. [22:19.220 --> 22:32.180] One of the things I find really interesting about this whole layout, and it's counterintuitive, the more nodes on the network, the more density of nodes, the more performant it gets and the more private it can get. [22:32.180 --> 22:41.700] So we can actually, with adoption, simply by the node density, increase the privacy factor of this thing and the performance. [22:41.700 --> 22:42.820] It's kind of beautiful. [22:45.860 --> 22:48.920] Popular applications strengthen the network for the less popular ones. [22:48.980 --> 22:50.040] I talked about node density. [22:50.840 --> 22:58.680] If there's an app that quote unquote goes viral, suddenly the entire Veilid network has tons of nodes available. [22:58.940 --> 23:01.420] And that privacy goes up with that number of nodes. [23:03.960 --> 23:15.240] So that's the reason we wanted to make this in a fashion where every Veilid node, regardless of the app it's running inside of, is a node for the rest of the network, back to that mutual aid thing. [23:17.040 --> 23:23.360] Storing data close to each other, co-located, improves performance, resiliency, fewer conflicts on wire. [23:23.360 --> 23:28.660] So, you know, that storage model for DHT really helps. [23:29.060 --> 23:32.800] It really makes this much easier to support our privacy goals. [23:37.200 --> 23:40.960] So, popular data becomes more available automatically. [23:40.960 --> 23:48.320] If you upload, you know, the, I don't know, the entirety of... [23:48.320 --> 23:48.720] The Bee Movie. [23:48.880 --> 23:49.700] The Bee Movie. [23:49.860 --> 23:50.200] Yeah, yeah. [23:50.340 --> 23:51.920] And nobody wants to see that. [23:53.000 --> 23:56.540] It will stay one little blob and then no one checks it. [23:56.660 --> 23:59.540] So, eventually it just kind of goes away, as it should. [24:01.640 --> 24:10.880] However, you know, if you put up something that is really popular, people are accessing it, then that, you know, popular data is going to be going throughout the network, and it will be easily available. [24:10.880 --> 24:12.900] And you'll be able to get to it much quicker. [24:13.800 --> 24:16.640] The DHT, it gives you full control over your data. [24:16.900 --> 24:20.360] We need people to understand what that actually means. [24:20.360 --> 24:26.140] We need the rest of the world, outside of this room, people that would never think to go to a Hackers on Planet Earth conference. [24:26.380 --> 24:35.400] We need them to understand what it means to have full control over their data and what the, you know, consequences are of trusting other people with it. [24:36.280 --> 24:46.920] You know, we are living in a world where our kids may someday not be able to get health insurance because their mom joined a Facebook group for cancer survivors. [24:48.200 --> 24:56.400] We are living in a world where future generations are going to be feeling the consequences of the decisions that we're making. [24:56.600 --> 24:58.460] So, we need people to understand that. [24:58.580 --> 25:11.900] We need to be reaching out to people that would never come to this conference, that don't consider themselves a hacker, that aren't really on the computer too much outside of, say, Facebook, Google, and whatever, you know, websites they may visit on an occasion. [25:13.360 --> 25:20.460] So, that to me is a big reason we wanted to build this and what we want to do when reaching out to people and working on it. [25:21.380 --> 25:25.080] And again, our DHT is not based on a blockchain or coin. [25:25.080 --> 25:27.720] In fact, we're kind of the opposite of a blockchain. [25:28.740 --> 25:31.020] Because we don't want anything that is here forever. [25:31.500 --> 25:33.680] We have built in the right to disappear. [25:33.880 --> 25:35.020] And I think that's important. [25:37.180 --> 25:37.600] And... [25:43.330 --> 25:51.230] And when things are based on one shit coin or another, and you have to go and you have to enter in your Bitcoin wallet and give them all of your information, I'm just... [25:51.230 --> 25:52.410] That's a lot. [25:52.410 --> 26:01.470] And because, you know, websites like Google and Facebook have not done that, they've suckered in an entire huge population of people. [26:01.650 --> 26:08.130] So, we need to make this kind of thing, this sort of privacy accessible to everybody. [26:12.200 --> 26:14.460] All right, this one was my pun here. [26:14.620 --> 26:16.340] This is a little bit more of a Wu-Tang deep cut. [26:16.720 --> 26:19.180] You know, check out my gravel pit. [26:19.840 --> 26:21.660] Check out my private route. [26:22.240 --> 26:22.680] No? [26:23.060 --> 26:23.420] Okay. [26:24.120 --> 26:26.500] Did not plan on singing today, but we're going to roll with that. [26:29.460 --> 26:30.100] All right. [26:30.260 --> 26:33.000] So, I mentioned the private route, and this is how it's constructed. [26:34.360 --> 26:39.360] I know, at a first glance, this looks a little wild, but we are constructing the routes. [26:39.760 --> 26:42.200] The first node, A, wants to talk to B. [26:43.120 --> 26:47.320] N1 and N2 are the safety route that is generated on A's side. [26:47.480 --> 26:53.000] The private route comes from B, finding its closest nodes that can get routed B. [26:53.000 --> 26:59.340] And then they build this constructed, compiled route down here to guarantee private communications. [27:00.160 --> 27:02.180] Let's go ahead and go to the... [27:02.180 --> 27:02.920] Yeah. [27:03.340 --> 27:05.840] So, everything's enveloped, right? [27:06.040 --> 27:15.420] And as even the route itself, not just your data, only the node next in line knows which node that message came from. [27:15.420 --> 27:22.020] So, there's no way for anybody to see the entire route with any of the packets they'll receive, because everything's encrypted inside. [27:23.000 --> 27:29.720] Also, I just want to note that that little eye up there, we've been hiding that in our merch. [27:29.880 --> 27:31.580] We've been hiding it in CDC stuff. [27:32.840 --> 27:37.100] You know, the diagram of the private and safety routes, if you look at all over... [27:37.100 --> 27:38.500] It's all over Veilet's website. [27:38.600 --> 27:41.980] It's all over the merch, the t-shirts we've been selling for two years. [27:41.980 --> 27:42.800] We told you all. [27:43.000 --> 27:43.360] Yeah. [27:43.500 --> 27:43.680] Just saying. [27:45.720 --> 27:46.500] I love that. [27:46.620 --> 27:48.500] There is a t-shirt I have from that. [27:49.160 --> 27:51.700] It's the CDC logo in the middle with the nodes around it. [27:51.800 --> 27:54.540] It looks like some sort of weird sort of ritual going on or something. [27:54.740 --> 27:55.900] But it's our private route. [27:56.000 --> 28:00.040] And we shopped it out there and let everybody see it without saying what it was for the longest time. [28:02.740 --> 28:03.300] All right. [28:03.540 --> 28:04.040] And yeah. [28:04.880 --> 28:05.060] Okay. [28:05.260 --> 28:09.320] So this shows you the diagram of how the data is delivered, how the route is used. [28:10.500 --> 28:11.960] Envelopes are stripped each step of the way. [28:12.040 --> 28:14.240] Like I said, your core data is there. [28:14.440 --> 28:17.260] It's only available to the node that's your target node at the end of it. [28:17.820 --> 28:24.940] We have started having some interesting discussions around having a paranoid switch in Veilet where you can extend the length of the route. [28:26.780 --> 28:29.920] So there's a lot of things we can do here to even improve this. [28:30.160 --> 28:32.000] We feel like this is a good baseline. [28:32.340 --> 28:34.080] This is where we should start with this. [28:34.180 --> 28:39.240] But having options to do things like click a button in an app and go super paranoid mode. [28:39.380 --> 28:40.500] That's pretty cool too. [28:40.920 --> 28:43.200] So we're starting to discuss some of those features. [28:45.140 --> 28:46.140] Do you want me to that one? [28:48.060 --> 28:48.860] Oh, no. [28:50.100 --> 28:50.660] Yeah, yeah. [28:51.740 --> 28:52.280] All right. [28:54.960 --> 28:55.940] You want that one? [28:56.100 --> 28:56.340] Yeah. [28:56.680 --> 28:56.700] Okay. [28:57.480 --> 29:00.260] So IP privacy means that your location is safe too. [29:00.760 --> 29:02.780] Users don't have to do anything to use it. [29:02.900 --> 29:03.920] The privacy is built in. [29:04.340 --> 29:08.360] We don't want to have to make a, you know, we don't want to gatekeep privacy. [29:08.480 --> 29:09.880] We want to make it as easy as possible. [29:11.180 --> 29:15.060] You know, no IP address means no tracking collection or correlation. [29:18.240 --> 29:21.200] So we have gone over some very, very technical stuff. [29:21.360 --> 29:22.880] We will hit a little bit more. [29:23.320 --> 29:27.200] But earlier, I was talking about some of our marketing and some of the things that we've done. [29:27.300 --> 29:28.760] And I said Tor has a marketing problem. [29:29.100 --> 29:32.300] And sadly, we forgot to make a slide for Ellet. [29:32.460 --> 29:33.080] That's my fault. [29:33.600 --> 29:33.840] Yeah. [29:34.060 --> 29:34.420] Blame him. [29:35.060 --> 29:37.000] Ellet is our mascot for those that don't know. [29:37.120 --> 29:38.460] Ellet is a brick. [29:39.560 --> 29:42.520] Because together, we can build things. [29:42.900 --> 29:46.220] But also, a single brick can do some damage. [29:49.100 --> 29:52.840] And I don't know that you guys have had any bricks thrown at you today. [29:53.560 --> 29:58.260] So just in case, I'm going to start throwing some bricks out in the audience. [30:01.140 --> 30:02.480] If anybody wants some. [30:02.640 --> 30:03.820] We have some Ellets for you. [30:07.290 --> 30:07.770] Sorry! [30:12.960 --> 30:17.460] It just doesn't happen very often when you get bricks thrown at you at a hacker conference. [30:17.500 --> 30:18.420] And we thought it'd be fun. [30:19.180 --> 30:20.580] Ellet is our mascot. [30:20.580 --> 30:24.040] We are going to be using them in all of our marketing. [30:24.200 --> 30:26.060] And we encourage you to do the same. [30:26.500 --> 30:27.360] Ellet is non-binary. [30:27.500 --> 30:27.980] They are a brick. [30:28.120 --> 30:28.820] They were there at Pride. [30:29.020 --> 30:29.840] They helped start it. [30:29.940 --> 30:30.660] Pride was a riot. [30:37.950 --> 30:43.570] Ellet also was a little Easter egg on a CDC challenge coin. [30:44.350 --> 30:49.730] That was an accidental misprint because it was 3-1-1-3-7. [30:50.950 --> 30:52.510] But no, we're just going to make that an Easter egg. [30:53.710 --> 30:54.450] All right. [30:57.850 --> 30:59.550] I ran out of Wu-Tang references. [31:00.010 --> 31:00.670] Kind of. [31:01.590 --> 31:05.870] At Hackers.Town, we've long had a slogan saying, be the rust upon their gears. [31:06.390 --> 31:07.570] Kill a killer bees, y'all. [31:07.690 --> 31:09.870] Kill a killer bees is the best we could come up with on that. [31:10.130 --> 31:11.470] So, you know, here we are. [31:13.910 --> 31:14.350] Yeah. [31:14.590 --> 31:16.650] So, let's talk about rust. [31:18.870 --> 31:19.810] Veilet is written... [31:19.810 --> 31:20.650] Oh, that's yours. [31:21.010 --> 31:21.310] Let me... [31:21.310 --> 31:22.570] Veilet is written in rust. [31:22.810 --> 31:23.810] And the crates are published. [31:24.070 --> 31:25.450] And you can use them today. [31:26.510 --> 31:28.270] We have had a lot of trouble with documentation. [31:28.390 --> 31:30.570] So, the documentation is relatively new. [31:30.670 --> 31:36.270] And we are so grateful for all the folks who have helped come together and join the community to come help us. [31:36.270 --> 31:37.110] Because he... [31:38.170 --> 31:40.470] Dildog was so busy getting this code out. [31:40.510 --> 31:42.470] And he has been doing this for two and a half years. [31:43.210 --> 31:46.830] That he didn't, you know, write down how it works. [31:47.010 --> 31:47.810] And that's okay. [31:48.730 --> 31:49.470] Because it works. [31:49.990 --> 31:51.710] But we've had a lot of people help out. [31:51.870 --> 31:52.950] The rust crates are available. [31:53.090 --> 31:54.430] You can go compile the code yourself. [31:54.530 --> 31:55.130] You can check it out. [31:55.230 --> 31:56.350] It is all open-source. [31:56.510 --> 31:57.290] There is nothing hidden. [31:57.990 --> 32:00.090] And we are going to continue to keep that updated. [32:00.270 --> 32:02.570] And make sure that everybody can see everything that we're doing. [32:02.830 --> 32:04.830] Nothing, you know, behind the curtain. [32:08.480 --> 32:10.220] Power user quick start for you guys. [32:11.820 --> 32:13.580] Here's how you install a node. [32:14.080 --> 32:16.100] And yes, this is all documented on our website. [32:16.140 --> 32:17.620] You don't have to take pictures, but you can. [32:17.780 --> 32:18.200] Feel free to. [32:19.320 --> 32:25.620] So basically, running these, running this install from Git will clone the repository. [32:25.960 --> 32:30.240] And you can use these commands to operate your own heavy node. [32:30.540 --> 32:31.300] Headless node. [32:31.540 --> 32:32.520] Whatever you want to call it. [32:33.020 --> 32:35.020] I just want to give a quick shout out to Bia. [32:35.300 --> 32:39.080] Who actually made a video of her setting up her first headless node. [32:39.300 --> 32:39.900] And it was what? [32:40.000 --> 32:41.100] It took you three minutes? [32:41.320 --> 32:41.740] Four minutes? [32:42.120 --> 32:42.320] Yeah. [32:42.600 --> 32:44.580] It's very, very easy to do. [32:52.140 --> 32:56.360] You can set it up and therefore you are contributing to the network. [32:56.560 --> 32:57.260] You are helping out. [32:57.580 --> 33:02.240] You know, and pretty soon we're going to have some really cool stuff available for you to do on said network. [33:04.620 --> 33:07.260] Meanwhile, here is how you can help. [33:10.990 --> 33:11.810] Work with us. [33:12.030 --> 33:15.670] We need people to do all sorts of tasks. [33:16.070 --> 33:17.430] Documentation has been a huge challenge. [33:17.630 --> 33:18.610] We've been called out on that. [33:19.230 --> 33:19.410] I agree. [33:19.570 --> 33:20.150] It's a problem. [33:20.570 --> 33:21.330] Come on. [33:22.550 --> 33:24.450] Hit our Discord. [33:24.870 --> 33:26.010] Yes, I know it's a Discord. [33:26.190 --> 33:26.610] Bear with us. [33:26.750 --> 33:27.310] We're working on that. [33:28.190 --> 33:29.690] But hit our Discord. [33:29.930 --> 33:30.490] Pitch in. [33:30.690 --> 33:30.910] Right? [33:31.010 --> 33:31.950] This is a community effort. [33:32.070 --> 33:38.790] We are here to help people and keep this as simple as possible to guarantee privacy on the Internet. [33:40.410 --> 33:41.370] Usability experts. [33:41.650 --> 33:42.570] Particularly important. [33:42.790 --> 33:45.250] That's something we always want more of. [33:46.230 --> 33:47.390] Open-source and governance. [33:47.390 --> 33:48.390] You got experience with that. [33:48.570 --> 33:49.410] Please jump in. [33:50.030 --> 33:50.690] That's it. [33:51.990 --> 34:00.450] One of the things that we made a goal to do is make it so that we are taking away the need for app developers to have high costs. [34:00.570 --> 34:06.150] They don't need to get VC because we are trying our best to build a community of people that handle everything. [34:06.150 --> 34:09.710] What happens when you have a developer that only works in tech? [34:09.990 --> 34:11.130] Your UI is going to be shit. [34:11.250 --> 34:12.310] You don't know how to market it. [34:13.150 --> 34:15.490] The legal stuff is not going to be great. [34:15.630 --> 34:21.550] It's definitely not going to have all of the usability features and accessibility features that we want. [34:21.650 --> 34:32.830] So we are doing our best to bring in a community of people that are not only in tech and are very varied in their expert levels of different things. [34:33.050 --> 34:34.750] We have people in there to help with marketing. [34:34.910 --> 34:37.390] You want a cool logo to sign, people can help with that. [34:37.590 --> 34:43.510] We have people that are there to help write your privacy policy or your terms of agreement or whatever that you want to write. [34:44.490 --> 34:51.230] And we have regular ass people that aren't in tech and that hate the Internet to come in and test it. [34:51.430 --> 34:55.830] I convinced my mother to come in and she will test your app and tell you how much it sucks and how much she hates it. [34:55.910 --> 34:58.650] But she will also give you feedback that is helpful and useful. [34:59.930 --> 35:02.470] And these are the ways that you can find us. [35:02.910 --> 35:03.890] One other thing... [35:04.330 --> 35:07.710] I want to cover one other thing here because conceptually it's very interesting to me. [35:07.830 --> 35:11.650] You mentioned the lack of need for monetization for apps around this network. [35:11.650 --> 35:14.810] You could build monetization into an app on this network. [35:15.050 --> 35:15.950] That's acceptable. [35:16.170 --> 35:17.210] You got to keep the lights on. [35:17.350 --> 35:18.110] You got to keep the lights on. [35:18.350 --> 35:38.670] But when no density goes up, consider that you could run infrastructure on Veilage without an AWS bill, without a GCP bill, without any of that, because you have the resources on the network to do the thing you want to do without having cloud resources, so to speak. [35:39.490 --> 35:40.470] It's everyone's cloud. [35:43.030 --> 35:46.130] Imagine if our Internet wasn't all Jeff Bezos' computer. [35:46.910 --> 35:48.090] Just throw it out there. [35:49.970 --> 35:55.910] So, one of the things, and we were really, really, really hoping we would have a little bit further on this, but it is happening before DEF CON. [35:56.450 --> 35:59.850] But if you join the Discord, we will be introducing this to you very soon. [36:00.830 --> 36:11.450] But we are giving y'all some sneak peeks that have not been available, as of yet, of the first app that is coming out from Veilage, and that is Veilage Chat. [36:12.210 --> 36:14.230] And it is gorgeous. [36:16.050 --> 36:17.790] Here is a... [36:18.230 --> 36:21.050] We wanted to do a live demo, but I learned never do it live. [36:21.250 --> 36:25.550] And frankly, the Internet in here is not the strongest, so I'm really glad we didn't do that. [36:25.990 --> 36:27.850] This is just going through some of the settings. [36:27.850 --> 36:34.390] You can see the speed, the way it responds, and the various, you know, ways that you can make it easy. [36:34.910 --> 36:37.730] Setting up an account is not putting your email in. [36:37.810 --> 36:39.070] It's not putting any of your information. [36:39.230 --> 36:41.590] You make a name that you want to use, that's it. [36:41.810 --> 36:42.210] Hit enter. [36:42.850 --> 36:44.170] Send someone an invitation. [36:44.570 --> 36:45.130] Chat with them. [36:45.690 --> 36:46.790] It's that easy. [36:48.450 --> 36:56.270] You know, things like Facebook and Google became so popular because they made it so easy for people to sign up. [36:56.470 --> 37:04.370] My goal with Veilage Messenger is to get our parents off of Facebook Messenger, because we are only as private as the people around us. [37:06.150 --> 37:10.870] You know, we didn't build Veilage or any of these apps, you know, to make a lot of money. [37:11.490 --> 37:16.070] But a little part of me did build them to take some money away from some billionaires. [37:16.950 --> 37:17.990] I'm not going to lie. [37:18.130 --> 37:18.690] Spike drives. [37:23.350 --> 37:25.570] But here's some beautiful examples. [37:27.210 --> 37:29.670] And once again, we are actually doing things. [37:29.790 --> 37:30.550] We are bringing things. [37:30.790 --> 37:31.610] We are making this happen. [37:32.370 --> 37:36.210] A year ago at DEF CON, we introduced a concept. [37:36.830 --> 37:38.890] But that concept has now become a reality. [37:39.610 --> 37:41.430] So once again, come join in. [37:41.610 --> 37:42.250] Help us. [37:42.510 --> 37:44.990] We're only on Discord until we can build a better one. [37:45.250 --> 37:46.370] We're working on it. [37:48.170 --> 37:53.630] And yeah, I just want to say thank you to everyone for coming out, for listening to us talk. [37:53.850 --> 37:54.190] Absolutely. [37:55.550 --> 38:01.150] And we hope that you will join us in changing the face of how we talk to each other. [38:02.530 --> 38:05.350] We're here to restore the future for all of us. [38:05.510 --> 38:06.730] And we want you to help. [38:07.070 --> 38:11.550] Please consider joining up with us and changing it. [38:12.810 --> 38:13.650] Throw some more. [38:13.750 --> 38:14.230] More bricks. [38:15.250 --> 38:15.470] Thanks.