WEBVTT - Automatic transcript; recognition may contain errors. Reviewed for technical wording and speaker labels. Times match the published episode.

00:00:19.920 --> 00:00:22.340
<v Aaron van Wirdum>Live from Utrecht, this is Bitcoin.

00:00:23.220 --> 00:00:23.660
<v Sjors Provoost>Explained.

00:00:24.660 --> 00:00:26.880
<v Aaron van Wirdum>Sjors, are we still making a bi-weekly podcast?

00:00:28.100 --> 00:00:31.980
<v Sjors Provoost>I mean, it depends on what you mean by bi. It's more like a feeling, right?

00:00:32.720 --> 00:00:36.020
<v Aaron van Wirdum>We make a podcast when we feel about it these days. Is that the rule?

00:00:36.460 --> 00:00:40.200
<v Sjors Provoost>No, it's also when we're not traveling or sick or whatever.

00:00:40.460 --> 00:00:44.380
<v Aaron van Wirdum>Or we don't have a good idea for a podcast. This is a good moment actually to

00:00:44.380 --> 00:00:48.820
<v Aaron van Wirdum>maybe make a call to our audience. Like we will take requests for topics or at

00:00:48.820 --> 00:00:52.960
<v Aaron van Wirdum>least we will consider requests for topics. If any of our listeners have good

00:00:52.960 --> 00:00:57.960
<v Aaron van Wirdum>ideas of things that they want to have explained by us, just let us know on

00:00:57.960 --> 00:01:01.140
<v Aaron van Wirdum>Twitter and we will consider it. Okay. Right, Sjors?

00:01:01.460 --> 00:01:02.040
<v Sjors Provoost>Oh, that's true.

00:01:02.800 --> 00:01:08.060
<v Aaron van Wirdum>All right. So, yeah, last one was, I guess, a month ago. I don't know when this

00:01:08.060 --> 00:01:11.400
<v Aaron van Wirdum>one is going to be published because I think our editor is now traveling. He's in Amsterdam.

00:01:11.880 --> 00:01:12.540
<v Sjors Provoost>Oh, okay.

00:01:12.800 --> 00:01:16.320
<v Aaron van Wirdum>He's coming to our meetup tonight. We're recording this on, what is it,

00:01:16.460 --> 00:01:16.900
<v Aaron van Wirdum>Wednesday?

00:01:17.260 --> 00:01:19.420
<v Sjors Provoost>Wednesday, 20th of April.

00:01:19.620 --> 00:01:23.600
<v Aaron van Wirdum>Yeah, and there will be the biggest meetup in Europe, in all of Europe, in

00:01:23.600 --> 00:01:27.980
<v Aaron van Wirdum>Amsterdam tonight, Sjors. Okay. Isn't that exciting? We recently discovered that

00:01:27.980 --> 00:01:31.320
<v Aaron van Wirdum>it's probably the biggest one in Europe. So now that's our main marketing push.

00:01:31.840 --> 00:01:34.620
<v Sjors Provoost>Interesting. I guess that's because there's nothing happening in Prague at the moment?

00:01:36.660 --> 00:01:41.180
<v Aaron van Wirdum>Because they have pretty big meetups. I mean, we didn't fact check it, but I

00:01:41.180 --> 00:01:42.460
<v Aaron van Wirdum>think it's the biggest one in Europe.

00:01:42.640 --> 00:01:46.520
<v Sjors Provoost>But you mean the biggest Bitcoin meetup, which then meets some narrow definition

00:01:46.520 --> 00:01:48.380
<v Sjors Provoost>of Bitcoiner. Or Bitcoin?

00:01:49.240 --> 00:01:53.260
<v Aaron van Wirdum>Just the biggest Bitcoin meetup we know of. I don't think we're doing very narrow

00:01:53.260 --> 00:01:53.860
<v Aaron van Wirdum>definitions.

00:01:54.280 --> 00:01:57.880
<v Sjors Provoost>I mean, there's Bitcoin Wednesday, which has nothing to do with Bitcoin.

00:01:58.160 --> 00:02:01.860
<v Aaron van Wirdum>Right. Yeah, that's also an Amsterdam. I mean, is that bigger than ours?

00:02:02.300 --> 00:02:02.980
<v Sjors Provoost>I don't know.

00:02:03.160 --> 00:02:03.560
<v Aaron van Wirdum>Who knows?

00:02:03.760 --> 00:02:03.880
<v Sjors Provoost>Could be.

00:02:04.260 --> 00:02:06.920
<v Aaron van Wirdum>All right, let's get to the actual meat of this episode.

00:02:07.140 --> 00:02:07.400
<v Sjors Provoost>Indeed.

00:02:07.980 --> 00:02:12.040
<v Aaron van Wirdum>We are going to discuss... We'll probably have this published, I think, on the

00:02:12.040 --> 00:02:16.460
<v Aaron van Wirdum>day that Bitcoin Core 23 is released because that's what we're going to be

00:02:16.460 --> 00:02:19.230
<v Aaron van Wirdum>discussing. Bitcoin Core 23.

00:02:19.630 --> 00:02:22.230
<v Sjors Provoost>That's always a bit of a risky statement because it can take a while before it

00:02:22.230 --> 00:02:25.490
<v Sjors Provoost>gets released. But hopefully it'll be at the same time.

00:02:25.670 --> 00:02:30.130
<v Aaron van Wirdum>At the time we're recording this, we're on release candidate 5. I don't think

00:02:30.130 --> 00:02:33.530
<v Aaron van Wirdum>there's been many Bitcoin Core releases that required more than 5 release

00:02:33.530 --> 00:02:34.170
<v Aaron van Wirdum>candidates, right?

00:02:34.830 --> 00:02:35.110
<v Sjors Provoost>Indeed.

00:02:35.590 --> 00:02:39.670
<v Aaron van Wirdum>By the way, this is not in the show notes, but maybe that's a good starting

00:02:39.670 --> 00:02:42.570
<v Aaron van Wirdum>point. Sjors, what is actually a release candidate?

00:02:43.310 --> 00:02:48.080
<v Sjors Provoost>Well, it's a candidate for a release. To put it simply, so basically

00:02:48.080 --> 00:02:53.360
<v Sjors Provoost>it's a way for the Bitcoin Core developers or really any software project to give

00:02:53.360 --> 00:02:57.380
<v Sjors Provoost>experienced user a chance to test the software.

00:02:58.000 --> 00:02:59.900
<v Aaron van Wirdum>Right. And what are they testing it for?

00:03:00.060 --> 00:03:02.620
<v Sjors Provoost>Well, they're testing something that's going to be as close to the final version

00:03:02.620 --> 00:03:07.450
<v Sjors Provoost>as possible. In fact, the very last release candidate is eventually copied and

00:03:07.450 --> 00:03:08.570
<v Sjors Provoost>called the actual release.

00:03:08.730 --> 00:03:14.130
<v Aaron van Wirdum>Yeah, so in this case, release candidate 5, I think they're basically guys like

00:03:14.130 --> 00:03:20.090
<v Aaron van Wirdum>you, Bitcoin Core developers and other expert users maybe, they're sort

00:03:20.090 --> 00:03:22.010
<v Aaron van Wirdum>of trying out the software looking for bugs.

00:03:22.510 --> 00:03:26.670
<v Sjors Provoost>Yeah, exactly. Or changes that are not correctly documented. So for example, if

00:03:26.670 --> 00:03:30.670
<v Sjors Provoost>you're running a... say, a Bitcoin ATM or something, and you're relying on a

00:03:30.670 --> 00:03:34.690
<v Sjors Provoost>Bitcoin Core node to do all sorts of automated stuff, then you would test the new

00:03:34.690 --> 00:03:38.250
<v Sjors Provoost>release candidate to make sure that all the automated stuff you were relying on

00:03:38.250 --> 00:03:43.370
<v Sjors Provoost>still works and there's not some subtle change that causes your ATM to send free

00:03:43.370 --> 00:03:44.250
<v Sjors Provoost>money to its users.

00:03:44.450 --> 00:03:49.090
<v Aaron van Wirdum>Right. And that lasts for like about a week. And then if no issues are found, the

00:03:49.090 --> 00:03:53.450
<v Aaron van Wirdum>latest release candidate is essentially rebranded to whatever the new Bitcoin

00:03:53.450 --> 00:03:54.050
<v Aaron van Wirdum>Core release is.

00:03:54.290 --> 00:03:59.490
<v Sjors Provoost>I mean, there is an actual new release made. But it has the same code in it. The

00:03:59.490 --> 00:04:02.170
<v Sjors Provoost>only thing that changes then is the version number. So yeah.

00:04:02.550 --> 00:04:08.530
<v Aaron van Wirdum>Right. Okay. So Bitcoin Core 23, that's where we're at. For those that don't know

00:04:08.530 --> 00:04:12.930
<v Aaron van Wirdum>this, Bitcoin Core releases a new Bitcoin Core release every six months, more or

00:04:12.930 --> 00:04:18.550
<v Aaron van Wirdum>less. And the new Bitcoin Core release will basically just include whatever was

00:04:18.550 --> 00:04:22.790
<v Aaron van Wirdum>ready at that time. Bitcoin Core doesn't wait for specific features. It's just

00:04:22.790 --> 00:04:25.750
<v Aaron van Wirdum>once every six months, whatever's ready is in there, right?

00:04:25.950 --> 00:04:26.410
<v Sjors Provoost>Yeah, that's right.

00:04:26.800 --> 00:04:30.700
<v Aaron van Wirdum>Okay, so we're going to discuss some of the most notable changes.

00:04:32.030 --> 00:04:33.170
<v Aaron van Wirdum>Let's begin.

00:04:34.430 --> 00:04:40.010
<v Aaron van Wirdum>First, we're going to begin with... There's something

00:04:40.010 --> 00:04:41.630
<v Aaron van Wirdum>about ports.

00:04:42.010 --> 00:04:47.810
<v Sjors Provoost>Yes. Yeah, so as you may or may not know, Bitcoin Core listens to other

00:04:47.810 --> 00:04:52.510
<v Sjors Provoost>nodes, if it's on a public network, on port number 8333.

00:04:52.710 --> 00:04:57.560
<v Aaron van Wirdum>Yeah, and by listens, you basically mean just communicate with, right? Or what’s [unclear]…

00:04:58.270 --> 00:05:02.670
<v Sjors Provoost>Listening means that it is listening to the outside world, so you can actually

00:05:02.670 --> 00:05:06.530
<v Sjors Provoost>connect to it if you're in the outside world. A node could also just be on the

00:05:06.530 --> 00:05:09.630
<v Sjors Provoost>internet, but not listen to anyone in the world, so you might not know where it

00:05:09.630 --> 00:05:12.130
<v Sjors Provoost>is, and even if you send a message to it, it won't hear you.

00:05:12.350 --> 00:05:16.150
<v Aaron van Wirdum>Right. So if I'm running a Bitcoin Core node and it's a listening node, which is

00:05:16.150 --> 00:05:17.090
<v Aaron van Wirdum>like a setting.

00:05:17.670 --> 00:05:21.630
<v Sjors Provoost>It's actually the default. However, in your home situation, it's not going to

00:05:21.630 --> 00:05:22.410
<v Sjors Provoost>listen by default.

00:05:22.650 --> 00:05:22.750
<v Aaron van Wirdum>Right.

00:05:22.810 --> 00:05:26.270
<v Sjors Provoost>That's not because of a setting in Bitcoin Core, but other reasons we'll probably get into.

00:05:26.370 --> 00:05:29.550
<v Aaron van Wirdum>Yeah, we'll get into that in a bit. But essentially, if I'm running a Bitcoin

00:05:29.550 --> 00:05:32.510
<v Aaron van Wirdum>Core listening node, let's just call it that for now.

00:05:33.890 --> 00:05:38.730
<v Aaron van Wirdum>And you, Sjors, you're also running a node, and if you want to communicate with

00:05:38.730 --> 00:05:42.130
<v Aaron van Wirdum>my node, if you want to connect with my node then you're going to connect with my

00:05:42.130 --> 00:05:45.530
<v Aaron van Wirdum>node on port 8333 right? So far so good?

00:05:45.530 --> 00:05:46.050
<v Sjors Provoost>That's right.

00:05:46.050 --> 00:05:48.850
<v Aaron van Wirdum>Okay, so what is a port? What does this actually mean?

00:05:48.850 --> 00:05:53.330
<v Sjors Provoost>So a port is part of the I believe it's a TCP protocol,

00:05:55.590 --> 00:06:00.270
<v Sjors Provoost>The TCP IP protocol, basically. So the idea is an IP address is where the

00:06:00.270 --> 00:06:05.870
<v Sjors Provoost>computer is. That's what it tells you. And the port is actually just a thing

00:06:05.870 --> 00:06:09.130
<v Sjors Provoost>inside of the messages that you're sending it to it. So, you know, the internet

00:06:09.130 --> 00:06:13.010
<v Sjors Provoost>uses packages. And these packages, they have a certain structure, and the

00:06:13.010 --> 00:06:17.030
<v Sjors Provoost>beginning of the package says, okay, this is the port I want to communicate on.

00:06:17.110 --> 00:06:21.350
<v Sjors Provoost>So it's just a convention, a kind of a way to talk to different services on the

00:06:21.350 --> 00:06:26.710
<v Sjors Provoost>same machine. So one server on the internet might run a web server, and it might

00:06:26.710 --> 00:06:31.050
<v Sjors Provoost>also run an email server, and it might run a Bitcoin node. And so one convention

00:06:31.050 --> 00:06:35.760
<v Sjors Provoost>you'll use is if you want to talk to the web server, talk to port 80 or port 443.

00:06:35.920 --> 00:06:40.820
<v Sjors Provoost>If you want to talk to the FTP server, talk to port 21. If you want to talk to

00:06:40.820 --> 00:06:45.300
<v Sjors Provoost>the Bitcoin node, talk to port 8333. So it's just, it's kind of like if you're

00:06:45.300 --> 00:06:50.300
<v Sjors Provoost>sending somebody a letter and you write down the number of whatever the, you

00:06:50.300 --> 00:06:51.120
<v Sjors Provoost>know, the office they're in.

00:06:51.360 --> 00:06:55.200
<v Aaron van Wirdum>Or the name in that case, right? You know, there's several people living on the

00:06:55.200 --> 00:06:58.620
<v Aaron van Wirdum>same address and then the name actually specifies who it's for.

00:06:59.140 --> 00:07:03.750
<v Sjors Provoost>Yeah, maybe two. Yeah. And these are conventions, right? So IP addresses are a

00:07:03.750 --> 00:07:05.790
<v Sjors Provoost>scarce resource. They're distributed across the world.

00:07:07.130 --> 00:07:10.930
<v Sjors Provoost>So there are some centralization involved there. But when it comes to ports,

00:07:11.550 --> 00:07:16.030
<v Sjors Provoost>there are standards and conventions out there, but your machine decides what it

00:07:16.030 --> 00:07:19.190
<v Sjors Provoost>does on which port. There's nobody on the outside can tell you what to do. It's

00:07:19.190 --> 00:07:20.850
<v Sjors Provoost>just a very bad idea to use the wrong port.

00:07:20.990 --> 00:07:24.810
<v Aaron van Wirdum>So your computer connects with my computer. It tells my computer I'm going to use

00:07:24.810 --> 00:07:28.790
<v Aaron van Wirdum>port 8333, which is just conventionally

00:07:30.220 --> 00:07:35.440
<v Aaron van Wirdum>specification of something we chose. And at that point, my computer knows, oh,

00:07:35.520 --> 00:07:38.420
<v Aaron van Wirdum>that means he wants to connect to Bitcoin Core, right?

00:07:38.700 --> 00:07:42.840
<v Sjors Provoost>Yeah, because Bitcoin Core told your computer that it wants to listen on that port.

00:07:42.980 --> 00:07:48.660
<v Aaron van Wirdum>Right, and that's the convention, but there's a problem with this?

00:07:49.020 --> 00:07:54.220
<v Sjors Provoost>Yeah, so one thing is that internet providers and others can filter the internet

00:07:54.220 --> 00:07:57.880
<v Sjors Provoost>traffic. And one way you can filter the internet traffic is just by looking at

00:07:57.880 --> 00:08:01.700
<v Sjors Provoost>which port a package is going to, because that's very easy to see, it's at the

00:08:01.700 --> 00:08:06.230
<v Sjors Provoost>start of each package, and you usually have to check that anyway for other

00:08:06.230 --> 00:08:10.210
<v Sjors Provoost>reasons. So one thing an internet provider could do is to say well, we don't like

00:08:10.210 --> 00:08:13.310
<v Sjors Provoost>Bitcoin, let's just block port 8333 specifically.

00:08:13.310 --> 00:08:19.270
<v Aaron van Wirdum>Right so in a very sort of Bitcoin hostile future where perhaps Bitcoin is banned

00:08:19.270 --> 00:08:24.710
<v Aaron van Wirdum>or whatever and ISPs want to stop people from using Bitcoin this would be one way

00:08:24.710 --> 00:08:25.470
<v Aaron van Wirdum>for them to do it.

00:08:25.470 --> 00:08:28.490
<v Sjors Provoost>Yeah this would be the easiest the lowest hanging fruit way to do it. It's

00:08:28.490 --> 00:08:33.830
<v Sjors Provoost>certainly not um A very effective way to do it. But it's one start. It's

00:08:33.830 --> 00:08:35.410
<v Sjors Provoost>certainly also not the only thing they can do.

00:08:35.590 --> 00:08:39.930
<v Aaron van Wirdum>And the reason it's not very effective is because we have the option to just use

00:08:39.930 --> 00:08:41.490
<v Aaron van Wirdum>different ports. Is that right?

00:08:41.770 --> 00:08:45.250
<v Sjors Provoost>So that's the cat and mouse game. So if they make that move, then the second move

00:08:45.250 --> 00:08:49.430
<v Sjors Provoost>is okay. We just start using other ports. But in order to prepare for that

00:08:49.430 --> 00:08:54.750
<v Sjors Provoost>situation, I guess, one of the changes that are in the new version is that...

00:08:54.520 --> 00:08:58.280
<v Sjors Provoost>Bitcoin nodes will connect to other nodes that have a different port.

00:08:58.440 --> 00:09:00.320
<v Aaron van Wirdum>So they don't do that now?

00:09:00.560 --> 00:09:04.940
<v Sjors Provoost>They will do it if you tell it to. But one thing we talked about in the earlier

00:09:04.940 --> 00:09:08.060
<v Sjors Provoost>episode is that your node keeps a list of other nodes that it could connect to.

00:09:08.660 --> 00:09:13.700
<v Sjors Provoost>And from that list, it tends to pick nodes that have port 8333, and only if that

00:09:13.700 --> 00:09:18.120
<v Sjors Provoost>fails after a long time, then it'll try other ports. And that's the preference

00:09:18.120 --> 00:09:22.180
<v Sjors Provoost>that's being removed now. So it'll just try any other node, regardless of what

00:09:22.180 --> 00:09:25.780
<v Sjors Provoost>port it has. Which means that if we move to such a future where nodes are

00:09:25.780 --> 00:09:29.560
<v Sjors Provoost>listening on different ports... it's not, you know, it's going to be less

00:09:29.560 --> 00:09:29.960
<v Sjors Provoost>friction.

00:09:30.200 --> 00:09:35.840
<v Aaron van Wirdum>Right. So right now you're running a node Sjors, and by default, your node will

00:09:35.840 --> 00:09:41.340
<v Aaron van Wirdum>try to connect to other nodes and then we'll prioritize port 8333 nodes. And so

00:09:41.340 --> 00:09:46.320
<v Aaron van Wirdum>if I'm running a node on another port, then, and everyone is like you, then I

00:09:46.320 --> 00:09:49.740
<v Aaron van Wirdum>will just not have any inbound connections from other nodes because everyone's

00:09:49.740 --> 00:09:52.540
<v Aaron van Wirdum>sort of ignoring me because I'm not using 8333. Is that right?

00:09:52.720 --> 00:09:52.880
<v Sjors Provoost>Yeah.

00:09:53.280 --> 00:09:57.060
<v Aaron van Wirdum>Right. And this is changing now. This is changing new Bitcoin Core where you

00:09:57.060 --> 00:10:01.720
<v Aaron van Wirdum>won't prioritize 8333. You'll just connect to whatever node.

00:10:02.000 --> 00:10:07.140
<v Sjors Provoost>Yeah, exactly. And there is, I think, a list of nodes, a list of ports that we

00:10:07.140 --> 00:10:12.280
<v Sjors Provoost>don't connect to because it could be perceived as an attack. But I think that

00:10:12.280 --> 00:10:13.120
<v Sjors Provoost>list is pretty short.

00:10:13.380 --> 00:10:17.920
<v Aaron van Wirdum>Right. Okay. So this is basically preparing for a potential dystopian future

00:10:17.920 --> 00:10:19.400
<v Aaron van Wirdum>where Bitcoin is very much...

00:10:19.400 --> 00:10:22.950
<v Sjors Provoost>I mean, Bitcoin is... always preparing for potentially dystopian issues

00:10:22.950 --> 00:10:25.790
<v Aaron van Wirdum>Yeah but just to clarify that for listeners…

00:10:25.790 --> 00:10:29.490
<v Sjors Provoost>Yeah but also to clarify this you know this is not gonna make the difference.

00:10:29.490 --> 00:10:33.910
<v Sjors Provoost>It's like just one chess move, and and the counter move is pretty obvious. So

00:10:33.910 --> 00:10:37.090
<v Sjors Provoost>there's all sorts of ways for internet providers to see that you're running a

00:10:37.090 --> 00:10:40.810
<v Sjors Provoost>Bitcoin node not just the port you're on. Okay but that's the easiest way, and

00:10:40.810 --> 00:10:42.410
<v Sjors Provoost>you know uh enemies are lazy.

00:10:42.410 --> 00:10:47.070
<v Aaron van Wirdum>So okay well so that covers that change correct? Yeah all right

00:10:47.810 --> 00:10:49.730
<v Aaron van Wirdum>Let's move on to the next point.

00:10:51.250 --> 00:10:55.430
<v Aaron van Wirdum>CJ... Sorry, I'm mispronouncing it already. CJDNS.

00:10:56.640 --> 00:11:01.850
<v Sjors Provoost>Yeah. Yeah, I have no idea what it really is, to be honest. It's kind of in the

00:11:01.850 --> 00:11:06.590
<v Sjors Provoost>list of you have Tor and I2P that we talked about. And it's not a complete

00:11:06.590 --> 00:11:10.510
<v Sjors Provoost>replacement of these things, but it's sort of similar-ish.

00:11:10.910 --> 00:11:15.710
<v Aaron van Wirdum>So it's some kind of anonymity network that you can use if you want to use the

00:11:15.710 --> 00:11:17.270
<v Aaron van Wirdum>internet more privately.

00:11:17.670 --> 00:11:22.490
<v Sjors Provoost>Exactly. And so if you know what that is, now you can use it with Bitcoin Core. I

00:11:22.490 --> 00:11:24.790
<v Sjors Provoost>think that will be the first step to put it.

00:11:25.020 --> 00:11:29.820
<v Aaron van Wirdum>So Bitcoin Core has included support for CJDNS.

00:11:29.940 --> 00:11:34.320
<v Sjors Provoost>That's right. And so in the beginning, so a couple of episodes ago, we talked

00:11:34.320 --> 00:11:38.720
<v Sjors Provoost>about the address gossip messages and how it used to be that we could communicate

00:11:38.720 --> 00:11:44.680
<v Sjors Provoost>IPv4 addresses, IPv6 addresses and... tor v2 addresses and that you know

00:11:44.680 --> 00:11:48.280
<v Sjors Provoost>it wasn't possible to communicate Tor v3 addresses because they were too long,

00:11:48.280 --> 00:11:53.760
<v Sjors Provoost>and so they come up with a new standard called address message format number two,

00:11:53.760 --> 00:11:59.020
<v Sjors Provoost>which was which allowed you to send addresses of very different sizes and very

00:11:59.020 --> 00:12:02.760
<v Sjors Provoost>easily add new networks to that, and this is just one of the new networks that's

00:12:02.760 --> 00:12:07.090
<v Sjors Provoost>added to it. So these nodes can you can't just use it, You can also gossip them

00:12:07.090 --> 00:12:08.310
<v Sjors Provoost>around and things like that.

00:12:08.870 --> 00:12:09.030
<v Aaron van Wirdum>Right.

00:12:10.270 --> 00:12:16.150
<v Aaron van Wirdum>Details about CJDNS itself is not something that we can provide to the listener,

00:12:16.250 --> 00:12:20.970
<v Aaron van Wirdum>I think. No. That's sort of outside of our, or at least outside of my expertise

00:12:20.970 --> 00:12:22.710
<v Aaron van Wirdum>and I think outside of yours as well.

00:12:22.890 --> 00:12:22.970
<v Sjors Provoost>Yeah.

00:12:23.470 --> 00:12:28.210
<v Aaron van Wirdum>Okay. But it's, Bitcoin Core supports a new privacy or is it new? Do you know if it's new?

00:12:28.430 --> 00:12:29.250
<v Sjors Provoost>I don't think it's new.

00:12:29.610 --> 00:12:35.010
<v Aaron van Wirdum>Okay. It just supports an additional privacy network if you want to use it.

00:12:35.430 --> 00:12:35.970
<v Aaron van Wirdum>Great.

00:12:36.270 --> 00:12:36.490
<v Sjors Provoost>Yep.

00:12:36.710 --> 00:12:37.390
<v Aaron van Wirdum>I like it, Sjors.

00:12:37.910 --> 00:12:38.290
<v Sjors Provoost>Next.

00:12:38.650 --> 00:12:39.090
<v Aaron van Wirdum>Next.

00:12:41.550 --> 00:12:47.290
<v Aaron van Wirdum>Yeah, so there's an upgrade in the fee estimation algorithm in Bitcoin

00:12:47.290 --> 00:12:52.810
<v Aaron van Wirdum>Core. Yep. So obviously, whenever you want to make a transaction, Bitcoin Core

00:12:52.810 --> 00:12:58.710
<v Aaron van Wirdum>has this option to increase or decrease the fee depending on how fast you

00:12:58.710 --> 00:13:02.730
<v Aaron van Wirdum>want your transaction to confirm, which depends on things like how many

00:13:02.730 --> 00:13:06.960
<v Aaron van Wirdum>transactions are in the mempool or how many... how high fees were in recent

00:13:06.960 --> 00:13:09.460
<v Aaron van Wirdum>blocks, I think. These are sort of some of the inputs.

00:13:09.720 --> 00:13:13.760
<v Sjors Provoost>Yeah, I think it looks at... Yeah, exactly. I think it looks at how high fees

00:13:13.760 --> 00:13:17.540
<v Sjors Provoost>were in recent blocks, but it also checks how long it took before it first saw it

00:13:17.540 --> 00:13:20.540
<v Sjors Provoost>in a mempool and when it was in a block. I'm not exactly sure.

00:13:20.960 --> 00:13:21.340
<v Aaron van Wirdum>Right.

00:13:22.580 --> 00:13:28.430
<v Aaron van Wirdum>So that has been upgraded to include RBF, replaced by fee transactions

00:13:28.430 --> 00:13:28.890
<v Aaron van Wirdum>is that right?

00:13:28.890 --> 00:13:33.650
<v Sjors Provoost>Yeah you could call it an upgrade I mean initially it would just consider all

00:13:33.650 --> 00:13:37.730
<v Sjors Provoost>transactions in the mempool but then when RBF was introduced I think it was

00:13:37.730 --> 00:13:43.730
<v Sjors Provoost>decided to not to ignore those RBF fee bumps so fee bump is like you increase the

00:13:43.730 --> 00:13:48.400
<v Sjors Provoost>fee of an existing transaction And in the beginning, I guess developers were not

00:13:48.400 --> 00:13:53.180
<v Sjors Provoost>sure whether miners would actually play along with that game. So like actually

00:13:53.180 --> 00:13:57.040
<v Sjors Provoost>replace the transactions. And so because they weren't sure about that, it was a

00:13:57.040 --> 00:14:00.400
<v Sjors Provoost>bit risky to take those fees into account because you didn't know if those fees

00:14:00.400 --> 00:14:05.800
<v Sjors Provoost>actually mattered or not. But they do. And more people are using RBF. So now the

00:14:05.800 --> 00:14:11.940
<v Sjors Provoost>fee estimation takes into account the fees of the transactions whose fee was bumped.

00:14:11.940 --> 00:14:17.440
<v Aaron van Wirdum>Right and so to be more or to be very clear about that, the the fees we're

00:14:17.440 --> 00:14:20.380
<v Aaron van Wirdum>talking about here the RBF transactions we're talking about here are essentially

00:14:20.380 --> 00:14:26.060
<v Aaron van Wirdum>other people's RBF transactions. Yeah right so to reiterate that really

00:14:26.060 --> 00:14:31.510
<v Aaron van Wirdum>quick, RBF you know you send a transaction, and it's taking longer to confirm

00:14:31.510 --> 00:14:35.350
<v Aaron van Wirdum>than you anticipated or for some reason you're in more of a rush all of a sudden,

00:14:35.350 --> 00:14:40.110
<v Aaron van Wirdum>then you have the option to basically resend the same transaction to the network

00:14:40.110 --> 00:14:45.870
<v Aaron van Wirdum>but include a higher fee this time, and that newer transaction should sort of

00:14:45.870 --> 00:14:49.770
<v Aaron van Wirdum>override the older transaction. The miners should pick that one because it has

00:14:49.770 --> 00:14:55.400
<v Aaron van Wirdum>higher fee essentially. Exactly so then So the transactions that are going to be

00:14:55.400 --> 00:15:01.400
<v Aaron van Wirdum>confirmed in blocks essentially have higher fees now if all miners will adopt or

00:15:01.400 --> 00:15:06.500
<v Aaron van Wirdum>accept these RBF transactions. And therefore, your own transaction, if you're

00:15:06.500 --> 00:15:10.300
<v Aaron van Wirdum>going to send it, would also require a bit of a higher fee. And that's now taken

00:15:10.300 --> 00:15:10.880
<v Aaron van Wirdum>into account.

00:15:11.140 --> 00:15:15.240
<v Sjors Provoost>Yeah. I mean, just the one nuance there is not necessarily that the fees will

00:15:15.240 --> 00:15:19.100
<v Sjors Provoost>actually go up, right? Because people will make more conservative estimates and

00:15:19.100 --> 00:15:24.620
<v Sjors Provoost>then increase them. Effectively, fees might be lower. But yeah, basically you

00:15:24.620 --> 00:15:27.600
<v Sjors Provoost>have to take them into account. You have to look at what transactions actually go

00:15:27.600 --> 00:15:28.120
<v Sjors Provoost>into the block.

00:15:28.400 --> 00:15:33.100
<v Aaron van Wirdum>Well, your own estimate, the estimates that your Bitcoin Core client makes, like

00:15:33.100 --> 00:15:37.390
<v Aaron van Wirdum>let's say I want to have my fee... Sorry, I want to have my transaction confirmed

00:15:37.390 --> 00:15:43.110
<v Aaron van Wirdum>within 24 hours. Now that it is taken into account RBF transactions

00:15:43.110 --> 00:15:48.250
<v Aaron van Wirdum>from other people should mean that my fee estimation will be slightly higher now, right?

00:15:48.350 --> 00:15:51.010
<v Sjors Provoost>Well, that's what I thought yesterday too. But now that I think about it, I think

00:15:51.010 --> 00:15:55.710
<v Sjors Provoost>that's not actually true. Because RBF transactions, what it's saying is it's now

00:15:55.710 --> 00:16:00.810
<v Sjors Provoost>including transactions that have been fee bumped. But I don't know if it

00:16:00.810 --> 00:16:06.090
<v Sjors Provoost>previously excluded those transactions or excluded transactions that were using

00:16:06.090 --> 00:16:07.770
<v Sjors Provoost>the RBF flag, but were not fee bumped.

00:16:08.400 --> 00:16:10.060
<v Aaron van Wirdum>I don't get that at all.

00:16:10.650 --> 00:16:15.370
<v Sjors Provoost>So there's three kinds of transactions, right? There's transactions that don't

00:16:15.370 --> 00:16:19.810
<v Sjors Provoost>use RBF at all. There's transactions that set the RBF flag, but don't bump the

00:16:19.810 --> 00:16:23.610
<v Sjors Provoost>fee. And there's transactions that have now a higher fee.

00:16:23.870 --> 00:16:24.130
<v Aaron van Wirdum>Yes.

00:16:25.030 --> 00:16:27.950
<v Sjors Provoost>Yeah, so the transactions that now have a higher fee are always higher than the

00:16:27.950 --> 00:16:33.250
<v Sjors Provoost>ones that don't. So yeah, I guess you're right. It would increase the price, the

00:16:33.250 --> 00:16:34.010
<v Sjors Provoost>fee estimates slightly.

00:16:34.190 --> 00:16:36.750
<v Aaron van Wirdum>It would have to, right? There's no way it can be lower if it's going to take

00:16:36.750 --> 00:16:38.350
<v Aaron van Wirdum>into account RBF transactions.

00:16:39.050 --> 00:16:39.410
<v Sjors Provoost>Yeah.

00:16:40.540 --> 00:16:43.820
<v Aaron van Wirdum>You know, it might stay the same in some cases. It's either the same or higher.

00:16:44.000 --> 00:16:48.260
<v Sjors Provoost>It depends. If it was discounting all RBF transactions, regardless of whether the

00:16:48.260 --> 00:16:51.830
<v Sjors Provoost>fee was bumped or not, then it's different. Because if the algorithm was only

00:16:51.830 --> 00:16:56.110
<v Sjors Provoost>looking at transactions that don't have the RBF flag at all, And now it's also

00:16:56.110 --> 00:16:59.170
<v Sjors Provoost>looking at transactions that do have the RBF flag. Well, those might be all

00:16:59.170 --> 00:17:00.130
<v Sjors Provoost>systematically lower.

00:17:00.710 --> 00:17:04.490
<v Aaron van Wirdum>Yeah, I guess that's true. But that would be a strange policy if that was the case.

00:17:05.010 --> 00:17:07.950
<v Sjors Provoost>It may be, but that would be a good reason to revert it. So I guess we should

00:17:07.950 --> 00:17:09.210
<v Sjors Provoost>have read the pull request a bit better.

00:17:10.450 --> 00:17:11.450
<v Sjors Provoost>You can do so yourself.

00:17:11.670 --> 00:17:17.530
<v Aaron van Wirdum>In either case, that's kind of a detail. The important thing is RBF transactions

00:17:17.530 --> 00:17:22.790
<v Aaron van Wirdum>are now taken into account for fee estimation. Essentially, to summarize that in

00:17:22.790 --> 00:17:26.310
<v Aaron van Wirdum>one sentence, Fee estimation should be a bit better now.

00:17:27.010 --> 00:17:27.150
<v Sjors Provoost>Yep.

00:17:27.490 --> 00:17:27.710
<v Aaron van Wirdum>All right.

00:17:28.090 --> 00:17:28.730
<v Sjors Provoost>Let's talk about Tether.

00:17:29.470 --> 00:17:30.550
<v Aaron van Wirdum>Let's talk about Tether.

00:17:31.760 --> 00:17:33.000
<v Aaron van Wirdum>Sjors, you want to talk about Tether?

00:17:33.920 --> 00:17:36.700
<v Sjors Provoost>Yeah. Is it actually Tether? USDC?

00:17:37.880 --> 00:17:42.340
<v Aaron van Wirdum>Oh, you know, that's another one, right? Tether should be USDT or

00:17:42.340 --> 00:17:44.400
<v Aaron van Wirdum>something like that.

00:17:44.440 --> 00:17:48.520
<v Sjors Provoost>Well, anyway. Oh, it is USDT. I actually just wrote it wrong in the show notes.

00:17:48.600 --> 00:17:52.750
<v Sjors Provoost>Yeah, it's USDT. But it doesn't stand for Tether. It stands for User Space

00:17:52.750 --> 00:17:55.190
<v Sjors Provoost>Statically Defined Tracing for Bitcoin Core.

00:17:55.630 --> 00:18:00.490
<v Aaron van Wirdum>Aha, it's only now that I understand your pun then. You made a pun in the show

00:18:00.490 --> 00:18:05.910
<v Aaron van Wirdum>notes. That's great. We're back to puns. We need more puns in our show, but make

00:18:05.910 --> 00:18:07.930
<v Aaron van Wirdum>the pun again because maybe people didn't get it.

00:18:08.090 --> 00:18:11.830
<v Sjors Provoost>No, that's fine. They can re-listen to the episode. And I kind of ruined it

00:18:11.830 --> 00:18:16.130
<v Sjors Provoost>anyway. So anyway, so the basic idea here is that I don't really understand what

00:18:16.130 --> 00:18:22.010
<v Sjors Provoost>the basic idea is, but trace points are tools that developers can

00:18:22.010 --> 00:18:26.770
<v Sjors Provoost>use, but also people who want to monitor their own node can use to get really

00:18:26.770 --> 00:18:32.490
<v Sjors Provoost>fine-grained statistics out of their node. So for example, you can ask your node

00:18:32.490 --> 00:18:36.490
<v Sjors Provoost>for things. You can call the node RPC. You can say, okay, give me the list of

00:18:36.490 --> 00:18:39.710
<v Sjors Provoost>blocks you have or give me the list of peers you have. There's a RPC call for that.

00:18:41.360 --> 00:18:45.080
<v Sjors Provoost>And you can read log files, and that tells you something. But this is just

00:18:45.080 --> 00:18:49.440
<v Sjors Provoost>another way to get more detailed information. So one of the details you can get

00:18:49.440 --> 00:18:54.620
<v Sjors Provoost>is every message that every node ever sends to you. So all of your peers keep

00:18:54.620 --> 00:18:58.740
<v Sjors Provoost>sending you all sorts of messages. And now there's a better tool that you can use

00:18:58.740 --> 00:19:00.960
<v Sjors Provoost>to kind of track those messages in a database.

00:19:01.340 --> 00:19:07.270
<v Aaron van Wirdum>Okay, well, let's... break this down a little bit. First of all this seems to

00:19:07.270 --> 00:19:12.130
<v Aaron van Wirdum>me this sounds like something this is useful for developers specifically right?

00:19:12.130 --> 00:19:14.690
<v Aaron van Wirdum>Or is this something users are going to use for some reason?

00:19:14.690 --> 00:19:19.930
<v Sjors Provoost>I would say developers but also say researchers, like you know Jameson Lopp for

00:19:19.930 --> 00:19:24.540
<v Sjors Provoost>example when he does all these analysis of whatever is going on. He could use

00:19:24.540 --> 00:19:29.320
<v Sjors Provoost>this or I think security researchers might find this interesting because they

00:19:29.320 --> 00:19:32.840
<v Sjors Provoost>could run a bunch of nodes and check all the message traffic that's coming at

00:19:32.840 --> 00:19:38.220
<v Sjors Provoost>those nodes and maybe identify attacks by something subtle, right? So sometimes,

00:19:38.520 --> 00:19:42.320
<v Sjors Provoost>like we talked about an attack on the Bitcoin peer-to-peer network a few episodes

00:19:42.320 --> 00:19:46.400
<v Sjors Provoost>ago where people were announcing fake nodes. And that's something you probably

00:19:46.400 --> 00:19:50.260
<v Sjors Provoost>wouldn't be able to detect if you just... looked at you know if you just start

00:19:50.260 --> 00:19:55.360
<v Sjors Provoost>your Bitcoin Core GUI it doesn't get hot, or it doesn't scream at you, yet there

00:19:55.360 --> 00:19:58.140
<v Sjors Provoost>is an attack going on. So these kind of tools would make it much easier to see

00:19:58.140 --> 00:19:59.320
<v Sjors Provoost>that this attack is going on.

00:19:59.320 --> 00:20:04.880
<v Aaron van Wirdum>Okay, so one small step back just for my own understanding and I guess the

00:20:04.880 --> 00:20:06.200
<v Aaron van Wirdum>listeners as well, since they're listening.

00:20:06.200 --> 00:20:08.100
<v Sjors Provoost>Hopefully that's why we explain things.

00:20:08.100 --> 00:20:13.620
<v Aaron van Wirdum>First of all you just mentioned log files. So a log file

00:20:13.620 --> 00:20:19.360
<v Aaron van Wirdum>basically keeps track of every action your Bitcoin Core nodes does, right?

00:20:19.620 --> 00:20:22.720
<v Sjors Provoost>Depending on how you configure it, you can tell it to keep track of quite a lot

00:20:22.720 --> 00:20:27.440
<v Sjors Provoost>of detail, yes. But it's just a long text file and each line starts with the

00:20:27.440 --> 00:20:32.340
<v Sjors Provoost>timestamp and then it says, okay, this happened, okay, this happened. And then if

00:20:32.340 --> 00:20:35.960
<v Sjors Provoost>you want to process that data, it can be quite tedious. And not everything goes

00:20:35.960 --> 00:20:36.900
<v Sjors Provoost>into the log file either.

00:20:37.280 --> 00:20:39.400
<v Aaron van Wirdum>Okay, but this was already possible.

00:20:39.740 --> 00:20:39.940
<v Sjors Provoost>Yes.

00:20:40.150 --> 00:20:45.430
<v Aaron van Wirdum>And so now we're talking about user space statistically defined tracing,

00:20:45.430 --> 00:20:51.390
<v Aaron van Wirdum>and if I saw if I'm trying to understand you, it's like a more

00:20:52.300 --> 00:20:56.920
<v Aaron van Wirdum>specific type of log file? It tracks more specific things or…

00:20:56.920 --> 00:21:00.720
<v Sjors Provoost>Yeah that's that's what I understand too, but I don't completely understand it

00:21:00.720 --> 00:21:04.720
<v Sjors Provoost>either, but I guess it it really ties better into the operating system, and it's

00:21:04.720 --> 00:21:08.160
<v Sjors Provoost>a way to to communicate this information in a more structured way than just a

00:21:08.160 --> 00:21:08.640
<v Sjors Provoost>text file.

00:21:08.640 --> 00:21:13.440
<v Aaron van Wirdum>Right, so the example you gave was something related to the peer-to-peer network

00:21:13.440 --> 00:21:17.040
<v Aaron van Wirdum>you give it a very specific instruction. You don't have to log everything. You

00:21:17.040 --> 00:21:22.370
<v Aaron van Wirdum>just log whatever other nodes are communicating with you or whatever data other

00:21:22.370 --> 00:21:28.260
<v Aaron van Wirdum>nodes are sending to you. And that's sort of... Bitcoin

00:21:28.260 --> 00:21:32.920
<v Aaron van Wirdum>Core now has the option to keep track of that in a way that's easy to understand

00:21:32.920 --> 00:21:34.920
<v Aaron van Wirdum>by other types of software, perhaps.

00:21:35.200 --> 00:21:35.680
<v Sjors Provoost>Yeah, exactly.

00:21:36.060 --> 00:21:41.460
<v Aaron van Wirdum>Right. So, yeah. As you mentioned, useful for developers, useful for researchers.

00:21:42.280 --> 00:21:44.780
<v Aaron van Wirdum>Not something a regular user will use in general.

00:21:44.980 --> 00:21:45.860
<v Sjors Provoost>No, I don't think so.

00:21:46.020 --> 00:21:46.200
<v Aaron van Wirdum>Okay.

00:21:47.430 --> 00:21:49.050
<v Aaron van Wirdum>That's pretty clear to me.

00:21:50.710 --> 00:21:56.570
<v Aaron van Wirdum>I completely lost access to our show notes. There we go. I'm back. You're

00:21:56.570 --> 00:21:57.230
<v Aaron van Wirdum>back? I'm back.

00:21:58.950 --> 00:22:00.010
<v Aaron van Wirdum>Next point is yours.

00:22:02.480 --> 00:22:03.220
<v Aaron van Wirdum>Are you ready?

00:22:03.520 --> 00:22:04.100
<v Sjors Provoost>Yeah, I'm ready.

00:22:05.860 --> 00:22:10.560
<v Aaron van Wirdum>“Back” 32. How do I pronounce “back”? Is that how I pronounce it? That's probably

00:22:10.560 --> 00:22:11.920
<v Aaron van Wirdum>a very Dutch way of pronouncing it.

00:22:11.940 --> 00:22:15.120
<v Sjors Provoost>Yeah, I would say “back” 32, but others say “batch” 32.

00:22:15.640 --> 00:22:21.180
<v Aaron van Wirdum>“Batch”, yeah. B-E-C-H 32. “batch” 32 um

00:22:21.180 --> 00:22:22.540
<v Aaron van Wirdum>I

00:22:24.080 --> 00:22:25.600
<v Aaron van Wirdum>forgot why this is in the show notes.

00:22:25.600 --> 00:22:30.260
<v Sjors Provoost>Well, I'm sure you remember. As you may remember the Bech32 checksum has some

00:22:30.260 --> 00:22:33.840
<v Sjors Provoost>nice properties. One of them is that it allows you locate where your typos are.

00:22:33.840 --> 00:22:39.050
<v Aaron van Wirdum>Yeah oh yeah so Bech32 is a type of address.

00:22:39.050 --> 00:22:39.950
<v Sjors Provoost>Yep

00:22:39.950 --> 00:22:45.730
<v Aaron van Wirdum>And this type of address has nice… we did a previous episode on addresses

00:22:45.730 --> 00:22:46.790
<v Aaron van Wirdum>Sjors, which episode is that?

00:22:46.790 --> 00:22:47.990
<v Sjors Provoost>Yes we addressed this.

00:22:47.990 --> 00:22:49.070
<v Aaron van Wirdum>Oh great.

00:22:49.070 --> 00:22:51.790
<v Sjors Provoost>I think it was probably episode 2 or something.

00:22:51.950 --> 00:22:53.710
<v Aaron van Wirdum>It was pretty early, I think, yeah.

00:22:53.910 --> 00:22:57.350
<v Sjors Provoost>And one of the things we explained indeed is that this new address format that

00:22:57.350 --> 00:23:03.290
<v Sjors Provoost>starts with BC1 will have the nice property that if you make a typo

00:23:03.290 --> 00:23:07.930
<v Sjors Provoost>in it, you can actually find out where it was to do mathematical magic. And so

00:23:07.930 --> 00:23:12.470
<v Sjors Provoost>that was already possible in theory, but it wasn't supported in practice. And now

00:23:12.470 --> 00:23:15.750
<v Sjors Provoost>Bitcoin Core will let you do it, at least if you use the command line in this

00:23:15.750 --> 00:23:18.830
<v Sjors Provoost>release, and then maybe in a future release, there's already some work for that.

00:23:19.650 --> 00:23:20.850
<v Sjors Provoost>You can do it in the GUI.

00:23:21.030 --> 00:23:26.950
<v Aaron van Wirdum>Right. So if someone for some reason would type out an address instead of

00:23:26.950 --> 00:23:32.010
<v Aaron van Wirdum>just copy and paste and they make a typo, then your Bitcoin Core client will tell

00:23:32.010 --> 00:23:36.050
<v Aaron van Wirdum>you there's a typo in it and it's there, right?

00:23:36.310 --> 00:23:36.510
<v Sjors Provoost>Yeah.

00:23:36.730 --> 00:23:37.890
<v Aaron van Wirdum>That's basically what will happen.

00:23:38.130 --> 00:23:43.610
<v Sjors Provoost>And there's some discussion about up to what point that's safe because it could

00:23:43.610 --> 00:23:49.400
<v Sjors Provoost>be situations where you make too many typos. And then... it might

00:23:49.400 --> 00:23:52.260
<v Sjors Provoost>think you actually meant another address and it might actually help you

00:23:52.260 --> 00:23:57.020
<v Sjors Provoost>accidentally change the address into a different address, which is even worse

00:23:57.020 --> 00:23:58.480
<v Sjors Provoost>than the address not working.

00:23:58.600 --> 00:24:00.580
<v Aaron van Wirdum>Sure. It's kind of like autocorrect in that sense.

00:24:00.980 --> 00:24:05.880
<v Sjors Provoost>Yeah. But if you're using the command line, then you should know what you're

00:24:05.880 --> 00:24:08.940
<v Sjors Provoost>doing. So it's easier to introduce these features there.

00:24:13.980 --> 00:24:15.300
<v Aaron van Wirdum>Nice. All right. Next point.

00:24:17.360 --> 00:24:18.260
<v Aaron van Wirdum>We're getting there?

00:24:18.840 --> 00:24:18.920
<v Sjors Provoost>Yeah.

00:24:19.300 --> 00:24:21.320
<v Aaron van Wirdum>Two or three more to go, right? All right.

00:24:23.840 --> 00:24:25.720
<v Aaron van Wirdum>Wallet support for Taproot.

00:24:26.320 --> 00:24:31.940
<v Sjors Provoost>That's right. I think more precisely, new wallets will support

00:24:31.940 --> 00:24:32.700
<v Sjors Provoost>Taproot.

00:24:33.980 --> 00:24:39.000
<v Sjors Provoost>So if you create a new wallet, it will have Taproot support. It won't use it by default.

00:24:40.240 --> 00:24:44.420
<v Sjors Provoost>So the other change there is that there's a little drop-down menu where the

00:24:44.420 --> 00:24:48.640
<v Sjors Provoost>checkbox used to be for Bech32. Now there's going to be a dropdown menu where you

00:24:48.640 --> 00:24:52.960
<v Sjors Provoost>can choose, where it still uses SegWit by default, but you can actually select

00:24:52.960 --> 00:24:53.780
<v Sjors Provoost>Taproot as well.

00:24:54.020 --> 00:24:58.300
<v Aaron van Wirdum>So what does that exactly mean? Like what does it mean to use Taproot in this context?

00:24:58.320 --> 00:25:03.680
<v Sjors Provoost>Well, you'll get an address that starts with BC1P instead of BC1Q.

00:25:03.880 --> 00:25:04.180
<v Aaron van Wirdum>Right.

00:25:04.360 --> 00:25:07.260
<v Sjors Provoost>And it's a Taproot single signature. A pay-to-public-key.

00:25:07.420 --> 00:25:12.920
<v Aaron van Wirdum>Right. So it doesn't mean that you're somehow automatically using all the fancy

00:25:12.920 --> 00:25:17.320
<v Aaron van Wirdum>multi-sig options and time lock options that are all sort of hidden in this tree.

00:25:17.400 --> 00:25:23.240
<v Aaron van Wirdum>It's still a regular single key transaction, but you are using a Taproot address.

00:25:24.360 --> 00:25:26.720
<v Sjors Provoost>Which has almost no benefit, but you can do it.

00:25:27.910 --> 00:25:31.730
<v Aaron van Wirdum>Yeah, it has a little bit of benefit for yourself. The point in this case, I

00:25:31.730 --> 00:25:36.490
<v Aaron van Wirdum>guess, is that anyone monitoring the blockchain, you know, that's sort of one of

00:25:36.490 --> 00:25:39.970
<v Aaron van Wirdum>the nice things about Taproot. They won't be able to tell if it was, in fact,

00:25:40.170 --> 00:25:44.730
<v Aaron van Wirdum>just a single key transaction or maybe that was like a fancy script hidden behind

00:25:44.730 --> 00:25:45.730
<v Aaron van Wirdum>it. It looks the same.

00:25:46.070 --> 00:25:46.430
<v Sjors Provoost>That's right.

00:25:46.710 --> 00:25:51.030
<v Aaron van Wirdum>Right. So we're kind of working towards this future. Like that's part of the

00:25:51.030 --> 00:25:53.710
<v Aaron van Wirdum>vision of Taproot where every transaction kind of looks the same.

00:25:54.070 --> 00:25:54.170
<v Sjors Provoost>Yeah.

00:25:54.340 --> 00:25:57.880
<v Aaron van Wirdum>And people won't know what kind of transaction is really sort of hidden behind it

00:25:57.880 --> 00:26:02.860
<v Aaron van Wirdum>and by moving in this direction. I'm repeating myself, but we're moving in this direction.

00:26:03.100 --> 00:26:04.840
<v Sjors Provoost>The transition phase is always a bit risky.

00:26:05.040 --> 00:26:05.200
<v Aaron van Wirdum>Right.

00:26:05.380 --> 00:26:10.240
<v Sjors Provoost>Because now, you know, how many wallets actually can do this? Not that many. So

00:26:10.240 --> 00:26:13.820
<v Sjors Provoost>it might actually tell people that you're using Bitcoin Core. But yeah, that's

00:26:13.820 --> 00:26:16.380
<v Sjors Provoost>something to think about. But it's not the default yet. And the other reason it's

00:26:16.380 --> 00:26:19.380
<v Sjors Provoost>not the default is because some wallets cannot send to a Taproot address.

00:26:20.320 --> 00:26:25.760
<v Aaron van Wirdum>Yeah, in the short term, in the transition phase, you're arguably a bit worse off

00:26:25.760 --> 00:26:30.360
<v Aaron van Wirdum>privacy-wise. But then once people migrate to this new standard, then everyone

00:26:30.360 --> 00:26:34.670
<v Aaron van Wirdum>should benefit. That's basically the short version of the story here, right?

00:26:34.930 --> 00:26:35.090
<v Sjors Provoost>Yeah.

00:26:35.450 --> 00:26:36.910
<v Aaron van Wirdum>Okay, so we're heading in that direction.

00:26:41.570 --> 00:26:46.390
<v Aaron van Wirdum>Next point, in case I wasn't clear, we're moving to the next point. You can now

00:26:46.390 --> 00:26:48.490
<v Aaron van Wirdum>freeze coins in your wallets.

00:26:48.960 --> 00:26:53.080
<v Sjors Provoost>Yeah, so it was already possible when you're using the Bitcoin Core GUI to send

00:26:53.080 --> 00:26:56.720
<v Sjors Provoost>coins, you have something called manual coin selection that you can turn on if

00:26:56.720 --> 00:27:00.960
<v Sjors Provoost>you like to actually decide which specific coins you want to spend. And it'll

00:27:00.960 --> 00:27:05.860
<v Sjors Provoost>give you a nice, well, nice, depending on who you ask, graphical picture,

00:27:06.280 --> 00:27:10.380
<v Sjors Provoost>graphical display of which coins you have. And you can select boxes and say, I

00:27:10.380 --> 00:27:13.300
<v Sjors Provoost>want to use this coin. I want to use this coin. And it also had the opposite

00:27:13.300 --> 00:27:17.060
<v Sjors Provoost>feature where you could say, well, I don't care which coin to use, but don't use

00:27:17.060 --> 00:27:20.540
<v Sjors Provoost>this one and this one and this one because they come from some bad source that I

00:27:20.540 --> 00:27:22.480
<v Sjors Provoost>don't want to mix with my other coins.

00:27:22.680 --> 00:27:24.240
<v Aaron van Wirdum>Well, that's the new thing, right?

00:27:24.380 --> 00:27:28.750
<v Sjors Provoost>No, it was already there. The only problem is you have to do it every time you

00:27:28.750 --> 00:27:30.830
<v Sjors Provoost>want to make a new transaction. It didn't remember it.

00:27:31.500 --> 00:27:34.900
<v Aaron van Wirdum>Right, right. Yeah. At least not between

00:27:34.900 --> 00:27:36.660
<v Sjors Provoost>startups of the Bitcoin Core.

00:27:36.940 --> 00:27:40.920
<v Aaron van Wirdum>Right. So you're saying coins, which is also what I often use, it's [unclear]

00:27:40.920 --> 00:27:45.240
<v Aaron van Wirdum>easy to understand thing. Technically, they're UTXOs, of course. They're just,

00:27:45.320 --> 00:27:49.740
<v Aaron van Wirdum>you know, the fractions of Bitcoin that you received over time that are in your

00:27:49.740 --> 00:27:54.120
<v Aaron van Wirdum>wallet. And it was always possible if you make a transaction that you tell your

00:27:54.120 --> 00:27:58.680
<v Aaron van Wirdum>Bitcoin Core wallet, I want to use these fractions to create a new transaction.

00:27:59.380 --> 00:28:04.720
<v Aaron van Wirdum>Or like you said, don't use these fractions to create my new transaction.

00:28:05.120 --> 00:28:10.480
<v Aaron van Wirdum>So don't use these fractions to make a new transaction. That feature is

00:28:10.480 --> 00:28:16.200
<v Aaron van Wirdum>now... you can basically tell your node, don't use these fractions until

00:28:16.200 --> 00:28:17.900
<v Aaron van Wirdum>I tell you otherwise.

00:28:18.140 --> 00:28:18.460
<v Sjors Provoost>That's right.

00:28:18.560 --> 00:28:19.880
<v Aaron van Wirdum>For the rest of time.

00:28:20.220 --> 00:28:21.520
<v Sjors Provoost>Yeah, exactly. It remembers it.

00:28:21.680 --> 00:28:21.960
<v Aaron van Wirdum>Right.

00:28:22.360 --> 00:28:25.460
<v Sjors Provoost>And that can be nice. Like, you know, there's a couple of reasons. Like I said,

00:28:25.620 --> 00:28:31.320
<v Sjors Provoost>you might, maybe your wallet has lots of coins from KYC places, KYC free

00:28:31.320 --> 00:28:36.080
<v Sjors Provoost>places, I mean, but it has one coin that you got from Coinbase. And you just

00:28:36.080 --> 00:28:39.240
<v Sjors Provoost>never want to use that coin from Coinbase because then Coinbase can [unclear] all

00:28:39.240 --> 00:28:44.380
<v Sjors Provoost>your other coins as they're spying on you probably right? So that's you know, so

00:28:44.380 --> 00:28:48.760
<v Sjors Provoost>you can basically mark that coin as toxic until you decide to spend it. Yeah it

00:28:48.760 --> 00:28:52.590
<v Sjors Provoost>remembers that. But it can also be if you have something like a dust attack. So

00:28:52.590 --> 00:28:56.990
<v Sjors Provoost>somebody like an analytics company might be sending very small amounts of dust,

00:28:57.470 --> 00:29:02.210
<v Sjors Provoost>those very small amounts basically, to Bitcoin addresses that it knows about. And

00:29:02.210 --> 00:29:06.210
<v Sjors Provoost>then it's hoping that your wallet will automatically grab those coins and combine

00:29:06.210 --> 00:29:10.750
<v Sjors Provoost>them with the other coins in your wallet, therefore by revealing that you own

00:29:10.750 --> 00:29:14.030
<v Sjors Provoost>that old address and as well as the new address. So now you can disable those two

00:29:14.030 --> 00:29:18.690
<v Sjors Provoost>if you see this attack. It's pretty advanced stuff, but it's nice that it works.

00:29:18.960 --> 00:29:24.640
<v Aaron van Wirdum>So freezing them is like a manual thing. You click a button. Oh, sorry. Freezing

00:29:24.640 --> 00:29:27.180
<v Aaron van Wirdum>is like a manual thing. You click a button. Now they're frozen. And then

00:29:27.180 --> 00:29:31.100
<v Aaron van Wirdum>unfreezing is also a manual thing. Or could you also say, don't use them for a

00:29:31.100 --> 00:29:32.340
<v Aaron van Wirdum>year. And after a year, they're automatically…

00:29:32.340 --> 00:29:35.520
<v Sjors Provoost>No, it's not that advanced. You just select it and you deselect it.

00:29:35.720 --> 00:29:35.860
<v Aaron van Wirdum>Right.

00:29:37.140 --> 00:29:37.700
<v Aaron van Wirdum>All right.

00:29:37.940 --> 00:29:39.040
<v Sjors Provoost>We have a bonus item.

00:29:40.290 --> 00:29:44.550
<v Aaron van Wirdum>Exciting. This is very exciting, a bonus item. I cannot wait to hear what the

00:29:44.550 --> 00:29:45.250
<v Aaron van Wirdum>bonus item is.

00:29:45.370 --> 00:29:48.590
<v Sjors Provoost>So as we mentioned, there were multiple release candidates. And then there was

00:29:48.590 --> 00:29:54.030
<v Sjors Provoost>release candidate number four. And somebody on Windows found a bug. And it was a

00:29:54.030 --> 00:29:58.410
<v Sjors Provoost>very obscure bug. It's like, if I go to this screen and then this other screen,

00:29:58.430 --> 00:30:04.090
<v Sjors Provoost>and I wait a few seconds, my node crashes. So this is something many people would

00:30:04.090 --> 00:30:07.130
<v Sjors Provoost>not even test. Because when there's a new release, you generally test things that

00:30:07.130 --> 00:30:11.360
<v Sjors Provoost>are new in that release. But in this case, somebody was just testing existing

00:30:11.360 --> 00:30:16.220
<v Sjors Provoost>functionality and ran into this crash. And people investigated it and it turned

00:30:16.220 --> 00:30:21.820
<v Sjors Provoost>out to be some really obscure Windows-only bug in the C compiler that Bitcoin

00:30:21.820 --> 00:30:27.200
<v Sjors Provoost>Core is using. And so people actually had to fix a C compiler

00:30:27.200 --> 00:30:31.520
<v Sjors Provoost>in order to fix Bitcoin Core. And that took another couple of weeks.

00:30:31.800 --> 00:30:36.420
<v Aaron van Wirdum>Right. So the C compiler, that's not even part of Bitcoin Core. That's just a

00:30:36.420 --> 00:30:41.220
<v Aaron van Wirdum>separate program in Windows that will compile your code into binaries, right?

00:30:41.420 --> 00:30:46.700
<v Sjors Provoost>Yeah. Or a program on Linux probably that will compile your code so that it runs

00:30:46.700 --> 00:30:47.160
<v Sjors Provoost>on Windows.

00:30:47.880 --> 00:30:53.620
<v Aaron van Wirdum>Right. And there was a bug in that separate piece of software, in the

00:30:53.620 --> 00:30:57.140
<v Aaron van Wirdum>compiler, and therefore a bug pops up in Bitcoin Core.

00:30:57.460 --> 00:31:01.900
<v Sjors Provoost>Yeah, but only in Windows and only in that specific place. So it was very lucky

00:31:01.900 --> 00:31:05.760
<v Sjors Provoost>that people even ran into it. I mean, that specific bug wasn't the end of the

00:31:05.760 --> 00:31:09.820
<v Sjors Provoost>world. It's very annoying. But, you know, if there's a bug in a compiler that can

00:31:09.820 --> 00:31:14.360
<v Sjors Provoost>cause things to crash... You don't want to think about what other things that bug

00:31:14.360 --> 00:31:16.520
<v Sjors Provoost>could cause. So it's better to just deal with it.

00:31:16.860 --> 00:31:20.140
<v Aaron van Wirdum>Right. We've also made an episode about this, Sjors. Which episode was that?

00:31:20.320 --> 00:31:24.740
<v Sjors Provoost>The episode about Guix, basically, where we talked about dependencies and the

00:31:24.740 --> 00:31:25.620
<v Sjors Provoost>dependency circus.

00:31:25.960 --> 00:31:30.280
<v Aaron van Wirdum>Right. So here we have a concrete example of essentially a dependency of a bug

00:31:30.280 --> 00:31:34.680
<v Aaron van Wirdum>and therefore causing problems in Bitcoin Core. So how was this solved then? Is

00:31:34.680 --> 00:31:35.120
<v Aaron van Wirdum>this solved?

00:31:35.420 --> 00:31:40.570
<v Sjors Provoost>Yeah, I believe it's solved. So I think there was a... So there's two things

00:31:40.570 --> 00:31:44.510
<v Sjors Provoost>usually that happen at the same time. One is once you figure out what it is, you

00:31:44.510 --> 00:31:48.910
<v Sjors Provoost>go to the developers of this dependency project, so the compiler people probably,

00:31:49.150 --> 00:31:53.390
<v Sjors Provoost>and you tell them this is broken and here's how you can fix it. And then they

00:31:53.390 --> 00:31:56.850
<v Sjors Provoost>will put that into their normal flow and eventually they'll release an update

00:31:56.850 --> 00:31:59.990
<v Sjors Provoost>where it's fixed. But you may not want to wait for that. So there's something

00:31:59.990 --> 00:32:05.250
<v Sjors Provoost>called patches where in Bitcoin Core there's a bunch of these small snippets of

00:32:05.250 --> 00:32:09.270
<v Sjors Provoost>code that before Bitcoin Core is compiled, it first patches whatever needs to be

00:32:09.270 --> 00:32:13.930
<v Sjors Provoost>patched and then it compiles. So basically Bitcoin Core creates a little patch

00:32:13.930 --> 00:32:16.410
<v Sjors Provoost>that fixes the compiler before it builds Bitcoin Core.

00:32:18.300 --> 00:32:21.080
<v Aaron van Wirdum>Who creates these patches? Bitcoin Core developers, actually.

00:32:21.560 --> 00:32:24.600
<v Sjors Provoost>Whoever fixes the original issue, right? So it could be a Bitcoin Core developer

00:32:24.600 --> 00:32:27.980
<v Sjors Provoost>that fixes the issue for the compiler people. It could be the compiler people

00:32:27.980 --> 00:32:32.900
<v Sjors Provoost>that fix the issue themselves, but they haven't published the fix yet. They

00:32:32.900 --> 00:32:36.780
<v Sjors Provoost>haven't published a new binary for the fix yet. So then you would just copy-paste

00:32:36.780 --> 00:32:38.920
<v Sjors Provoost>their fix. It doesn't really matter who does it.

00:32:39.720 --> 00:32:43.420
<v Aaron van Wirdum>Right. But in this case, do you know who created the patch by any chance?

00:32:43.660 --> 00:32:45.640
<v Sjors Provoost>Probably fanquake, but I'm not sure.

00:32:45.900 --> 00:32:51.900
<v Aaron van Wirdum>Right. So someone created this patch, fixed the upstream problem, or is

00:32:51.900 --> 00:32:54.530
<v Aaron van Wirdum>it downstream? Is it upstream or downstream?

00:32:55.480 --> 00:32:57.580
<v Sjors Provoost>I think it's upstream. Yeah.

00:32:57.680 --> 00:32:58.880
<v Aaron van Wirdum>I would say upstream, right?

00:32:58.960 --> 00:32:59.720
<v Sjors Provoost>Yeah, I would say upstream.

00:32:59.920 --> 00:33:05.040
<v Aaron van Wirdum>Yeah, it has to be upstream. So someone fixed the upstream problem. And now

00:33:05.040 --> 00:33:09.120
<v Aaron van Wirdum>Bitcoin Core should be compiled without the bug. So that's release candidate 5.

00:33:09.380 --> 00:33:09.600
<v Sjors Provoost>Exactly.

00:33:09.980 --> 00:33:12.680
<v Aaron van Wirdum>Well, we're testing that now, I guess, while we're recording this podcast.

00:33:12.800 --> 00:33:15.480
<v Sjors Provoost>Yeah. And then hopefully nothing else is broken and then it can be released.

00:33:17.260 --> 00:33:20.320
<v Aaron van Wirdum>Great. Where do people find this software if they want to download it?

00:33:20.580 --> 00:33:25.120
<v Sjors Provoost>I think if they want to test a release candidate, they should go to the probably

00:33:25.120 --> 00:33:29.760
<v Sjors Provoost>the Bitcoin developer email list where there's an announcement that says, hey,

00:33:29.820 --> 00:33:33.080
<v Sjors Provoost>you can download the release candidate here. If you just want to wait for the

00:33:33.080 --> 00:33:35.820
<v Sjors Provoost>real thing, it'll show up on Bitcoincore.org eventually.

00:33:37.200 --> 00:33:38.740
<v Aaron van Wirdum>All right, great. I think that covers it, Sjors.

00:33:39.120 --> 00:33:42.440
<v Sjors Provoost>Cool. Well, thank you for listening to Bitcoin Explained.

