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

00:00:20.400 --> 00:00:22.540
<v Aaron van Wirdum>Live from Utrecht, this is Bitcoin

00:00:22.540 --> 00:00:23.840
<v Sjors Provoost>Explained.

00:00:24.280 --> 00:00:24.900
<v Aaron van Wirdum>Hello, Sjors.

00:00:25.460 --> 00:00:25.700
<v Sjors Provoost>What's up?

00:00:25.840 --> 00:00:26.560
<v Aaron van Wirdum>Welcome back.

00:00:26.920 --> 00:00:27.300
<v Sjors Provoost>Thank you.

00:00:27.960 --> 00:00:30.800
<v Aaron van Wirdum>You've been back for... Do you even live in this country still?

00:00:30.980 --> 00:00:32.280
<v Sjors Provoost>I certainly do, yes.

00:00:32.360 --> 00:00:33.620
<v Aaron van Wirdum>You were gone for like two months?

00:00:33.800 --> 00:00:35.080
<v Sjors Provoost>No, one month.

00:00:36.440 --> 00:00:39.740
<v Aaron van Wirdum>One month, a couple of conferences. Where did you go?

00:00:39.880 --> 00:00:44.460
<v Sjors Provoost>Too many conferences, in fact. Bitcoin Indonesia, Nostrasia in Tokyo.

00:00:44.940 --> 00:00:48.200
<v Aaron van Wirdum>Well, but the thing is, before that, you were in the States for a while, you were

00:00:48.200 --> 00:00:48.640
<v Aaron van Wirdum>in Portugal.

00:00:49.180 --> 00:00:51.080
<v Sjors Provoost>I was, but I was home for a few weeks in between.

00:00:51.620 --> 00:00:54.420
<v Aaron van Wirdum>All right. Well, you were gone for so long that there's a new Bitcoin Core

00:00:54.420 --> 00:00:54.840
<v Aaron van Wirdum>release.

00:00:55.440 --> 00:00:56.060
<v Sjors Provoost>That's right.

00:00:56.300 --> 00:01:00.740
<v Aaron van Wirdum>Bitcoin Core 26, but... Before we get into, so that's what this episode is going

00:01:00.740 --> 00:01:03.600
<v Aaron van Wirdum>to be about. Sjors, we're going to discuss Bitcoin Core 26.

00:01:03.900 --> 00:01:04.160
<v Sjors Provoost>Cool.

00:01:04.420 --> 00:01:08.680
<v Aaron van Wirdum>But there's been some recent developments that you suggest that we briefly touch

00:01:08.680 --> 00:01:09.820
<v Aaron van Wirdum>on before we get there.

00:01:10.120 --> 00:01:15.880
<v Sjors Provoost>Yeah, I think so. So remember, dear listeners, if you listen to episode 37

00:01:15.880 --> 00:01:21.000
<v Sjors Provoost>back in 2021, we talked about MARA Pool, which at the time was making blocks that

00:01:21.000 --> 00:01:26.700
<v Sjors Provoost>they said were OFAC compliant. As far as we know, they did not actually do any

00:01:26.700 --> 00:01:32.420
<v Sjors Provoost>filtering. But this triggered a developer, which we will call

00:01:32.420 --> 00:01:38.260
<v Sjors Provoost>0xB10C, to

00:01:38.840 --> 00:01:44.800
<v Sjors Provoost>write a tool that monitors the blockchain for said censorship, just in case

00:01:44.800 --> 00:01:45.660
<v Sjors Provoost>that would ever happen.

00:01:45.900 --> 00:01:51.860
<v Aaron van Wirdum>Yeah, so just to reiterate what this all means. There is an OFAC list, and this

00:01:51.860 --> 00:01:57.420
<v Aaron van Wirdum>means there are entities on there that you're not allowed to transact with, and

00:01:57.420 --> 00:02:02.200
<v Aaron van Wirdum>that's the US government sanctioned list. Is that the right way to think about it?

00:02:02.360 --> 00:02:02.760
<v Sjors Provoost>Yes, correct.

00:02:03.020 --> 00:02:06.840
<v Aaron van Wirdum>So these would include... people that the US government does not like,

00:02:07.060 --> 00:02:07.780
<v Aaron van Wirdum>essentially.

00:02:08.200 --> 00:02:11.000
<v Sjors Provoost>Yes, these are only people that the US government does not like.

00:02:11.340 --> 00:02:14.460
<v Aaron van Wirdum>Right, and there are Bitcoin addresses on this list?

00:02:14.520 --> 00:02:17.580
<v Sjors Provoost>Yeah, so I think the general idea is that they say, hey, this guy and this guy,

00:02:17.680 --> 00:02:20.700
<v Sjors Provoost>you should not do business with them, and this is how you recognize them, and

00:02:20.700 --> 00:02:25.040
<v Sjors Provoost>they'll spell out their name in like five different ways, and give maybe some

00:02:25.040 --> 00:02:29.560
<v Sjors Provoost>known addresses, and they might also give some known Bitcoin addresses that are

00:02:29.560 --> 00:02:30.560
<v Sjors Provoost>associated with this person.

00:02:30.990 --> 00:02:33.850
<v Aaron van Wirdum>Right, so there are Bitcoin addresses on this list, and if you want to send

00:02:33.850 --> 00:02:39.670
<v Aaron van Wirdum>Bitcoin to or from these addresses, then, so what Marathon Pool

00:02:39.670 --> 00:02:44.510
<v Aaron van Wirdum>was doing was they would essentially filter these transactions, not include these

00:02:44.510 --> 00:02:48.810
<v Aaron van Wirdum>transactions into a block. That's how they would comply with this list, right?

00:02:49.070 --> 00:02:52.230
<v Sjors Provoost>Yeah, but they didn't actually do that. I think they were thinking about doing

00:02:52.230 --> 00:02:56.290
<v Sjors Provoost>that. And they put some [unclear] message in the block. But we explained that

00:02:56.290 --> 00:02:59.470
<v Sjors Provoost>back in that episode, because as far as I know, they didn't actually do any

00:02:59.470 --> 00:03:03.950
<v Sjors Provoost>filtering, but it caused quite a lot of consternations and they backed out of

00:03:03.950 --> 00:03:07.730
<v Sjors Provoost>that idea. I think they even replaced their CEO, though that may have been

00:03:07.730 --> 00:03:08.590
<v Sjors Provoost>completely unrelated.

00:03:10.490 --> 00:03:14.530
<v Sjors Provoost>But anyway, it was enough motivation for him to write this tool. And what this

00:03:14.530 --> 00:03:19.690
<v Sjors Provoost>tool does is it basically runs a Bitcoin Core full node and a Bitcoin Core full

00:03:19.690 --> 00:03:25.200
<v Sjors Provoost>node will propose a block. Basically, it just every 10 seconds creates what it

00:03:25.200 --> 00:03:27.620
<v Sjors Provoost>thinks would be a correct block. It doesn't do the proof of work. It just

00:03:27.620 --> 00:03:32.350
<v Sjors Provoost>constructs the block. And then when a real block appears, it compares it. It

00:03:32.350 --> 00:03:35.410
<v Sjors Provoost>looks at which transactions are missing that were expected to be in the block and

00:03:35.410 --> 00:03:41.290
<v Sjors Provoost>which transactions are not missing. And then for the transactions that are

00:03:41.290 --> 00:03:44.590
<v Sjors Provoost>missing, it would run it against a bunch of heuristics of why it might be

00:03:44.590 --> 00:03:49.680
<v Sjors Provoost>missing. Usually it's completely innocent. So for example, a block transaction

00:03:49.680 --> 00:03:55.590
<v Sjors Provoost>might be very new. Maybe your node has heard about it one second ago. Then

00:03:55.590 --> 00:03:58.670
<v Sjors Provoost>it's very likely that other nodes have not heard about it yet. So it's not

00:03:58.670 --> 00:04:03.090
<v Sjors Provoost>surprising that it's in a block, that it's not in a block. Something else that

00:04:03.090 --> 00:04:08.030
<v Sjors Provoost>tends to happen, especially these days, is that miners will have an accelerator

00:04:08.030 --> 00:04:12.130
<v Sjors Provoost>service where they will prioritize transactions that... If you look at their

00:04:12.130 --> 00:04:15.870
<v Sjors Provoost>Bitcoin fees, they should not be in the block, but they are in the block because

00:04:15.870 --> 00:04:19.890
<v Sjors Provoost>they've paid through credit card or some other way to be included in the block.

00:04:20.450 --> 00:04:24.570
<v Sjors Provoost>And so basically some of the tools automatically filter some of these things and

00:04:24.570 --> 00:04:29.430
<v Sjors Provoost>other times you basically wrote a blog post about it, doing it manually, just

00:04:29.430 --> 00:04:31.010
<v Sjors Provoost>checking out what's going on here.

00:04:31.900 --> 00:04:34.800
<v Aaron van Wirdum>Okay, so what is going on here? Why are we discussing this?

00:04:34.980 --> 00:04:39.140
<v Sjors Provoost>Well, what seems to be going on here is that there are four transactions by

00:04:39.140 --> 00:04:39.860
<v Sjors Provoost>F2Pool.

00:04:41.130 --> 00:04:41.610
<v Sjors Provoost>which...

00:04:41.610 --> 00:04:43.030
<v Aaron van Wirdum>Transactions by F2Pool?

00:04:43.150 --> 00:04:45.030
<v Sjors Provoost>Well, transactions not by F2Pool.

00:04:45.610 --> 00:04:48.030
<v Aaron van Wirdum>Transactions not included in a block by F2Pool.

00:04:48.110 --> 00:04:48.510
<v Sjors Provoost>Exactly.

00:04:48.750 --> 00:04:48.850
<v Aaron van Wirdum>Right.

00:04:49.170 --> 00:04:53.610
<v Sjors Provoost>Four of them. And if you look at each four of them, I believe two or three of

00:04:53.610 --> 00:04:57.510
<v Sjors Provoost>those, there's not a good explanation of why they're not in a block. Could still

00:04:57.510 --> 00:05:02.110
<v Sjors Provoost>be innocuous, but they're not recent transactions.

00:05:03.250 --> 00:05:08.910
<v Sjors Provoost>They're not pushed out because other transactions were prioritized. etc. And then

00:05:08.910 --> 00:05:12.530
<v Sjors Provoost>the explanation that will remain is that they were filtered because they were on

00:05:12.530 --> 00:05:12.950
<v Sjors Provoost>that list.

00:05:13.070 --> 00:05:14.110
<v Aaron van Wirdum>So they are on that list.

00:05:14.270 --> 00:05:16.930
<v Sjors Provoost>They definitely are on that list. Yeah, that's not the problem.

00:05:17.310 --> 00:05:19.830
<v Aaron van Wirdum>Okay, got it. So censorship is upon us.

00:05:20.500 --> 00:05:24.980
<v Sjors Provoost>Well, yes, but we didn't know for sure, I guess. We could just do the analysis,

00:05:25.060 --> 00:05:28.860
<v Sjors Provoost>but then there was a tweet by,

00:05:30.920 --> 00:05:36.460
<v Sjors Provoost>I guess, the person in control of F2Pool. [unclear]? Yes,

00:05:36.460 --> 00:05:41.880
<v Sjors Provoost>Who says, uh will disable the TX filtering patch for now until the community

00:05:41.880 --> 00:05:44.400
<v Sjors Provoost>reaches a more comprehensive consensus on this topic.

00:05:44.400 --> 00:05:50.160
<v Aaron van Wirdum>So, basically there's a confirmation that he was in fact filtering out OFAC

00:05:51.440 --> 00:05:54.440
<v Aaron van Wirdum>transactions in breach of the OFAC list.

00:05:54.440 --> 00:05:58.820
<v Sjors Provoost>Yes, or at least some of them because it's not clear if he was filtering all of

00:05:58.820 --> 00:06:00.440
<v Sjors Provoost>them… um

00:06:01.220 --> 00:06:04.120
<v Aaron van Wirdum>But where does this patch even come from? Like, is this a patch?

00:06:04.220 --> 00:06:05.020
<v Sjors Provoost>[unclear].

00:06:04.300 --> 00:06:06.540
<v Aaron van Wirdum>Can I download this patch? Okay.

00:06:06.780 --> 00:06:10.900
<v Sjors Provoost>No, you'd have to write it yourself. You'd have to do something like, if this

00:06:10.900 --> 00:06:12.280
<v Sjors Provoost>transaction arrives...

00:06:12.280 --> 00:06:13.800
<v Aaron van Wirdum>Bitcoin Core does not offer this patch?

00:06:14.480 --> 00:06:18.660
<v Sjors Provoost>No, but I guess you can write a patch that keeps things from going into your

00:06:18.660 --> 00:06:21.800
<v Sjors Provoost>mempool. I don't know if we have a way to get things out of your mempool once

00:06:21.800 --> 00:06:22.220
<v Sjors Provoost>it's in there.

00:06:24.080 --> 00:06:28.640
<v Aaron van Wirdum>Anyways, so Wang Chun F2Pool was using a patch.

00:06:30.340 --> 00:06:34.280
<v Aaron van Wirdum>Maybe self-written maybe not to filter these blocks out, no, these transactions

00:06:34.280 --> 00:06:35.400
<v Aaron van Wirdum>out of blocks.

00:06:35.400 --> 00:06:35.860
<v Sjors Provoost>Yes.

00:06:35.860 --> 00:06:39.480
<v Aaron van Wirdum>To comply with the OFAC list. And now he's...

00:06:39.480 --> 00:06:42.280
<v Sjors Provoost>Well, we don't know if it was to comply with the OFAC list, but the transactions

00:06:42.280 --> 00:06:43.560
<v Sjors Provoost>were on the...

00:06:41.800 --> 00:06:45.080
<v Aaron van Wirdum>[unclear] hedging everything so much? It's pretty obvious at this point, right?

00:06:45.100 --> 00:06:46.080
<v Aaron van Wirdum>You did the analysis.

00:06:46.160 --> 00:06:48.720
<v Sjors Provoost>No, because there are some unconfirmed tweets that suggest that...

00:06:48.720 --> 00:06:49.800
<v Aaron van Wirdum>And he confirms it on Twitter.

00:06:50.120 --> 00:06:53.200
<v Sjors Provoost>Yeah, but there are some other unconfirmed screenshots of tweets that suggest

00:06:53.200 --> 00:06:57.000
<v Sjors Provoost>that motive may have been slightly different. But in any case, we know that these

00:06:57.000 --> 00:06:58.440
<v Sjors Provoost>transactions were deliberately filtered.

00:06:58.680 --> 00:07:00.620
<v Aaron van Wirdum>But what's the alternative motivation?

00:07:00.880 --> 00:07:03.120
<v Sjors Provoost>Well, it might be that he just doesn't like those particular people.

00:07:03.600 --> 00:07:06.600
<v Aaron van Wirdum>He just doesn't like the same people that the US government doesn't like.

00:07:06.760 --> 00:07:06.960
<v Sjors Provoost>Yeah, exactly.

00:07:07.180 --> 00:07:09.400
<v Aaron van Wirdum>Okay, but then still he's filtering transactions.

00:07:09.660 --> 00:07:09.760
<v Sjors Provoost>Yes.

00:07:09.760 --> 00:07:12.180
<v Aaron van Wirdum>Like there's still some form of censorship happening, right?

00:07:12.200 --> 00:07:15.120
<v Sjors Provoost>Exactly. But there could be two different reasons for censorship, right? One is

00:07:15.120 --> 00:07:18.240
<v Sjors Provoost>you're afraid of some government, like the US government, making your life

00:07:18.240 --> 00:07:22.140
<v Sjors Provoost>difficult. And the other could be, well, you think the US government is actually right.

00:07:22.340 --> 00:07:22.620
<v Aaron van Wirdum>Okay.

00:07:22.760 --> 00:07:25.940
<v Sjors Provoost>But we have no idea which of those two is the true motivation. I'm just saying...

00:07:25.860 --> 00:07:26.680
<v Sjors Provoost>Either is possible.

00:07:26.820 --> 00:07:26.940
<v Aaron van Wirdum>Sure.

00:07:27.180 --> 00:07:28.060
<v Sjors Provoost>Either is problematic.

00:07:28.400 --> 00:07:31.120
<v Aaron van Wirdum>Are we talking about this because we should be worried about this? Is your

00:07:31.120 --> 00:07:32.660
<v Aaron van Wirdum>opinion that we should be worried about this?

00:07:32.780 --> 00:07:37.180
<v Sjors Provoost>I think we talked about that in the earlier episode, that I am worried about this

00:07:37.180 --> 00:07:40.480
<v Sjors Provoost>in the long run. Now, in the short run, it's absolutely not a problem because

00:07:40.480 --> 00:07:43.800
<v Sjors Provoost>these transactions were just mined by another miner, the next block.

00:07:44.480 --> 00:07:44.920
<v Aaron van Wirdum>Yeah.

00:07:45.240 --> 00:07:46.580
<v Sjors Provoost>Ironically, by a US miner.

00:07:46.920 --> 00:07:50.940
<v Aaron van Wirdum>Yeah. Maybe it's a bit much to go over this whole thing again. Again, we

00:07:50.940 --> 00:07:53.020
<v Aaron van Wirdum>discussed it in episode 37, you said?

00:07:53.420 --> 00:07:53.880
<v Sjors Provoost>Yes.

00:07:53.880 --> 00:07:58.660
<v Aaron van Wirdum>Yeah so that's what we discuss I guess in depth how worried we are about it.

00:07:58.660 --> 00:08:04.660
<v Aaron van Wirdum>Anyways, um short term. So now it's turned off. I guess the

00:08:04.660 --> 00:08:07.900
<v Aaron van Wirdum>other thing maybe worth mentioning is so this is something that…

00:08:07.900 --> 00:08:12.000
<v Sjors Provoost>So the fact that we were able to detect this at all is because you know of all

00:08:12.000 --> 00:08:16.400
<v Sjors Provoost>this tooling it's it's not that obvious normally because transactions you know

00:08:16.400 --> 00:08:20.920
<v Sjors Provoost>sometimes they appear in a block sometimes they don't. So that's pretty cool that

00:08:20.920 --> 00:08:22.380
<v Sjors Provoost>we have the tech to detect it.

00:08:22.540 --> 00:08:27.200
<v Aaron van Wirdum>The impact is pretty minor. Another relevant episode perhaps to listen to in this

00:08:27.200 --> 00:08:32.420
<v Aaron van Wirdum>context is the episode we did on Stratum V2 because Stratum V2 is kind of a

00:08:32.420 --> 00:08:35.620
<v Aaron van Wirdum>solution for this problem if we consider it a problem, right?

00:08:36.050 --> 00:08:40.010
<v Sjors Provoost>Yeah, what Stratum V2 does that's relevant here is that it delegates the

00:08:40.010 --> 00:08:43.890
<v Sjors Provoost>responsibility of putting things into a block, not to the mining pool, which

00:08:43.890 --> 00:08:48.390
<v Sjors Provoost>tends to be quite large. You know, there's two pools that are 51% roughly of all

00:08:48.390 --> 00:08:54.270
<v Sjors Provoost>the hash power, but it delegates it to individual miners. So, and that's far more of them.

00:08:56.410 --> 00:09:01.930
<v Aaron van Wirdum>Yeah, so we discussed that in episode 80. Okay, this was a long intro. I guess

00:09:01.930 --> 00:09:07.720
<v Aaron van Wirdum>the reason this is worth bringing up is because, I mean, it seems... This is kind

00:09:07.720 --> 00:09:13.520
<v Aaron van Wirdum>of the thing that Bitcoin developers and journalists maybe as well sometimes have

00:09:13.520 --> 00:09:17.640
<v Aaron van Wirdum>been like talking about and warning about for many years. And this is sort of the

00:09:17.640 --> 00:09:21.940
<v Aaron van Wirdum>first time it's actually happening. So there's actually a reason now.

00:09:22.080 --> 00:09:27.250
<v Sjors Provoost>If you go through, you know, this, if you just assume a slippery slope, which is

00:09:27.250 --> 00:09:30.470
<v Sjors Provoost>always a problematic type of argument. But if you do, then the ultimate outcome

00:09:30.470 --> 00:09:33.850
<v Sjors Provoost>of this is you're back to PayPal because all transactions have to be KYC'd and

00:09:33.850 --> 00:09:37.350
<v Sjors Provoost>permissioned before they go into a block. Now, we're nowhere near that. But does

00:09:37.350 --> 00:09:38.590
<v Sjors Provoost>this make sense to worry about this?

00:09:39.270 --> 00:09:43.370
<v Aaron van Wirdum>Right. It is sort of a first step in that direction. And it's interesting to see

00:09:43.370 --> 00:09:47.610
<v Aaron van Wirdum>how things will play out, I guess. So the first step we now saw is that Wang Chun

00:09:47.710 --> 00:09:53.430
<v Aaron van Wirdum>disabled his patch. But yeah, it's an event

00:09:53.430 --> 00:09:58.110
<v Aaron van Wirdum>in that sense. Like it's a... beginning of something that could go in a very

00:09:58.110 --> 00:10:03.580
<v Aaron van Wirdum>wrong direction even though it's only a very small step right now right is this

00:10:03.580 --> 00:10:08.180
<v Aaron van Wirdum>are we done with this This was this was the intro to our Bitcoin Core 27— Wait,

00:10:08.180 --> 00:10:12.680
<v Aaron van Wirdum>Where are we? 26 episode. Okay, let's talk about Bitcoin Core 26 then.

00:10:12.710 --> 00:10:13.830
<v Sjors Provoost>Yes.

00:10:14.750 --> 00:10:19.550
<v Aaron van Wirdum>First of all, I think everyone knows this by now. Actually, I'm not even going to

00:10:19.550 --> 00:10:23.090
<v Aaron van Wirdum>ask you about this anymore. I'll just preface this. So the way it works, Bitcoin

00:10:23.090 --> 00:10:27.870
<v Aaron van Wirdum>Core releases a new version of the software every six months. And that means that

00:10:27.870 --> 00:10:33.310
<v Aaron van Wirdum>every new feature that was done within these six months is in Bitcoin Core.

00:10:33.650 --> 00:10:39.170
<v Aaron van Wirdum>And that means that's a new release. There is not a new release because there is

00:10:39.170 --> 00:10:41.970
<v Aaron van Wirdum>a new feature. There's just a new release and whatever is new is new.

00:10:42.510 --> 00:10:46.590
<v Sjors Provoost>That's right. Yes, exactly. So yeah, so there are no like things that must be

00:10:46.590 --> 00:10:49.530
<v Sjors Provoost>finished before the deadline uh whatever is ready is ready.

00:10:49.530 --> 00:10:55.250
<v Aaron van Wirdum>Right, so the last release was about half a year ago apparently. Right at this

00:10:55.250 --> 00:10:57.730
<v Aaron van Wirdum>point where are we in the release process?

00:10:57.730 --> 00:11:02.070
<v Sjors Provoost>There have been two release candidates as far as I know. The second candidate

00:11:02.070 --> 00:11:05.870
<v Sjors Provoost>does not have many problems so maybe it's the last one. Maybe there'll be another

00:11:05.870 --> 00:11:07.090
<v Sjors Provoost>one… um

00:11:07.090 --> 00:11:12.080
<v Aaron van Wirdum>Right, so potentially the new Bitcoin Core release could be announced released

00:11:12.080 --> 00:11:12.860
<v Aaron van Wirdum>any day now.

00:11:12.860 --> 00:11:13.680
<v Sjors Provoost>Exactly.

00:11:13.680 --> 00:11:14.200
<v Aaron van Wirdum>Okay.

00:11:14.200 --> 00:11:19.560
<v Sjors Provoost>Or maybe a few weeks. Um, what's interesting perhaps is that there is a testing

00:11:19.560 --> 00:11:23.380
<v Sjors Provoost>guide now every release there is always a testing guide but this one apparently

00:11:23.380 --> 00:11:27.620
<v Sjors Provoost>has had some extra love and attention so if you've ever wanted to test a release

00:11:27.620 --> 00:11:32.720
<v Sjors Provoost>you should look for the uh I think if you google Bitcoin Core 26 release testing

00:11:32.720 --> 00:11:35.180
<v Sjors Provoost>guide you'll find it and hopefully it'll be in our show notes.

00:11:35.580 --> 00:11:38.280
<v Aaron van Wirdum>Who is this for? This is for developers, I would assume.

00:11:38.460 --> 00:11:42.440
<v Sjors Provoost>I would say a little bit lower barrier to entry than being a developer. Anybody

00:11:42.440 --> 00:11:46.140
<v Sjors Provoost>who can download a piece of software and carefully follow up instructions.

00:11:46.460 --> 00:11:47.580
<v Aaron van Wirdum>So what are you testing?

00:11:47.880 --> 00:11:52.060
<v Sjors Provoost>You're testing things that have changed. So there's all the features that we're

00:11:52.060 --> 00:11:54.780
<v Sjors Provoost>talking about, but there's also lots of smaller changes and the testing guide

00:11:54.780 --> 00:11:58.560
<v Sjors Provoost>will basically take you through some of the changes and how you might go about

00:11:58.560 --> 00:12:02.550
<v Sjors Provoost>testing them. Of course, you should also test things in a way that's not in the guide.

00:12:02.550 --> 00:12:07.170
<v Aaron van Wirdum>How would you go about testing them? Like, what what can you give an example of

00:12:07.170 --> 00:12:08.370
<v Aaron van Wirdum>what we're talking about here?

00:12:08.370 --> 00:12:12.170
<v Sjors Provoost>Yeah well I guess we can do that when we cover the the actual changes.

00:12:12.170 --> 00:12:14.810
<v Aaron van Wirdum>Okay, sure. Do you want to get into the actual changes?

00:12:14.810 --> 00:12:15.590
<v Sjors Provoost>Sure.

00:12:15.590 --> 00:12:20.850
<v Aaron van Wirdum>Okay, so the actual change so what we did. Well, mostly Sjors to be honest, is

00:12:20.850 --> 00:12:25.130
<v Aaron van Wirdum>you picked out a couple of features in this new release that are

00:12:25.550 --> 00:12:27.110
<v Aaron van Wirdum>noteworthy

00:12:29.690 --> 00:12:34.410
<v Aaron van Wirdum>Even more like you picked out the most noteworthy of the most noteworthy changes

00:12:34.410 --> 00:12:35.430
<v Aaron van Wirdum>right?

00:12:35.430 --> 00:12:37.750
<v Sjors Provoost>Uh I just picked the ones that I thought were cool.

00:12:37.750 --> 00:12:42.090
<v Aaron van Wirdum>Okay, so the first one oh yeah and we mentioned some of them in our previous

00:12:42.090 --> 00:12:45.590
<v Aaron van Wirdum>episode actually because in the previous episode which I guess by now is two

00:12:45.590 --> 00:12:50.690
<v Aaron van Wirdum>months ago we did mention some new inclusions in Bitcoin Core or you did already

00:12:50.690 --> 00:12:56.570
<v Aaron van Wirdum>so we'll sort of repeat these for whoever missed that episode or just to give a

00:12:56.570 --> 00:13:00.910
<v Aaron van Wirdum>complete picture. So the first one is peer-to-peer transport encryption.

00:13:01.330 --> 00:13:01.910
<v Sjors Provoost>That's right.

00:13:02.450 --> 00:13:05.410
<v Aaron van Wirdum>What's the BIP number for that again? Do you remember? Do you know?

00:13:06.160 --> 00:13:06.480
<v Sjors Provoost>No.

00:13:06.540 --> 00:13:09.120
<v Aaron van Wirdum>It's not BIP-151, right? That one was replaced?

00:13:09.440 --> 00:13:12.940
<v Sjors Provoost>No, it's a new one. It's peer-to-peer encryption. So we did a whole episode on

00:13:12.940 --> 00:13:18.210
<v Sjors Provoost>this, episode 77. That really explains why you want to do this. But the short

00:13:18.210 --> 00:13:22.150
<v Sjors Provoost>version is that nodes will encrypt their traffic between each other. So that

00:13:22.150 --> 00:13:25.990
<v Sjors Provoost>especially internet providers cannot simply just listen to what you're doing.

00:13:27.590 --> 00:13:31.770
<v Sjors Provoost>This is actually very easy to test. It's also something that's not on by default.

00:13:31.930 --> 00:13:36.370
<v Sjors Provoost>But as part of testing you might want to turn that on. So roughly the way you

00:13:36.370 --> 00:13:39.910
<v Sjors Provoost>would test this is you download Bitcoin Core, the new version. You turn this

00:13:39.910 --> 00:13:45.790
<v Sjors Provoost>feature on by changing the configuration setting. And then your friend

00:13:45.790 --> 00:13:51.030
<v Sjors Provoost>also downloads Bitcoin Core, also turns this feature on. And now you try to

00:13:51.030 --> 00:13:54.750
<v Sjors Provoost>connect to them. So in Bitcoin Core normally it automatically finds peers, but

00:13:54.750 --> 00:13:59.910
<v Sjors Provoost>you can manually say, hey, please connect to this IP address. And then you can

00:13:59.910 --> 00:14:04.290
<v Sjors Provoost>actually get something called a session ID. That's probably, it should be in the

00:14:04.290 --> 00:14:08.750
<v Sjors Provoost>instructions. But basically you'll be able to see a number just like with Signal.

00:14:09.220 --> 00:14:12.880
<v Sjors Provoost>A long number. And if you compare that long number with what your friend sees as

00:14:12.880 --> 00:14:17.140
<v Sjors Provoost>a long number, then you know that you are directly connected to them. There's not

00:14:17.140 --> 00:14:21.500
<v Sjors Provoost>a man in the middle. So that's the kind of thing you can test. And it'd be very

00:14:21.500 --> 00:14:23.760
<v Sjors Provoost>worrying if the number was different. That would indicate a bug.

00:14:24.240 --> 00:14:24.680
<v Aaron van Wirdum>Right.

00:14:24.680 --> 00:14:27.060
<v Sjors Provoost>Or somebody spying on you. But probably a bug.

00:14:27.220 --> 00:14:30.840
<v Aaron van Wirdum>Okay, well, let's linger here a little bit because now you spoke about testing

00:14:30.840 --> 00:14:36.220
<v Aaron van Wirdum>and we did discuss it in previous episodes, but still. So right now, Bitcoin Core

00:14:36.220 --> 00:14:36.840
<v Aaron van Wirdum>nodes.

00:14:38.630 --> 00:14:41.870
<v Aaron van Wirdum>They're part of the peer-to-peer network, so they communicate with each other,

00:14:41.990 --> 00:14:46.550
<v Aaron van Wirdum>which specifically means they send transactions and blocks to each other. And

00:14:46.550 --> 00:14:52.250
<v Aaron van Wirdum>right now they do that over an unencrypted channel. It's just plain text. It's

00:14:52.250 --> 00:14:58.110
<v Aaron van Wirdum>just plain information, right? So that means that internet

00:14:58.110 --> 00:15:01.870
<v Aaron van Wirdum>service providers can see exactly which transactions and blocks you're sending.

00:15:02.050 --> 00:15:06.820
<v Aaron van Wirdum>And I guess the main problem is that this would allow ISPs… to sort of see where

00:15:06.820 --> 00:15:08.420
<v Aaron van Wirdum>transactions originate.

00:15:08.420 --> 00:15:12.480
<v Sjors Provoost>Yeah I'd say that's one problem. And the other is it makes censorship easier

00:15:12.480 --> 00:15:15.800
<v Sjors Provoost>because if it's very easy to detect that it's a Bitcoin node it's also very easy

00:15:15.800 --> 00:15:19.840
<v Sjors Provoost>to block it now that's still easy with this encryption in place for other reasons

00:15:19.840 --> 00:15:24.560
<v Sjors Provoost>but having encryption it makes it one step easier to to get around censorship.

00:15:24.840 --> 00:15:26.920
<v Aaron van Wirdum>Okay, that…

00:15:28.200 --> 00:15:32.700
<v Aaron van Wirdum>Yeah that's that's basically it right? That covers this. Okay so this is now in

00:15:32.700 --> 00:15:34.480
<v Aaron van Wirdum>Bitcoin Core but it's optional.

00:15:34.480 --> 00:15:35.140
<v Sjors Provoost>Yes.

00:15:35.140 --> 00:15:35.660
<v Aaron van Wirdum>So you can

00:15:37.330 --> 00:15:41.990
<v Aaron van Wirdum>switch it on and it's a preferential or did you just explain it is the

00:15:41.990 --> 00:15:44.510
<v Aaron van Wirdum>preferential seeking of other nodes that do the same thing?

00:15:44.510 --> 00:15:48.950
<v Sjors Provoost>Yes, no, it's not preferential, but if if it happens to connect to another node

00:15:48.950 --> 00:15:53.440
<v Sjors Provoost>and it knows that it has this feature it will use it. But it's not preferential.

00:15:53.720 --> 00:15:57.900
<v Aaron van Wirdum>Okay, so it still connects to other nodes randomly, but they will first sort of

00:15:57.900 --> 00:15:59.880
<v Aaron van Wirdum>try, hey, are you using encryption?

00:16:00.100 --> 00:16:02.940
<v Sjors Provoost>No, they will only try if they think the other side can use it.

00:16:03.280 --> 00:16:07.920
<v Aaron van Wirdum>Oh, so how would my node think that your node is using encryption?

00:16:08.100 --> 00:16:12.880
<v Sjors Provoost>So we talked about, I think in episode two or three, we talked about how nodes

00:16:12.880 --> 00:16:17.440
<v Sjors Provoost>bootstrap and learn about other nodes. So they learn about nodes by having a list

00:16:17.440 --> 00:16:21.330
<v Sjors Provoost>of IP addresses to connect to. But in addition to those IP addresses, there's

00:16:21.330 --> 00:16:26.810
<v Sjors Provoost>also some metadata of which features these nodes support. So in your long address

00:16:26.810 --> 00:16:29.930
<v Sjors Provoost>book of potential nodes to connect to is information like, is this a prune node

00:16:29.930 --> 00:16:34.630
<v Sjors Provoost>or a full node? Does it have specific bloom filters or whatever filters you want?

00:16:34.890 --> 00:16:40.650
<v Sjors Provoost>And as of now, it also tracks whether the node supports V2 transport. So if

00:16:40.650 --> 00:16:44.780
<v Sjors Provoost>your address book says that this other node supports that new feature, which

00:16:44.780 --> 00:16:49.400
<v Sjors Provoost>could be a lie, but at least that information would be there. Then it'll try that

00:16:49.400 --> 00:16:53.900
<v Sjors Provoost>first. And if it fails, just tries the V1 connection. Now, I guess in the future,

00:16:53.920 --> 00:16:58.560
<v Sjors Provoost>we might turn that around and just always try the V2 and then fall back to V1 if

00:16:58.560 --> 00:16:59.080
<v Sjors Provoost>it doesn't work.

00:16:59.360 --> 00:17:03.200
<v Aaron van Wirdum>Yeah, why wouldn't you just always try it? Just because it's extra data to

00:17:03.200 --> 00:17:06.840
<v Aaron van Wirdum>communicate? Like this extra try? Like, why wouldn't you just by default first

00:17:06.840 --> 00:17:07.680
<v Aaron van Wirdum>try encrypted?

00:17:10.000 --> 00:17:15.550
<v Sjors Provoost>Because if you first try encrypted... and the other side does not support it, the

00:17:15.550 --> 00:17:19.370
<v Sjors Provoost>other side will hang up on you. So you have to connect again, which is not the

00:17:19.370 --> 00:17:22.170
<v Sjors Provoost>end of the world, but right now the majority of the network doesn't support it,

00:17:22.250 --> 00:17:24.750
<v Sjors Provoost>so that means all of your connections would fail and you'd retry.

00:17:25.420 --> 00:17:25.940
<v Aaron van Wirdum>I see.

00:17:26.240 --> 00:17:29.660
<v Sjors Provoost>But I don't know if that's a big enough deal in the long run. So it might be

00:17:29.660 --> 00:17:30.800
<v Sjors Provoost>turned around. Just try it.

00:17:31.240 --> 00:17:35.240
<v Aaron van Wirdum>Yeah, I would assume eventually the goal is that everyone would use this, right?

00:17:35.620 --> 00:17:37.880
<v Aaron van Wirdum>Are there any downsides to using this?

00:17:38.200 --> 00:17:41.800
<v Sjors Provoost>Well, there is now because it's too new. So if something goes wrong, your node

00:17:41.800 --> 00:17:46.820
<v Sjors Provoost>might simply fail to connect or get hung up on by all of its peers and you don't

00:17:46.820 --> 00:17:49.660
<v Sjors Provoost>get the latest blocks, right? So right now it's not safe yet.

00:17:51.280 --> 00:17:55.140
<v Sjors Provoost>But in the long run, I don't think there's any downside. It was designed to not

00:17:55.140 --> 00:17:59.500
<v Sjors Provoost>have downsides, in the sense that it's actually even a little bit faster than the

00:17:59.500 --> 00:18:03.920
<v Sjors Provoost>original protocol. You'd think it'd be slower because it's encrypted, but the

00:18:03.920 --> 00:18:08.120
<v Sjors Provoost>original protocol uses checksums to make sure that the messages are correct, and

00:18:08.120 --> 00:18:12.960
<v Sjors Provoost>those checksums use SHA-256, which is very slow, and the new algorithm uses a

00:18:12.960 --> 00:18:17.480
<v Sjors Provoost>quicker checksum. So it's better in, hopefully in every way, if it's not broken.

00:18:17.720 --> 00:18:21.660
<v Aaron van Wirdum>Right. So how, if I download Bitcoin Core 26, how do I switch this on?

00:18:21.900 --> 00:18:26.960
<v Sjors Provoost>You go into your bitcoin.conf settings file, and then you turn on, I think you

00:18:26.960 --> 00:18:32.260
<v Sjors Provoost>enter v2transport=1. But it'll be in there, either the release notes or the

00:18:32.260 --> 00:18:32.760
<v Sjors Provoost>testing guide.

00:18:33.060 --> 00:18:38.430
<v Aaron van Wirdum>Right. All right, moving on to the next point. AssumeUTXO was

00:18:38.430 --> 00:18:42.550
<v Aaron van Wirdum>implemented for signet, testnet? Not mainnet, right?

00:18:42.770 --> 00:18:43.190
<v Sjors Provoost>That's right.

00:18:43.470 --> 00:18:45.770
<v Aaron van Wirdum>Okay, so what is AssumeUTXO again?

00:18:45.990 --> 00:18:51.990
<v Sjors Provoost>Well, we covered that in episode 14. So that's quite a while ago. It's basically

00:18:51.990 --> 00:18:56.550
<v Sjors Provoost>the short version of it is that instead of starting at the Genesis block when you

00:18:56.550 --> 00:18:59.790
<v Sjors Provoost>start your node and going all the way to the most recent block, which takes a

00:18:59.790 --> 00:19:05.210
<v Sjors Provoost>long time, you start at a snapshot. And you assume that it's valid.

00:19:05.730 --> 00:19:09.230
<v Sjors Provoost>And then you go from the snapshot, which might be a few months ago, to the

00:19:09.230 --> 00:19:13.530
<v Sjors Provoost>present, to the tip. And then once you've done that, you start from the Genesis

00:19:13.530 --> 00:19:16.670
<v Sjors Provoost>block. And in the background, you check all the blocks. And you make sure that

00:19:16.670 --> 00:19:20.390
<v Sjors Provoost>you indeed arrive at this snapshot that you assumed initially.

00:19:20.810 --> 00:19:25.050
<v Aaron van Wirdum>So the benefit here would be that you can start using the Bitcoin Core node

00:19:25.050 --> 00:19:26.710
<v Aaron van Wirdum>before fully syncing?

00:19:27.130 --> 00:19:32.850
<v Sjors Provoost>Yes. You would basically sync only the last 10% of the blockchain. And you would

00:19:32.850 --> 00:19:37.760
<v Sjors Provoost>be immediately able to use a wallet, receive coins, send coins. But there's still

00:19:37.760 --> 00:19:42.700
<v Sjors Provoost>some chance that your starting point was wrong. And what could go wrong then is,

00:19:42.880 --> 00:19:46.680
<v Sjors Provoost>let's say there's some malicious developers and they just create fake coins.

00:19:47.560 --> 00:19:52.580
<v Sjors Provoost>Well, now you think you've received coins, but these coins don't actually exist.

00:19:53.010 --> 00:19:55.990
<v Sjors Provoost>Now that's a really, really expensive attack, right? Because somebody still has

00:19:55.990 --> 00:20:00.250
<v Sjors Provoost>to make a block with enough proof of work. That is wrong according to all the

00:20:00.250 --> 00:20:05.010
<v Sjors Provoost>other nodes, but only correct according to you or the list of victims that they

00:20:05.010 --> 00:20:09.350
<v Sjors Provoost>have. So I don't think that attack is super realistic, but we still want to...

00:20:09.350 --> 00:20:12.550
<v Aaron van Wirdum>Plus the developers need to be corrupt, obviously.

00:20:12.950 --> 00:20:17.410
<v Sjors Provoost>Yeah, so this depends on the distribution mechanism. Right now the idea is that

00:20:17.410 --> 00:20:21.570
<v Sjors Provoost>the correct block is hard-coded into the source code, so you would indeed have to

00:20:21.570 --> 00:20:27.170
<v Sjors Provoost>compromise the developers. You could, we could still change that approach. I

00:20:27.170 --> 00:20:30.390
<v Sjors Provoost>don't know if it'll be changed. But the approach could be that, no, you can just

00:20:30.390 --> 00:20:35.290
<v Sjors Provoost>use any block and the developers do not bless any of the blocks. Because it's,

00:20:35.490 --> 00:20:39.290
<v Sjors Provoost>the downside of the developers blessing the blocks is that, well, now if you

00:20:39.290 --> 00:20:40.710
<v Sjors Provoost>compromise the developers, you're screwed.

00:20:41.310 --> 00:20:43.450
<v Aaron van Wirdum>How would you use any block?

00:20:44.110 --> 00:20:48.110
<v Sjors Provoost>You basically, Bitcoin Core wouldn't care. Like you would just give it a block,

00:20:48.230 --> 00:20:51.550
<v Sjors Provoost>say, assume this one is correct. You just download that from somebody on the

00:20:51.550 --> 00:20:55.710
<v Sjors Provoost>internet that you trust. And then you'll find out if it was right or not, but

00:20:55.710 --> 00:20:56.510
<v Sjors Provoost>it'll take a while.

00:20:56.790 --> 00:20:59.750
<v Aaron van Wirdum>Right. I see. And obviously, so...

00:20:59.750 --> 00:21:04.390
<v Sjors Provoost>So that means there's no centralized group of people to pressure or to corrupt.

00:21:04.650 --> 00:21:04.930
<v Aaron van Wirdum>Yep.

00:21:05.070 --> 00:21:08.730
<v Sjors Provoost>But the downside is you will get scammed left and right because everybody can

00:21:08.730 --> 00:21:10.390
<v Sjors Provoost>just make their own fake one.

00:21:10.710 --> 00:21:14.930
<v Aaron van Wirdum>Yeah. okay interesting so wait which so which version is implemented in Bitcoin

00:21:14.930 --> 00:21:19.590
<v Aaron van Wirdum>Core right now the the blessed one okay the developers have blessed it yeah okay

00:21:19.590 --> 00:21:22.690
<v Aaron van Wirdum>uh so yeah you mentioned

00:21:22.690 --> 00:21:26.770
<v Sjors Provoost>And for testnet and signet obviously that's fine right but it's also not there's

00:21:26.770 --> 00:21:28.290
<v Sjors Provoost>also no theft risk there right?

00:21:28.290 --> 00:21:34.010
<v Aaron van Wirdum>It's only on testnet now and signet which is a version of testnet. um so

00:21:34.010 --> 00:21:38.190
<v Aaron van Wirdum>yeah so you mentioned even if it would be on mainnet the the attack would be

00:21:38.190 --> 00:21:41.410
<v Aaron van Wirdum>expensive because you need to create a fake block and you need to at least in the

00:21:41.410 --> 00:21:45.730
<v Aaron van Wirdum>current version corrupt the developers plus it would only work temporarily

00:21:45.730 --> 00:21:49.610
<v Aaron van Wirdum>because it's all it's kind of a stop gap until you've actually synced from

00:21:50.620 --> 00:21:54.000
<v Sjors Provoost>Yeah, basically once you've synced from the Genesis block, the node would crash.

00:21:54.320 --> 00:21:58.880
<v Aaron van Wirdum>It's kind of a, yeah, right. It's sort of a solution until, in the meantime. And

00:21:58.880 --> 00:22:03.080
<v Aaron van Wirdum>therefore it's obviously also optional. You can just opt to actually wait until

00:22:03.080 --> 00:22:05.860
<v Aaron van Wirdum>it's fully synced before you receive any transaction.

00:22:05.860 --> 00:22:08.100
<v Sjors Provoost>Although in that case, you should just not use the feature.

00:22:08.660 --> 00:22:11.860
<v Aaron van Wirdum>Yes, well, that's what I'm saying. The feature is basically optional.

00:22:12.360 --> 00:22:13.800
<v Sjors Provoost>That's true in general, yes.

00:22:15.060 --> 00:22:19.160
<v Sjors Provoost>So if you wanted to test this, again, you download Bitcoin Core, then you obtain

00:22:19.160 --> 00:22:23.380
<v Sjors Provoost>the signet or the Testnet snapshot. There's some links to torrents, I believe.

00:22:24.350 --> 00:22:27.450
<v Sjors Provoost>And then you just run one command and you'll see it in action.

00:22:28.500 --> 00:22:33.820
<v Aaron van Wirdum>Okay, so that's also new in Bitcoin Core 26. On to the third point.

00:22:34.400 --> 00:22:40.370
<v Aaron van Wirdum>The third hand-picked selection by Sjors is... Network

00:22:40.370 --> 00:22:46.350
<v Aaron van Wirdum>diversity. There's a new upgrade in updated network diversity tools. What's going

00:22:46.350 --> 00:22:46.790
<v Aaron van Wirdum>on, Sjors?

00:22:47.130 --> 00:22:51.470
<v Sjors Provoost>Yeah, so I believe if I understand this feature correctly, and I did not read it

00:22:51.470 --> 00:22:55.610
<v Sjors Provoost>up in detail, it's been a while, but here's the thing. Bitcoin Core will connect

00:22:55.610 --> 00:23:00.870
<v Sjors Provoost>to about eight nodes, will make connections outbound to about 8 nodes.

00:23:01.010 --> 00:23:02.610
<v Aaron van Wirdum>That's the default? 8 is the default?

00:23:02.810 --> 00:23:07.370
<v Sjors Provoost>Yes, it might be 9 now. And then other nodes might connect to you, but if you're

00:23:07.370 --> 00:23:12.250
<v Sjors Provoost>behind a router, etc., then that won't happen. Now those 8 nodes, by default,

00:23:12.350 --> 00:23:18.190
<v Sjors Provoost>would just be on plain internet. IPv4, IPv6. But if you want to, you can

00:23:18.190 --> 00:23:24.010
<v Sjors Provoost>also connect to Tor nodes. If you turn Tor on. Now, if you don't do anything,

00:23:24.270 --> 00:23:29.190
<v Sjors Provoost>you may or may not have a connection to a Tor node. And if you have one and you

00:23:29.190 --> 00:23:33.030
<v Sjors Provoost>lose that connection because they hang up on you or something goes wrong, then

00:23:33.030 --> 00:23:35.750
<v Sjors Provoost>you're just going to connect to a new node and maybe it's a Tor node, maybe not.

00:23:36.030 --> 00:23:41.530
<v Aaron van Wirdum>Wait, if I'm using Bitcoin Core, which I am. But I haven't explicitly

00:23:41.530 --> 00:23:45.550
<v Aaron van Wirdum>made any sort of change to connect through Tor. Can I still connect to other Tor

00:23:45.550 --> 00:23:46.330
<v Aaron van Wirdum>nodes? No, right?

00:23:46.530 --> 00:23:48.170
<v Sjors Provoost>No, you have to turn something on to do that.

00:23:48.270 --> 00:23:49.450
<v Aaron van Wirdum>Okay, got it. Okay, go on.

00:23:49.510 --> 00:23:53.130
<v Sjors Provoost>But once you have turned it on, but you let the Bitcoin Core node automatically

00:23:53.130 --> 00:23:56.910
<v Sjors Provoost>handle what it connects to, you may or may not have a connection to another Tor

00:23:56.910 --> 00:23:59.890
<v Sjors Provoost>node. And if you have a connection to another Tor node and you hang up on that

00:23:59.890 --> 00:24:02.740
<v Sjors Provoost>one, or they hang up on you... maybe you won't have it again.

00:24:03.040 --> 00:24:07.280
<v Aaron van Wirdum>Right, so what you're saying is I'm connected to eight nodes. One of them is a

00:24:07.280 --> 00:24:10.660
<v Aaron van Wirdum>Tor node because I switched the ping on that allows me to connect to Tor nodes.

00:24:10.980 --> 00:24:16.440
<v Aaron van Wirdum>Now this guy's internet, Wi-Fi fails, whatever, I'm disconnected with him. So now

00:24:16.440 --> 00:24:20.400
<v Aaron van Wirdum>I'm going to reconnect randomly to another node, which may or may not be a Tor

00:24:20.400 --> 00:24:23.960
<v Aaron van Wirdum>node. So it's possible that I'm connecting to not a Tor node and now I'm not

00:24:23.960 --> 00:24:25.320
<v Aaron van Wirdum>connecting to any Tor node.

00:24:25.440 --> 00:24:29.690
<v Sjors Provoost>Yeah, so basically the Tor feature so far just... does not guarantee that you

00:24:29.690 --> 00:24:33.930
<v Sjors Provoost>actually connect to a Tor node. You may or may not. And so this new change, make

00:24:33.930 --> 00:24:37.350
<v Sjors Provoost>sure that you do. It makes sure that at least, I don't know what the percentage

00:24:37.350 --> 00:24:41.210
<v Sjors Provoost>is, but let's say at least one connection will go to Tor if you have Tor on. And

00:24:41.210 --> 00:24:44.870
<v Sjors Provoost>it will basically, if that connection disappears, it'll make another one.

00:24:45.070 --> 00:24:50.010
<v Aaron van Wirdum>And so the way I would do this, again, is I go into the config file and I say...

00:24:50.010 --> 00:24:50.650
<v Sjors Provoost>No, this just works.

00:24:51.070 --> 00:24:52.490
<v Aaron van Wirdum>This just works. Out of the box.

00:24:52.630 --> 00:24:56.150
<v Sjors Provoost>If you have Tor on, yes, this just works. Tor does not work out of the box.

00:24:56.970 --> 00:25:02.330
<v Aaron van Wirdum>Sure. Okay, so this will basically guarantee that I'm going to connect to a Tor

00:25:02.330 --> 00:25:03.290
<v Aaron van Wirdum>node if I want that.

00:25:03.950 --> 00:25:07.650
<v Sjors Provoost>Well, assuming there is one that you can connect to at all, but it will try, yeah.

00:25:07.870 --> 00:25:09.430
<v Aaron van Wirdum>Yeah. What's the benefit?

00:25:09.690 --> 00:25:12.790
<v Sjors Provoost>This solves a problem known as eclipse attacks, and we have done previous

00:25:12.790 --> 00:25:14.790
<v Sjors Provoost>episodes too about eclipse attacks.

00:25:15.210 --> 00:25:17.050
<v Aaron van Wirdum>Also probably very early on, I think.

00:25:17.110 --> 00:25:19.830
<v Sjors Provoost>Yes, I forgot to write down the numbers, but you'll find them.

00:25:21.110 --> 00:25:25.890
<v Sjors Provoost>Basically, in Eclipse attack, the idea is that some evil person makes sure that

00:25:25.890 --> 00:25:29.330
<v Sjors Provoost>your node only connects to them. So you think you're connected to eight different

00:25:29.330 --> 00:25:32.090
<v Sjors Provoost>peers, but you're not, you're connected to the same person, because they have

00:25:32.090 --> 00:25:35.710
<v Sjors Provoost>eight different IP addresses and tricked you into connecting to them. We'll explain all that.

00:25:37.820 --> 00:25:42.920
<v Sjors Provoost>Now, if you also connect through Tor, this attack becomes more difficult, because

00:25:42.920 --> 00:25:46.300
<v Sjors Provoost>they might be able to trick you into connecting to them through normal IP

00:25:46.300 --> 00:25:49.580
<v Sjors Provoost>addresses. but they may not be able to trick you into connecting to them through

00:25:49.580 --> 00:25:53.280
<v Sjors Provoost>Tor. Or if they're making the connections to you, they might not know your Onion

00:25:53.280 --> 00:25:56.740
<v Sjors Provoost>address that they're connecting to. They only know your normal IP address.

00:25:56.920 --> 00:25:57.060
<v Aaron van Wirdum>Yeah.

00:25:57.800 --> 00:25:58.980
<v Sjors Provoost>So that's why this helps.

00:25:59.120 --> 00:26:04.420
<v Aaron van Wirdum>It's kind of a safeguard. Like Eclipse attacks themselves are kind of unlikely to happen.

00:26:05.640 --> 00:26:08.200
<v Aaron van Wirdum>There are more tools against that, right, in Bitcoin Core?

00:26:08.620 --> 00:26:12.160
<v Sjors Provoost>Yeah, I would also say Eclipse attacks, you know, again, Eclipse attacks are

00:26:12.160 --> 00:26:16.720
<v Sjors Provoost>getting more and more difficult. And if you want to do them, you probably want to

00:26:16.720 --> 00:26:19.460
<v Sjors Provoost>have a motive. Like you want to be able to scam somebody into accepting your

00:26:19.460 --> 00:26:23.180
<v Sjors Provoost>payment and then double spending them and working with miners. All that stuff.

00:26:23.520 --> 00:26:26.940
<v Sjors Provoost>They're not easy attacks, but we like to make them impossible or harder.

00:26:27.380 --> 00:26:32.600
<v Aaron van Wirdum>So Tor is kind of a lifeline to still get the latest blocks in case they're being

00:26:32.600 --> 00:26:35.980
<v Aaron van Wirdum>censored in some sort of Eclipse attack scheme.

00:26:36.400 --> 00:26:36.900
<v Sjors Provoost>Exactly.

00:26:37.200 --> 00:26:39.640
<v Aaron van Wirdum>Makes it more difficult. So this is also new in Bitcoin Core.

00:26:40.860 --> 00:26:46.190
<v Aaron van Wirdum>The network diversity is embedded more and more thoroughly.

00:26:47.360 --> 00:26:51.960
<v Aaron van Wirdum>Then I'm seeing you selected, there's a Taproot Miniscript upgrade.

00:26:52.240 --> 00:26:56.440
<v Sjors Provoost>Yes, so we covered Miniscript in episode 4. A very long time ago.

00:26:56.580 --> 00:26:56.760
<v Aaron van Wirdum>Really?

00:26:57.340 --> 00:27:03.120
<v Sjors Provoost>Yep. One of the first things we did. So, what's the TL;DR Miniscript? It is a

00:27:03.120 --> 00:27:07.760
<v Sjors Provoost>subset of script, you could say, so not all of Bitcoin script, but a part of

00:27:07.760 --> 00:27:12.260
<v Sjors Provoost>Bitcoin script that has been handpicked by super wizards like Andrew Poelstra and

00:27:12.260 --> 00:27:16.240
<v Sjors Provoost>sipa to make sure that you don't shoot yourself in the foot.

00:27:17.120 --> 00:27:17.520
<v Aaron van Wirdum>Yeah.

00:27:17.620 --> 00:27:21.580
<v Sjors Provoost>And that you can combine pieces of script, like two pieces of script and you put

00:27:21.580 --> 00:27:22.640
<v Sjors Provoost>and in between it, et cetera.

00:27:23.040 --> 00:27:23.140
<v Aaron van Wirdum>Yeah.

00:27:23.810 --> 00:27:28.270
<v Sjors Provoost>So these allow you to do complicated, fancy wallets with like, okay, I want two

00:27:28.270 --> 00:27:32.670
<v Sjors Provoost>signatures, but after one year, I only want one signature, et cetera. And this

00:27:32.670 --> 00:27:37.450
<v Sjors Provoost>worked. This has been added to Bitcoin Core a year ago or so in various steps,

00:27:37.470 --> 00:27:41.370
<v Sjors Provoost>which we've covered in earlier episodes. And the latest step is that you can now

00:27:41.370 --> 00:27:43.310
<v Sjors Provoost>also use Miniscript with Taproot.

00:27:45.600 --> 00:27:48.020
<v Aaron van Wirdum>Right. And what is the benefit?

00:27:48.700 --> 00:27:50.720
<v Sjors Provoost>So the benefit of Taproot in general...

00:27:50.720 --> 00:27:54.940
<v Aaron van Wirdum>Maybe should I first, for those that didn't follow that, so yeah, Bitcoin

00:27:54.940 --> 00:27:58.880
<v Aaron van Wirdum>transactions use scripts, so it's basically programming language for Bitcoin,

00:27:59.080 --> 00:28:03.700
<v Aaron van Wirdum>allows you to lock Bitcoins up in all sorts of creative ways, time locks,

00:28:03.940 --> 00:28:09.360
<v Aaron van Wirdum>multisig, whatever. A Miniscript is a way to sort of simplify that. It's really

00:28:09.360 --> 00:28:12.760
<v Aaron van Wirdum>for developers, right? Like, I'm not going to use it. It's for people like you,

00:28:12.780 --> 00:28:13.680
<v Aaron van Wirdum>and...

00:28:13.580 --> 00:28:17.140
<v Sjors Provoost>It's for developers or for wallets that have been written by very small

00:28:17.140 --> 00:28:19.400
<v Sjors Provoost>developers and that do it for you in the background.

00:28:19.860 --> 00:28:25.340
<v Aaron van Wirdum>Right. But with regular scripts, it's kind of easy to make mistakes and lose

00:28:25.340 --> 00:28:30.560
<v Aaron van Wirdum>coins. And with Miniscript, kind of the most common ways to make these mistakes

00:28:30.560 --> 00:28:35.900
<v Aaron van Wirdum>are just... ejected like you can't use this only the simple stuff is left and

00:28:35.900 --> 00:28:41.380
<v Aaron van Wirdum>because of that you can actually make fairly complex things relatively simply and

00:28:41.380 --> 00:28:43.900
<v Aaron van Wirdum>safely yeah okay so this was already

00:28:46.020 --> 00:28:51.320
<v Aaron van Wirdum>available in Bitcoin Core so what this means specifically is I think you can you

00:28:51.320 --> 00:28:55.080
<v Aaron van Wirdum>connect wallets that use this to Bitcoin Core and probably I don't think I'm

00:28:55.080 --> 00:28:56.160
<v Aaron van Wirdum>saying that right. Well, that's…

00:28:56.160 --> 00:29:00.220
<v Sjors Provoost>That's true. Yeah, so um well the Bitcoin Core wallet supports Miniscript right

00:29:00.220 --> 00:29:04.560
<v Sjors Provoost>but there's no like graphical way or anything in the interface where you can do

00:29:04.560 --> 00:29:08.210
<v Sjors Provoost>that you'd have to manually type these pieces of Miniscript. But there are

00:29:08.210 --> 00:29:12.230
<v Sjors Provoost>wallets out there that will connect to Bitcoin Core using the RPC, for example.

00:29:12.470 --> 00:29:17.030
<v Sjors Provoost>And they might use the Bitcoin Core wallet for the key storage, etc. But they

00:29:17.030 --> 00:29:20.850
<v Sjors Provoost>would have some graphical user interface and they would construct a Miniscript.

00:29:21.620 --> 00:29:25.880
<v Aaron van Wirdum>So where... I think I'm skipping ahead.

00:29:26.060 --> 00:29:27.740
<v Sjors Provoost>So where Taproot comes in...

00:29:27.740 --> 00:29:33.180
<v Aaron van Wirdum>No, I don't want to go there yet. Where is this? I don't know how else to ask. Is

00:29:33.180 --> 00:29:37.180
<v Aaron van Wirdum>this in the Bitcoin Core wallet or is this in the Bitcoin Core... like node

00:29:37.180 --> 00:29:40.800
<v Aaron van Wirdum>software so where where do I find whatever we're talking about?

00:29:40.800 --> 00:29:43.100
<v Sjors Provoost>Well the Miniscript lives in the Bitcoin Core wallet.

00:29:43.100 --> 00:29:47.540
<v Aaron van Wirdum>Yes. So this… Okay, so we're talking about the Taproot upgrade let's go there

00:29:47.540 --> 00:29:53.220
<v Aaron van Wirdum>then. Yeah, so now this has been this has been made available in Taproot. So is

00:29:53.220 --> 00:29:55.040
<v Aaron van Wirdum>this an upgrade in the Bitcoin Core wallet?

00:29:55.040 --> 00:29:55.960
<v Sjors Provoost>Yes.

00:29:55.960 --> 00:29:58.400
<v Aaron van Wirdum>Okay, got it. So what's the upgrade?

00:29:58.400 --> 00:30:02.420
<v Sjors Provoost>So the upgrade is that you can now use this Miniscript so these safe pieces of

00:30:02.420 --> 00:30:07.090
<v Sjors Provoost>script, not just in SegWit, in regular SegWit, which used to be the only thing,

00:30:07.170 --> 00:30:11.170
<v Sjors Provoost>but you can now also use it in Taproot scripts. And remember what's nice about

00:30:11.170 --> 00:30:14.270
<v Sjors Provoost>Taproot scripts is you can have all these multiple ways that you can spend a

00:30:14.270 --> 00:30:18.950
<v Sjors Provoost>coin. You can now hide all the ways that you're not using by putting them in

00:30:18.950 --> 00:30:23.590
<v Sjors Provoost>different leaves. Your wallet would basically know that, okay, there are five

00:30:23.590 --> 00:30:29.130
<v Sjors Provoost>different subscripts, essentially, that are possible and the user will tell me

00:30:29.130 --> 00:30:32.430
<v Sjors Provoost>which one of these five to use when I want to spend this coin and we'll hide the

00:30:32.430 --> 00:30:36.520
<v Sjors Provoost>other ones. And there were some like there's some subtle changes between the

00:30:36.520 --> 00:30:40.940
<v Sjors Provoost>scripts in Taproot and the scripts in SegWit before some limits were dropped but

00:30:40.940 --> 00:30:41.640
<v Sjors Provoost>that's not that important.

00:30:42.390 --> 00:30:48.310
<v Aaron van Wirdum>Right. It's just, it's basically just the benefits of Taproot are now available

00:30:48.310 --> 00:30:50.530
<v Aaron van Wirdum>in combination with Miniscript in a Bitcoin Core wallet.

00:30:50.630 --> 00:30:54.090
<v Sjors Provoost>Yes, but either you will have to write your little Taproot Miniscript yourself

00:30:54.090 --> 00:30:57.230
<v Sjors Provoost>and put it in the wallet. Once you've put it in the wallet, by the way, it just

00:30:57.230 --> 00:31:00.470
<v Sjors Provoost>works, right? You just click on receive new, make new address. It'll show an

00:31:00.470 --> 00:31:04.090
<v Sjors Provoost>address, looks like any other address and you'll be able to spend from it and

00:31:04.090 --> 00:31:09.090
<v Sjors Provoost>it'll just work. But you generally do not want to type Miniscript yourself, even

00:31:09.090 --> 00:31:12.210
<v Sjors Provoost>though it's safer than regular script. Probably want to use some other tool that

00:31:12.210 --> 00:31:13.690
<v Sjors Provoost>does that for you. Right.

00:31:13.690 --> 00:31:19.150
<v Aaron van Wirdum>So this is available in Bitcoin Core now. Bitcoin Core 26. Well, I say now at the

00:31:19.150 --> 00:31:21.350
<v Aaron van Wirdum>time of recording we're still in… yeah

00:31:21.670 --> 00:31:24.770
<v Sjors Provoost>I don't know if this is in the testing guide, maybe there maybe it is. That would

00:31:24.770 --> 00:31:25.290
<v Sjors Provoost>be pretty cool.

00:31:25.640 --> 00:31:31.200
<v Aaron van Wirdum>Um, who's gonna benefit from this? What are there any wallets that use this right

00:31:31.200 --> 00:31:32.260
<v Aaron van Wirdum>now or that want to use this?

00:31:32.260 --> 00:31:36.900
<v Sjors Provoost>I think Liana wallet wants to because they're trying all sorts of fancy multisig uh…

00:31:38.620 --> 00:31:40.440
<v Sjors Provoost>Yeah, multistage, multisig things, right?

00:31:40.680 --> 00:31:41.260
<v Aaron van Wirdum>What's it called?

00:31:42.220 --> 00:31:42.620
<v Sjors Provoost>Multisig.

00:31:42.840 --> 00:31:43.500
<v Aaron van Wirdum>No, the wallet.

00:31:44.120 --> 00:31:44.480
<v Sjors Provoost>Liana.

00:31:44.920 --> 00:31:46.920
<v Aaron van Wirdum>Liana. Have I heard of this? I don't think so.

00:31:46.980 --> 00:31:48.160
<v Sjors Provoost>Wizard Sardine is the company.

00:31:48.680 --> 00:31:50.400
<v Aaron van Wirdum>Oh, yeah, yeah, yeah. Okay, Kevin.

00:31:50.900 --> 00:31:54.980
<v Sjors Provoost>Yeah, and they do a lot of work on Miniscript in general to contribute back.

00:31:55.340 --> 00:31:56.540
<v Aaron van Wirdum>Yep, that's true.

00:31:57.210 --> 00:32:00.650
<v Sjors Provoost>But hopefully, and I know, for example, that there's other wallets that support

00:32:00.650 --> 00:32:05.490
<v Sjors Provoost>Miniscript already, but the hard part is the setup part, I would say.

00:32:06.280 --> 00:32:11.470
<v Sjors Provoost>So many wallets might be able to sign Miniscript, even hardware wallets, but they

00:32:11.470 --> 00:32:17.450
<v Sjors Provoost>will not... Once you've put it in there, it's not that easy to make these

00:32:17.450 --> 00:32:18.370
<v Sjors Provoost>wallets in the first place.

00:32:21.420 --> 00:32:21.760
<v Aaron van Wirdum>Right.

00:32:23.530 --> 00:32:23.910
<v Sjors Provoost>Okay.

00:32:24.810 --> 00:32:29.490
<v Aaron van Wirdum>Last point, I think. We're going to the last point. The last mentionable upgrade

00:32:29.490 --> 00:32:30.470
<v Aaron van Wirdum>in Bitcoin Core 26.

00:32:32.650 --> 00:32:35.290
<v Aaron van Wirdum>submitpackage RPC you wrote down.

00:32:35.570 --> 00:32:39.690
<v Sjors Provoost>Yeah, I believe in previous episodes we have talked about the idea of package

00:32:39.690 --> 00:32:44.470
<v Sjors Provoost>relay for transactions. So then the simplest example is I have a Lightning

00:32:44.470 --> 00:32:48.630
<v Sjors Provoost>channel. I want to force close that Lightning channel. My partner of the

00:32:48.630 --> 00:32:53.270
<v Sjors Provoost>Lightning channel or no longer partner of the Lightning channel is offline. So

00:32:53.270 --> 00:32:57.170
<v Sjors Provoost>all I have is the last time we co-signed a transaction, and this was before

00:32:57.170 --> 00:33:01.910
<v Sjors Provoost>ordinals were invented, and fees were super low. And so I try to broadcast that

00:33:01.910 --> 00:33:05.910
<v Sjors Provoost>transaction, but it simply does not even go into the mempool of my peers.

00:33:06.130 --> 00:33:11.710
<v Aaron van Wirdum>We have a solution for that, though. You can use child pays for parent, Sjors.

00:33:11.930 --> 00:33:14.950
<v Sjors Provoost>That's right. The only problem is that the child...

00:33:14.950 --> 00:33:18.390
<v Aaron van Wirdum>Hang on, let me explain the solution. So the solution is I'm going to spend the

00:33:18.390 --> 00:33:23.410
<v Aaron van Wirdum>money from this transaction to myself with a higher fee. So now the miner will

00:33:23.410 --> 00:33:27.330
<v Aaron van Wirdum>see that if he wants to confirm the high fee transaction, he'll also have to

00:33:27.330 --> 00:33:31.910
<v Aaron van Wirdum>confirm the low fee transaction and I'll get the money and the problem is solved, right?

00:33:32.210 --> 00:33:36.970
<v Sjors Provoost>Correct, yes. And the miners already do this as far as I know. The problem is

00:33:36.970 --> 00:33:42.390
<v Sjors Provoost>getting it to the miner. Because this is where the bureaucrats come in. You

00:33:42.390 --> 00:33:48.010
<v Sjors Provoost>basically go to your peers in the network and you say, here's the

00:33:48.010 --> 00:33:51.250
<v Sjors Provoost>transaction, but hold on one second, I've got another transaction. But no, no,

00:33:51.270 --> 00:33:55.730
<v Sjors Provoost>no. Your peers say, no, this transaction is too low of a fee. But wait, I have

00:33:55.730 --> 00:33:58.310
<v Sjors Provoost>this other transaction. Here's the other transaction. Well, that has a really

00:33:58.310 --> 00:34:01.350
<v Sjors Provoost>high fee, thank you. But it's spending a transaction that I've never heard about.

00:34:01.630 --> 00:34:06.620
<v Aaron van Wirdum>Yeah, hang on. You got to emphasize. So when they say this has a... This has not

00:34:06.620 --> 00:34:10.660
<v Aaron van Wirdum>enough fee. The fee is too low. What they even mean is the fee is too low for the

00:34:10.660 --> 00:34:14.620
<v Aaron van Wirdum>mempool. They're not even going to include it in the mempool. So yes, it would

00:34:14.620 --> 00:34:19.300
<v Aaron van Wirdum>not fit in the block. Now that's fine because it usually goes into the mempool

00:34:19.300 --> 00:34:23.860
<v Aaron van Wirdum>and then you can use the child pays for [unclear] that I explained. But in this

00:34:23.860 --> 00:34:27.740
<v Aaron van Wirdum>case, the transaction, because of all these ordinals, isn't even going to fit

00:34:27.740 --> 00:34:32.320
<v Aaron van Wirdum>into the mempool and therefore it's not going to be seen by anyone and therefore

00:34:32.320 --> 00:34:36.100
<v Aaron van Wirdum>the higher fee transaction is not going to be seen by anyone either, because it's

00:34:36.100 --> 00:34:39.440
<v Aaron van Wirdum>not spending funds from a transaction that anyone is seeing.

00:34:39.600 --> 00:34:43.160
<v Sjors Provoost>Yeah, because mempools only process transactions one by one, and if the first one

00:34:43.160 --> 00:34:45.020
<v Sjors Provoost>doesn't pay enough fee, it's not going in there.

00:34:45.200 --> 00:34:45.500
<v Aaron van Wirdum>Right.

00:34:45.900 --> 00:34:51.580
<v Sjors Provoost>So, what is the solution? Is you need a way to send two transactions at the same

00:34:51.580 --> 00:34:52.880
<v Sjors Provoost>time to your peers.

00:34:53.080 --> 00:34:56.900
<v Aaron van Wirdum>Yeah, so peers and miners will consider them in tandem right from the get-go,

00:34:57.020 --> 00:34:58.760
<v Aaron van Wirdum>before it even goes in the mempool, essentially.

00:34:58.980 --> 00:35:02.980
<v Sjors Provoost>Yeah, and this thing is called package relay, and work is in progress to do that.

00:35:03.280 --> 00:35:07.980
<v Sjors Provoost>It's not easy. And we've discussed some baby steps in that direction. One of the

00:35:07.980 --> 00:35:13.670
<v Sjors Provoost>first baby steps was the RPC called submitpackage. And the idea was to send

00:35:13.670 --> 00:35:17.250
<v Sjors Provoost>transactions to your own mempool. So not to your peers, just to your own mempool.

00:35:17.690 --> 00:35:22.630
<v Sjors Provoost>And I think half a year ago or so we covered how that worked. You would give this

00:35:22.630 --> 00:35:28.570
<v Sjors Provoost>RPC two transactions. And it would just basically reject it. Because it would use

00:35:28.570 --> 00:35:33.060
<v Sjors Provoost>the same logic as always. It would process them one by one. So why was that

00:35:33.060 --> 00:35:37.840
<v Sjors Provoost>added? Well, because the next step makes it more useful. Now, with the 26.0

00:35:37.840 --> 00:35:41.960
<v Sjors Provoost>release, it will actually consider both of them and therefore include it in its

00:35:41.960 --> 00:35:42.360
<v Sjors Provoost>own mempool.

00:35:43.570 --> 00:35:44.010
<v Aaron van Wirdum>Right.

00:35:44.230 --> 00:35:44.950
<v Sjors Provoost>But not [unclear].

00:35:46.320 --> 00:35:52.220
<v Aaron van Wirdum>So this upgrade only applies to... So if I

00:35:52.220 --> 00:35:57.590
<v Aaron van Wirdum>make two transactions, one of them is a low fee, one of them is a high fee... I

00:35:57.590 --> 00:36:02.790
<v Aaron van Wirdum>can now send this transaction over RPC to my own node, but that's it, right?

00:36:03.450 --> 00:36:08.710
<v Sjors Provoost>Yeah, and you could imagine maybe there would be a website of a miner where you

00:36:08.710 --> 00:36:11.990
<v Sjors Provoost>can send it directly to the miner this way, and they would use their own RPC.

00:36:12.810 --> 00:36:16.670
<v Sjors Provoost>That's not the future, obviously, but... You could see some use even of this

00:36:16.670 --> 00:36:17.290
<v Sjors Provoost>primitive feature.

00:36:17.650 --> 00:36:22.850
<v Aaron van Wirdum>Right. So there's now something in Bitcoin Core. It's a baby step. It's a step

00:36:22.850 --> 00:36:25.850
<v Aaron van Wirdum>towards package relay, right? Exactly. That's just a way to think about it.

00:36:26.010 --> 00:36:26.130
<v Sjors Provoost>Yeah.

00:36:26.590 --> 00:36:32.040
<v Aaron van Wirdum>It's actually kind of useless in itself. Or is there, you just speculated about a

00:36:32.040 --> 00:36:32.900
<v Aaron van Wirdum>potential maybe?

00:36:33.320 --> 00:36:36.060
<v Sjors Provoost>Yeah, and the other is like, at least it would be in your mempool. And so maybe

00:36:36.060 --> 00:36:39.820
<v Sjors Provoost>once the fees go down, you know, it's a bit easier to rebroadcast it or

00:36:39.820 --> 00:36:44.570
<v Sjors Provoost>something. But rebroadcasting is also not automatic. So yeah, no, it's... So there you go.

00:36:44.750 --> 00:36:48.930
<v Aaron van Wirdum>It's basically useless, but it is a step towards package relay, which itself is

00:36:49.820 --> 00:36:53.700
<v Aaron van Wirdum>a useful and important upgrade one day, hopefully.

00:36:53.960 --> 00:36:54.260
<v Sjors Provoost>Yes.

00:36:55.560 --> 00:37:01.040
<v Aaron van Wirdum>Okay, great. So these are, we've now discussed six, five of the most important

00:37:01.040 --> 00:37:02.060
<v Aaron van Wirdum>upgrades in Bitcoin Core.

00:37:04.340 --> 00:37:06.000
<v Aaron van Wirdum>That's the episode actually, right?

00:37:06.240 --> 00:37:07.320
<v Sjors Provoost>That's right. That's a wrap.

00:37:07.560 --> 00:37:07.780
<v Aaron van Wirdum>Okay.

00:37:08.040 --> 00:37:09.280
<v Sjors Provoost>Thank you for listening to Bitcoin.

00:37:09.840 --> 00:37:10.360
<v Aaron van Wirdum>Explained.

