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

00:00:07.060 --> 00:00:12.740
<v Aaron van Wirdum>Live from Utrecht, this is the Van Wirdum Sjorsnado. Hello. Sjors, welcome.

00:00:13.080 --> 00:00:13.620
<v Sjors Provoost>Thank you.

00:00:15.100 --> 00:00:18.300
<v Sjors Provoost>We're going to pretend that this is the first attempt at recording.

00:00:18.740 --> 00:00:22.580
<v Aaron van Wirdum>Nothing went wrong before this. Everything's been going fine so far. That's what

00:00:22.580 --> 00:00:23.540
<v Aaron van Wirdum>we're going to act like.

00:00:24.860 --> 00:00:30.600
<v Aaron van Wirdum>Yeah, okay, so for context, guys, I promised our listeners we're going to improve

00:00:30.600 --> 00:00:36.600
<v Aaron van Wirdum>the audio recording every episode. We've just spent, by now, 75

00:00:36.600 --> 00:00:42.260
<v Aaron van Wirdum>minutes trying to get the audio right. I think we finally managed a workable

00:00:42.260 --> 00:00:47.660
<v Aaron van Wirdum>solution. It's really unbelievable how hard it is to get this right. Either it's

00:00:47.660 --> 00:00:51.840
<v Aaron van Wirdum>just hard to get the software right, and then if we finally get the software

00:00:51.840 --> 00:00:56.170
<v Aaron van Wirdum>right, then I'll... Fuck something up for sure. And then we're not recording at

00:00:56.170 --> 00:01:01.250
<v Aaron van Wirdum>all. But I think at this point, Sjors, we got it right. We're in a

00:01:01.250 --> 00:01:06.850
<v Aaron van Wirdum>situation that it's working well enough that we can sort of

00:01:06.850 --> 00:01:07.270
<v Aaron van Wirdum>continue.

00:01:07.270 --> 00:01:09.690
<v Sjors Provoost>It's just a matter of pushing a button and everything works.

00:01:09.910 --> 00:01:15.650
<v Aaron van Wirdum>Okay, let's just go. Let's go. Let's go. Technical stuff, Sjors. Here we go. What

00:01:15.650 --> 00:01:19.230
<v Aaron van Wirdum>do you want to talk about? We're going to discuss Taproot. No, last week we

00:01:19.230 --> 00:01:24.460
<v Aaron van Wirdum>discussed Taproot. Yep. This week we're going to discuss Taproot activation, or

00:01:24.460 --> 00:01:29.520
<v Aaron van Wirdum>more generally, soft fork activation. This has become a topic again in the sort

00:01:29.520 --> 00:01:35.460
<v Aaron van Wirdum>of Bitcoin debate, community, public discourse.

00:01:36.490 --> 00:01:41.480
<v Aaron van Wirdum>How do we... activate soft forks because Taproot is getting to the point where

00:01:41.480 --> 00:01:47.400
<v Aaron van Wirdum>it's sort of you know ready to be deployed almost I think so now the next

00:01:47.400 --> 00:01:51.860
<v Aaron van Wirdum>question is okay how are we actually gonna activate this this has been an issue

00:01:51.860 --> 00:01:53.580
<v Aaron van Wirdum>in the past with several soft forks

00:01:55.970 --> 00:02:01.530
<v Aaron van Wirdum>And it came up in the mailing list, I think, a couple of months ago. And now it's

00:02:01.530 --> 00:02:07.270
<v Aaron van Wirdum>sort of re-emerged. There's now an IRC channel where it's being debated.

00:02:07.470 --> 00:02:10.970
<v Aaron van Wirdum>There's a Telegram channel. I wrote an article on it. It's back on the dev list.

00:02:13.620 --> 00:02:17.720
<v Sjors Provoost>yeah i read the whole irc channel no actually i started reading the irc channel i

00:02:17.720 --> 00:02:20.920
<v Sjors Provoost>got stuck at the meta discussion about whether or not there should be a telegram

00:02:20.920 --> 00:02:24.040
<v Sjors Provoost>channel and whether or not you need to ask permission and whether or not asking

00:02:24.040 --> 00:02:28.320
<v Sjors Provoost>permission was off topic in the irc channel and after an hour i gave up and you

00:02:28.320 --> 00:02:30.300
<v Sjors Provoost>spent your entire saturday i believe

00:02:30.300 --> 00:02:34.240
<v Aaron van Wirdum>i spent most of my saturday reading for all of the logs and sort of trying to

00:02:34.240 --> 00:02:39.780
<v Aaron van Wirdum>summarize it into an article yes yeah i i didn't read past saturday so if there

00:02:39.780 --> 00:02:44.260
<v Aaron van Wirdum>was any sort of big discussion or development since Saturday, I might be out of

00:02:44.260 --> 00:02:50.000
<v Aaron van Wirdum>the loop a little bit, but that wasn't really my impression. I think I covered

00:02:50.000 --> 00:02:53.420
<v Aaron van Wirdum>most of it, so I think we can cover most of it in the podcast as well.

00:02:53.640 --> 00:02:55.860
<v Sjors Provoost>So maybe we should say what a soft fork is.

00:02:55.860 --> 00:02:57.740
<v Aaron van Wirdum>Let's start there. What is a soft fork, Sjors?

00:02:58.100 --> 00:03:03.220
<v Sjors Provoost>So it's basically a tightening of the rules. An analogy I like to make is with

00:03:03.220 --> 00:03:06.240
<v Sjors Provoost>kosher food. I've made this analogy three times.

00:03:06.440 --> 00:03:09.500
<v Aaron van Wirdum>Yes, this is the third time you're making the analogy because we're recording

00:03:09.500 --> 00:03:14.000
<v Aaron van Wirdum>this start of the podcast for the first time, which is annoying. But let's just go on.

00:03:14.000 --> 00:03:17.880
<v Sjors Provoost>Basically, kosher food is a subset of regular food. So there's a few things you

00:03:17.880 --> 00:03:22.550
<v Sjors Provoost>don't eat. So often you might not notice it. There's a lot of soft drinks that

00:03:22.550 --> 00:03:26.150
<v Sjors Provoost>are kosher and you wouldn't know the difference. But sometimes you would know the

00:03:26.150 --> 00:03:29.130
<v Sjors Provoost>difference and that could be a problem. But with Bitcoin, there is no such

00:03:29.130 --> 00:03:34.050
<v Sjors Provoost>problem. Because the things that are no longer allowed after soft fork are very

00:03:34.050 --> 00:03:34.810
<v Sjors Provoost>stupid things.

00:03:35.210 --> 00:03:40.290
<v Aaron van Wirdum>So hang on. The thing you're saying is that soft fork is backwards compatible in

00:03:40.290 --> 00:03:43.550
<v Aaron van Wirdum>the context of Bitcoin. And the reason for that is like, let's say I go to a

00:03:43.550 --> 00:03:47.320
<v Aaron van Wirdum>restaurant every day because I love the food there. and then one day they

00:03:47.320 --> 00:03:53.030
<v Aaron van Wirdum>introduce kosher food and the food is still great I can still go there because I

00:03:53.030 --> 00:03:58.150
<v Aaron van Wirdum>don't care if it's kosher or not. So there's tighter rules. I didn't care about

00:03:58.150 --> 00:04:00.270
<v Aaron van Wirdum>whether or not it's kosher, so it's fine for me.

00:04:00.390 --> 00:04:04.490
<v Sjors Provoost>But you would if your favorite recipe was now kicked out of the restaurant.

00:04:04.690 --> 00:04:07.970
<v Aaron van Wirdum>I would care if they get bacon out of the...

00:04:07.970 --> 00:04:13.490
<v Sjors Provoost>Exactly. But this is not the case the way Bitcoin soft forks works. So they

00:04:13.490 --> 00:04:17.710
<v Sjors Provoost>wouldn't remove your bacon, basically. They would remove your ability to stab

00:04:17.710 --> 00:04:23.660
<v Sjors Provoost>yourself, basically. And so it's a nice and elegant way to make the rules more

00:04:23.660 --> 00:04:28.620
<v Sjors Provoost>strict without suddenly freezing anybody's coins. So normal people can keep using

00:04:28.620 --> 00:04:34.200
<v Sjors Provoost>it. They don't have to upgrade. They can keep using the old rules if they want to.

00:04:36.360 --> 00:04:41.920
<v Sjors Provoost>An exchange can basically ignore SegWit for years, and it's perfectly fine, as

00:04:41.920 --> 00:04:42.940
<v Sjors Provoost>far as the blockchain is concerned.

00:04:44.250 --> 00:04:47.370
<v Sjors Provoost>I guess we can talk about some examples.

00:04:49.470 --> 00:04:54.130
<v Sjors Provoost>So Satoshi introduced soft forks in the very beginning in a way that we wouldn't

00:04:54.130 --> 00:04:58.310
<v Sjors Provoost>do anymore. Basically, one of the things he did was introduce a one megabyte

00:04:58.310 --> 00:05:03.860
<v Sjors Provoost>limit. There was no limit. He realized that was bad, dangerous. So he put in the

00:05:03.860 --> 00:05:07.220
<v Sjors Provoost>limit. And then later on, when it was already active, he said, oh, by the way,

00:05:07.560 --> 00:05:08.280
<v Sjors Provoost>there's a limit.

00:05:08.730 --> 00:05:12.550
<v Aaron van Wirdum>Yeah, so that's an interesting example that I didn't mention in my article for

00:05:12.550 --> 00:05:17.770
<v Aaron van Wirdum>Bitcoin Magazine, which is... So, I mean, we're going to discuss how to implement

00:05:17.770 --> 00:05:21.570
<v Aaron van Wirdum>soft forks, how to upgrade the protocol. And one of the examples that Satoshi

00:05:21.570 --> 00:05:27.410
<v Aaron van Wirdum>used was to basically just snuck it in there. Yeah. And, you know, only once

00:05:27.410 --> 00:05:30.330
<v Aaron van Wirdum>people are running the code, they'll figure out that there's now one megabyte

00:05:30.330 --> 00:05:34.970
<v Aaron van Wirdum>limit. Right. Which worked at a time, I guess. And maybe it was even a good way

00:05:34.970 --> 00:05:40.950
<v Aaron van Wirdum>to do it because in his mind, he was probably fixing like an attack vector.

00:05:41.370 --> 00:05:45.410
<v Aaron van Wirdum>Yeah. And in that case, it made sense because you tell people about it and that

00:05:45.410 --> 00:05:48.390
<v Aaron van Wirdum>increases the chance of the attack vector being exploited.

00:05:48.870 --> 00:05:54.020
<v Sjors Provoost>Right. But it can also happen by accident. You accidentally add a rule to the

00:05:54.020 --> 00:05:57.620
<v Sjors Provoost>system that you didn't know was there. So that sort of stuff could happen, but

00:05:57.620 --> 00:06:00.160
<v Sjors Provoost>that's not what we're going to talk about. We're going to talk about a deliberate

00:06:00.160 --> 00:06:05.640
<v Sjors Provoost>change in the rules. And so the other way that was done when there was a new rule

00:06:05.640 --> 00:06:11.020
<v Sjors Provoost>was a flag day to say basically from this day forward, this new rule shall apply.

00:06:11.380 --> 00:06:15.920
<v Sjors Provoost>And you announce that plenty of time in advance and then people upgrade and it's all good.

00:06:16.220 --> 00:06:21.190
<v Aaron van Wirdum>Yeah. So you have to say like... One year from now, so that's like July

00:06:21.190 --> 00:06:26.630
<v Aaron van Wirdum>24th, when this is being published, I think. July

00:06:26.630 --> 00:06:32.370
<v Aaron van Wirdum>24th, 2021, that's when the new rules are enacted. Right. Or you say at

00:06:32.370 --> 00:06:37.310
<v Aaron van Wirdum>block height, I don't know, some block height in the future, at this point, the

00:06:37.310 --> 00:06:38.570
<v Aaron van Wirdum>new rule is enacted.

00:06:38.910 --> 00:06:44.890
<v Sjors Provoost>Yeah. But there was still a problem there. Which is that you want to

00:06:44.890 --> 00:06:48.630
<v Sjors Provoost>make sure that everybody's actually running the new software. And especially that

00:06:48.630 --> 00:06:51.870
<v Sjors Provoost>miners are running the new software. Because they kind of have to enforce those

00:06:51.870 --> 00:06:56.430
<v Sjors Provoost>new rules. I mean, it's nice if they, it's really nice if they enforce the new rules.

00:06:56.650 --> 00:07:00.890
<v Aaron van Wirdum>Well, everyone's enforcing the new rules. Or at least everyone who's upgraded is

00:07:00.890 --> 00:07:05.370
<v Aaron van Wirdum>enforcing the new rules. But if a majority of hash power does it, that means they

00:07:05.370 --> 00:07:09.750
<v Aaron van Wirdum>always reclaim the longest chain. Even for the non-upgraded nodes, like they

00:07:09.750 --> 00:07:14.880
<v Aaron van Wirdum>still consider that a valid chain so then everyone old and new nodes will

00:07:14.880 --> 00:07:18.840
<v Aaron van Wirdum>converge on this chain yeah that's why it's very nice if a majority hash power

00:07:18.840 --> 00:07:20.060
<v Aaron van Wirdum>enforces the rules as well

00:07:20.060 --> 00:07:25.360
<v Sjors Provoost>exactly and for miners there's a risk if they if you know a majority of miners

00:07:25.360 --> 00:07:29.380
<v Sjors Provoost>implement uh enforces the new rules but the minority doesn't they could

00:07:29.380 --> 00:07:30.720
<v Sjors Provoost>accidentally mine the wrong block

00:07:30.720 --> 00:07:34.940
<v Aaron van Wirdum>yeah the minority could mine an invalid block and then have their block orphaned

00:07:34.940 --> 00:07:37.700
<v Sjors Provoost>exactly they might not even know why if they're not upgraded

00:07:37.700 --> 00:07:38.520
<v Aaron van Wirdum>exactly so

00:07:38.520 --> 00:07:43.320
<v Sjors Provoost>it's nice that miners signal that they're ready to do this upgrade so that, you

00:07:43.320 --> 00:07:46.700
<v Sjors Provoost>know, you can get an idea, okay, most miners are clearly ready and a few miners

00:07:46.700 --> 00:07:49.140
<v Sjors Provoost>that are not, well, hopefully they'll be fine.

00:07:49.240 --> 00:07:54.800
<v Aaron van Wirdum>So that's sort of the other upgrade strategy apart from just stuffing it in there

00:07:54.800 --> 00:07:59.890
<v Aaron van Wirdum>without telling anyone. You have flag days and you have miner activation so

00:07:59.890 --> 00:08:05.670
<v Aaron van Wirdum>signaling so the signaling works as a coordination mechanism for the

00:08:05.670 --> 00:08:10.730
<v Aaron van Wirdum>network to figure out okay enough miners have upgraded now this signals to

00:08:10.730 --> 00:08:15.790
<v Aaron van Wirdum>everyone the network is ready and through this signaling mechanism a date or a

00:08:15.790 --> 00:08:20.770
<v Aaron van Wirdum>time or a block height is you know communicated essentially that's embedded in

00:08:20.770 --> 00:08:24.670
<v Aaron van Wirdum>the code that if enough signals are included in the blockchain then we all know

00:08:24.670 --> 00:08:28.530
<v Aaron van Wirdum>at block height x the new rules will go into effect.

00:08:28.810 --> 00:08:33.610
<v Sjors Provoost>Exactly. So usually it's every two weeks. You count the number of blocks that

00:08:33.610 --> 00:08:37.990
<v Sjors Provoost>have the signal. And if it's above a certain threshold, for example, 95%, then

00:08:37.990 --> 00:08:41.250
<v Sjors Provoost>you know that two weeks later, the new rule is active.

00:08:41.610 --> 00:08:46.090
<v Aaron van Wirdum>Yes, that was BIP9, which you're explaining now. The Bitcoin improvements

00:08:46.090 --> 00:08:51.880
<v Aaron van Wirdum>proposal 9. uses this difficulty period,

00:08:52.220 --> 00:08:53.360
<v Aaron van Wirdum>95%.

00:08:53.360 --> 00:08:57.520
<v Sjors Provoost>So these are the three main mechanisms, right? You can just randomly do this, you

00:08:57.520 --> 00:09:01.260
<v Sjors Provoost>can announce a date, and you can have miners signal up to a certain threshold.

00:09:01.600 --> 00:09:05.840
<v Sjors Provoost>And now the question is, what are you going to do for taproot, and what have we

00:09:05.840 --> 00:09:08.500
<v Sjors Provoost>done in the past? And maybe you want to combine some of these methods.

00:09:08.800 --> 00:09:11.300
<v Aaron van Wirdum>Yeah, well, should we mention why BIP9 is a problem?

00:09:13.100 --> 00:09:18.420
<v Sjors Provoost>Well, so BIP9 was used a couple of times to deploy some features, I believe.

00:09:19.420 --> 00:09:24.480
<v Sjors Provoost>But when it was time to deploy SegWit, it took a long time.

00:09:25.200 --> 00:09:30.100
<v Sjors Provoost>We don't know if it would have happened eventually, but at least for, I think, at

00:09:30.100 --> 00:09:35.100
<v Sjors Provoost>least half a year or so that the code was ready, it just didn't activate. Only a

00:09:35.100 --> 00:09:38.900
<v Sjors Provoost>small percentage of miners was signaling for it, or at least not the 95%.

00:09:38.900 --> 00:09:44.310
<v Aaron van Wirdum>Yes, but we have a pretty good idea why that was. I mean, at least the miners

00:09:44.310 --> 00:09:47.930
<v Aaron van Wirdum>that were blocking it were telling us why they were blocking it.

00:09:48.110 --> 00:09:52.890
<v Sjors Provoost>Yes, exactly. I mean, it's possible that some miners were just completely not

00:09:52.890 --> 00:09:57.430
<v Sjors Provoost>interested. Yes, that's all. There was definitely miners that were actively not

00:09:57.430 --> 00:09:58.250
<v Sjors Provoost>signaling it.

00:09:58.250 --> 00:10:02.270
<v Aaron van Wirdum>Yeah, miner apathy. That was probably a factor for at least some miners. Sure.

00:10:02.910 --> 00:10:07.110
<v Sjors Provoost>So what happened then is a number of different things happened outside the

00:10:07.110 --> 00:10:11.030
<v Sjors Provoost>blockchain. There was basically a group of people that said, hey, you know what?

00:10:11.390 --> 00:10:14.350
<v Sjors Provoost>We're just going to, instead of the signaling, we're just going to go back to the

00:10:14.350 --> 00:10:19.870
<v Sjors Provoost>old flag day approach. And that was called BIP-148. So they picked April 1st,

00:10:19.970 --> 00:10:24.790
<v Sjors Provoost>2017 and basically said, well, our nodes are now going to enforce these rules.

00:10:25.790 --> 00:10:31.770
<v Aaron van Wirdum>Yeah, but hang on. So to explain this real quick, the downside of BIP

00:10:31.770 --> 00:10:35.750
<v Aaron van Wirdum>-9 was that miners were blocking the upgrade because they wanted either political

00:10:35.750 --> 00:10:40.920
<v Aaron van Wirdum>leverage or they were secretly benefiting. from something that the upgrade would

00:10:40.920 --> 00:10:45.180
<v Aaron van Wirdum>have fixed without telling anyone that that was the case or both like but there

00:10:45.180 --> 00:10:50.460
<v Aaron van Wirdum>were bad reasons basically for the miners to block this upgrade and this made

00:10:50.460 --> 00:10:55.440
<v Aaron van Wirdum>Bitcoin Core developers and other Bitcoiners realize that okay there's actually

00:10:55.440 --> 00:11:01.220
<v Aaron van Wirdum>kind of a downside to BIP9 because it gives miners this leverage which they

00:11:01.220 --> 00:11:05.390
<v Aaron van Wirdum>shouldn't have at all like they're treating it like a vote. And they're sort of

00:11:05.390 --> 00:11:10.910
<v Aaron van Wirdum>abusing their vote in ways that's bad. While it's not even meant to be a vote,

00:11:10.930 --> 00:11:12.810
<v Aaron van Wirdum>it's just meant to be a coordination mechanism.

00:11:13.050 --> 00:11:18.650
<v Sjors Provoost>Exactly. And also the reasons why you might want to oppose a proposal

00:11:18.650 --> 00:11:23.730
<v Sjors Provoost>generally should be technical in nature and not political. Yes.

00:11:24.920 --> 00:11:26.220
<v Sjors Provoost>So, I guess that.

00:11:26.380 --> 00:11:31.080
<v Aaron van Wirdum>Yeah, so ultimately, and this is what you were getting at, this was resolved in

00:11:31.080 --> 00:11:35.780
<v Aaron van Wirdum>some way or another, and there's still debate to this day how it was resolved

00:11:35.780 --> 00:11:36.880
<v Aaron van Wirdum>exactly. Right,

00:11:37.140 --> 00:11:41.980
<v Sjors Provoost>because two things happened at the same time, right? You had the BIP-148 UASF

00:11:41.980 --> 00:11:44.640
<v Sjors Provoost>rules, the guys with the guns and the nodes.

00:11:45.420 --> 00:11:48.120
<v Aaron van Wirdum>Or with the hats. I don't think they had guns, but they had hats.

00:11:48.140 --> 00:11:48.800
<v Sjors Provoost>One of them had guns.

00:11:49.690 --> 00:11:53.110
<v Aaron van Wirdum>Oh, yeah. Yeah, that's true. I think they were like...

00:11:53.110 --> 00:11:54.290
<v Sjors Provoost>Defending the Bitcoin.

00:11:54.510 --> 00:11:58.050
<v Aaron van Wirdum>Yes, that's true. That's true. And I think Tone Vays had like a knife.

00:11:58.530 --> 00:12:03.170
<v Sjors Provoost>And... And so then the question is, you know, you can tell if you read all the

00:12:03.170 --> 00:12:07.650
<v Sjors Provoost>social media and the mailing list that that obviously played a role. But if you

00:12:07.650 --> 00:12:12.570
<v Sjors Provoost>just look at the blockchain, you can't really tell because what you see on the

00:12:12.570 --> 00:12:17.250
<v Sjors Provoost>blockchain is all of a sudden 95% started signaling and the thing activated.

00:12:17.590 --> 00:12:21.690
<v Sjors Provoost>Sure. Now, it's, of course, very remarkable that this activated exactly before

00:12:21.690 --> 00:12:26.350
<v Sjors Provoost>August 1st and not some random other date that it could have happened. But there

00:12:26.350 --> 00:12:30.470
<v Sjors Provoost>were no blocks rejected that we could still point at saying, hey, look, there was

00:12:30.470 --> 00:12:35.810
<v Sjors Provoost>actually a fight between miners, etc. At the same time, there was an initiative

00:12:35.810 --> 00:12:40.750
<v Sjors Provoost>from the New York Agreement Group. And they had a whole bunch of things that they

00:12:40.750 --> 00:12:46.610
<v Sjors Provoost>were planning to do. But one thing they were doing is called BIP 91. And they

00:12:46.610 --> 00:12:50.750
<v Sjors Provoost>would basically lower the threshold. So they said instead of having 95%, we're

00:12:50.750 --> 00:12:52.070
<v Sjors Provoost>just going to accept 75%.

00:12:53.400 --> 00:12:58.960
<v Aaron van Wirdum>Yeah, well, to be a little bit more precise, what they did in the end was use

00:12:58.960 --> 00:13:04.840
<v Aaron van Wirdum>75% forced signaling. So it was like BIP-148, but it

00:13:04.840 --> 00:13:08.040
<v Aaron van Wirdum>was like a soft fork to activate a soft fork.

00:13:08.240 --> 00:13:13.770
<v Sjors Provoost>Yeah, so basically you had to signal that you were going to act... that you were

00:13:13.770 --> 00:13:14.810
<v Sjors Provoost>going to activate the soft fork.

00:13:15.170 --> 00:13:15.330
<v Aaron van Wirdum>Yes.

00:13:15.590 --> 00:13:18.790
<v Sjors Provoost>And then because there was more signaling, it would activate. But that, again,

00:13:19.010 --> 00:13:22.330
<v Sjors Provoost>you cannot tell from the chain because immediately people started signaling at

00:13:22.330 --> 00:13:26.510
<v Sjors Provoost>95%. And so that's the nice thing about these kind of situations. You can't

00:13:26.510 --> 00:13:30.430
<v Sjors Provoost>really tell what happened. It didn't go wrong. Nobody called each other's bluff.

00:13:31.530 --> 00:13:35.470
<v Aaron van Wirdum>Yes, and I think everyone agrees that it was at least sort of a tense period.

00:13:37.290 --> 00:13:43.110
<v Aaron van Wirdum>It showed everyone that maybe we've got to rethink

00:13:43.110 --> 00:13:46.790
<v Aaron van Wirdum>how we're actually going to do soft forks because this was very close to becoming

00:13:46.790 --> 00:13:47.870
<v Aaron van Wirdum>a huge mess.

00:13:48.110 --> 00:13:51.310
<v Sjors Provoost>If you think through the worst case scenarios, which I guess we'll just avoid now

00:13:51.310 --> 00:13:55.470
<v Sjors Provoost>because it'll get too confusing, but if you have chain splits, and especially if

00:13:55.470 --> 00:13:59.320
<v Sjors Provoost>you have multiple chain splits with people... people having different opinions

00:13:59.320 --> 00:14:02.760
<v Sjors Provoost>about what the blockchain should be that kind of defeats the purpose of a well

00:14:02.760 --> 00:14:04.880
<v Sjors Provoost>-functioning blockchain so it's something you want to avoid

00:14:04.940 --> 00:14:10.800
<v Aaron van Wirdum>yes yes and let's skip the details but it would have um there

00:14:10.800 --> 00:14:15.420
<v Aaron van Wirdum>was a risk of it becoming a pretty big mess i think that we we both agree on

00:14:15.420 --> 00:14:19.260
<v Sjors Provoost>I was worried for quite a while it would be an absolute clusterfuck. yes

00:14:19.260 --> 00:14:24.830
<v Aaron van Wirdum>so new ideas how are we gonna How are we going to think about soft forks

00:14:24.830 --> 00:14:26.950
<v Aaron van Wirdum>and soft fork activation from now on?

00:14:27.190 --> 00:14:32.690
<v Sjors Provoost>Well, one thing that was done is a proposal, a revamped proposal called BIP-8.

00:14:33.070 --> 00:14:37.990
<v Sjors Provoost>And yes, that's a lower number because the proposal was older, but now it's

00:14:37.990 --> 00:14:42.960
<v Sjors Provoost>actually newer. So that is confusing. But generally, there were just a couple of

00:14:42.960 --> 00:14:48.800
<v Sjors Provoost>improvements to the original mechanism. Maybe not super interesting. For

00:14:48.800 --> 00:14:51.780
<v Sjors Provoost>example, using blocks instead of dates.

00:14:52.040 --> 00:14:54.000
<v Aaron van Wirdum>Well, explain what BIP8 is in the first place.

00:14:55.080 --> 00:14:58.380
<v Sjors Provoost>Well, BIP8 was, I think, just a flag date proposal.

00:14:58.740 --> 00:15:00.800
<v Aaron van Wirdum>Was it originally just a flag date?

00:15:00.960 --> 00:15:01.560
<v Sjors Provoost>Yeah, I think so.

00:15:01.780 --> 00:15:06.540
<v Aaron van Wirdum>Okay, but later it was definitely, like the idea was that it was... A combination

00:15:06.540 --> 00:15:08.940
<v Aaron van Wirdum>of BIP9 and a flag date, basically.

00:15:09.320 --> 00:15:11.980
<v Sjors Provoost>Right, so what it is now, at least, that's probably the most useful thing to

00:15:11.980 --> 00:15:17.660
<v Sjors Provoost>describe, is the signaling is still there with some tweaks, but there is also a

00:15:17.660 --> 00:15:19.340
<v Sjors Provoost>built-in option to have a flag date.

00:15:19.740 --> 00:15:20.120
<v Aaron van Wirdum>And

00:15:20.120 --> 00:15:26.080
<v Sjors Provoost>now BIP is just a sort of a proposal of how you could do things. And so you

00:15:26.080 --> 00:15:29.820
<v Sjors Provoost>could use the flag date or you could not use the flag date. But the proposal now

00:15:29.820 --> 00:15:33.720
<v Sjors Provoost>explains, okay, if you have a flag date, this is how you do it. And it's a one

00:15:33.720 --> 00:15:39.520
<v Sjors Provoost>-way mechanism. So you could propose a new soft fork and not set a flag

00:15:39.520 --> 00:15:44.040
<v Sjors Provoost>date and then later on set a flag date. But you cannot

00:15:44.040 --> 00:15:49.550
<v Sjors Provoost>propose a flag date and then unset it, basically. So if you decide on a flag

00:15:49.550 --> 00:15:50.670
<v Sjors Provoost>date, you better go through with it.

00:15:51.680 --> 00:15:55.480
<v Aaron van Wirdum>Well, you can release a new client that doesn't have the flag date, of course.

00:15:55.700 --> 00:15:56.800
<v Sjors Provoost>Yeah, but now you have a mess.

00:15:57.980 --> 00:16:02.620
<v Aaron van Wirdum>Well, one of the nice things about BIP-8 is actually that

00:16:02.620 --> 00:16:08.570
<v Aaron van Wirdum>it doesn't have a flag date purely. It has a

00:16:08.570 --> 00:16:14.410
<v Aaron van Wirdum>force signaling deadline. So it's kind of like BIP-148 before,

00:16:14.630 --> 00:16:19.170
<v Aaron van Wirdum>where... If you have the flag date on, so let's just call it the flag date for

00:16:19.170 --> 00:16:24.410
<v Aaron van Wirdum>now, then it doesn't mean that it activates the soft fork itself. It means

00:16:24.410 --> 00:16:30.050
<v Aaron van Wirdum>that... If near the end, any block that's not mining

00:16:30.050 --> 00:16:35.830
<v Aaron van Wirdum>activation, not mining support for the soft fork, that block will be orphaned.

00:16:36.350 --> 00:16:41.970
<v Aaron van Wirdum>So it forces signaling towards the end. So this means that if you have two

00:16:41.970 --> 00:16:47.550
<v Aaron van Wirdum>groups of BIP8 nodes, one of them has the force signaling on and one of them has

00:16:47.550 --> 00:16:52.620
<v Aaron van Wirdum>the force signaling off. But miners go along with the force signaling on. then

00:16:52.620 --> 00:16:56.200
<v Aaron van Wirdum>the nodes that have forced signaling off will still accept the soft fork because

00:16:56.200 --> 00:16:58.200
<v Aaron van Wirdum>they're still seeing...

00:16:58.200 --> 00:16:58.900
<v Sjors Provoost>They're still seeing the signaling.

00:16:59.120 --> 00:17:05.040
<v Aaron van Wirdum>Yes, exactly. So that's a slight change from previous BIP-8.

00:17:05.480 --> 00:17:11.240
<v Sjors Provoost>Yeah. And I forgot whether... I think you still need to... If you have a

00:17:11.240 --> 00:17:14.940
<v Sjors Provoost>flag date in mind, you may still need to put it in there because you don't want

00:17:14.940 --> 00:17:19.640
<v Sjors Provoost>different people to have different flag dates. So I guess it doesn't matter if

00:17:19.640 --> 00:17:24.170
<v Sjors Provoost>you force signaling, but... It just becomes a mess because if you force people to

00:17:24.170 --> 00:17:29.990
<v Sjors Provoost>signal and then they don't signal and you just decide to not accept all their

00:17:29.990 --> 00:17:35.630
<v Sjors Provoost>blocks, if only a small number of people do that, then you still get a mess. So

00:17:35.630 --> 00:17:39.430
<v Sjors Provoost>I don't think it's completely thought out, but it's definitely... You probably

00:17:39.430 --> 00:17:42.650
<v Sjors Provoost>still want to have some consensus. If you decide on the flag date, you want to

00:17:42.650 --> 00:17:46.770
<v Sjors Provoost>have a very large consensus on what that flag date is and that really everybody

00:17:46.770 --> 00:17:47.570
<v Sjors Provoost>goes along with it.

00:17:48.620 --> 00:17:54.480
<v Aaron van Wirdum>but maybe i mean it depends right like if even if you don't have consensus but

00:17:54.480 --> 00:18:00.260
<v Aaron van Wirdum>at least miners don't don't want to see splits or they like it they could play it

00:18:00.260 --> 00:18:04.350
<v Aaron van Wirdum>safe. that's sort of how BIP 148 happens right

00:18:04.350 --> 00:18:09.370
<v Sjors Provoost>yeah but now imagine if you had two different like one you had the august 1 group

00:18:09.370 --> 00:18:14.960
<v Sjors Provoost>and you had the august 15 group And maybe it didn't activate at August 1, but

00:18:14.960 --> 00:18:18.940
<v Sjors Provoost>some major exchanges decided to join the August 1 group, and some other major

00:18:18.940 --> 00:18:23.720
<v Sjors Provoost>exchanges decided to join the August 15 group. So it would still be a mess.

00:18:24.080 --> 00:18:27.900
<v Aaron van Wirdum>Yes, the assumption is that in that case, or the hope is that in that case,

00:18:28.060 --> 00:18:31.560
<v Aaron van Wirdum>miners just go for the August 1 one, so they don't split the network.

00:18:31.760 --> 00:18:35.520
<v Sjors Provoost>That's one option. But I think at least an improvement here is that, let's say

00:18:35.520 --> 00:18:36.700
<v Sjors Provoost>you just have miner apathy.

00:18:38.220 --> 00:18:43.200
<v Sjors Provoost>You thought you can get 95% signaling, but there's apathy. You can have another

00:18:43.200 --> 00:18:46.460
<v Sjors Provoost>discussion on mailing lists, and everybody says, yeah, yeah, we're fine with this

00:18:46.460 --> 00:18:50.880
<v Sjors Provoost>upgrade, and no miners objecting to it. They're just not bothering to upgrade

00:18:50.880 --> 00:18:56.880
<v Sjors Provoost>their software to signal. Then you can calmly agree on a date as a flag date and

00:18:56.880 --> 00:19:01.760
<v Sjors Provoost>just calmly add it, and there's not going to be too much chaos. But you still

00:19:01.760 --> 00:19:04.180
<v Sjors Provoost>have the problem of the miners not enforcing the rules.

00:19:05.150 --> 00:19:10.090
<v Aaron van Wirdum>okay so i think these are sort of the basics of BIP 8 and the next

00:19:10.090 --> 00:19:15.230
<v Aaron van Wirdum>thing is that you can sort of play around with the parameters in all sorts of way

00:19:15.230 --> 00:19:20.990
<v Aaron van Wirdum>so we've already mentioned with or without flag day and the flag day in turn

00:19:20.990 --> 00:19:26.420
<v Aaron van Wirdum>can be an actual flag day or force signaling then you can play around with like a

00:19:26.420 --> 00:19:31.200
<v Aaron van Wirdum>parameter of how long how far into the future should this flag day be yeah you

00:19:31.200 --> 00:19:37.020
<v Aaron van Wirdum>can play with the parameter of how much hash power do you need so so far we've

00:19:37.020 --> 00:19:43.000
<v Aaron van Wirdum>mentioned 95% but you could lower this you could say 75% is enough 50%

00:19:43.000 --> 00:19:48.130
<v Aaron van Wirdum>is enough even one percent is enough you could potentially do that right yeah

00:19:48.130 --> 00:19:49.810
<v Sjors Provoost>that's pretty useless but you could yeah

00:19:49.810 --> 00:19:54.090
<v Aaron van Wirdum>i i agree but like the point is you can play around with this parameters in all

00:19:54.090 --> 00:19:57.910
<v Aaron van Wirdum>sorts of ways so now you sort of have pieces of the puzzle and then you can think

00:19:57.910 --> 00:20:03.670
<v Aaron van Wirdum>of ways to put these pieces together to come up with like a concrete

00:20:03.670 --> 00:20:08.250
<v Aaron van Wirdum>activation strategy that we're going to use for taproot yeah but you

00:20:08.250 --> 00:20:12.370
<v Sjors Provoost>can also imagine that there's going to be a lot of permutations and so this could

00:20:12.670 --> 00:20:14.950
<v Sjors Provoost>It could be a bike-shedding nightmare. Yes.

00:20:16.940 --> 00:20:22.560
<v Aaron van Wirdum>Yes, it could. But shall we cover some of them? Some of the sort of general ideas

00:20:22.560 --> 00:20:23.480
<v Aaron van Wirdum>that are floating around?

00:20:23.720 --> 00:20:24.000
<v Sjors Provoost>Yeah, sure.

00:20:24.720 --> 00:20:27.840
<v Aaron van Wirdum>Okay, so one idea that has been proposed by Matt Corallo,

00:20:29.140 --> 00:20:34.800
<v Aaron van Wirdum>a well-known core contributor, he calls it modern soft fork activation.

00:20:35.950 --> 00:20:41.950
<v Aaron van Wirdum>So what he proposes is, let's use BIP-8 without forced signaling

00:20:41.950 --> 00:20:46.530
<v Aaron van Wirdum>on the end or without forced activation on the end for a year. So that's more

00:20:46.530 --> 00:20:52.490
<v Aaron van Wirdum>like BIP-9. That's what we used to do. See if miners activate it, just

00:20:52.490 --> 00:20:57.330
<v Aaron van Wirdum>requiring a 95% hash power support threshold.

00:20:57.970 --> 00:21:03.380
<v Aaron van Wirdum>Let's see if they do it or not. If they do it, great,

00:21:03.920 --> 00:21:08.680
<v Aaron van Wirdum>soft fork has been activated. If they don't, then phase two of this proposal

00:21:08.680 --> 00:21:13.960
<v Aaron van Wirdum>comes into play, which is six months of developer

00:21:13.960 --> 00:21:19.740
<v Aaron van Wirdum>reconsideration. So developers see if there was a good reason for

00:21:19.740 --> 00:21:24.310
<v Aaron van Wirdum>miners to block it. Maybe there was a problem with a proposal, in this case,

00:21:24.330 --> 00:21:29.710
<v Aaron van Wirdum>Taproot, that they hadn't considered before. So developers are just going to sort

00:21:29.710 --> 00:21:34.930
<v Aaron van Wirdum>of reconsider. If after six months they haven't found anything wrong with the

00:21:34.930 --> 00:21:39.610
<v Aaron van Wirdum>proposal and they concluded that, okay, it's actually just miner apathy or miner—

00:21:39.610 --> 00:21:44.730
<v Aaron van Wirdum>miners, you know, trying something or whatever, like no good reason, then we're

00:21:44.730 --> 00:21:50.320
<v Aaron van Wirdum>going to deploy it again. This time, you know, BIP8 with...

00:21:50.300 --> 00:21:52.740
<v Aaron van Wirdum>Either force signaling or...

00:21:52.740 --> 00:21:54.870
<v Sjors Provoost>With a flag day.

00:21:55.030 --> 00:21:59.710
<v Aaron van Wirdum>Flag day on the end. I think Matt's original idea was flag day on the end, but

00:21:59.710 --> 00:22:02.230
<v Aaron van Wirdum>he's probably open to force signaling, I would imagine.

00:22:02.450 --> 00:22:05.990
<v Sjors Provoost>I mean, the question is, if you have a flag day, what do you do on the flag day?

00:22:06.210 --> 00:22:09.730
<v Sjors Provoost>And one thing you can do with a flag day is enforce the soft fork, and the other

00:22:09.730 --> 00:22:13.210
<v Sjors Provoost>is you can force the signaling, which then triggers the soft fork. Well, exactly.

00:22:13.390 --> 00:22:18.000
<v Sjors Provoost>So I don't think that's more of a detail. And it's probably not controversial to

00:22:18.000 --> 00:22:20.480
<v Sjors Provoost>force the signaling instead of forcing the soft fork.

00:22:20.600 --> 00:22:22.300
<v Aaron van Wirdum>Yeah, I think that wouldn't be very controversial.

00:22:22.600 --> 00:22:24.860
<v Sjors Provoost>It just makes it more compatible with what other people are doing.

00:22:25.040 --> 00:22:29.560
<v Aaron van Wirdum>Yes, exactly. So that would probably be, yeah. Okay, so that's one idea.

00:22:31.080 --> 00:22:36.980
<v Aaron van Wirdum>It has, you know, the benefits of sort of taking it easy and reconsidering

00:22:36.980 --> 00:22:40.440
<v Aaron van Wirdum>if there's maybe something wrong with the proposal. And if there is something

00:22:40.440 --> 00:22:44.470
<v Aaron van Wirdum>wrong with the proposal, then people don't have to actually... need to upgrade

00:22:44.470 --> 00:22:47.670
<v Aaron van Wirdum>their software they can just you know keep running whatever they were running

00:22:47.670 --> 00:22:52.270
<v Aaron van Wirdum>yeah because um there was a timeout anyway in the software it just didn't happen

00:22:52.270 --> 00:22:57.250
<v Aaron van Wirdum>and it's sort of fine there's no no sort of emergency upgrades needed at all or

00:22:57.250 --> 00:23:02.930
<v Aaron van Wirdum>anything like that yeah um the downside is that if miners don't cooperate it's

00:23:02.930 --> 00:23:08.130
<v Aaron van Wirdum>going to take a long time before the soft fork actually is live on network like

00:23:08.130 --> 00:23:12.740
<v Aaron van Wirdum>three and a half years yeah So that means app developers have to wait three and a

00:23:12.740 --> 00:23:17.880
<v Aaron van Wirdum>half years. Everyone's just sort of stuck waiting for three and a half years for

00:23:17.880 --> 00:23:22.100
<v Aaron van Wirdum>basically no good reason. So that's why some people really don't like this

00:23:22.100 --> 00:23:22.540
<v Aaron van Wirdum>proposal.

00:23:22.960 --> 00:23:23.140
<v Sjors Provoost>Yeah.

00:23:23.520 --> 00:23:24.200
<v Aaron van Wirdum>What do you think?

00:23:24.500 --> 00:23:28.680
<v Sjors Provoost>Well, you've got to think in the long run, right? So it's nice if you can have

00:23:28.680 --> 00:23:33.560
<v Sjors Provoost>these improvements shipped very quickly. But if there is a tradition that

00:23:33.560 --> 00:23:38.400
<v Sjors Provoost>developers decide on a soft fork and it gets activated quickly, well then...

00:23:38.880 --> 00:23:42.680
<v Sjors Provoost>Maybe a government starts calling developers and saying, hey, we have this KYC

00:23:42.680 --> 00:23:47.580
<v Sjors Provoost>soft fork. And since nobody really pays attention and miners run anything you

00:23:47.580 --> 00:23:51.920
<v Sjors Provoost>want, why don't you just make that soft fork and don't worry about the review

00:23:51.920 --> 00:23:56.020
<v Sjors Provoost>process? So you don't want to put too much power in the hands of the developers.

00:23:56.020 --> 00:23:59.180
<v Sjors Provoost>They don't want that kind of power because it means they're going to get very

00:23:59.180 --> 00:24:01.080
<v Sjors Provoost>unpleasant phone calls at some point.

00:24:02.730 --> 00:24:06.850
<v Sjors Provoost>You know, it's a difficult trade-off because on the time scale of 200 years, it

00:24:06.850 --> 00:24:10.810
<v Sjors Provoost>really doesn't matter if the soft fork takes three years longer. But we have no

00:24:10.810 --> 00:24:14.310
<v Sjors Provoost>idea what the right time is. You know, maybe it makes no difference for this

00:24:14.310 --> 00:24:18.910
<v Sjors Provoost>political problem. It might really just be wasting three years. Or it's really

00:24:18.910 --> 00:24:20.490
<v Sjors Provoost>important to make sure there's no problem.

00:24:22.130 --> 00:24:26.990
<v Sjors Provoost>So I'd like to see it deployed soon and hopefully miners are excited. But it's

00:24:26.990 --> 00:24:31.150
<v Sjors Provoost>going to get more and more difficult to deploy these things in general because if

00:24:31.150 --> 00:24:35.490
<v Sjors Provoost>you get, and we want that, lots and lots of very small individual mining pools,

00:24:35.710 --> 00:24:39.870
<v Sjors Provoost>well, trying to get 95% even just to communicate to them is going to be harder.

00:24:40.670 --> 00:24:43.610
<v Sjors Provoost>And that's a good thing, but it could slow things down very.

00:24:43.990 --> 00:24:49.830
<v Aaron van Wirdum>Sure. So another idea is BIP-8. um let's say with like a year

00:24:49.830 --> 00:24:55.410
<v Aaron van Wirdum>deadline at which time force signaling happens almost kind of like a basic

00:24:55.410 --> 00:25:01.030
<v Aaron van Wirdum>proposal would it be so to first ask you about that do you think that's too fast

00:25:01.030 --> 00:25:01.690
<v Aaron van Wirdum>one year

00:25:01.690 --> 00:25:07.610
<v Sjors Provoost>so my problem with the force signal is if you if you [unclear] if you ship this

00:25:07.610 --> 00:25:11.690
<v Sjors Provoost>thing and you say okay miners can signal for it but but if they don't it's going

00:25:11.690 --> 00:25:17.560
<v Sjors Provoost>to activate you kind of lock yourself into that outcome, there's no real way to

00:25:17.560 --> 00:25:22.540
<v Sjors Provoost>object anymore. Because even if people have, if miners come up and say, hey, wait

00:25:22.540 --> 00:25:25.920
<v Sjors Provoost>a minute, there is a problem, then you can't cancel it anymore because people are

00:25:25.920 --> 00:25:30.560
<v Sjors Provoost>running this new software and they have the force signaling in. So lots of people

00:25:30.560 --> 00:25:34.680
<v Sjors Provoost>would see their nodes just stop. So you're essentially having a hard fork if you

00:25:34.680 --> 00:25:39.420
<v Sjors Provoost>decide to not do it. So what I think you should do at minimum is say, we ship

00:25:39.420 --> 00:25:45.090
<v Sjors Provoost>this version without the hard-coded date in it, but we're probably going to

00:25:45.090 --> 00:25:47.910
<v Sjors Provoost>enforce that hard-coded date in a new upgrade.

00:25:48.230 --> 00:25:53.290
<v Aaron van Wirdum>Yeah, well, that's another proposal, and I want to get there next. Okay. So

00:25:53.290 --> 00:25:58.670
<v Sjors Provoost>this one I don't like, because if you remove any ability to object, then why even

00:25:58.670 --> 00:26:03.440
<v Sjors Provoost>bother with the miner signaling? Because once you put a flag date in the code,

00:26:03.580 --> 00:26:06.380
<v Sjors Provoost>and you ship that code, that's it. It's just going to activate.

00:26:07.170 --> 00:26:08.770
<v Aaron van Wirdum>yeah well the idea behind

00:26:08.770 --> 00:26:11.790
<v Sjors Provoost>unless you force people to upgrade and that's a hard fork

00:26:11.850 --> 00:26:17.850
<v Aaron van Wirdum>yeah although the idea behind any soft fork including taproot presumably is

00:26:17.850 --> 00:26:21.250
<v Aaron van Wirdum>that there shouldn't be a problem with it if it's going to be shipped at all like

00:26:21.250 --> 00:26:25.770
<v Aaron van Wirdum>at the point of it being shipped there shouldn't be any problems with it yeah and

00:26:25.770 --> 00:26:28.370
<v Aaron van Wirdum>after that it's just a matter of coordinating the upgrade but

00:26:28.370 --> 00:26:31.550
<v Sjors Provoost>the question is when are people going to bother to review it and i could imagine

00:26:31.550 --> 00:26:36.250
<v Sjors Provoost>that if i'm a miner and i'm like i have to run this new version let's see what

00:26:36.250 --> 00:26:39.730
<v Sjors Provoost>it's doing right holy shit i don't like these new rules why are they reducing the

00:26:39.730 --> 00:26:40.850
<v Sjors Provoost>block reward right yes

00:26:40.850 --> 00:26:45.370
<v Aaron van Wirdum>that's that's one of matt's arguments as well that people and miners will only

00:26:45.370 --> 00:26:49.330
<v Aaron van Wirdum>really consider it when the code is out there and the software is out there yeah

00:26:49.330 --> 00:26:53.260
<v Sjors Provoost>and it's an expensive signal too right from As a developer, you're really

00:26:53.260 --> 00:26:57.060
<v Sjors Provoost>shipping this software. That's a bigger commitment than saying, okay, looks good

00:26:57.060 --> 00:27:01.720
<v Sjors Provoost>on GitHub. So I think that is a critical moment, and you can't expect review to

00:27:01.720 --> 00:27:05.400
<v Sjors Provoost>happen after that or review to happen after that. So that's why I don't think you

00:27:05.400 --> 00:27:09.540
<v Sjors Provoost>should put the date in stone, at least not the first try, maybe half a year

00:27:09.540 --> 00:27:11.180
<v Sjors Provoost>later. Maybe you don't have to wait for the whole year.

00:27:11.700 --> 00:27:16.120
<v Aaron van Wirdum>Yeah, so a related idea, and it's almost kind of the same idea, I guess, but it's

00:27:16.120 --> 00:27:17.960
<v Aaron van Wirdum>Luke Jr.

00:27:19.080 --> 00:27:19.840
<v Sjors Provoost>Luke Dashjr.

00:27:20.980 --> 00:27:22.760
<v Aaron van Wirdum>Yeah, Luke Dashjr, Luke Jr.

00:27:23.120 --> 00:27:26.060
<v Sjors Provoost>People call him Luke Jr., but he once said in the podcast it's Luke Dashjr.

00:27:26.360 --> 00:27:26.960
<v Aaron van Wirdum>Oh, he did?

00:27:27.160 --> 00:27:32.420
<v Sjors Provoost>Yeah, the Peter McCormack show. That's the first time I learned. Alright. Maybe he's lying.

00:27:33.650 --> 00:27:37.910
<v Aaron van Wirdum>No, he's not allowed to lie, according to his religion. Okay.

00:27:40.270 --> 00:27:45.870
<v Aaron van Wirdum>He likes BIP-8 with force signaling towards the end, but he

00:27:45.870 --> 00:27:51.850
<v Aaron van Wirdum>prefers it to be deployed in... forks for clients so not in

00:27:51.850 --> 00:27:57.130
<v Aaron van Wirdum>bitcoin core so kind of like BIP 148 like he thinks soft fork activation should

00:27:57.130 --> 00:28:02.410
<v Aaron van Wirdum>happen through different clients that sort of takes away this pressure on bitcoin

00:28:02.410 --> 00:28:08.150
<v Aaron van Wirdum>core developers like potential uh you know government uh enforced soft

00:28:08.150 --> 00:28:13.450
<v Aaron van Wirdum>forks that sort of stuff so only do it through forks of bitcoin core forked

00:28:13.450 --> 00:28:14.750
<v Aaron van Wirdum>clients what do you think of that idea

00:28:14.750 --> 00:28:18.210
<v Sjors Provoost>well how do you coordinate the date Someone just

00:28:18.210 --> 00:28:23.010
<v Aaron van Wirdum>picks one or it's sort of coordinated in some Slack channel, like happened with

00:28:23.010 --> 00:28:24.410
<v Aaron van Wirdum>BIP148.

00:28:24.570 --> 00:28:28.110
<v Sjors Provoost>Yeah, the problem is, like we discussed before, if you have multiple dates,

00:28:28.390 --> 00:28:32.350
<v Sjors Provoost>you're going to get the cowboy bias. Because whoever picks the most aggressive

00:28:32.350 --> 00:28:37.550
<v Sjors Provoost>date, that's the party you kind of have to listen to. But that might be a

00:28:37.550 --> 00:28:38.490
<v Sjors Provoost>recklessly early date.

00:28:38.670 --> 00:28:44.150
<v Aaron van Wirdum>Kind of, but like we mentioned before with the kosher food.

00:28:44.510 --> 00:28:49.430
<v Aaron van Wirdum>a soft fork shouldn't have any downsides really or at least that's when it's

00:28:49.430 --> 00:28:50.270
<v Aaron van Wirdum>becoming but

00:28:50.270 --> 00:28:52.770
<v Sjors Provoost>a fast activation could still cause problems yes

00:28:52.770 --> 00:28:57.310
<v Aaron van Wirdum>but then that's the downside in itself yeah so if people in general think okay

00:28:57.310 --> 00:29:00.770
<v Aaron van Wirdum>this is too aggressive like this isn't good for bitcoin to do this aggressively

00:29:00.770 --> 00:29:05.230
<v Aaron van Wirdum>then that's the reason itself i think it might fail so there's but

00:29:05.230 --> 00:29:09.450
<v Sjors Provoost>the problem is with this you know the the minority rule the intransigent minority

00:29:09.450 --> 00:29:14.940
<v Sjors Provoost>rule that taleb likes to talk about yeah so the most fanatic group So probably

00:29:14.940 --> 00:29:18.600
<v Sjors Provoost>the most fanatic group is going to say the earliest date and the rest will have

00:29:18.600 --> 00:29:20.460
<v Sjors Provoost>to just go along with that earliest date. No,

00:29:20.540 --> 00:29:26.440
<v Aaron van Wirdum>not if the rest really dislikes the solution. The only reason it works with

00:29:26.440 --> 00:29:30.400
<v Aaron van Wirdum>sodas is because most people don't care either way. But if most people really

00:29:30.400 --> 00:29:33.840
<v Aaron van Wirdum>cared about what was in their soda, then the minority wouldn't get their way

00:29:33.840 --> 00:29:34.240
<v Aaron van Wirdum>necessarily.

00:29:34.680 --> 00:29:39.080
<v Sjors Provoost>I would prefer if you went this route and there's some merit to it, I would still

00:29:39.080 --> 00:29:42.660
<v Sjors Provoost>like at least the development community, like people on the mailing list, to

00:29:42.660 --> 00:29:48.280
<v Sjors Provoost>agree on a date. And then once that date is agreed on, we say, okay, we're not

00:29:48.280 --> 00:29:53.860
<v Sjors Provoost>going to endorse this thing. But if you do this thing, here's the download. And

00:29:53.860 --> 00:29:58.580
<v Sjors Provoost>we all have the same date in mind. So there's no chaos around the date. Yes. And

00:29:58.580 --> 00:30:01.140
<v Sjors Provoost>then there is something to be said for not having...

00:30:01.140 --> 00:30:05.140
<v Aaron van Wirdum>But they don't seem to agree. So that's going to be tricky as well, right?

00:30:05.260 --> 00:30:05.900
<v Sjors Provoost>Who doesn't agree?

00:30:06.300 --> 00:30:12.200
<v Aaron van Wirdum>Well, I think, for example, Luke, I think also Jeremy Rubin, to name a few

00:30:12.200 --> 00:30:16.460
<v Aaron van Wirdum>names, they'd like a much faster activation date than, for example, Matt Corallo.

00:30:16.980 --> 00:30:21.580
<v Aaron van Wirdum>Or I think AJ Towns is also someone who prefers a slower activation date. So

00:30:21.580 --> 00:30:25.660
<v Aaron van Wirdum>there's disagreement there, it seems. So that makes it kind of tricky, right?

00:30:26.400 --> 00:30:30.780
<v Sjors Provoost>Yeah, it may be that that ends up in something that will forever be known as the

00:30:30.780 --> 00:30:31.960
<v Sjors Provoost>Bikeshed Wars.

00:30:32.240 --> 00:30:37.720
<v Aaron van Wirdum>Well, but then... the cowboy might actually come around and...

00:30:37.970 --> 00:30:38.410
<v Sjors Provoost>Yeah.

00:30:38.650 --> 00:30:42.330
<v Aaron van Wirdum>You know, almost sort of save the day or I'm not necessarily endorsing that.

00:30:42.510 --> 00:30:48.410
<v Aaron van Wirdum>Yeah, but let me put it this way. I find it almost inevitable. Like someone

00:30:48.410 --> 00:30:52.850
<v Aaron van Wirdum>out there is going to Leeroy Jenkins this. Like it's got to happen. I don't know

00:30:52.850 --> 00:30:55.150
<v Aaron van Wirdum>if it's going to succeed, but it's almost inevitable.

00:30:55.150 --> 00:31:00.870
<v Sjors Provoost>So here's a bad scenario. Let's say we ship the completely ready taproot code

00:31:00.870 --> 00:31:04.830
<v Sjors Provoost>ready for mainnet in two months. Yes. Not going to happen, but let's say we do that.

00:31:06.210 --> 00:31:10.970
<v Sjors Provoost>The code has this one year, you know, miner signaling thing, and then it expires.

00:31:11.410 --> 00:31:15.850
<v Sjors Provoost>And now the most aggressive group comes out and we say, no, no, no, we're going

00:31:15.850 --> 00:31:19.970
<v Sjors Provoost>to activate this like one month later. That's going to be the consensus or the

00:31:19.970 --> 00:31:20.790
<v Sjors Provoost>loudest people. Yes,

00:31:20.850 --> 00:31:22.650
<v Aaron van Wirdum>that's going to be the Leeroy Jenkins.

00:31:23.010 --> 00:31:27.490
<v Sjors Provoost>Yeah, so two weeks later, you know, two weeks into that scheme, the miners

00:31:27.490 --> 00:31:30.650
<v Sjors Provoost>actually start reviewing because like we just talked about, you know, people

00:31:30.650 --> 00:31:36.170
<v Sjors Provoost>might only review code when it's ready. Now they find a critical bug. And most of

00:31:36.170 --> 00:31:39.650
<v Sjors Provoost>the core developers would agree, okay, this is actually a bug. We should abort

00:31:39.650 --> 00:31:43.190
<v Sjors Provoost>this soft fork miners. Please don't signal for it. But at the same time, you have

00:31:43.190 --> 00:31:46.670
<v Sjors Provoost>this super loud group who has already canceled everybody who doesn't agree with

00:31:46.670 --> 00:31:51.130
<v Sjors Provoost>them to activate this thing. So that's why I like the idea of having at least

00:31:51.130 --> 00:31:57.100
<v Sjors Provoost>some decent amount of time and some community agreement on when are we

00:31:57.100 --> 00:32:01.040
<v Sjors Provoost>going to flag date this thing. And it shouldn't be within a few months. You

00:32:01.040 --> 00:32:05.850
<v Sjors Provoost>should give people a decent amount of time. But, you know, I can't decide what

00:32:05.850 --> 00:32:06.450
<v Sjors Provoost>people are going to do.

00:32:06.570 --> 00:32:08.410
<v Aaron van Wirdum>Well, except that's kind of my point. But you might get

00:32:08.410 --> 00:32:11.490
<v Sjors Provoost>a, you know, either that might be successful and it just deploys early and we get

00:32:11.490 --> 00:32:16.810
<v Sjors Provoost>lucky. Maybe it's a botched UASF sort of situation where

00:32:16.810 --> 00:32:20.930
<v Sjors Provoost>they try, they make a really lot of noise, but the main players in the industry,

00:32:21.110 --> 00:32:24.570
<v Sjors Provoost>because of this bug, for example, say, no, no, no, we're not doing this. Yes. And

00:32:24.570 --> 00:32:29.280
<v Sjors Provoost>they just collide head on and nothing happens. where you get a bunch of orphan

00:32:29.280 --> 00:32:34.300
<v Sjors Provoost>blocks, it's hard to predict. But that could be a mess, and that could be on CNN,

00:32:34.500 --> 00:32:39.020
<v Sjors Provoost>and then it's like, oh, Bitcoin is broken on CNN. And Bitcoin was already broken

00:32:39.020 --> 00:32:42.180
<v Sjors Provoost>two podcasts ago, remember? I don't know what the topic was. Oh,

00:32:42.200 --> 00:32:46.000
<v Aaron van Wirdum>no, that was security something. Oh,

00:32:46.000 --> 00:32:51.800
<v Sjors Provoost>it was unconfirmed transactions. Oh, yeah, that was the... But now imagine

00:32:51.800 --> 00:32:56.700
<v Sjors Provoost>all these very mediogenic people with their machine guns in the forest.

00:32:57.590 --> 00:33:01.450
<v Sjors Provoost>advocating a soft fork that all of the core developers are saying, let's not

00:33:01.450 --> 00:33:04.010
<v Sjors Provoost>activate this because there's like a really, really bad bug in it.

00:33:04.840 --> 00:33:08.880
<v Aaron van Wirdum>Yes, but I do think the dynamics then would be very different. Like if there's an

00:33:08.880 --> 00:33:14.040
<v Aaron van Wirdum>actual bug in the actual soft fork itself compared to... an actual

00:33:14.040 --> 00:33:19.840
<v Aaron van Wirdum>or just an objection to the activation situation itself like these are two this was

00:33:19.840 --> 00:33:23.900
<v Sjors Provoost>a very extreme example but less extreme would be I think miners should have some

00:33:23.900 --> 00:33:28.220
<v Sjors Provoost>time to review this code after it's shipped and some people might say no they

00:33:28.220 --> 00:33:31.880
<v Sjors Provoost>should have reviewed it earlier because we don't want to set the incentive yeah

00:33:31.880 --> 00:33:37.180
<v Sjors Provoost>so I think it could be messy so that's why waiting longer I think is generally better

00:33:37.180 --> 00:33:39.060
<v Aaron van Wirdum>so here's another idea it's

00:33:40.500 --> 00:33:46.460
<v Aaron van Wirdum>Another idea is BIP-8 plus BIP-91. Okay. So this basically

00:33:46.460 --> 00:33:51.620
<v Aaron van Wirdum>means you're going to deploy BIP-8, I think, with a long

00:33:51.620 --> 00:33:56.460
<v Aaron van Wirdum>signaling period, like could even be three years or whatever, like something

00:33:56.460 --> 00:33:59.900
<v Aaron van Wirdum>that's similar to Matt's proposal.

00:34:01.680 --> 00:34:07.180
<v Aaron van Wirdum>After these three years, three and a half, whatever it is, the activation is

00:34:07.180 --> 00:34:13.020
<v Aaron van Wirdum>triggered. So there's a long lead up. In the meantime, though, you're

00:34:13.020 --> 00:34:17.360
<v Aaron van Wirdum>gonna see what happens. So for example, if after a year, it's still not

00:34:17.360 --> 00:34:21.900
<v Aaron van Wirdum>activated, then developers can sort of try to find out why it hasn't activated.

00:34:22.320 --> 00:34:26.340
<v Aaron van Wirdum>Again, sort of similar to Matt's idea. Developers take their time, they figure

00:34:26.340 --> 00:34:31.080
<v Aaron van Wirdum>out, okay, there's actually no good reason that it's not being activated. At that

00:34:31.080 --> 00:34:37.020
<v Aaron van Wirdum>point, they can deploy a new client that has sort of BIP 91 in it. which forces

00:34:37.020 --> 00:34:41.280
<v Aaron van Wirdum>miners to signal support for it before the three and a half years are over.

00:34:41.500 --> 00:34:42.620
<v Sjors Provoost>You mean a lower threshold?

00:34:44.120 --> 00:34:45.420
<v Aaron van Wirdum>Yes, a lower threshold.

00:34:45.580 --> 00:34:48.820
<v Sjors Provoost>Okay, so you basically ship an update which has a lower threshold in it.

00:34:48.940 --> 00:34:52.320
<v Aaron van Wirdum>Yes, which in turn triggers the higher threshold.

00:34:52.320 --> 00:34:56.320
<v Sjors Provoost>So I like the idea of lowering the threshold over time. What I am worried about,

00:34:56.400 --> 00:35:01.970
<v Sjors Provoost>and maybe that was discussed, is what if there's a bug? Because now, if this

00:35:01.970 --> 00:35:05.830
<v Sjors Provoost>thing has a three-year window, that means there's three years in which this thing

00:35:05.830 --> 00:35:09.530
<v Sjors Provoost>could activate, even though everybody agrees it shouldn't activate. Right. And

00:35:09.530 --> 00:35:11.250
<v Sjors Provoost>that's kind of scary.

00:35:11.450 --> 00:35:16.090
<v Aaron van Wirdum>Right, so then the answer is deploy a new client that includes a soft fork that

00:35:16.090 --> 00:35:19.290
<v Aaron van Wirdum>undoes the taproot soft fork in that case.

00:35:19.370 --> 00:35:20.970
<v Sjors Provoost>Well, if you undo a soft fork, it's a hard fork.

00:35:21.790 --> 00:35:23.310
<v Aaron van Wirdum>Not if it's not activated yet.

00:35:24.530 --> 00:35:25.770
<v Sjors Provoost>Yeah, but you don't know that.

00:35:27.050 --> 00:35:27.750
<v Aaron van Wirdum>What do you mean?

00:35:28.130 --> 00:35:32.830
<v Sjors Provoost>So the problem is people who are running the first version, they're just waiting

00:35:32.830 --> 00:35:37.630
<v Sjors Provoost>for that 95%. They're waiting for three years until this thing activates. But

00:35:37.630 --> 00:35:43.630
<v Sjors Provoost>then if there's a bug fix, then you need to have a new signal flag to

00:35:43.630 --> 00:35:46.330
<v Sjors Provoost>indicate the new version of Taproot that you're going to activate. And you have

00:35:46.330 --> 00:35:48.070
<v Sjors Provoost>to make sure the old version never activates.

00:35:48.670 --> 00:35:54.190
<v Aaron van Wirdum>Yeah, but you can just soft fork that. Soft fork is a tightening of the rules. So

00:35:54.190 --> 00:35:59.470
<v Aaron van Wirdum>now you say any Taproot, anything is just not allowed. You're not going to

00:35:59.470 --> 00:36:00.290
<v Aaron van Wirdum>include it in blocks.

00:36:00.630 --> 00:36:05.170
<v Sjors Provoost>Yeah, you could completely ban version 1, basically. But that's pretty horrific.

00:36:05.470 --> 00:36:07.030
<v Sjors Provoost>It would be nicer if you didn't have to do that.

00:36:07.150 --> 00:36:11.590
<v Aaron van Wirdum>It would be kind of ugly, yes. Plus, it would be important that people upgrade.

00:36:11.850 --> 00:36:15.810
<v Sjors Provoost>So a one-year signaling thing is nice... Because that means that you can say,

00:36:15.890 --> 00:36:18.850
<v Sjors Provoost>okay, if this thing doesn't activate in a year because there's a bug, we wait a

00:36:18.850 --> 00:36:19.850
<v Sjors Provoost>year and we try again.

00:36:21.690 --> 00:36:24.670
<v Sjors Provoost>And then we know for sure we're not going to accidentally activate the old

00:36:24.670 --> 00:36:29.110
<v Sjors Provoost>version after that year. Yes. And yeah, it's kind of annoying to have to wait for

00:36:29.110 --> 00:36:33.220
<v Sjors Provoost>a year, but then if there really is a bug... In a thing that was ready to be

00:36:33.220 --> 00:36:37.500
<v Sjors Provoost>deployed, that really warrants a year of thinking really, really well about how

00:36:37.500 --> 00:36:38.340
<v Sjors Provoost>the hell that could happen.

00:36:38.620 --> 00:36:43.400
<v Aaron van Wirdum>Yeah. Okay, so then there was another idea. I added this.

00:36:43.780 --> 00:36:46.580
<v Sjors Provoost>The idea of saying that signaling thresholds could go down, that makes sense to

00:36:46.580 --> 00:36:51.080
<v Sjors Provoost>me. So you could say, well, when the year starts, it's 95%. But you know, after

00:36:51.080 --> 00:36:55.580
<v Sjors Provoost>six months, it should just be 80%. And after 11 months, it should be a little bit

00:36:55.580 --> 00:36:59.680
<v Sjors Provoost>less. And then if it still doesn't happen, we give up and we decide again for

00:36:59.680 --> 00:37:00.680
<v Sjors Provoost>next year what we're going to do.

00:37:01.550 --> 00:37:06.650
<v Aaron van Wirdum>Yes. Alright, so then there was another idea, which is, I guess, is it the

00:37:06.650 --> 00:37:12.250
<v Aaron van Wirdum>opposite of the previous one? Maybe not. You take BIP 8 with a long period,

00:37:12.590 --> 00:37:14.830
<v Aaron van Wirdum>but without forced signaling at the end.

00:37:16.420 --> 00:37:22.320
<v Aaron van Wirdum>Then you still keep an eye on what's happening. If after a while you find that

00:37:22.320 --> 00:37:26.800
<v Aaron van Wirdum>there is no problem with it, but miners aren't signaling for it because they're

00:37:26.800 --> 00:37:32.740
<v Aaron van Wirdum>just apathic or they have another bad reason, then you can deploy

00:37:32.740 --> 00:37:37.660
<v Aaron van Wirdum>another client with BIP-8, this time with force signaling, that

00:37:38.110 --> 00:37:42.750
<v Aaron van Wirdum>starts force signaling before the end of the current signaling period.

00:37:43.810 --> 00:37:44.270
<v Sjors Provoost>Okay.

00:37:44.490 --> 00:37:49.010
<v Aaron van Wirdum>Or at least not later than that. Like if it starts before that, then you have two

00:37:49.010 --> 00:37:54.810
<v Aaron van Wirdum>groups of nodes online on the network. The BIP-8 nodes you deployed first that

00:37:54.810 --> 00:37:59.770
<v Aaron van Wirdum>don't have forced signaling on the end. And now the new group of BIP-8 nodes that

00:37:59.770 --> 00:38:03.590
<v Aaron van Wirdum>do have forced signaling. So if they do the forced signaling stuff, then the

00:38:03.590 --> 00:38:06.490
<v Aaron van Wirdum>older BIP-8 nodes will also accept that as an upgrade. That

00:38:06.490 --> 00:38:11.690
<v Sjors Provoost>sounds like a regular idea of BIP-8, right? So BIP-8 has the option to allow

00:38:11.690 --> 00:38:17.590
<v Sjors Provoost>forced signaling so initially you do not ship that option and then later on you

00:38:17.590 --> 00:38:22.190
<v Sjors Provoost>do ship the option and yeah the old nodes won't be confused because they see the signaling

00:38:22.190 --> 00:38:23.410
<v Aaron van Wirdum>yep so

00:38:24.340 --> 00:38:26.000
<v Sjors Provoost>Yeah. Pretty much. So

00:38:26.000 --> 00:38:29.720
<v Aaron van Wirdum>what's your preference here? It sounds like you're kind of conservative.

00:38:29.900 --> 00:38:34.420
<v Sjors Provoost>Well, like I said, I don't like the idea of hard coding a flag date initially. So

00:38:34.420 --> 00:38:40.180
<v Sjors Provoost>I can see the benefit of you ship something, you wait, say it has a year of a

00:38:40.180 --> 00:38:45.860
<v Sjors Provoost>window, you wait for six months, then you still don't see any signaling,

00:38:45.860 --> 00:38:49.420
<v Sjors Provoost>but you also don't see the miners that reviewed your code and found problems.

00:38:49.780 --> 00:38:55.460
<v Sjors Provoost>Then maybe you say, okay, let's do a flag date. It's not super patient, and then

00:38:55.460 --> 00:39:00.320
<v Sjors Provoost>you have that flag date within six months. But I'm not sure.

00:39:01.160 --> 00:39:05.000
<v Sjors Provoost>In the short run, it's nice to have all this stuff fast. In the long run, it's

00:39:05.000 --> 00:39:08.200
<v Sjors Provoost>kind of scary if something can happen fast, because it gives you less time to

00:39:08.200 --> 00:39:09.200
<v Sjors Provoost>stop it if it's bad.

00:39:10.860 --> 00:39:15.600
<v Sjors Provoost>But again, just being slow for the sake of being slow doesn't make any sense

00:39:15.600 --> 00:39:20.850
<v Sjors Provoost>either. So I can see why these IRC threads are going to be really long. But what

00:39:20.850 --> 00:39:26.280
<v Sjors Provoost>I'm hoping will happen is we just do, you know... BIP-8 without a flag date with

00:39:26.280 --> 00:39:30.100
<v Sjors Provoost>a year of a window and we get lucky and miners just activate the thing within a

00:39:30.100 --> 00:39:31.460
<v Sjors Provoost>month and it's done.

00:39:31.680 --> 00:39:36.080
<v Aaron van Wirdum>That would be nice, right? If miners just cooperate and maybe we're all making

00:39:36.080 --> 00:39:40.160
<v Aaron van Wirdum>too big of a problem out of this. Well, that's one of the... That's, for example, like...

00:39:40.160 --> 00:39:43.580
<v Sjors Provoost>Well, I don't want to say it would be nice if miners just cooperated because, you

00:39:43.580 --> 00:39:48.260
<v Sjors Provoost>know, Ethereum has that too and miners are very cooperative. I would... Yeah, but

00:39:48.260 --> 00:39:51.040
<v Sjors Provoost>everyone's... It would be nice if miners were very excited about this proposal

00:39:51.040 --> 00:39:56.640
<v Sjors Provoost>for good reasons. and did so quickly. I'm not saying that's technically

00:39:56.640 --> 00:40:02.580
<v Sjors Provoost>not cooperation, it's just agreeing, right? Not obeying. I guess

00:40:02.580 --> 00:40:06.840
<v Sjors Provoost>it is cooperating, but I mean it in an agreement sense, not in an obeying sense.

00:40:07.160 --> 00:40:12.780
<v Aaron van Wirdum>Sure. Well, I think Greg Maxwell's position, for example, there are a few like

00:40:12.780 --> 00:40:17.640
<v Aaron van Wirdum>him, I don't think he really cares strongly. He

00:40:17.640 --> 00:40:23.470
<v Aaron van Wirdum>feels like whatever is likely to work, like just... just go for it don't

00:40:23.470 --> 00:40:25.650
<v Aaron van Wirdum>over think this because it's

00:40:25.650 --> 00:40:27.550
<v Sjors Provoost>probably good if you know if it

00:40:27.550 --> 00:40:31.770
<v Aaron van Wirdum>doesn't work out we'll deal with it then i think that's sort of um his position

00:40:31.770 --> 00:40:36.550
<v Aaron van Wirdum>for example um and and like all of the options i've named so far i think he's

00:40:36.550 --> 00:40:40.930
<v Aaron van Wirdum>sort of okay with as long as like something needs to be picked because the longer

00:40:40.930 --> 00:40:44.370
<v Aaron van Wirdum>it's going to take the more the harder it's going to get probably and the more

00:40:44.370 --> 00:40:48.690
<v Aaron van Wirdum>controversial the whole topic might become and like just yeah it's quite possible

00:40:48.690 --> 00:40:49.250
<v Aaron van Wirdum>try something

00:40:49.250 --> 00:40:53.650
<v Sjors Provoost>you get a whole holy war over the exact details of how you activate a soft fork

00:40:54.500 --> 00:40:55.860
<v Sjors Provoost>and that might be bad

00:40:55.860 --> 00:40:59.660
<v Aaron van Wirdum>yeah do you think it's i mean that's one of the reasons it could be like a holy

00:40:59.660 --> 00:41:04.220
<v Aaron van Wirdum>war is some people think that it's a very important precedent to set like it the

00:41:04.220 --> 00:41:08.080
<v Aaron van Wirdum>way you're enforcing a soft fork the way you're activating a soft fork that

00:41:08.080 --> 00:41:12.300
<v Aaron van Wirdum>really matters going forward for the next soft fork and it really sort of defines

00:41:12.300 --> 00:41:13.580
<v Aaron van Wirdum>bitcoin almost in a way

00:41:15.240 --> 00:41:19.040
<v Sjors Provoost>Well, I don't know about the latter because things change. So even if we do

00:41:19.040 --> 00:41:22.160
<v Sjors Provoost>things in an amazing way, five years from now, there might be a whole new

00:41:22.160 --> 00:41:26.820
<v Sjors Provoost>generation of people that just do not care about the ways of five years ago. All

00:41:26.820 --> 00:41:27.420
<v Sjors Provoost>these old people.

00:41:28.760 --> 00:41:31.040
<v Aaron van Wirdum>Especially in Bitcoin, five years is an eternity.

00:41:31.400 --> 00:41:37.400
<v Sjors Provoost>I mean, I think I mentioned today my main concerns. Don't set something in stone

00:41:37.400 --> 00:41:42.220
<v Sjors Provoost>that you have a serious chance of regretting. So keep in mind that people don't

00:41:42.220 --> 00:41:47.470
<v Sjors Provoost>review code before it's actually shipped. And so that's why I kind of like the

00:41:47.470 --> 00:41:53.070
<v Sjors Provoost>idea of having, say, a one-year activation window, maybe with a minimum of three

00:41:53.070 --> 00:41:56.990
<v Sjors Provoost>months. There was another proposal for that. And then give miners and others some

00:41:56.990 --> 00:42:00.030
<v Sjors Provoost>time to actually review this thing because they haven't done it. And then if they

00:42:00.030 --> 00:42:05.300
<v Sjors Provoost>find a problem, you can still abort. And then if you don't see this objection,

00:42:05.560 --> 00:42:09.500
<v Sjors Provoost>then you can choose to put in a flag day. And then you can debate whether you

00:42:09.500 --> 00:42:13.810
<v Sjors Provoost>want the flag day to be very quickly. at the end of the year, or whether you say,

00:42:13.870 --> 00:42:17.050
<v Sjors Provoost>let's give it another year. It just depends. But I don't have a strong opinion

00:42:17.050 --> 00:42:21.670
<v Sjors Provoost>there. But I'm not the most patient person, so I should ask a more patient person.

00:42:22.970 --> 00:42:25.850
<v Aaron van Wirdum>Well, you sound pretty patient to me. I think I'm pretty patient.

00:42:26.110 --> 00:42:28.710
<v Sjors Provoost>Not by Greg Maxwell's standards, I think. Right.

00:42:29.070 --> 00:42:32.850
<v Aaron van Wirdum>I guess I'm pretty patient when it comes to software, because I'm not really in a

00:42:32.850 --> 00:42:38.410
<v Aaron van Wirdum>rush. Bitcoin works for me, the way it's working. At the same time, it's like

00:42:38.410 --> 00:42:44.140
<v Aaron van Wirdum>users are... you know it's not up to me like people are going to get

00:42:44.140 --> 00:42:49.280
<v Aaron van Wirdum>impatient and i think that's going to be a an interesting dynamic to see play out

00:42:49.280 --> 00:42:52.860
<v Aaron van Wirdum>like too conservative is a risk in itself yes because

00:42:52.860 --> 00:42:57.400
<v Sjors Provoost>if if this soft fork is hanging in the air for years it will get political yes

00:42:57.400 --> 00:43:00.760
<v Sjors Provoost>and then it might not go through because of politics that would not have happened

00:43:00.760 --> 00:43:01.840
<v Sjors Provoost>if it went through a bit quicker

00:43:02.410 --> 00:43:07.290
<v Aaron van Wirdum>Yes, or it just increases the chance that someone's going to Leeroy Jenkins in a

00:43:07.290 --> 00:43:13.050
<v Aaron van Wirdum>bad way. If developers want to be too conservative, then you're going to see that

00:43:13.050 --> 00:43:14.630
<v Aaron van Wirdum>kind of movement.

00:43:16.310 --> 00:43:21.810
<v Aaron van Wirdum>That might not always be the best way to do it either. I think this is a

00:43:21.810 --> 00:43:22.610
<v Aaron van Wirdum>fascinating topic.

00:43:23.530 --> 00:43:24.910
<v Sjors Provoost>Should we end on the cliffhanger?

00:43:25.770 --> 00:43:26.990
<v Aaron van Wirdum>Do you have a cliffhanger?

00:43:27.130 --> 00:43:27.990
<v Sjors Provoost>What are sporks?

00:43:28.130 --> 00:43:28.630
<v Aaron van Wirdum>What's that?

00:43:28.770 --> 00:43:29.730
<v Sjors Provoost>What are sporks?

00:43:30.030 --> 00:43:31.830
<v Aaron van Wirdum>Oh, Sporks? You want to get into that one as well?

00:43:31.870 --> 00:43:33.350
<v Sjors Provoost>No, no, I want to leave it as a cliffhanger.

00:43:33.570 --> 00:43:36.710
<v Aaron van Wirdum>Okay. Oh, yeah, that's even better. So we discuss it in another episode?

00:43:36.790 --> 00:43:38.410
<v Sjors Provoost>In another episode. Maybe never.

00:43:38.670 --> 00:43:39.990
<v Aaron van Wirdum>I like that. Yeah, maybe never.

00:43:42.210 --> 00:43:46.790
<v Aaron van Wirdum>Yeah, maybe we're doing a lost cliffhanger. You'll just never get the answer.

00:43:47.490 --> 00:43:52.270
<v Aaron van Wirdum>So... But there is another idea for soft fork, which is called Sporks.

00:43:52.530 --> 00:43:52.890
<v Sjors Provoost>Sporks.

00:43:53.880 --> 00:43:56.000
<v Aaron van Wirdum>All right, Sjors, that was it for this episode, I think.

00:43:56.240 --> 00:43:59.140
<v Sjors Provoost>Thank you for listening to the Van Wirdum Sjorsnado.

00:44:00.020 --> 00:44:00.760
<v Aaron van Wirdum>There we go.

