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

00:00:09.940 --> 00:00:13.860
<v Aaron van Wirdum>Live from Miami and Utrecht, this is the Van Wirdum Sjorsnado.

00:00:14.620 --> 00:00:15.060
<v Sjors Provoost>Hello.

00:00:15.740 --> 00:00:16.980
<v Aaron van Wirdum>Hey Sjors, how are you doing?

00:00:17.520 --> 00:00:22.690
<v Sjors Provoost>Not bad. I think it's warmer here than where you are, but...

00:00:22.850 --> 00:00:28.530
<v Aaron van Wirdum>It's pretty warm here. Yeah, when this podcast is being released, it will be day

00:00:28.530 --> 00:00:34.320
<v Aaron van Wirdum>one of the conference. Bitcoin 2021 in Miami. We're expecting like

00:00:34.320 --> 00:00:40.040
<v Aaron van Wirdum>12,000 people, so that's pretty significant. It's the largest cryptocurrency

00:00:40.040 --> 00:00:41.040
<v Aaron van Wirdum>conference yet

00:00:42.800 --> 00:00:45.650
<v Aaron van Wirdum>to date. Are you impressed?

00:00:47.100 --> 00:00:51.400
<v Sjors Provoost>Yeah, it sounds big. I mean, I kind of like bear markets more because I think a

00:00:51.400 --> 00:00:55.600
<v Sjors Provoost>subset of the people that go to that conference will stick around for the bear market.

00:00:56.810 --> 00:00:59.490
<v Aaron van Wirdum>Real men are made during the bear market, Sjors.

00:01:00.760 --> 00:01:01.620
<v Sjors Provoost>[unclear], yep.

00:01:02.440 --> 00:01:07.140
<v Aaron van Wirdum>All right. Today, we are discussing the Bitcoin improvement

00:01:07.140 --> 00:01:11.100
<v Aaron van Wirdum>proposal process, the BIP process.

00:01:11.540 --> 00:01:12.200
<v Sjors Provoost>That's right.

00:01:12.750 --> 00:01:18.170
<v Aaron van Wirdum>So yeah, the BIP process, everyone has heard of it. Although, probably not

00:01:18.170 --> 00:01:21.530
<v Aaron van Wirdum>actually, like you said, lots of new people in the space, lots of people have no

00:01:21.530 --> 00:01:25.110
<v Aaron van Wirdum>idea what the BIP process even is. So I guess we're going to explain it to them

00:01:25.110 --> 00:01:25.510
<v Aaron van Wirdum>as well.

00:01:27.510 --> 00:01:29.310
<v Aaron van Wirdum>So let's start, Sjors.

00:01:30.530 --> 00:01:35.190
<v Aaron van Wirdum>What is a Bitcoin improvement proposal, a.k.a. a BIP?

00:01:35.900 --> 00:01:41.580
<v Sjors Provoost>Well, it's just a document with a number that describes, that proposes

00:01:41.580 --> 00:01:46.900
<v Sjors Provoost>an improvement to either Bitcoin, like the protocol, or, you know, how nodes

00:01:46.900 --> 00:01:51.840
<v Sjors Provoost>communicate. Or it can be more of a standard, like a wallet

00:01:51.840 --> 00:01:57.390
<v Sjors Provoost>format. Or, you know, the mnemonics, the 39, or the

00:01:57.390 --> 00:02:03.190
<v Sjors Provoost>24-word backup phrases. That's a BIP. Or it can be a meta thing, you know

00:02:03.190 --> 00:02:08.690
<v Sjors Provoost>like BIP 1 and BIP 2 which describe the BIP process are also BIPs.

00:02:08.690 --> 00:02:12.930
<v Aaron van Wirdum>Right, so, yeah, in a way, this is a little bit of a meta episode as well because

00:02:12.930 --> 00:02:18.890
<v Aaron van Wirdum>we have discussed a number of BIPs, and um… Now we're going to discuss what a

00:02:18.890 --> 00:02:23.130
<v Aaron van Wirdum>BIP actually is, and how the process works. So yeah, you just explained what a

00:02:23.130 --> 00:02:28.950
<v Aaron van Wirdum>BIP is: it's it's a it's a piece of documentation for something in Bitcoin

00:02:28.950 --> 00:02:34.610
<v Aaron van Wirdum>that requires some level of coordination or that could benefit from some

00:02:34.610 --> 00:02:37.630
<v Aaron van Wirdum>level of coordination, do you think that's that's a fair summary?

00:02:37.630 --> 00:02:40.200
<v Sjors Provoost>Yeah I guess yeah.

00:02:40.200 --> 00:02:41.000
<v Aaron van Wirdum>Yeah so if…

00:02:41.000 --> 00:02:43.800
<v Sjors Provoost>Yeah I mean one of the rules is that you should not write a BIP for something

00:02:43.800 --> 00:02:45.840
<v Sjors Provoost>that only you use yourself.

00:02:45.840 --> 00:02:51.230
<v Aaron van Wirdum>Right, exactly, if you're building something patented for example, or just

00:02:51.230 --> 00:02:54.850
<v Aaron van Wirdum>something that's just for your wallet, if your wallet developer, whatever it is,

00:02:54.850 --> 00:02:58.250
<v Aaron van Wirdum>you're building and it's of no use to anyone else, and that doesn't need to be a

00:02:58.250 --> 00:03:02.950
<v Aaron van Wirdum>BIP. But if you're building something that could benefit others, or that's useful

00:03:02.950 --> 00:03:08.510
<v Aaron van Wirdum>for us to know, then you might want to draft a BIP, so other developers or maybe

00:03:08.510 --> 00:03:12.770
<v Aaron van Wirdum>not even just developers, but I guess mostly developers, they'll know, you know,

00:03:12.850 --> 00:03:17.950
<v Aaron van Wirdum>it offers a standard. So an example you mentioned is like a seed format for

00:03:17.950 --> 00:03:22.270
<v Aaron van Wirdum>backups. So if you have one seed format, then other wallets can use that seed

00:03:22.270 --> 00:03:27.870
<v Aaron van Wirdum>format as well. So people can easier switch wallets if they want, for example, or

00:03:28.190 --> 00:03:31.610
<v Aaron van Wirdum>use some sort of standard backup

00:03:33.190 --> 00:03:37.790
<v Aaron van Wirdum>device that's sort of compatible with all these things. Or there could be actual

00:03:37.790 --> 00:03:38.850
<v Aaron van Wirdum>protocol changes.

00:03:40.230 --> 00:03:45.390
<v Aaron van Wirdum>How do Bitcoin nodes communicate with each other? How fast? Let's say someone

00:03:45.390 --> 00:03:50.930
<v Aaron van Wirdum>wants to make a protocol upgrade that precludes

00:03:50.930 --> 00:03:54.990
<v Aaron van Wirdum>miners from mining for the first nine minutes. That [unclear] need a BIP.

00:03:57.610 --> 00:03:58.990
<v Sjors Provoost>No, that wouldn't need a BIP.

00:03:59.660 --> 00:04:00.400
<v Aaron van Wirdum>That wouldn't?

00:04:00.880 --> 00:04:01.860
<v Sjors Provoost>That [unclear] need a BIP.

00:04:01.920 --> 00:04:04.660
<v Aaron van Wirdum>Yeah, that would need a BIP. Exactly. That's what I said. Like any protocol

00:04:04.660 --> 00:04:09.020
<v Aaron van Wirdum>change. This was something someone actually suggested on the mailing list the

00:04:09.020 --> 00:04:14.060
<v Aaron van Wirdum>other day, which is not going to happen. But yeah, some protocol change. Soft

00:04:14.060 --> 00:04:19.280
<v Aaron van Wirdum>forks, hard forks, peer-to-peer layer type of stuff. Anything that benefits

00:04:19.280 --> 00:04:25.200
<v Aaron van Wirdum>others would, well, at least benefit from a BIP. So yeah,

00:04:25.340 --> 00:04:29.200
<v Aaron van Wirdum>the BIP process. Do you know when it was launched? When it was started?

00:04:30.270 --> 00:04:35.970
<v Sjors Provoost>I believe Amir Taaki launched it in late 2011 because the

00:04:35.970 --> 00:04:40.670
<v Sjors Provoost>first BIP is called BIP 1 and it's dated September 19th, 2011.

00:04:41.210 --> 00:04:45.510
<v Aaron van Wirdum>Exactly, yeah. Amir Taaki was an early Bitcoin developer and

00:04:45.510 --> 00:04:51.140
<v Aaron van Wirdum>he... So he was getting…

00:04:51.600 --> 00:04:57.380
<v Aaron van Wirdum>he wanted to be the Bitcoin development process. He wanted to make sure that it

00:04:57.380 --> 00:05:02.620
<v Aaron van Wirdum>was a bit more transparent. Because up until then, you had developers discussing

00:05:02.620 --> 00:05:07.760
<v Aaron van Wirdum>the Bitcoin protocol and upgrades. But there wasn't really any sort of

00:05:07.760 --> 00:05:11.900
<v Aaron van Wirdum>documentation of it. So he wanted the process to be more transparent. So he

00:05:11.900 --> 00:05:13.700
<v Aaron van Wirdum>introduced the BIP process.

00:05:14.320 --> 00:05:17.240
<v Sjors Provoost>And I guess he was one of the first people to work on an alternative

00:05:17.240 --> 00:05:18.840
<v Sjors Provoost>implementation, right? libbitcoin.

00:05:18.940 --> 00:05:23.220
<v Aaron van Wirdum>Exactly, yeah. So that was a good reason for him as well, for that reason, to

00:05:23.220 --> 00:05:26.990
<v Aaron van Wirdum>actually have some sort of... documentation process.

00:05:27.350 --> 00:05:32.230
<v Sjors Provoost>Yeah, because for the most part, everything is in the Bitcoin Core source code if

00:05:32.230 --> 00:05:36.090
<v Sjors Provoost>you want to know what the rules are. And that's, of course, not ideal. So more

00:05:36.090 --> 00:05:37.990
<v Sjors Provoost>recent soft forks have been written as BIPs.

00:05:38.570 --> 00:05:44.490
<v Aaron van Wirdum>Yeah, it was modeled after the, I think it was

00:05:44.490 --> 00:05:48.520
<v Aaron van Wirdum>called the Python enhancement process, I think.

00:05:48.440 --> 00:05:54.420
<v Aaron van Wirdum>So, BEP… wait, PEPs? PEPs, I think, PEP. Yeah, so it was modeled

00:05:54.420 --> 00:05:59.700
<v Aaron van Wirdum>after that. So at least the first iteration of the BIP process which is detailed

00:05:59.700 --> 00:06:05.260
<v Aaron van Wirdum>in BIP 1 by Amir Taaki that was modeled I think almost directly from the

00:06:05.260 --> 00:06:09.200
<v Aaron van Wirdum>PEP process, and repurposed for Bitcoin in a way.

00:06:09.200 --> 00:06:13.300
<v Sjors Provoost>Yeah, and one of the changes of course is that Python still has a supreme

00:06:13.300 --> 00:06:18.220
<v Sjors Provoost>commander you know, a leader, a central authority. So I think there was something

00:06:18.220 --> 00:06:23.200
<v Sjors Provoost>like an appeals process or like a final decision maker in the Bitcoin improvement

00:06:23.200 --> 00:06:27.360
<v Sjors Provoost>proposal. That is not the case because there is nobody in charge. So that makes

00:06:27.360 --> 00:06:28.240
<v Sjors Provoost>it a bit more complicated.

00:06:29.080 --> 00:06:34.660
<v Aaron van Wirdum>Right. So, yeah, Sjors, how does the BIP process work exactly? Let's say, you

00:06:34.660 --> 00:06:37.400
<v Aaron van Wirdum>know, you have an idea. You want to...

00:06:39.260 --> 00:06:43.120
<v Aaron van Wirdum>You want miners to stop mining for the first nine minutes after a block is mined?

00:06:43.160 --> 00:06:46.020
<v Aaron van Wirdum>How do you go about this? How do you turn this into a BIP?

00:06:46.850 --> 00:06:52.550
<v Sjors Provoost>Well, the first step, as recommended by BIP 2, is to talk to people.

00:06:52.690 --> 00:06:54.410
<v Sjors Provoost>And especially talk on the mailing list.

00:06:54.430 --> 00:06:58.650
<v Aaron van Wirdum>So before you go on, yeah, this is probably good to mention at this point. So

00:06:58.650 --> 00:07:03.790
<v Aaron van Wirdum>BIP 1 was drafted by Amir Taaki. And then a couple years ago,

00:07:04.710 --> 00:07:10.320
<v Aaron van Wirdum>the... At that time and still current BIP editor is Luke Dashjr.

00:07:11.160 --> 00:07:16.360
<v Aaron van Wirdum>And he created BIP 2, which was based on BIP 1, but it was

00:07:16.360 --> 00:07:21.240
<v Aaron van Wirdum>refined in a number of ways. So that's why you referred to BIP 2 just now.

00:07:21.980 --> 00:07:27.700
<v Sjors Provoost>Yeah. So if you want to make a proposal, you Google BIP 2. And then it says, hey,

00:07:27.920 --> 00:07:32.520
<v Sjors Provoost>you may want to check whether other people think this is a sane idea at all and

00:07:32.520 --> 00:07:33.360
<v Sjors Provoost>if it's useful to them.

00:07:34.930 --> 00:07:39.530
<v Sjors Provoost>Talk to people or you can post it on the Bitcoin dev mailing list. You should

00:07:39.530 --> 00:07:44.730
<v Sjors Provoost>also do a Google search to make sure that you're not proposing something that's

00:07:44.730 --> 00:07:50.730
<v Sjors Provoost>been proposed a few hundred times before. But even BIP 2 says sometimes you can't

00:07:50.730 --> 00:07:54.010
<v Sjors Provoost>find that on the internet that has been discussed before so you may just have to

00:07:54.010 --> 00:07:56.730
<v Sjors Provoost>post it on the mailing list and somebody will point it out.

00:07:57.470 --> 00:08:01.630
<v Aaron van Wirdum>Yeah, the point being, it's a good idea to first actually discuss it with people

00:08:01.630 --> 00:08:07.110
<v Aaron van Wirdum>before drafting a BIP because odds are your BIP has already been, you know, your

00:08:07.110 --> 00:08:12.990
<v Aaron van Wirdum>idea has already been shut down a while ago or, you know, something existed or

00:08:12.990 --> 00:08:17.750
<v Aaron van Wirdum>just a really dumb idea. And you're going to save yourself a lot of trouble if

00:08:17.750 --> 00:08:21.730
<v Aaron van Wirdum>you first discuss it with some people who've been around for a while.

00:08:22.890 --> 00:08:27.870
<v Sjors Provoost>Yeah, it saves yourself time and it saves others' time. So, yeah, that's the first step.

00:08:27.870 --> 00:08:30.390
<v Aaron van Wirdum>So that's sort of step one, sort of the informal step one, right?

00:08:31.490 --> 00:08:35.530
<v Sjors Provoost>Yeah, and then pretty much it depends on what you're doing, right? But let's take

00:08:35.530 --> 00:08:39.190
<v Sjors Provoost>something easy, I guess.

00:08:39.330 --> 00:08:41.570
<v Aaron van Wirdum>Yeah, like not letting miners mine for nine minutes.

00:08:42.190 --> 00:08:46.670
<v Sjors Provoost>Well, let's take something simpler, like maybe this backup phrase, right? You

00:08:46.670 --> 00:08:51.610
<v Sjors Provoost>want a BIP 39, the 24 words, and you have a word list.

00:08:53.400 --> 00:08:56.680
<v Sjors Provoost>Probably you want to write some sort of implementation for it.

00:08:56.880 --> 00:08:59.160
<v Aaron van Wirdum>Yeah, but how do we save energy with that?

00:09:00.730 --> 00:09:04.370
<v Sjors Provoost>Oh, you still want to go to the 90s? I didn't read that mailing list.

00:09:04.490 --> 00:09:08.590
<v Aaron van Wirdum>All right, go on. I'll drop that one. Go on with your own example then, and we'll

00:09:08.590 --> 00:09:09.610
<v Aaron van Wirdum>just keep wasting energy.

00:09:10.530 --> 00:09:16.470
<v Sjors Provoost>That's a good idea. So basically, you want to write the specification out in a

00:09:16.470 --> 00:09:21.310
<v Sjors Provoost>document, but along with that specification should be, at least for some of the

00:09:21.310 --> 00:09:24.650
<v Sjors Provoost>types of BIPs, should be an implementation that actually does that.

00:09:26.110 --> 00:09:29.530
<v Sjors Provoost>So that you can point to actual software that is actually doing something rather

00:09:29.530 --> 00:09:34.990
<v Sjors Provoost>than hand-waving. If you look at a patent application, those are usually just

00:09:34.990 --> 00:09:38.650
<v Sjors Provoost>very vague, very lawyerly. It doesn't have to be a real product.

00:09:39.170 --> 00:09:42.670
<v Aaron van Wirdum>Did you know there's a patent for an elevator to space?

00:09:43.680 --> 00:09:46.600
<v Sjors Provoost>I'm sure there is, and that's because you don't actually have to build it.

00:09:46.760 --> 00:09:48.620
<v Aaron van Wirdum>So you can get to the satellite very easily?

00:09:49.810 --> 00:09:51.350
<v Sjors Provoost>Yeah, I can see some problems with that.

00:09:51.350 --> 00:09:56.400
<v Aaron van Wirdum>There's also a patent for... Like a thing that will swing a woman around

00:09:56.400 --> 00:10:01.700
<v Aaron van Wirdum>when she needs to give birth and then like a centrifuge and then the kid will

00:10:01.700 --> 00:10:03.140
<v Aaron van Wirdum>just shoot out in a net.

00:10:03.540 --> 00:10:05.140
<v Sjors Provoost>What could possibly go wrong?

00:10:05.480 --> 00:10:09.680
<v Aaron van Wirdum>But yeah, I don't think these things actually exist. That was your point, right?

00:10:10.220 --> 00:10:13.740
<v Sjors Provoost>Yeah, that's my point because a lot of people will propose improvements to

00:10:13.740 --> 00:10:19.340
<v Sjors Provoost>Bitcoin that cannot actually be built. And so it's nice to have at least some,

00:10:19.460 --> 00:10:24.110
<v Sjors Provoost>you know… that thing, yet you should actually write some code. So in the case of

00:10:24.110 --> 00:10:28.350
<v Sjors Provoost>Taproot, I think there was a specification, but there was also a working software

00:10:28.350 --> 00:10:32.070
<v Sjors Provoost>implementation. And generally, as you're writing software, you find problems with

00:10:32.070 --> 00:10:36.030
<v Sjors Provoost>your specification. And as you write the specifications, you may realize there's

00:10:36.030 --> 00:10:39.850
<v Sjors Provoost>problems in your software. And other people will review it, and other people will

00:10:39.850 --> 00:10:44.230
<v Sjors Provoost>presumably, you know, you might at some point send a draft version on the mailing

00:10:44.230 --> 00:10:47.870
<v Sjors Provoost>list, and then you'll get a bunch of feedback from people. So that's the next step.

00:10:48.250 --> 00:10:53.900
<v Aaron van Wirdum>So yeah, hang on. So there needs to be some sort of example code or

00:10:53.900 --> 00:10:55.320
<v Aaron van Wirdum>what's the correct definition?

00:10:56.680 --> 00:11:00.040
<v Sjors Provoost>Reference implementation is a technical term, but yeah, pretty much.

00:11:00.660 --> 00:11:05.000
<v Aaron van Wirdum>Okay. So that's, so first one, step one was sort of discussing it with people

00:11:05.000 --> 00:11:09.940
<v Aaron van Wirdum>that know what they're talking about. Step two is drafting it, including some

00:11:09.940 --> 00:11:10.820
<v Aaron van Wirdum>code.

00:11:12.400 --> 00:11:13.480
<v Sjors Provoost>Yeah, I would say so.

00:11:13.760 --> 00:11:14.740
<v Aaron van Wirdum>Yeah. Okay. Step three.

00:11:16.900 --> 00:11:21.280
<v Sjors Provoost>I don't know the steps are not actually numbered that way. But the idea would be

00:11:21.280 --> 00:11:25.200
<v Sjors Provoost>that you probably want to send that specification at that point to the mailing

00:11:25.200 --> 00:11:30.220
<v Sjors Provoost>list or to a group of people that you think will give you good feedback. Because

00:11:30.220 --> 00:11:33.780
<v Sjors Provoost>then the next step is that people will read it and give you feedback and find

00:11:33.780 --> 00:11:38.060
<v Sjors Provoost>problems with it. And then it's your job to do something with that feedback.

00:11:38.610 --> 00:11:44.610
<v Aaron van Wirdum>You ask the smart people if your idea makes any sense, then you draft it into a

00:11:44.610 --> 00:11:49.950
<v Aaron van Wirdum>draft BIP. You write some sort of example code, and then you go back for

00:11:49.950 --> 00:11:50.750
<v Aaron van Wirdum>feedback, right?

00:11:51.370 --> 00:11:52.330
<v Sjors Provoost>Yeah, pretty much.

00:11:52.410 --> 00:11:53.250
<v Aaron van Wirdum>That's the story so far.

00:11:54.770 --> 00:11:55.430
<v Aaron van Wirdum>What's next?

00:11:56.250 --> 00:12:00.110
<v Sjors Provoost>And so once you've addressed the feedback and you think the proposal is good

00:12:00.110 --> 00:12:06.080
<v Sjors Provoost>enough, now it's time to request a BIP number, which is

00:12:06.080 --> 00:12:08.380
<v Sjors Provoost>just a matter of saying, hey, Luke, can I have a BIP number?

00:12:09.120 --> 00:12:14.160
<v Aaron van Wirdum>Yeah, well, it's a little bit more than that, right? Your BIP does actually need

00:12:14.160 --> 00:12:19.790
<v Aaron van Wirdum>to satisfy a number of formal requirements

00:12:19.790 --> 00:12:25.090
<v Aaron van Wirdum>that are just a matter of doing it, just a matter of writing it up, mostly.

00:12:25.730 --> 00:12:29.710
<v Sjors Provoost>Yeah, there's some tedious formatting rules that are explained.

00:12:30.050 --> 00:12:30.750
<v Aaron van Wirdum>Yeah, exactly.

00:12:31.210 --> 00:12:36.010
<v Sjors Provoost>But usually what people, I think, will do is they copy-paste an earlier BIP and

00:12:36.010 --> 00:12:37.690
<v Sjors Provoost>just turn it into their own BIP.

00:12:38.620 --> 00:12:39.020
<v Aaron van Wirdum>Smart.

00:12:41.120 --> 00:12:43.280
<v Aaron van Wirdum>So now we have a BIP number. Now what?

00:12:44.110 --> 00:12:49.210
<v Sjors Provoost>Well, I guess the process kind of continues because now that it has a BIP number,

00:12:49.310 --> 00:12:52.250
<v Sjors Provoost>more people will pay attention to it. So you'll probably get a little bit more

00:12:52.250 --> 00:12:55.510
<v Sjors Provoost>feedback. Other people may, you know… if it's something that needs to be

00:12:55.510 --> 00:12:59.130
<v Sjors Provoost>implemented, then other people may try to implement it. Now, if it's a soft fork,

00:12:59.310 --> 00:13:05.030
<v Sjors Provoost>there's a lot more to it, I would say, because that's a consensus change.

00:13:05.880 --> 00:13:07.340
<v Aaron van Wirdum>Does it make the BIP binding?

00:13:08.210 --> 00:13:12.930
<v Sjors Provoost>Well, nothing is binding because we're still dealing with this set of anarchists,

00:13:13.130 --> 00:13:14.690
<v Sjors Provoost>essentially, right? The Bitcoin community.

00:13:15.910 --> 00:13:20.070
<v Sjors Provoost>Ultimately, what you do in a BIP can end up in a piece of software. And that

00:13:20.070 --> 00:13:23.710
<v Sjors Provoost>piece of software still needs to be installed by somebody. And they might just

00:13:23.710 --> 00:13:27.430
<v Sjors Provoost>not like it. Which is one reason why you really need to seek out this consensus.

00:13:27.950 --> 00:13:31.470
<v Sjors Provoost>Because if people think that there was no consensus over something, they might

00:13:31.470 --> 00:13:32.110
<v Sjors Provoost>just not run it.

00:13:32.710 --> 00:13:36.080
<v Aaron van Wirdum>Yeah, I think that's an important thing to point out, that the BIP

00:13:36.080 --> 00:13:41.760
<v Aaron van Wirdum>process and the overview of BIPs,

00:13:41.760 --> 00:13:47.760
<v Aaron van Wirdum>it is informational. I mean, well, that's also a subcategory of a

00:13:47.760 --> 00:13:52.720
<v Aaron van Wirdum>specific type of BIPs which we mentioned, but just the whole thing in itself is

00:13:52.720 --> 00:13:58.420
<v Aaron van Wirdum>informational. It doesn't actually define Bitcoin or even anything in Bitcoin. It

00:13:58.420 --> 00:14:04.420
<v Aaron van Wirdum>is a way of communicating concepts, but it… it doesn't mean

00:14:04.420 --> 00:14:08.820
<v Aaron van Wirdum>that now, you know, Bitcoin in the end, is still defined by people running the

00:14:08.820 --> 00:14:12.040
<v Aaron van Wirdum>software and by the software they're running. The BIP process…

00:14:12.040 --> 00:14:12.460
<v Sjors Provoost>Exactly.

00:14:12.460 --> 00:14:16.520
<v Aaron van Wirdum>The BIP process is… the BIPs are a tool. They’re not Bitcoin.

00:14:16.520 --> 00:14:21.300
<v Sjors Provoost>Yeah, and a lot of these rules that are specified in the BIP 2 are just to make

00:14:21.300 --> 00:14:24.940
<v Sjors Provoost>sure that mailing list discussions don't take forever and that there's some

00:14:24.940 --> 00:14:29.480
<v Sjors Provoost>predictability and what's going to happen when you when you do something. But

00:14:29.480 --> 00:14:34.500
<v Sjors Provoost>ultimately, if you're not happy with the whole way BIPs work, you're completely

00:14:34.500 --> 00:14:39.960
<v Sjors Provoost>free to run your own website and say, hey, I have a bunch of numbers and a bunch

00:14:39.960 --> 00:14:44.240
<v Sjors Provoost>of documents, and I have very different rules. And then people might ignore that

00:14:44.240 --> 00:14:44.760
<v Sjors Provoost>or not.

00:14:45.500 --> 00:14:50.000
<v Aaron van Wirdum>Yeah, that was sort of the next question I was going to ask, for which I, of

00:14:50.000 --> 00:14:54.020
<v Aaron van Wirdum>course, know the answer, Sjors, but I still am pretending to be the journalist

00:14:54.020 --> 00:14:59.720
<v Aaron van Wirdum>here. So Sjors, Sjors. What happens? So Luke Dashjr is currently the BIP editor.

00:14:59.980 --> 00:15:04.280
<v Aaron van Wirdum>What happens if he becomes evil? Luke turns evil. What's the problem?

00:15:04.780 --> 00:15:09.680
<v Sjors Provoost>Well, first of all, the BIP process is such that being evil shouldn't be a big

00:15:09.680 --> 00:15:14.340
<v Sjors Provoost>deal because it's a fairly bureaucratic thing. But there is some subjectivity

00:15:14.340 --> 00:15:20.240
<v Sjors Provoost>involved always, you know. Some people suggested using a robot to do this, but

00:15:20.240 --> 00:15:25.980
<v Sjors Provoost>that just invites spam and problems. So an evil person could, you know.

00:15:26.420 --> 00:15:31.340
<v Sjors Provoost>do things to the bureaucratic process that frustrate the community. Well, then

00:15:31.340 --> 00:15:35.420
<v Sjors Provoost>somebody [unclear] the thing and just says, okay, now this is the new BIP place

00:15:35.420 --> 00:15:38.570
<v Sjors Provoost>and probably copies everything that already exists over.

00:15:39.010 --> 00:15:39.350
<v Aaron van Wirdum>Right.

00:15:39.510 --> 00:15:42.410
<v Sjors Provoost>I mean, that's not, that's not ideal, but I mean, this is the same with, it's,

00:15:42.410 --> 00:15:48.210
<v Sjors Provoost>it's even easier than forking the Bitcoin soft software, right? Because it

00:15:48.210 --> 00:15:51.670
<v Sjors Provoost>really just, you just clone the website and say, here's a new website, or here's

00:15:51.670 --> 00:15:52.410
<v Sjors Provoost>a new GitHub repo.

00:15:52.850 --> 00:15:56.750
<v Aaron van Wirdum>It's hassle, but it doesn't actually do anything. Yeah, so you mentioned GitHub

00:15:56.750 --> 00:16:01.710
<v Aaron van Wirdum>already. The BIP lists, the BIPs are currently hosted on GitHub, is that correct?

00:16:02.410 --> 00:16:07.850
<v Sjors Provoost>Yeah, and I mean, it's a Git repository, remember? So everybody can clone a Git

00:16:07.850 --> 00:16:11.770
<v Sjors Provoost>repository on their own computer. So there could be thousands of backups. So if

00:16:11.770 --> 00:16:14.570
<v Sjors Provoost>GitHub decides to go evil, that is really not a problem.

00:16:15.370 --> 00:16:20.610
<v Aaron van Wirdum>Yeah, they used to be hosted as wikis for a while, but I

00:16:20.610 --> 00:16:24.700
<v Aaron van Wirdum>think... A long time ago, I think probably like eight years ago or something,

00:16:24.700 --> 00:16:28.940
<v Aaron van Wirdum>they transitioned to GitHub. So they've been hosted there ever since.

00:16:29.440 --> 00:16:32.880
<v Sjors Provoost>Yeah, wikis are nice because you can do collaborative editing. But on the other

00:16:32.880 --> 00:16:37.160
<v Sjors Provoost>hand, if everybody starts editing the BIP, then some people might not understand

00:16:37.160 --> 00:16:41.580
<v Sjors Provoost>that something is already implemented. And they start changing the specification

00:16:41.580 --> 00:16:45.820
<v Sjors Provoost>of Taproot right from under you. And then you get confusion because one node is

00:16:45.820 --> 00:16:50.350
<v Sjors Provoost>implementing an earlier edit than the other. So it's probably good to have a

00:16:50.350 --> 00:16:56.330
<v Sjors Provoost>benevolent dictator with very limited powers having one place

00:16:56.330 --> 00:16:57.170
<v Sjors Provoost>to edit the specs.

00:16:57.960 --> 00:17:03.720
<v Aaron van Wirdum>Yeah, every BIP has one specific champion is what it's called, I think, right? Or

00:17:03.720 --> 00:17:07.840
<v Aaron van Wirdum>maybe sometimes several. But yeah, someone who's basically in charge of that

00:17:07.840 --> 00:17:13.720
<v Aaron van Wirdum>specific BIP and who's responsible for updating it or taking

00:17:13.100 --> 00:17:13.630
<v Sjors Provoost>[unclear]

00:17:13.720 --> 00:17:15.200
<v Aaron van Wirdum>feedback into account.

00:17:15.580 --> 00:17:20.400
<v Sjors Provoost>Right. Sometimes when, for example, you want to fix a typo in a BIP or, well, not

00:17:20.400 --> 00:17:24.480
<v Sjors Provoost>a typo, but like add a picture, add a chart to it or some clarification to it.

00:17:25.190 --> 00:17:31.050
<v Sjors Provoost>What the BIP maintainer will do, then the editor will tag the original authors on

00:17:31.050 --> 00:17:34.430
<v Sjors Provoost>GitHub and say, hey, what do you think about these changes? And if all the

00:17:34.430 --> 00:17:39.930
<v Sjors Provoost>original authors say, yep, that looks good, then it's merged. So the original

00:17:39.930 --> 00:17:43.450
<v Sjors Provoost>authors are kind of in charge of the BIP, but everybody can help improve it.

00:17:44.170 --> 00:17:44.650
<v Aaron van Wirdum>Right.

00:17:44.810 --> 00:17:49.290
<v Sjors Provoost>Which is a little bit less anarchy than a wiki where everybody can just go in and

00:17:49.290 --> 00:17:52.350
<v Sjors Provoost>edit it without anybody signing off on it.

00:17:52.830 --> 00:17:57.230
<v Aaron van Wirdum>Makes sense. All right, I think this is going to be my final question for you.

00:17:57.490 --> 00:17:58.510
<v Aaron van Wirdum>Sjors, are you ready?

00:17:59.230 --> 00:18:00.010
<v Sjors Provoost>I think so.

00:18:00.310 --> 00:18:05.370
<v Aaron van Wirdum>So I think there are sort of different specifications

00:18:06.460 --> 00:18:12.260
<v Aaron van Wirdum>of BIPs. But that's not quite what we mentioned, is it? Like hard fork,

00:18:12.440 --> 00:18:15.660
<v Aaron van Wirdum>soft fork, consensus, like these kinds of categories?

00:18:16.040 --> 00:18:17.240
<v Sjors Provoost>I think you mean layers.

00:18:17.600 --> 00:18:19.540
<v Aaron van Wirdum>Oh, that's it. You know everything, Sjors.

00:18:19.900 --> 00:18:25.320
<v Sjors Provoost>Right. So the layer, so you could be talking about a consensus change, like a

00:18:25.320 --> 00:18:29.260
<v Sjors Provoost>soft fork or a hard fork. You could be talking about the peer-to-peer networks or

00:18:29.260 --> 00:18:34.280
<v Sjors Provoost>how nodes communicate with each other. Or you can be talking about the RPC, which

00:18:34.280 --> 00:18:36.280
<v Sjors Provoost>is like a part of the node itself.

00:18:38.800 --> 00:18:43.440
<v Sjors Provoost>And you can be talking about applications, I guess, like wallets and things like that.

00:18:43.520 --> 00:18:46.040
<v Aaron van Wirdum>Right, yeah, and that's all specified in the BIP.

00:18:46.770 --> 00:18:52.290
<v Sjors Provoost>Yeah, and I guess depending on the layer, there are some guidelines on what the

00:18:52.290 --> 00:18:55.870
<v Sjors Provoost>standard of quality should be for what you're writing. So, for example, when you

00:18:55.870 --> 00:18:59.490
<v Sjors Provoost>want to change anything about the peer-to-peer network, I think there needs to be

00:18:59.490 --> 00:19:05.360
<v Sjors Provoost>at least one implementation, but also there needs to be... In

00:19:05.360 --> 00:19:10.220
<v Sjors Provoost>order to make it final, which is one of the states that the BIP can be in, there

00:19:10.220 --> 00:19:14.920
<v Sjors Provoost>needs to be at least a number of nodes out there in the wild actually using this

00:19:14.920 --> 00:19:20.880
<v Sjors Provoost>that you can detect to gauge whether this

00:19:20.880 --> 00:19:23.460
<v Sjors Provoost>thing is actually being used. With the software, it's a bit more obvious that

00:19:23.460 --> 00:19:28.320
<v Sjors Provoost>it's being used. It activates in ways we've described in earlier episodes. But

00:19:28.320 --> 00:19:32.430
<v Sjors Provoost>with the peer-to-peer networking... You know, not everybody has to upgrade at the

00:19:32.430 --> 00:19:36.710
<v Sjors Provoost>same time. So nobody might be using a new feature or everybody might be.

00:19:37.600 --> 00:19:40.090
<v Aaron van Wirdum>Yeah. Did you ever draft a BIP?

00:19:41.010 --> 00:19:46.730
<v Sjors Provoost>No, I have helped review a couple of BIPs, but I have not written one myself. Too lazy.

00:19:46.870 --> 00:19:51.250
<v Aaron van Wirdum>Would you like to? I have a great example that you could use as a BIP if you want.

00:19:51.450 --> 00:19:54.350
<v Sjors Provoost>I think I know where you're getting to. No, I would rather not.

00:19:55.590 --> 00:19:58.250
<v Aaron van Wirdum>Imagine how much energy we can save, Sjors.

00:19:59.810 --> 00:20:02.860
<v Sjors Provoost>Yeah. I don't have the energy, though, so unfortunately.

00:20:03.710 --> 00:20:06.910
<v Aaron van Wirdum>All right, yeah. You're not putting in any proof of work.

00:20:07.030 --> 00:20:09.350
<v Sjors Provoost>And I think that was our pun of the week. Anything else?

00:20:10.370 --> 00:20:11.970
<v Aaron van Wirdum>No, I think that’s it from me, Sjors.

00:20:12.610 --> 00:20:15.930
<v Sjors Provoost>All righty then. Well, enjoy the heat and the conference.

00:20:16.670 --> 00:20:19.790
<v Aaron van Wirdum>Yeah, if you're listening and you see me at the conference, come say hi.

00:20:20.430 --> 00:20:24.370
<v Sjors Provoost>Yep. If you're listening and you see me at the conference, it's not me. So run

00:20:24.370 --> 00:20:27.890
<v Sjors Provoost>away. And thank you for listening to the Van Wirdum Sjorsnado.

00:20:28.470 --> 00:20:29.090
<v Aaron van Wirdum>There you go.

