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

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

00:00:22.100 --> 00:00:22.780
<v Sjors Provoost>Explained.

00:00:23.990 --> 00:00:24.650
<v Aaron van Wirdum>Hey, Sjors.

00:00:25.110 --> 00:00:25.550
<v Sjors Provoost>What's up?

00:00:26.240 --> 00:00:30.400
<v Aaron van Wirdum>Sjors Provoost, Bitcoin Core contributor and author.

00:00:31.020 --> 00:00:31.560
<v Sjors Provoost>Oh, yes.

00:00:31.900 --> 00:00:32.480
<v Aaron van Wirdum>Congratulations.

00:00:33.120 --> 00:00:33.460
<v Sjors Provoost>Thank you.

00:00:33.880 --> 00:00:39.340
<v Aaron van Wirdum>Your new book, Bitcoin, a Work in Progress, is now available on Amazon?

00:00:39.660 --> 00:00:45.420
<v Sjors Provoost>On everywhere. If you go to btcwip.com, which is Work in

00:00:45.420 --> 00:00:49.750
<v Sjors Provoost>Progress, there's links to… to various Amazons

00:00:49.750 --> 00:00:53.450
<v Sjors Provoost>and other sites where you can hopefully buy the book.

00:00:53.610 --> 00:00:54.490
<v Aaron van Wirdum>What is the book?

00:00:55.240 --> 00:00:59.560
<v Sjors Provoost>It is basically based on this podcast. So if you like this podcast, you will like

00:00:59.560 --> 00:01:03.180
<v Sjors Provoost>the book. So what I did is I took a couple of the episodes and had a transcript

00:01:03.180 --> 00:01:08.460
<v Sjors Provoost>made. And then worked with an editor to turn the transcripts into,

00:01:08.480 --> 00:01:13.780
<v Sjors Provoost>well, chapters with a lot of back and forth. So some of them will look similar to

00:01:13.780 --> 00:01:17.960
<v Sjors Provoost>the episodes and others will look completely different than the episode. So even

00:01:17.960 --> 00:01:21.140
<v Sjors Provoost>if you've listened to every episode, I think you'll learn something new from the book.

00:01:22.220 --> 00:01:25.440
<v Aaron van Wirdum>Great. And you'll also learn something new in this episode.

00:01:25.620 --> 00:01:26.160
<v Sjors Provoost>That's right.

00:01:26.200 --> 00:01:31.850
<v Aaron van Wirdum>We are going to discuss URSFs, which stands

00:01:31.850 --> 00:01:37.770
<v Aaron van Wirdum>for user-resisted soft fork or user-rejected

00:01:37.770 --> 00:01:42.450
<v Aaron van Wirdum>soft fork. I think it's sort of settling on user-resisted soft fork, but

00:01:42.450 --> 00:01:47.040
<v Aaron van Wirdum>the acronym is the same anyways. So URSF.

00:01:48.450 --> 00:01:54.150
<v Sjors Provoost>Well, rejection is an outcome and resistance is an attempt, right? Well, I guess

00:01:54.150 --> 00:01:56.390
<v Sjors Provoost>you can succeed at either.

00:01:56.990 --> 00:01:58.950
<v Aaron van Wirdum>So wait, which one do you prefer then?

00:01:59.600 --> 00:02:03.320
<v Sjors Provoost>Well, I would say rejected because then you say we actually rejected it.

00:02:03.680 --> 00:02:08.280
<v Aaron van Wirdum>Yeah, I think that's a bit more accurate as well. All right. So before, let's

00:02:08.280 --> 00:02:13.960
<v Aaron van Wirdum>just start with what a URSF is exactly, like what it technically

00:02:13.960 --> 00:02:14.380
<v Aaron van Wirdum>is.

00:02:14.820 --> 00:02:15.120
<v Sjors Provoost>Yeah.

00:02:15.660 --> 00:02:17.860
<v Aaron van Wirdum>Do you want me to explain or do you want to?

00:02:18.140 --> 00:02:18.940
<v Sjors Provoost>No, you go ahead.

00:02:19.200 --> 00:02:24.840
<v Aaron van Wirdum>All right. So basically there's different ways of implementing it exactly. But as

00:02:24.840 --> 00:02:30.340
<v Aaron van Wirdum>the name suggests, it is a way to reject or [unclear]. I'm going to go with

00:02:30.340 --> 00:02:35.760
<v Aaron van Wirdum>reject, I think. It's a way to reject a soft fork. And the way this can be done

00:02:35.760 --> 00:02:40.270
<v Aaron van Wirdum>technically and that, you know, again, there's… multiple ways to do it but the

00:02:40.270 --> 00:02:46.050
<v Aaron van Wirdum>way that makes most sense if you ask me in the way it hasn't been implemented at

00:02:46.050 --> 00:02:50.290
<v Aaron van Wirdum>all yet there's no client that does this it's more of a concept. Uh yeah so a

00:02:50.290 --> 00:02:54.910
<v Aaron van Wirdum>little bit of background. The first time I heard about it was uh Jorge Timón one

00:02:54.910 --> 00:02:59.850
<v Aaron van Wirdum>of the former Bitcoin Core contributors, he he came up with this concept, or

00:02:59.850 --> 00:03:04.290
<v Aaron van Wirdum>that's he that's the first time I heard about it, and this was during the Taproot

00:03:04.670 --> 00:03:10.130
<v Aaron van Wirdum>discussion. Okay now it wasn't implemented back then, but now we sort of have a

00:03:10.130 --> 00:03:13.510
<v Aaron van Wirdum>new discussion going on about CTV

00:03:14.800 --> 00:03:20.480
<v Aaron van Wirdum>check template verify and in that context there has now actually been some code

00:03:20.480 --> 00:03:26.100
<v Aaron van Wirdum>produced by Jeremy Rubin who's also uh the main proponent proponent of CTV.

00:03:26.100 --> 00:03:31.040
<v Aaron van Wirdum>So now the concept is getting a bit more real, and it's probably a good time to

00:03:31.040 --> 00:03:35.560
<v Aaron van Wirdum>start talking about this. All right so what it does essentially, so a soft fork

00:03:35.560 --> 00:03:41.070
<v Aaron van Wirdum>can be activated— has been activated so far through blockchain signaling. We've

00:03:41.070 --> 00:03:46.030
<v Aaron van Wirdum>talked about this in previous episodes so for example Taproot used speedy trial

00:03:46.030 --> 00:03:51.670
<v Aaron van Wirdum>which required the 90 percent of all blocks within one difficulty

00:03:51.670 --> 00:03:57.130
<v Aaron van Wirdum>period had to um had a activation signal in it,

00:03:57.130 --> 00:04:02.900
<v Aaron van Wirdum>which is something that miners put in the block. All right. So once 90% of all

00:04:02.900 --> 00:04:06.540
<v Aaron van Wirdum>blocks have this, then it indicates that the soft fork is going to be active.

00:04:07.040 --> 00:04:12.180
<v Aaron van Wirdum>What a URSF does is it will actually

00:04:12.180 --> 00:04:14.860
<v Aaron van Wirdum>reject the last block.

00:04:16.880 --> 00:04:22.640
<v Aaron van Wirdum>Let's stick to the simple example. It will reject the last signaling block before

00:04:22.640 --> 00:04:28.030
<v Aaron van Wirdum>activation. So I think the difficulty period has

00:04:28.030 --> 00:04:32.730
<v Aaron van Wirdum>2016 blocks. 90% of that is

00:04:32.730 --> 00:04:38.110
<v Aaron van Wirdum>1815 blocks. So a URSF client

00:04:38.110 --> 00:04:43.990
<v Aaron van Wirdum>will accept up to 1814 blocks that signal, but the

00:04:43.990 --> 00:04:49.650
<v Aaron van Wirdum>1815 block will be rejected. So at that point, it will basically

00:04:49.650 --> 00:04:55.540
<v Aaron van Wirdum>create a blockchain split. And on the side of the split that the

00:04:55.540 --> 00:05:00.460
<v Aaron van Wirdum>URSF is accepting, there will not be a soft fork.

00:05:01.420 --> 00:05:07.020
<v Sjors Provoost>Yeah, so I guess the specific details can probably be varied, but the idea is

00:05:07.020 --> 00:05:11.580
<v Sjors Provoost>that when you're signaling for a soft fork, at least the way it's done in BIP9

00:05:11.580 --> 00:05:17.560
<v Sjors Provoost>and in other proposals, you are expecting a signal. And in the

00:05:17.560 --> 00:05:22.300
<v Sjors Provoost>case of this, you would actually require there to be not a signal. And so I guess

00:05:22.300 --> 00:05:26.200
<v Sjors Provoost>that the easiest thing to compare this to is the UASF, the User Activated

00:05:26.200 --> 00:05:32.100
<v Sjors Provoost>soft fork. Because a user activated soft fork is where your node requires there

00:05:32.100 --> 00:05:37.280
<v Sjors Provoost>to be a signal at a certain date. So then I guess there's three mechanisms that

00:05:37.280 --> 00:05:38.540
<v Sjors Provoost>we can sort of look at.

00:05:38.800 --> 00:05:43.760
<v Aaron van Wirdum>Yeah, it's like a mirror of a UASF. I think that's an accurate way to put it. If

00:05:43.760 --> 00:05:49.700
<v Aaron van Wirdum>the UASF requires that a soft fork will be activated, the URSF will

00:05:49.700 --> 00:05:51.560
<v Aaron van Wirdum>reject it if that happens.

00:05:51.800 --> 00:05:55.880
<v Sjors Provoost>Yeah, and the key part here is that you're not actually rejecting the soft fork,

00:05:56.060 --> 00:05:59.770
<v Sjors Provoost>you're rejecting the activation flagging of the soft fork I mean the specific

00:05:59.770 --> 00:06:03.530
<v Sjors Provoost>thing that your node is looking for is not the soft fork rules itself but is is

00:06:03.530 --> 00:06:06.630
<v Sjors Provoost>the activation rules and so one way to look at it…

00:06:06.630 --> 00:06:11.330
<v Aaron van Wirdum>Again like there's probably different implementation details but this does seem

00:06:11.330 --> 00:06:15.090
<v Aaron van Wirdum>or is in my opinion at least the most straightforward way of doing it. Yeah.

00:06:15.090 --> 00:06:15.750
<v Sjors Provoost>Yeah.

00:06:15.750 --> 00:06:21.550
<v Aaron van Wirdum>Okay so that's now that we've covered what it technically is hopefully

00:06:21.550 --> 00:06:26.760
<v Aaron van Wirdum>our listeners will now understand what the concept is. And now we'll try to

00:06:26.760 --> 00:06:32.540
<v Aaron van Wirdum>explain why this does or does not make sense to actually have

00:06:32.540 --> 00:06:38.060
<v Aaron van Wirdum>around. Right? Okay. So let me see. I'll take the lead on this one and then you

00:06:38.060 --> 00:06:42.680
<v Aaron van Wirdum>can comment. That's kind of the opposite of how we usually do it, I think. But

00:06:42.680 --> 00:06:43.840
<v Aaron van Wirdum>let's see how it goes.

00:06:44.080 --> 00:06:44.540
<v Sjors Provoost>Yes.

00:06:44.760 --> 00:06:46.060
<v Aaron van Wirdum>All right. So.

00:06:47.660 --> 00:06:52.880
<v Aaron van Wirdum>Oh, I want to emphasize something first. I'm going to use the word UASF a lot in

00:06:52.880 --> 00:06:58.400
<v Aaron van Wirdum>this episode. And so will you probably. But when I use it, I guess you can make

00:06:58.400 --> 00:07:04.200
<v Aaron van Wirdum>up your own mind. When I use it throughout this episode, I just mean a

00:07:04.200 --> 00:07:10.020
<v Aaron van Wirdum>client that will enforce the soft fork rules for sure. So I don't necessarily

00:07:10.020 --> 00:07:14.620
<v Aaron van Wirdum>mean an alt client because that's sort of another debate. Like do soft forks need

00:07:14.620 --> 00:07:19.790
<v Aaron van Wirdum>to be activated through Bitcoin Core? Or through an alt client I don't that's not

00:07:19.790 --> 00:07:20.470
<v Aaron van Wirdum>what I'm talking about

00:07:20.470 --> 00:07:23.610
<v Sjors Provoost>So yeah I think I understand what you mean um…

00:07:23.610 --> 00:07:29.410
<v Aaron van Wirdum>So let me finish real quick. A UASF in my definition can be implemented

00:07:29.410 --> 00:07:30.170
<v Aaron van Wirdum>in Bitcoin Core.

00:07:30.770 --> 00:07:34.690
<v Sjors Provoost>Yeah, I think there's nothing inherent about a UASF that can't be implemented in

00:07:34.690 --> 00:07:39.930
<v Sjors Provoost>Bitcoin Core. It's just that the last two times that somebody proposed a UASF, it

00:07:39.930 --> 00:07:44.130
<v Sjors Provoost>wasn't in Bitcoin Core. But the general idea of a UASF, at least these

00:07:44.130 --> 00:07:49.690
<v Sjors Provoost>implementations so far, were that they required signaling. So where Bitcoin Core

00:07:49.690 --> 00:07:54.490
<v Sjors Provoost>would use BIP9, which allows signaling, and if the signaling happens, then the

00:07:54.490 --> 00:08:00.410
<v Sjors Provoost>soft fork happens, a UASF, whoever releases it requires the signaling to take

00:08:00.410 --> 00:08:04.750
<v Sjors Provoost>place, which has the advantage of that then other nodes on the network that may

00:08:04.750 --> 00:08:08.370
<v Sjors Provoost>not, you know, look at the UASF, they will see the signaling and know that the

00:08:08.370 --> 00:08:09.250
<v Sjors Provoost>soft fork is going to activate.

00:08:10.730 --> 00:08:16.510
<v Aaron van Wirdum>No, no, I disagree. Or I think you're wrong. Like there are different, you can

00:08:16.510 --> 00:08:22.240
<v Aaron van Wirdum>also do an UASF without signaling. But but I'll get to that in a minute. Okay

00:08:22.240 --> 00:08:25.700
<v Aaron van Wirdum>for now I just wanted to emphasize because there is another debate. There is the

00:08:25.700 --> 00:08:31.680
<v Aaron van Wirdum>debate that some people think that any soft fork should be released outside

00:08:31.680 --> 00:08:36.890
<v Aaron van Wirdum>of Bitcoin Core, because otherwise Core developers have too much control or the

00:08:36.890 --> 00:08:40.690
<v Aaron van Wirdum>perception of control. But that's not the argument I'm talking about at all. So I

00:08:40.690 --> 00:08:45.230
<v Aaron van Wirdum>just wanted to emphasize that before I start to actually lay out sort of the

00:08:45.230 --> 00:08:46.070
<v Aaron van Wirdum>soft fork strategy.

00:08:46.310 --> 00:08:50.710
<v Sjors Provoost>Okay. I just think that the scenario with signaling is the easiest to explain,

00:08:51.070 --> 00:08:56.390
<v Sjors Provoost>right? You have with BIP9, there's optional signaling with UASF, [unclear]

00:08:56.370 --> 00:08:58.510
<v Aaron van Wirdum>This is the next step. I'll get to this right now.

00:08:58.670 --> 00:08:58.890
<v Sjors Provoost>Okay.

00:08:59.010 --> 00:09:00.070
<v Aaron van Wirdum>And then you can comment on it.

00:09:00.250 --> 00:09:00.470
<v Sjors Provoost>Okay.

00:09:01.450 --> 00:09:07.310
<v Aaron van Wirdum>All right. So basically, ideally, we want

00:09:07.310 --> 00:09:13.100
<v Aaron van Wirdum>miners to signal and to activate the soft fork that way. And that's how

00:09:13.100 --> 00:09:18.920
<v Aaron van Wirdum>it has been done with previous soft forks, definitely before SegWit. That's how

00:09:18.920 --> 00:09:23.020
<v Aaron van Wirdum>we did soft forks. And the reason for that is that if miners enforce the soft

00:09:23.020 --> 00:09:27.240
<v Aaron van Wirdum>fork, then you are sure that the network stays in consensus because even

00:09:27.240 --> 00:09:33.170
<v Aaron van Wirdum>non-upgraded nodes will follow the majority chain. Yeah okay the problem with

00:09:33.170 --> 00:09:37.350
<v Aaron van Wirdum>this and we've talked about this in previous episodes I'm not gonna rehash all of

00:09:37.350 --> 00:09:43.590
<v Aaron van Wirdum>it but in short the problem with this is that it allows miners to block the upgrade

00:09:43.590 --> 00:09:44.250
<v Sjors Provoost>Yes.

00:09:44.250 --> 00:09:49.450
<v Aaron van Wirdum>Miners can just refuse to signal and then the soft fork the upgrade doesn't

00:09:49.450 --> 00:09:55.340
<v Aaron van Wirdum>happen okay now there's three ways to deal with that situation. Option one

00:09:55.340 --> 00:10:00.360
<v Aaron van Wirdum>is to accept that miners have a veto. You just you know you just

00:10:01.660 --> 00:10:06.540
<v Aaron van Wirdum>agree, that miners should be allowed to block a soft fork that's one option.

00:10:06.540 --> 00:10:11.330
<v Aaron van Wirdum>That's an opinion you can have, and there are people that have this opinion. Okay

00:10:11.330 --> 00:10:16.490
<v Aaron van Wirdum>that's optional. I don't like this option, but you know I think inherently the

00:10:16.490 --> 00:10:20.950
<v Aaron van Wirdum>rules of Bitcoin are defined by the users when they accept money. It's you know I

00:10:20.950 --> 00:10:21.690
<v Aaron van Wirdum>will define

00:10:23.170 --> 00:10:28.990
<v Aaron van Wirdum>which rules I want my money to adhere to and the miners are more like commodity

00:10:28.990 --> 00:10:32.290
<v Aaron van Wirdum>producers, and if they don't produce the blocks that I want then I'm just not

00:10:32.290 --> 00:10:37.270
<v Aaron van Wirdum>gonna value the whatever coins they mine. I think users are fundamentally in

00:10:37.270 --> 00:10:41.470
<v Aaron van Wirdum>control of the system, but you can be of the opinion you can have a different

00:10:41.470 --> 00:10:42.470
<v Aaron van Wirdum>different opinion. You can

00:10:42.470 --> 00:10:47.550
<v Sjors Provoost>Well you can have a more zen interpretation. Instead of saying miners should be

00:10:47.550 --> 00:10:51.980
<v Sjors Provoost>able to block a soft fork you could also say well, It's true that miners can

00:10:51.980 --> 00:10:54.900
<v Sjors Provoost>block a soft fork, even if you don't think that's a good thing.

00:10:56.910 --> 00:11:00.130
<v Aaron van Wirdum>I mean, well, okay, let's...

00:11:00.130 --> 00:11:01.790
<v Sjors Provoost>But anyway, option two.

00:11:01.950 --> 00:11:07.870
<v Aaron van Wirdum>Right. So... Option two and this has not been done yet, but I think

00:11:07.870 --> 00:11:12.890
<v Aaron van Wirdum>it makes more sense to explain it in this order. Option two I think it was

00:11:12.890 --> 00:11:18.690
<v Aaron van Wirdum>defined in BIP 149. It has been discussed in context of

00:11:18.690 --> 00:11:22.910
<v Aaron van Wirdum>[unclear] years ago and then you're during a Taproot discussion as well.

00:11:22.910 --> 00:11:28.280
<v Aaron van Wirdum>BIP 149 I guess I'm just gonna call it that, is

00:11:28.280 --> 00:11:34.240
<v Aaron van Wirdum>or it's a flag day activation so in the case of BIP

00:11:34.240 --> 00:11:40.220
<v Aaron van Wirdum>149 or flag day activation you don't actually use miner signaling you just

00:11:40.220 --> 00:11:46.000
<v Aaron van Wirdum>say you just embed in the client, you say on this block height

00:11:46.000 --> 00:11:50.590
<v Aaron van Wirdum>or this date and time in the future, I prefer block heights, but whatever doesn't

00:11:50.590 --> 00:11:55.350
<v Aaron van Wirdum>really matter for the purpose of the argument. Your node is just going to enforce

00:11:55.350 --> 00:12:00.650
<v Aaron van Wirdum>new soft fork rules. So if a block is mined that breaks these rules, your node

00:12:00.650 --> 00:12:03.990
<v Aaron van Wirdum>will just reject it. There's no signaling involved in this case.

00:12:04.130 --> 00:12:06.530
<v Sjors Provoost>And this is in fact how soft forks worked in the very beginning.

00:12:08.230 --> 00:12:12.630
<v Sjors Provoost>When Satoshi was making soft forks, he would just put in an activation height and

00:12:12.630 --> 00:12:14.590
<v Sjors Provoost>it would just happen after a certain height.

00:12:14.950 --> 00:12:18.130
<v Aaron van Wirdum>I guess you're right, actually. Yeah, this is how the very first soft forks

00:12:18.130 --> 00:12:20.930
<v Aaron van Wirdum>happened. Yeah, you're right. There was no signaling back then.

00:12:21.070 --> 00:12:24.550
<v Sjors Provoost>Well, the very first intentional soft forks, maybe there were accidentals that

00:12:24.550 --> 00:12:27.270
<v Sjors Provoost>didn't even have a height in it, but yeah.

00:12:27.630 --> 00:12:28.610
<v Aaron van Wirdum>Right, right, yeah.

00:12:29.700 --> 00:12:30.100
<v Sjors Provoost>Okay.

00:12:30.340 --> 00:12:34.700
<v Aaron van Wirdum>Yeah, so if they even had a height that you bring it up, were there ever flagged

00:12:34.700 --> 00:12:38.000
<v Aaron van Wirdum>activations actually, or was there just a new code release?

00:12:38.420 --> 00:12:43.280
<v Sjors Provoost>So the block size decrease, for example, had an activation height in it.

00:12:43.460 --> 00:12:43.820
<v Aaron van Wirdum>Oh, it did?

00:12:43.980 --> 00:12:44.200
<v Sjors Provoost>Yeah.

00:12:44.400 --> 00:12:44.620
<v Aaron van Wirdum>Okay.

00:12:45.100 --> 00:12:46.780
<v Sjors Provoost>But there may have been other changes that didn't.

00:12:47.630 --> 00:12:53.510
<v Aaron van Wirdum>All right so so this is an option. Uh I've again there are people that would

00:12:53.510 --> 00:12:58.390
<v Aaron van Wirdum>prefer this so if miners don't cooperate you just implement a flag day. I have a

00:12:58.390 --> 00:13:03.700
<v Aaron van Wirdum>problem with this because, um at that point the

00:13:05.500 --> 00:13:06.100
<v Aaron van Wirdum>blockchain…

00:13:07.710 --> 00:13:09.590
<v Sjors Provoost>Maybe we should just say what option three is.

00:13:09.590 --> 00:13:10.190
<v Aaron van Wirdum>No, no.

00:13:10.190 --> 00:13:11.090
<v Sjors Provoost>Okay, okay.

00:13:11.090 --> 00:13:15.850
<v Aaron van Wirdum>There could be a split in the blockchain at some point, because some users have

00:13:15.850 --> 00:13:17.730
<v Aaron van Wirdum>upgraded and some have not.

00:13:17.730 --> 00:13:22.290
<v Sjors Provoost>Yeah right and in fact this has happened in the past right, where miners would

00:13:22.290 --> 00:13:27.430
<v Sjors Provoost>not well miners would not be running the same update and then you you get a split

00:13:27.430 --> 00:13:30.730
<v Sjors Provoost>and then it's up to the nodes but not everybody upgrades their node,

00:13:30.730 --> 00:13:36.510
<v Aaron van Wirdum>Right and to add to that it's sort of— this split can happen at any

00:13:36.510 --> 00:13:41.330
<v Aaron van Wirdum>time. Like this at any time a miner could break the rules and then some nodes are

00:13:41.330 --> 00:13:46.590
<v Aaron van Wirdum>going to enforce and some of them are not, and you can't know in advance when

00:13:46.590 --> 00:13:50.570
<v Aaron van Wirdum>it's going to happen. It might happen on Christmas Eve and no one is around to

00:13:50.570 --> 00:13:54.270
<v Aaron van Wirdum>coordinate some sort of solution, and now you have an even bigger problem. Like

00:13:54.270 --> 00:13:59.830
<v Aaron van Wirdum>it's yeah unpredictable, which I don't like. Now there's a another more subtle

00:13:59.830 --> 00:14:04.440
<v Aaron van Wirdum>thing I don't like about it which is… soft forks

00:14:04.440 --> 00:14:10.240
<v Aaron van Wirdum>the nodes that are running stricter rules, they sort of have this

00:14:10.240 --> 00:14:15.660
<v Aaron van Wirdum>asymmetric advantage right? Because whoever is enforcing the soft fork

00:14:15.660 --> 00:14:21.320
<v Aaron van Wirdum>worst case scenario they'll— worst case scenario they end up on a minority chain,

00:14:21.320 --> 00:14:26.930
<v Aaron van Wirdum>while uh if you're not adhering to the strict rules the looser

00:14:26.930 --> 00:14:32.630
<v Aaron van Wirdum>rules, they can that that chain can be reorgs away right? So you've

00:14:32.630 --> 00:14:37.490
<v Aaron van Wirdum>accepted money, uh and now all of a sudden the soft fork chain is getting longer

00:14:37.490 --> 00:14:41.170
<v Aaron van Wirdum>and now the money you accepted just disappears because your chain disappeared.

00:14:41.170 --> 00:14:45.650
<v Aaron van Wirdum>Yeah, right. So the only way to sort of be really sure that this doesn't happen

00:14:45.650 --> 00:14:51.560
<v Aaron van Wirdum>to you is you need to be on the soft fork side right. So in this

00:14:51.560 --> 00:14:57.360
<v Aaron van Wirdum>case where with the flag day activation you kind of really just need to

00:14:57.360 --> 00:14:59.780
<v Aaron van Wirdum>follow along. And I think that

00:15:01.270 --> 00:15:07.170
<v Aaron van Wirdum>gives a sort of subtle or maybe not so subtle implicit power

00:15:07.170 --> 00:15:12.250
<v Aaron van Wirdum>to developers, because if developers and specifically Bitcoin Core developers you

00:15:12.250 --> 00:15:16.490
<v Aaron van Wirdum>know in this in this case if Bitcoin Core is the de facto reference

00:15:16.490 --> 00:15:20.930
<v Aaron van Wirdum>implementation then you better just do what they released because otherwise

00:15:20.930 --> 00:15:25.990
<v Aaron van Wirdum>you're running this reorg risk. So there's sort of a you know I think there's

00:15:25.990 --> 00:15:27.930
<v Aaron van Wirdum>sort of a hidden power that could…

00:15:28.780 --> 00:15:34.440
<v Sjors Provoost>Yeah, or in the case of a UASF that is, well, let's not use that term, but in

00:15:34.440 --> 00:15:38.660
<v Sjors Provoost>case of this mechanism being used not even by Bitcoin Core, but by any group of

00:15:38.660 --> 00:15:44.160
<v Sjors Provoost>people, then maybe you would say, well, it's better to do whatever that group of

00:15:44.160 --> 00:15:46.280
<v Sjors Provoost>people says because otherwise I might get re-orged.

00:15:46.720 --> 00:15:47.720
<v Aaron van Wirdum>Right, exactly.

00:15:47.880 --> 00:15:50.500
<v Sjors Provoost>That gets back to the long debates about UASFs in general.

00:15:50.940 --> 00:15:55.920
<v Aaron van Wirdum>But that's exactly where the [unclear] comes in in a minute. We're getting there.

00:15:56.260 --> 00:16:01.980
<v Sjors Provoost>Okay, so option one was, you just accept the unpleasant fact that

00:16:01.980 --> 00:16:07.940
<v Sjors Provoost>miners could not signal. Option two is you just start

00:16:07.940 --> 00:16:11.480
<v Sjors Provoost>enforcing the new rules without any signaling.

00:16:11.820 --> 00:16:11.980
<v Aaron van Wirdum>Right.

00:16:12.300 --> 00:16:12.940
<v Sjors Provoost>Option three.

00:16:13.260 --> 00:16:19.020
<v Aaron van Wirdum>And in option three, that's essentially what BIP 148 was in the

00:16:19.020 --> 00:16:22.320
<v Aaron van Wirdum>SegWit context, which is mandatory signaling.

00:16:22.840 --> 00:16:22.960
<v Sjors Provoost>Yeah.

00:16:23.200 --> 00:16:28.800
<v Aaron van Wirdum>So that's the UASF that we've seen and that we remember and that we've done

00:16:28.800 --> 00:16:33.980
<v Aaron van Wirdum>podcasts on. It's when your node mandates signaling at some point.

00:16:34.000 --> 00:16:38.880
<v Sjors Provoost>And the advantage over that over option two is that now you know exactly when the

00:16:38.880 --> 00:16:43.980
<v Sjors Provoost>conflict is going to happen because you know what block should signal and not. So

00:16:43.980 --> 00:16:47.900
<v Sjors Provoost>you're not waiting until the rules are actually violated. You're already having

00:16:47.900 --> 00:16:52.640
<v Sjors Provoost>the fight in the signaling phase. And a secondary benefit is that because the

00:16:52.640 --> 00:16:56.860
<v Sjors Provoost>signaling is mandatory, if the signaling therefore happens, then everybody

00:16:56.860 --> 00:17:00.520
<v Sjors Provoost>understands what's going on, whether or not they're running the mandatory

00:17:00.520 --> 00:17:01.400
<v Sjors Provoost>signaling client.

00:17:01.900 --> 00:17:06.000
<v Aaron van Wirdum>All right. So if I understand your arguments or what you just said correctly, the

00:17:06.000 --> 00:17:11.120
<v Aaron van Wirdum>first thing you said is, so if there is a split between

00:17:11.120 --> 00:17:16.280
<v Aaron van Wirdum>nodes that are enforcing different things, then in the case of mandatory

00:17:16.280 --> 00:17:21.640
<v Aaron van Wirdum>signaling, at least it happens at a predictable time as opposed to some unknown

00:17:21.640 --> 00:17:22.680
<v Aaron van Wirdum>time in the future.

00:17:22.980 --> 00:17:26.460
<v Sjors Provoost>Right. First, there's the discussion about whether the new rules shall apply and

00:17:26.460 --> 00:17:29.680
<v Sjors Provoost>that discussion is settled. And yeah.

00:17:30.090 --> 00:17:34.550
<v Aaron van Wirdum>Yeah, so there's always a chain split risk or at least in both of these cases.

00:17:34.770 --> 00:17:39.930
<v Aaron van Wirdum>And it's arguably better to have it at a predictable time. I tend to agree with that.

00:17:40.070 --> 00:17:43.690
<v Sjors Provoost>And also to have the split over something as simple as signaling rather than the

00:17:43.690 --> 00:17:45.290
<v Sjors Provoost>actual rules, right?

00:17:45.710 --> 00:17:47.010
<v Aaron van Wirdum>Why is that a benefit, do you think?

00:17:47.030 --> 00:17:51.490
<v Sjors Provoost>Well, right now, I mean, I think there was somebody before Taproot activated who

00:17:51.490 --> 00:17:57.140
<v Sjors Provoost>created a transaction that was invalid under the Taproot rules. And then you have

00:17:57.140 --> 00:18:02.880
<v Sjors Provoost>discussions about whether or not that's a problem. We talked about that in the

00:18:02.880 --> 00:18:08.700
<v Sjors Provoost>context of burying the soft forks. So if you want to say,

00:18:08.780 --> 00:18:12.280
<v Sjors Provoost>I don't like these new rules, then you would make a transaction that's invalid

00:18:12.280 --> 00:18:16.280
<v Sjors Provoost>under the rules, but it's kind of difficult to do that. So a signal is much

00:18:16.280 --> 00:18:17.500
<v Sjors Provoost>easier to understand.

00:18:18.010 --> 00:18:21.870
<v Aaron van Wirdum>Yeah, and then the other thing you said is if there are other nodes on the

00:18:21.870 --> 00:18:25.390
<v Aaron van Wirdum>network that are just looking at the signaling but won't mandate it, then they

00:18:25.390 --> 00:18:30.690
<v Aaron van Wirdum>can also be activated through this UASF. Some people would consider it a

00:18:30.690 --> 00:18:34.830
<v Aaron van Wirdum>detriment. I don't really understand why personally, but I've seen that argument.

00:18:35.070 --> 00:18:39.810
<v Sjors Provoost>Well, in any case, that's relevant in the case where a small minority or anyway,

00:18:39.950 --> 00:18:44.550
<v Sjors Provoost>a minority releases such a UASF client. In the case where Bitcoin Core releases a

00:18:44.550 --> 00:18:48.930
<v Sjors Provoost>UASF client, I would guess there is no other group. It's just everybody would be

00:18:48.930 --> 00:18:52.370
<v Sjors Provoost>running that. There wouldn't be somebody running a regular BIP9 optional

00:18:52.370 --> 00:18:53.690
<v Sjors Provoost>signaling client.

00:18:53.930 --> 00:18:54.250
<v Aaron van Wirdum>Right, exactly.

00:18:59.800 --> 00:19:05.740
<v Aaron van Wirdum>Insofar that I understand this concern at all, I think, and this actually gets to

00:19:05.740 --> 00:19:11.620
<v Aaron van Wirdum>our next point, is sort of the problem of UASFs or [unclear]

00:19:11.620 --> 00:19:15.860
<v Aaron van Wirdum>mandatory signaling type of UASFs. And that is that,

00:19:17.000 --> 00:19:22.140
<v Aaron van Wirdum>again, it's sort of… there's this asymmetric

00:19:22.140 --> 00:19:27.820
<v Aaron van Wirdum>advantage over enforcing it. And therefore, a small group of users

00:19:27.820 --> 00:19:33.810
<v Aaron van Wirdum>may sort of impose their will on

00:19:33.810 --> 00:19:34.770
<v Aaron van Wirdum>the majority.

00:19:35.290 --> 00:19:35.710
<v Sjors Provoost>Yeah, exactly.

00:19:36.090 --> 00:19:42.010
<v Aaron van Wirdum>Okay. This is where the URSF comes in. So if the

00:19:42.010 --> 00:19:47.570
<v Aaron van Wirdum>problem is that a small minority can start enforcing the rules, they

00:19:47.570 --> 00:19:53.130
<v Aaron van Wirdum>essentially incentivize miners to just go along with them because that way they

00:19:53.130 --> 00:19:58.930
<v Aaron van Wirdum>won't split the chain and they presumably maximize profits.

00:19:59.570 --> 00:20:03.390
<v Aaron van Wirdum>But you know that not everyone likes a small minority kind of controlling things

00:20:03.390 --> 00:20:09.070
<v Aaron van Wirdum>idea. So a URSF as the mirror of a UASF gives other users

00:20:09.070 --> 00:20:14.630
<v Aaron van Wirdum>a way out. So if they really don't like the rules that are being

00:20:14.630 --> 00:20:20.170
<v Aaron van Wirdum>proposed in this UASF, and that will be mandated in this UASF, then the

00:20:20.170 --> 00:20:26.300
<v Aaron van Wirdum>URSF gives everyone who wants out an option out.

00:20:26.600 --> 00:20:27.180
<v Sjors Provoost>Yes.

00:20:27.420 --> 00:20:33.230
<v Aaron van Wirdum>Now, the problem, of course, is that this would split the chain. But I guess the

00:20:33.230 --> 00:20:39.110
<v Aaron van Wirdum>way I see it is that if there's one group of people, an intolerant minority, that

00:20:39.110 --> 00:20:43.400
<v Aaron van Wirdum>definitely wants something. And there's another group of people that definitely

00:20:43.400 --> 00:20:48.340
<v Aaron van Wirdum>don't want that. Then the change should split. And I think that's what should

00:20:48.340 --> 00:20:50.880
<v Aaron van Wirdum>happen. If people want different things, they want different things.

00:20:51.040 --> 00:20:56.620
<v Sjors Provoost>And the nice thing about this situation where you have a UASF versus a

00:20:56.620 --> 00:21:02.400
<v Sjors Provoost>URSF is that it's a clean split, right? It basically means that

00:21:02.400 --> 00:21:08.000
<v Sjors Provoost>there's not going to be a reorg ever because the UASF side wants to see signals.

00:21:08.540 --> 00:21:13.280
<v Sjors Provoost>And the URSF side does not want to see signals. So whatever happens in the

00:21:13.280 --> 00:21:16.180
<v Sjors Provoost>future, whichever of these chains gets longer in the future, it doesn't matter

00:21:16.180 --> 00:21:20.060
<v Sjors Provoost>because they will never accept each other because of that presence or absence of

00:21:20.060 --> 00:21:20.460
<v Sjors Provoost>the signal.

00:21:20.840 --> 00:21:26.680
<v Aaron van Wirdum>Yeah, well, there's one caveat there, right? So you are right. It is correct that

00:21:26.680 --> 00:21:32.370
<v Aaron van Wirdum>the UASF clients will definitely follow the soft fork chain and the

00:21:32.370 --> 00:21:37.950
<v Aaron van Wirdum>URSF clients will definitely follow the URSF chain. So the

00:21:37.950 --> 00:21:43.900
<v Aaron van Wirdum>soft fork rejecting chain. So even if one chain is

00:21:43.900 --> 00:21:47.620
<v Aaron van Wirdum>longer for a while, but then another chain overtakes it, it doesn't matter for

00:21:47.620 --> 00:21:48.120
<v Aaron van Wirdum>these clients.

00:21:48.400 --> 00:21:48.960
<v Sjors Provoost>Yes.

00:21:49.240 --> 00:21:55.070
<v Aaron van Wirdum>However, it does matter for non-upgraded clients.

00:21:55.210 --> 00:21:55.470
<v Sjors Provoost>Yep.

00:21:55.930 --> 00:22:01.490
<v Aaron van Wirdum>Right? So let's say for example there

00:22:01.550 --> 00:22:06.980
<v Aaron van Wirdum>is an alt client that does a UASF and then there's an alt client that does a

00:22:06.980 --> 00:22:12.560
<v Aaron van Wirdum>URSF and Bitcoin Core does neither. And people keep running

00:22:12.560 --> 00:22:18.500
<v Aaron van Wirdum>and using Bitcoin Core, then these people can actually suffer reorgs.

00:22:18.600 --> 00:22:23.180
<v Sjors Provoost>Yeah, this sounds like a plausible scenario because if there is such a big battle

00:22:23.180 --> 00:22:26.760
<v Sjors Provoost>between people who absolutely want a soft fork and people who absolutely don't

00:22:26.760 --> 00:22:32.060
<v Sjors Provoost>want it, I would guess Bitcoin Core would do absolutely nothing and wait and see

00:22:32.060 --> 00:22:36.100
<v Sjors Provoost>what happens. So in that case, indeed, the Bitcoin Core nodes would follow one

00:22:36.100 --> 00:22:41.910
<v Sjors Provoost>side of the camp and then after a while... Because one camp beats the other it

00:22:41.910 --> 00:22:45.230
<v Sjors Provoost>would follow the other side of the of the camp and and so those two battling

00:22:45.230 --> 00:22:48.810
<v Sjors Provoost>camps would actually cause a lot of economic damage even outside of them

00:22:48.810 --> 00:22:50.490
<v Aaron van Wirdum>Yeah potentially

00:22:50.490 --> 00:22:55.550
<v Sjors Provoost>So I I think assuming the market doesn't fix this, and I guess that's where you come in.

00:22:56.310 --> 00:23:02.030
<v Aaron van Wirdum>Yeah well I mean I think every— so given all the trade-offs so far

00:23:02.600 --> 00:23:08.600
<v Aaron van Wirdum>I still think that UASF, I think UASFs are the way to do soft forks.

00:23:08.720 --> 00:23:13.180
<v Aaron van Wirdum>I don't want miner vetoes. I think that's just the way soft forks should be done.

00:23:13.420 --> 00:23:19.320
<v Aaron van Wirdum>But then I also think that a URSF should basically be a

00:23:19.480 --> 00:23:22.360
<v Aaron van Wirdum>standard option that is also given.

00:23:22.860 --> 00:23:27.560
<v Sjors Provoost>So basically you're saying if you get rid of the BIP9 system because miners have

00:23:27.560 --> 00:23:32.960
<v Sjors Provoost>this veto power, then you would be okay with UASF as long as there's also the

00:23:32.960 --> 00:23:36.840
<v Sjors Provoost>URSF. So you have to have both in order to have a balance.

00:23:37.200 --> 00:23:40.740
<v Aaron van Wirdum>Right, yeah. Obviously, just my personal opinion that I'm giving on the podcast,

00:23:40.880 --> 00:23:44.840
<v Aaron van Wirdum>this isn't some technical truth. But yeah, given all the options, I don't want

00:23:44.840 --> 00:23:50.630
<v Aaron van Wirdum>miner vetoes. I don't like the… the flag day activation for the reasons I

00:23:50.630 --> 00:23:55.130
<v Aaron van Wirdum>explained. And given all the trade-offs, my personal preference moving forward

00:23:55.130 --> 00:24:00.510
<v Aaron van Wirdum>with these kinds of things is to do UASF, mandatory signaling, and then standard

00:24:00.510 --> 00:24:02.710
<v Aaron van Wirdum>also give users a way out.

00:24:02.910 --> 00:24:08.630
<v Sjors Provoost>Right. And this is where we probably don't really agree because I don't like the

00:24:08.630 --> 00:24:12.990
<v Sjors Provoost>miner vetoes just as much as you don't like them, but I'm not willing to replace

00:24:12.990 --> 00:24:17.670
<v Sjors Provoost>it with something that I think is unsafe. Which I think, well, the UASF, without

00:24:17.670 --> 00:24:21.830
<v Sjors Provoost>anything else, I definitely think is unsafe, as I've explained in other episodes.

00:24:22.010 --> 00:24:26.610
<v Sjors Provoost>And I think this combination is still unsafe, despite it having some cool features.

00:24:27.990 --> 00:24:32.810
<v Sjors Provoost>So I'd rather deal with the current annoying situation than to, you know, open

00:24:32.810 --> 00:24:36.070
<v Sjors Provoost>the other can of worms. But we can explore what that can of worms looks like.

00:24:36.750 --> 00:24:41.430
<v Aaron van Wirdum>Well, I was just sort of prefacing this. I was saying, okay, this is given the

00:24:41.430 --> 00:24:46.550
<v Aaron van Wirdum>trade-offs and... my knowledge of how the system works and the risk and my

00:24:46.550 --> 00:24:52.150
<v Aaron van Wirdum>personal preference is that any soft fork should be a UASF in Core or maybe

00:24:52.150 --> 00:24:56.670
<v Aaron van Wirdum>somewhere else that's not part of this podcast discussion. I think it should be

00:24:56.670 --> 00:25:01.070
<v Aaron van Wirdum>UASF with mandatory signaling and standard users should also given being given

00:25:01.070 --> 00:25:05.870
<v Aaron van Wirdum>the option to opt out through a URSF So that opinion sort of stands on itself.

00:25:05.870 --> 00:25:11.520
<v Aaron van Wirdum>Now to mitigate the risk and this was what you're getting at, so to mitigate the

00:25:11.520 --> 00:25:17.400
<v Aaron van Wirdum>reorg risk and that kind of stuff I think it would be much better if this sort of

00:25:17.400 --> 00:25:21.140
<v Aaron van Wirdum>battle happens without any casualties.

00:25:21.140 --> 00:25:22.300
<v Sjors Provoost>Yeah.

00:25:22.300 --> 00:25:27.940
<v Aaron van Wirdum>And and I think that this can be accomplished fairly well through futures

00:25:27.940 --> 00:25:33.900
<v Aaron van Wirdum>markets. So instead of actually splitting the chain and only then allowing

00:25:33.900 --> 00:25:38.620
<v Aaron van Wirdum>trade between the coins and now all of a sudden one coin is more valuable and

00:25:38.620 --> 00:25:42.700
<v Aaron van Wirdum>another while the market is sort of figuring this out live and it's been traded

00:25:42.700 --> 00:25:46.740
<v Aaron van Wirdum>live and there are replay attacks and who knows what else, and then what the

00:25:46.740 --> 00:25:51.200
<v Aaron van Wirdum>reorgs and You know, the Bitcoin Core user in the middle suffers. And so instead

00:25:51.200 --> 00:25:57.340
<v Aaron van Wirdum>of doing that live, I think it can be done sort of virtually through futures markets.

00:25:58.260 --> 00:26:03.240
<v Sjors Provoost>So basically you're selling, you have an exchange that sells two sides that

00:26:03.240 --> 00:26:08.760
<v Sjors Provoost>basically says, here's, you know, you deposit a Bitcoin now and it'll

00:26:08.760 --> 00:26:13.580
<v Sjors Provoost>tell you you'll get either, you'll get, I think you'll get both at first. You'll

00:26:13.580 --> 00:26:18.220
<v Sjors Provoost>get both back after the split and then it's up to the market to decide which

00:26:18.220 --> 00:26:20.000
<v Sjors Provoost>which half of that is worth more.

00:26:20.000 --> 00:26:20.380
<v Aaron van Wirdum>Yeah.

00:26:20.380 --> 00:26:22.280
<v Sjors Provoost>And this has been done by Bitfinex in the past.

00:26:22.280 --> 00:26:26.220
<v Aaron van Wirdum>Exactly, so you get both back after split. You get coins on both sides of splits,

00:26:26.220 --> 00:26:28.720
<v Aaron van Wirdum>but before the split you can trade between them.

00:26:28.720 --> 00:26:29.540
<v Sjors Provoost>Yeah.

00:26:29.540 --> 00:26:35.320
<v Aaron van Wirdum>So, and if you trade between them if I sell all my [unclear] coins for URSF

00:26:35.320 --> 00:26:40.300
<v Aaron van Wirdum>coins then I get two [unclear] coins and zero [unclear] coins after split yeah

00:26:40.300 --> 00:26:46.170
<v Aaron van Wirdum>right. So this way the market can figure out which option they think is

00:26:46.170 --> 00:26:50.710
<v Aaron van Wirdum>more valuable which which version of Bitcoin the market really wants. Do they

00:26:50.710 --> 00:26:54.110
<v Aaron van Wirdum>want the soft fork version, or do they want the version that rejected the

00:26:54.110 --> 00:26:58.930
<v Aaron van Wirdum>soft fork? And by allowing the market to figure this out before there's actually

00:26:58.930 --> 00:27:04.250
<v Aaron van Wirdum>chain split chaos miners can see all right users clearly want the soft fork

00:27:04.250 --> 00:27:08.290
<v Aaron van Wirdum>so we're just going to mine the soft fork because we want to make as much money

00:27:08.290 --> 00:27:09.210
<v Aaron van Wirdum>as possible. So that's what…

00:27:09.210 --> 00:27:13.500
<v Sjors Provoost>So miners will have to pick a side based on the market estimate and you get some

00:27:13.500 --> 00:27:14.340
<v Sjors Provoost>data from the market.

00:27:14.740 --> 00:27:20.360
<v Aaron van Wirdum>Exactly. So I think if the futures markets work as I expect them to, then there

00:27:20.360 --> 00:27:24.560
<v Aaron van Wirdum>won't actually be any re-arc chaos afterwards. If you're still worried about

00:27:24.560 --> 00:27:28.580
<v Aaron van Wirdum>that, you can still use the client you want, but this is sort of a way to

00:27:28.580 --> 00:27:33.300
<v Aaron van Wirdum>mitigate that extra risk that otherwise sort of neutral users that aren't aware

00:27:33.300 --> 00:27:37.300
<v Aaron van Wirdum>of what's going on might suffer. So you use futures markets for that and then the

00:27:37.300 --> 00:27:38.420
<v Aaron van Wirdum>miners can react to that.

00:27:38.560 --> 00:27:40.920
<v Sjors Provoost>So as much as I think futures markets are super cool,

00:27:42.710 --> 00:27:47.450
<v Sjors Provoost>I don't like the idea. And I guess I have roughly three reasons for that. But I

00:27:47.450 --> 00:27:48.970
<v Sjors Provoost>don't know if you wanted to finish something.

00:27:49.070 --> 00:27:51.250
<v Aaron van Wirdum>No, no, no, go ahead. I think that's sort of my case.

00:27:51.410 --> 00:27:56.090
<v Sjors Provoost>So one is this adds a whole bunch of complexity compared to what we have now. And

00:27:56.090 --> 00:28:01.810
<v Sjors Provoost>I don't want to say proof of stake complexity. But, you know, some complexity at

00:28:01.810 --> 00:28:05.530
<v Sjors Provoost>least. Because now it depends on how much market power you have and what happens

00:28:05.530 --> 00:28:11.420
<v Sjors Provoost>to the protocol. So the second is that personally I don't believe in... I

00:28:11.420 --> 00:28:15.740
<v Sjors Provoost>don't believe in the strong efficient market theory. So the idea of an efficient

00:28:15.740 --> 00:28:19.300
<v Sjors Provoost>market theory is that the markets, you know, the collective knowledge in the

00:28:19.300 --> 00:28:24.120
<v Sjors Provoost>market will know, well, collectively will be able to make a good prediction of

00:28:24.120 --> 00:28:27.640
<v Sjors Provoost>what's actually going to happen, taking everything into account. But my

00:28:27.640 --> 00:28:30.760
<v Sjors Provoost>impression is that, you know, the market very often does not take things into

00:28:30.760 --> 00:28:35.140
<v Sjors Provoost>account, especially black swan events. But I also think if they just don't

00:28:35.140 --> 00:28:37.700
<v Sjors Provoost>understand the subject matter, the market can be very, very wrong.

00:28:39.150 --> 00:28:43.610
<v Sjors Provoost>But even if it was, the question is whether the implementation of the market

00:28:43.610 --> 00:28:47.490
<v Sjors Provoost>would be correct. And if you're dealing with a very short-term soft fork

00:28:47.490 --> 00:28:49.990
<v Sjors Provoost>activation, though, of course, you could make the term longer.

00:28:50.130 --> 00:28:51.990
<v Aaron van Wirdum>I definitely think it should be at least a year.

00:28:52.150 --> 00:28:56.530
<v Sjors Provoost>Yeah, and probably more because if you look at, you know, somebody just sets up a

00:28:56.530 --> 00:28:59.810
<v Sjors Provoost>quick futures market like Bitfinex did, there's going to be discussions about

00:28:59.810 --> 00:29:03.590
<v Sjors Provoost>whether the market is fair. There's going to be a lot of discussions about market

00:29:03.590 --> 00:29:07.690
<v Sjors Provoost>manipulation. So that's kind of where I come up with my earlier argument, if the

00:29:07.690 --> 00:29:12.330
<v Sjors Provoost>future market is not super well structured it could be manipulated by people with

00:29:12.330 --> 00:29:15.070
<v Sjors Provoost>a lot of money to to push the result one way or the other.

00:29:15.070 --> 00:29:20.210
<v Aaron van Wirdum>Well I think with UASF versus URSF it's pretty clear right? You get paid on that

00:29:20.210 --> 00:29:22.350
<v Aaron van Wirdum>client the whatever chain that client…

00:29:22.350 --> 00:29:25.430
<v Sjors Provoost>Yeah but there's all sorts of shenanigans that the exchanges that are trading

00:29:25.430 --> 00:29:31.160
<v Sjors Provoost>these tokens can do right? They can manipulate the order book. It can

00:29:31.160 --> 00:29:35.900
<v Sjors Provoost>be people pushing money around. I mean every problem you have on an unregulated

00:29:35.900 --> 00:29:40.800
<v Sjors Provoost>exchange or commodities market you're going to have here. So eventually you can

00:29:40.800 --> 00:29:45.740
<v Sjors Provoost>iron all that out because the species has hundreds of years of experience with

00:29:45.740 --> 00:29:49.560
<v Sjors Provoost>how to set up a stock market and how to set up a securities market or a

00:29:49.560 --> 00:29:55.320
<v Sjors Provoost>commodities market. But then maybe we'd need like 10 years of SEC enforcement and

00:29:55.320 --> 00:30:00.140
<v Sjors Provoost>whatever to really get a proper... A proper futures market that is really

00:30:00.140 --> 00:30:03.260
<v Sjors Provoost>reliable. But maybe that's acceptable, right? Maybe we say, okay, we don't do

00:30:03.260 --> 00:30:06.680
<v Sjors Provoost>another soft fork for the next 10, 20 years while we figure out this futures

00:30:06.680 --> 00:30:11.540
<v Sjors Provoost>market thing and make sure it's completely fair. That could be. And maybe that

00:30:11.540 --> 00:30:13.800
<v Sjors Provoost>actually ends up happening over the long run anyway.

00:30:15.390 --> 00:30:19.330
<v Sjors Provoost>What was my third one? No, I think this was my third one. So my first argument

00:30:19.330 --> 00:30:25.140
<v Sjors Provoost>was, I think this adds complexity. Including you know giving power

00:30:25.140 --> 00:30:28.660
<v Sjors Provoost>to rich people. Okay the second I don't believe in efficient markets.

00:30:28.660 --> 00:30:30.820
<v Aaron van Wirdum>Let me respond to that live now. Oh, okay.

00:30:30.820 --> 00:30:33.360
<v Sjors Provoost>And then I just wanted to recap it but we…

00:30:33.360 --> 00:30:37.800
<v Aaron van Wirdum>Are recapping it. So your first argument is gives people to power to rich people.

00:30:37.800 --> 00:30:41.940
<v Aaron van Wirdum>So I I don't think that argument is very compelling, because there's nothing

00:30:41.940 --> 00:30:47.650
<v Aaron van Wirdum>really new about futures markets like right now you know the Winklevoss

00:30:47.650 --> 00:30:52.190
<v Aaron van Wirdum>twins and Michael Saylor or whoever could release an alt client, and then start

00:30:52.190 --> 00:30:57.590
<v Aaron van Wirdum>selling their Bitcoin and buying these alt coin or new Bitcoin version of it. The

00:30:57.590 --> 00:31:01.610
<v Aaron van Wirdum>only thing the future market does is sort of make that virtual instead of having

00:31:01.610 --> 00:31:06.890
<v Aaron van Wirdum>to do it live, that there's no actual difference other than that, if I don't see

00:31:06.890 --> 00:31:11.850
<v Aaron van Wirdum>any other difference. So it's there's nothing new going on here. It's not it's

00:31:11.850 --> 00:31:16.310
<v Aaron van Wirdum>not some sort of proof of stake kind of system where the rich get to vote. No

00:31:16.310 --> 00:31:19.690
<v Aaron van Wirdum>it's actual trading, like people actually trade in the same way that people

00:31:19.690 --> 00:31:25.070
<v Aaron van Wirdum>already trade between Bitcoin and altcoins and like it doesn't you know Michael

00:31:25.070 --> 00:31:29.710
<v Aaron van Wirdum>Saylor can decide to sell all his Bitcoin tomorrow and buy whatever shit coin he

00:31:29.710 --> 00:31:35.170
<v Aaron van Wirdum>wants. That's trading, so there's nothing new there in my view. And then your

00:31:35.170 --> 00:31:35.750
<v Aaron van Wirdum>second point?

00:31:37.210 --> 00:31:41.010
<v Sjors Provoost>Well, my second point was that I don't believe in general in the efficient market

00:31:41.010 --> 00:31:44.550
<v Sjors Provoost>hypothesis, at least a strong one. So that's difficult to debate here, I guess.

00:31:44.670 --> 00:31:47.770
<v Aaron van Wirdum>Yeah, that's difficult to debate. I just have a strong... I think it's just the

00:31:47.770 --> 00:31:50.170
<v Aaron van Wirdum>best we have, basically, and maybe you don't.

00:31:50.690 --> 00:31:53.550
<v Sjors Provoost>Well, I'm not saying it's not the best we have. I'm just saying it's not good enough.

00:31:54.120 --> 00:31:56.440
<v Aaron van Wirdum>But if it's the best we have, we should do it, right?

00:31:56.800 --> 00:32:01.140
<v Sjors Provoost>No, because we could just either stick to what we're doing with BIP9 and just

00:32:01.140 --> 00:32:05.300
<v Sjors Provoost>accept that it may be very difficult to get some soft forks through if miners

00:32:05.300 --> 00:32:06.240
<v Sjors Provoost>really don't like it.

00:32:06.760 --> 00:32:09.060
<v Aaron van Wirdum>Right. Yeah, remember that.

00:32:10.480 --> 00:32:10.960
<v Aaron van Wirdum>Again,

00:32:12.600 --> 00:32:18.500
<v Aaron van Wirdum>my points about futures market isn't an argument in favor of... Uh why I think

00:32:18.500 --> 00:32:22.980
<v Aaron van Wirdum>there should be UASF and URSF I think these that should be the case anyways I

00:32:22.980 --> 00:32:25.060
<v Aaron van Wirdum>just think a futures market is a way to make it safer.

00:32:26.340 --> 00:32:28.920
<v Aaron van Wirdum>Okay and then your third point?

00:32:29.550 --> 00:32:33.390
<v Sjors Provoost>My third point is that even if in theory a futures market could work in practice,

00:32:33.390 --> 00:32:37.150
<v Sjors Provoost>it's going to be very difficult to get it to work because of all the shenanigans

00:32:37.150 --> 00:32:38.610
<v Sjors Provoost>that can happen on markets.

00:32:38.790 --> 00:32:43.030
<v Aaron van Wirdum>I mean, that I probably agree with. Like in an ideal scenario, we all work

00:32:43.030 --> 00:32:46.990
<v Aaron van Wirdum>towards a future where we can do these kinds of things, trustless on Bitcoin with

00:32:46.990 --> 00:32:49.790
<v Aaron van Wirdum>smart contracts, or I don't know what that would look like, but that would be

00:32:49.790 --> 00:32:50.190
<v Aaron van Wirdum>ideal.

00:32:50.890 --> 00:32:54.830
<v Sjors Provoost>Maybe. I'm super skeptical about that because I think Bitcoin solves one specific

00:32:54.830 --> 00:32:59.770
<v Sjors Provoost>problem and I don't think blockchain technology, quote unquote, is useful for

00:32:59.770 --> 00:33:04.170
<v Sjors Provoost>something like a stock market I think some things are fine in centralized systems

00:33:04.230 --> 00:33:08.490
<v Aaron van Wirdum>Yeah I'm not going to think out loud of ways you could do this… I'm

00:33:08.490 --> 00:33:09.210
<v Sjors Provoost>No but

00:33:09.210 --> 00:33:14.170
<v Aaron van Wirdum>I it seems plausible to me that you could somehow lock bitcoins up in a certain

00:33:14.170 --> 00:33:19.130
<v Aaron van Wirdum>way and then only be able to unlock them anyways maybe. Um yeah so that was sort

00:33:19.130 --> 00:33:22.110
<v Aaron van Wirdum>of my point on futures markets which I'll say it for the third time.

00:33:23.700 --> 00:33:27.760
<v Aaron van Wirdum>That's not even an argument in favor of [unclear]. I think [unclear] should exist

00:33:27.760 --> 00:33:32.860
<v Aaron van Wirdum>either way and UASFs as well. I just think futures market would make it the

00:33:32.860 --> 00:33:34.340
<v Aaron van Wirdum>safest way to do it.

00:33:34.560 --> 00:33:38.920
<v Sjors Provoost>Yeah, exactly. But I think without the futures market, it would be super unsafe.

00:33:39.220 --> 00:33:43.320
<v Sjors Provoost>And with the futures market, it would be unsafe or something like that.

00:33:44.270 --> 00:33:47.170
<v Aaron van Wirdum>Yeah, I mean, you like miner vetoes. I can tell.

00:33:47.750 --> 00:33:53.130
<v Sjors Provoost>Yeah, I love miner vetoes. So maybe it is useful to talk about this concept of

00:33:53.130 --> 00:33:57.370
<v Sjors Provoost>rough consensus or even like what is supposed to happen under good circumstances

00:33:57.370 --> 00:33:58.370
<v Sjors Provoost>with protocol upgrades.

00:33:58.610 --> 00:33:58.930
<v Aaron van Wirdum>Yes.

00:33:59.110 --> 00:34:03.950
<v Sjors Provoost>Because it's a very good reminder that there was another way to do it, which has

00:34:03.950 --> 00:34:09.280
<v Sjors Provoost>worked a few times. So the idea of rough consensus is defined in some

00:34:09.280 --> 00:34:14.900
<v Sjors Provoost>Internet Engineering Task Force standard, which is a very hippie document. It

00:34:14.900 --> 00:34:18.580
<v Sjors Provoost>talks about humming and rough consensus, and it's definitely written by people in

00:34:18.580 --> 00:34:19.100
<v Sjors Provoost>San Francisco.

00:34:20.800 --> 00:34:26.700
<v Sjors Provoost>But the idea there is that when you make a new technical proposal, when you make

00:34:26.700 --> 00:34:31.720
<v Sjors Provoost>a proposal for a change, you're supposed to, well, first of all, you should spec

00:34:31.720 --> 00:34:35.480
<v Sjors Provoost>it out in a way that people can read it. You should write some working code that

00:34:35.480 --> 00:34:38.440
<v Sjors Provoost>actually does the thing that you're saying, so you don't have all these

00:34:38.440 --> 00:34:44.310
<v Sjors Provoost>pie-in-the-sky perpetual motion machines. And then other people should be

00:34:44.310 --> 00:34:48.160
<v Sjors Provoost>paying attention to it, should be reviewing it. And if they

00:34:48.160 --> 00:34:54.160
<v Sjors Provoost>don't have any objections, then you can go forward with it. If they do have

00:34:54.160 --> 00:34:58.000
<v Sjors Provoost>objections, and those objections are of a technical nature, not of a political,

00:34:58.000 --> 00:35:03.020
<v Sjors Provoost>like, I don't like the color green kind of nature, then you should address those

00:35:03.700 --> 00:35:07.960
<v Sjors Provoost>technical objections you should explain either why the objection is wrong, or you

00:35:07.960 --> 00:35:13.400
<v Sjors Provoost>should find a solution for that. And if you follow that process, it does kind of

00:35:13.400 --> 00:35:18.190
<v Sjors Provoost>mean that that proposals move forward by definition. Like there's no because

00:35:18.190 --> 00:35:23.280
<v Sjors Provoost>there's not really a way to stop these things from happening there so the things

00:35:23.280 --> 00:35:27.420
<v Sjors Provoost>may get stranded because there may be objections and you can't fix them, so then

00:35:27.420 --> 00:35:32.440
<v Sjors Provoost>the the proposal stops, and there may not be anybody willing to review your

00:35:32.440 --> 00:35:38.110
<v Sjors Provoost>proposal because people just don't care about it, in which case it stops. But if

00:35:38.110 --> 00:35:43.780
<v Sjors Provoost>enough people review it and they don't find problems with it, well, then I guess

00:35:43.780 --> 00:35:46.980
<v Sjors Provoost>within the current mechanism, you would then propose something like a BIP9

00:35:46.980 --> 00:35:52.580
<v Sjors Provoost>upgrade where miners can signal for it. And if they do signal for it, it just

00:35:52.580 --> 00:35:56.980
<v Sjors Provoost>happens. But notice that there's no mechanism [unclear] to politically say…

00:35:57.050 --> 00:36:01.720
<v Aaron van Wirdum>It could still also be UASF, right? UASF could make it through this process.

00:36:02.800 --> 00:36:06.780
<v Sjors Provoost>Yes, but what I'm saying is more like there's no obvious way how something will

00:36:06.780 --> 00:36:11.440
<v Sjors Provoost>be stopped other than to have an articulated technical reason why it should be stopped.

00:36:13.090 --> 00:36:17.550
<v Sjors Provoost>And so what is missing, you could say, maybe that's not good because we have seen

00:36:17.550 --> 00:36:21.050
<v Sjors Provoost>that miners can sort of randomly veto something if they don't like it, even if

00:36:21.050 --> 00:36:25.690
<v Sjors Provoost>they have no reason for it. But there's no way for users to veto something. And

00:36:25.690 --> 00:36:29.550
<v Sjors Provoost>so that could be another perspective of why something like a URSF could be

00:36:29.550 --> 00:36:33.830
<v Sjors Provoost>interesting, even if I'm skeptical about this proposal. But the idea could be

00:36:33.830 --> 00:36:39.810
<v Sjors Provoost>there could be soft forks that there's no technical objection to, yet for

00:36:39.810 --> 00:36:42.750
<v Sjors Provoost>some interesting political reason, we just don't want it.

00:36:43.300 --> 00:36:46.440
<v Aaron van Wirdum>Well, the other reason could, of course, be...

00:36:48.040 --> 00:36:52.580
<v Aaron van Wirdum>You know, like this is a good process or these are good principles, but

00:36:52.580 --> 00:36:57.000
<v Aaron van Wirdum>developers could still, you know, get lost in their own biases. They're still

00:36:57.000 --> 00:36:59.820
<v Aaron van Wirdum>humans. They could become corrupted.

00:37:00.180 --> 00:37:06.120
<v Sjors Provoost>That could be one scenario where developers indeed, yeah, they just go off on

00:37:06.120 --> 00:37:10.320
<v Sjors Provoost>a tangent. They come up with some software that nobody has a good technical

00:37:10.320 --> 00:37:14.740
<v Sjors Provoost>objection to, but actually nobody wants it either. Yeah, because something went

00:37:14.740 --> 00:37:18.030
<v Sjors Provoost>wrong with the developers. And then, yeah, the question is, what do you do about that?

00:37:19.380 --> 00:37:23.540
<v Sjors Provoost>One thing could be simply that nobody downloads it out of apathy, maybe.

00:37:24.760 --> 00:37:28.840
<v Sjors Provoost>But then because developers keep releasing new versions that also fix bugs, you

00:37:28.840 --> 00:37:31.920
<v Sjors Provoost>could get into a situation where you kind of have to.

00:37:33.140 --> 00:37:38.500
<v Sjors Provoost>And then there's not an obvious way to resist that. So I'm not saying that the

00:37:38.500 --> 00:37:39.400
<v Sjors Provoost>problem is unsolved.

00:37:40.460 --> 00:37:45.340
<v Aaron van Wirdum>I do like these are obviously good principles or at least they sound like

00:37:45.340 --> 00:37:50.780
<v Aaron van Wirdum>obviously good principles. I think I've personally become a bit less

00:37:50.780 --> 00:37:55.980
<v Aaron van Wirdum>worried about you know the concrete example would be an alt client that releases

00:37:55.980 --> 00:38:00.680
<v Aaron van Wirdum>in UASF outside of this process I've personally become a little less worried

00:38:00.680 --> 00:38:04.180
<v Aaron van Wirdum>about that, and the reason for that is what I just discussed is the futures

00:38:04.180 --> 00:38:08.620
<v Aaron van Wirdum>markets if someone thinks the process doesn't work well let them test it against

00:38:08.620 --> 00:38:11.940
<v Aaron van Wirdum>the market. If they're right the market will just reject it and there will never

00:38:11.940 --> 00:38:15.500
<v Aaron van Wirdum>be a split, and no miners will mine it right? Or maybe they're right and they

00:38:15.500 --> 00:38:21.360
<v Aaron van Wirdum>help Bitcoin forward and move past a broken process, but either way I'm I've

00:38:21.360 --> 00:38:26.730
<v Aaron van Wirdum>become noticeably less worried about alt clients, because I think right

00:38:26.730 --> 00:38:30.590
<v Aaron van Wirdum>hope but I think futures markets will sort of solve that problem.

00:38:30.590 --> 00:38:35.490
<v Sjors Provoost>Yeah but again yeah we we talked about that that hinges on on how much you trust

00:38:35.490 --> 00:38:38.370
<v Sjors Provoost>future markets as well as their specific implementations.

00:38:38.370 --> 00:38:39.430
<v Aaron van Wirdum>Market efficiency. Yeah.

00:38:39.430 --> 00:38:44.850
<v Sjors Provoost>Yeah, um and I maybe we can bring up I can bring up one more point which we did

00:38:44.850 --> 00:38:48.450
<v Sjors Provoost>talk about before. So far we've talked about rejecting a soft fork based on

00:38:48.450 --> 00:38:53.490
<v Sjors Provoost>signaling, so you you well we also talked about flag day but in this this

00:38:53.490 --> 00:38:59.280
<v Sjors Provoost>URSF concept, the idea is that you reject a signal for a soft fork, but there are

00:38:59.280 --> 00:39:03.440
<v Sjors Provoost>soft forks that don't have a signal. And flag days are one obvious example of

00:39:03.440 --> 00:39:08.400
<v Sjors Provoost>that, where there's simply nothing to reject because the new rules apply at this

00:39:08.400 --> 00:39:13.860
<v Sjors Provoost>date and there's nothing you can stop, basically. And another very

00:39:13.860 --> 00:39:18.320
<v Sjors Provoost>pernicious example of a soft fork that you can't stop this way would be like a

00:39:18.320 --> 00:39:24.250
<v Sjors Provoost>mandatory KYC miner whitelisting kind of thing where miners only mine blocks

00:39:24.250 --> 00:39:28.250
<v Sjors Provoost>that are compliant in some bizarre way. And there's nothing on the blockchain

00:39:28.250 --> 00:39:33.230
<v Sjors Provoost>that shows that they are. So there's nothing you can do then other than that you

00:39:33.230 --> 00:39:37.710
<v Sjors Provoost>would say, well, we mandate that certain transactions be in there. But that's a

00:39:37.710 --> 00:39:39.590
<v Sjors Provoost>really weird rule to have as a user.

00:39:42.610 --> 00:39:46.290
<v Sjors Provoost>So in general I would say there we don't really have a good way to reject

00:39:46.290 --> 00:39:50.910
<v Sjors Provoost>soft forks like maybe this could be a way to reject signaled soft forks.

00:39:50.910 --> 00:39:56.670
<v Aaron van Wirdum>Well so I think what you're describing now is a 51 percent attack,

00:39:56.670 --> 00:40:01.230
<v Aaron van Wirdum>and I guess yeah I guess sort of what we're discussing or the way I see it is you

00:40:01.230 --> 00:40:06.250
<v Aaron van Wirdum>know engineering principles like how should we do things? And yeah sure the

00:40:06.250 --> 00:40:11.820
<v Aaron van Wirdum>system can still be attacked in other ways but what should we strive for what

00:40:11.820 --> 00:40:14.140
<v Aaron van Wirdum>should we do if we want to upgrade the protocol?

00:40:14.380 --> 00:40:18.180
<v Sjors Provoost>It's true. I guess the difference between a 51% attack and a soft fork in the

00:40:18.180 --> 00:40:22.560
<v Sjors Provoost>example we talked about with KYC stuff is that as soon as the attack stops,

00:40:22.800 --> 00:40:26.360
<v Sjors Provoost>basically, the system reverts back to normal where all transactions are accepted

00:40:26.360 --> 00:40:30.860
<v Sjors Provoost>because nodes are not rejecting those transactions, only miners are. Whereas the

00:40:30.860 --> 00:40:35.100
<v Sjors Provoost>soft fork, the idea would be that it's permanent. After whether or not miners

00:40:35.100 --> 00:40:39.540
<v Sjors Provoost>signal at some point those rules have been enforced for a while and we can assume

00:40:39.540 --> 00:40:41.980
<v Sjors Provoost>that they'll always be enforced they're not going to be reverted.

00:40:41.980 --> 00:40:46.600
<v Aaron van Wirdum>Yeah I mean if we wanted to but I'm not sure if we want to, we

00:40:46.600 --> 00:40:52.040
<v Aaron van Wirdum>essentially this sort of gets to a philosophical discussion of what is even

00:40:52.040 --> 00:40:57.180
<v Aaron van Wirdum>Bitcoin? Like what what are the Bitcoin rules? What is a full node? Well and in

00:40:57.180 --> 00:41:02.800
<v Aaron van Wirdum>that sense like this is sort of how I would define it I guess uh you know if

00:41:04.020 --> 00:41:07.660
<v Sjors Provoost>I mean, you do not want to be the first person to run a hard fork that stops

00:41:07.660 --> 00:41:12.320
<v Sjors Provoost>enforcing SegWit, basically. So that's sort of a mechanism that keeps enforcing

00:41:12.320 --> 00:41:17.000
<v Sjors Provoost>the rules that are activated in a soft fork. But those rules would actually have

00:41:17.000 --> 00:41:20.140
<v Sjors Provoost>to be... Those rules are in the code, and they're in the code that miners run,

00:41:20.200 --> 00:41:23.880
<v Sjors Provoost>they're in the code that exchanges run, they're in the code that users run. And

00:41:23.880 --> 00:41:27.700
<v Sjors Provoost>if you want to be the first one to relax those rules, it's usually not a good

00:41:27.700 --> 00:41:29.380
<v Sjors Provoost>place, so you'd really have to organize that.

00:41:30.140 --> 00:41:35.080
<v Aaron van Wirdum>Yeah, well, what I was going to say is I would maybe even argue or

00:41:35.080 --> 00:41:40.960
<v Aaron van Wirdum>make the case that the way I would define the protocol upgrade is there

00:41:40.960 --> 00:41:45.380
<v Aaron van Wirdum>needs to be something on the blockchain that signals that and that can be

00:41:45.380 --> 00:41:50.900
<v Aaron van Wirdum>recognized as such so people can either upgrade to the new rules or reject it.

00:41:51.040 --> 00:41:53.440
<v Aaron van Wirdum>At this point, the discussion is getting philosophical.

00:41:54.030 --> 00:41:58.870
<v Sjors Provoost>Yeah, I mean, we've had soft forks without signaling, but I agree that signaling

00:41:58.870 --> 00:41:59.730
<v Sjors Provoost>is a good way to do it.

00:42:01.330 --> 00:42:06.050
<v Sjors Provoost>Okay, I think we've probably covered this concept, and the episode may be a

00:42:06.050 --> 00:42:08.470
<v Sjors Provoost>little bit confusing, but at the same time, hopefully interesting.

00:42:08.750 --> 00:42:10.190
<v Aaron van Wirdum>They usually are, I think, Sjors.

00:42:10.690 --> 00:42:14.570
<v Sjors Provoost>Well, sometimes we have a very clear concept that we're going to explain, and

00:42:14.570 --> 00:42:15.730
<v Sjors Provoost>it's a little bit less philosophical.

00:42:15.930 --> 00:42:17.610
<v Aaron van Wirdum>This was a bit different than usual, yeah.

00:42:18.740 --> 00:42:20.080
<v Sjors Provoost>Anyhow, that all.

00:42:20.280 --> 00:42:21.120
<v Aaron van Wirdum>I think that was it.

00:42:21.360 --> 00:42:24.760
<v Sjors Provoost>All right, then. Thank you for listening to Bitcoin Explained.

