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

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

00:00:22.130 --> 00:00:22.610
<v Sjors Provoost>Explained.

00:00:23.090 --> 00:00:23.530
<v Aaron van Wirdum>Hey, Sjors.

00:00:23.950 --> 00:00:24.370
<v Sjors Provoost>Hello.

00:00:25.230 --> 00:00:31.030
<v Aaron van Wirdum>So, here we are. After weeks of you complaining to me, DMing me, asking

00:00:31.030 --> 00:00:36.870
<v Aaron van Wirdum>me every week, week after week, Aaron, Aaron, Aaron. I want Nigel Farage to

00:00:36.870 --> 00:00:41.170
<v Aaron van Wirdum>come to Amsterdam. Nigel Farage needs to be a speaker at Bitcoin Amsterdam.

00:00:41.430 --> 00:00:43.570
<v Aaron van Wirdum>Finally, Sjors, I can tell you, he's coming.

00:00:44.420 --> 00:00:48.620
<v Sjors Provoost>Okay. I think I heard the rumor earlier today and I was like...

00:00:48.600 --> 00:00:53.660
<v Aaron van Wirdum>Okay he'll be there so it's a happy day for you Sjors, I know he's your favorite

00:00:53.660 --> 00:00:54.280
<v Aaron van Wirdum>politician.

00:00:54.280 --> 00:00:55.320
<v Sjors Provoost>He is?

00:00:55.320 --> 00:01:01.010
<v Aaron van Wirdum>Okay and you dear listeners if you want to see Nigel the great Nigel Farage

00:01:01.010 --> 00:01:06.230
<v Aaron van Wirdum>I'm in case anyone doesn't know this I'm being a bit sarcastic but in case you

00:01:06.230 --> 00:01:07.390
<v Aaron van Wirdum>want to come to Bitcoin Amsterdam

00:01:07.390 --> 00:01:09.790
<v Sjors Provoost>Does he even have a passport to travel outside the UK?

00:01:09.790 --> 00:01:15.430
<v Aaron van Wirdum>Yeah I I don't know why he would want to right But let me finish my thought. If

00:01:15.430 --> 00:01:19.690
<v Aaron van Wirdum>you want to come and if you want to meet Nigel Farage or at least hear him speak,

00:01:19.930 --> 00:01:25.930
<v Aaron van Wirdum>use the promo code Sjorsnado. Let's see if anyone out there can remember

00:01:25.930 --> 00:01:29.310
<v Aaron van Wirdum>Sjorsnado and use it as a promo code. You'll get 10% off.

00:01:30.970 --> 00:01:31.370
<v Sjors Provoost>Okay.

00:01:31.630 --> 00:01:36.310
<v Aaron van Wirdum>That's my sort of, I'm now just shilling the conference before we start the

00:01:36.310 --> 00:01:38.490
<v Aaron van Wirdum>episode. I hope you don't mind too much.

00:01:38.730 --> 00:01:39.810
<v Sjors Provoost>That's what we did last time.

00:01:40.010 --> 00:01:44.630
<v Aaron van Wirdum>Yeah, I think this is the third time. All right, let's move on. Sjors, today

00:01:44.630 --> 00:01:45.530
<v Aaron van Wirdum>you've got a new hobby.

00:01:45.870 --> 00:01:46.490
<v Sjors Provoost>I have a new hobby.

00:01:46.570 --> 00:01:47.410
<v Aaron van Wirdum>What am I looking at here?

00:01:47.610 --> 00:01:48.730
<v Sjors Provoost>You're looking at an anvil.

00:01:49.090 --> 00:01:53.290
<v Aaron van Wirdum>You've got an actual miniature anvil on your desk right here.

00:01:53.670 --> 00:01:54.330
<v Sjors Provoost>That's right.

00:01:54.690 --> 00:01:57.850
<v Aaron van Wirdum>And you're using that for what exactly?

00:01:58.390 --> 00:02:02.090
<v Sjors Provoost>Well, right now I'm just using it as a nice decorative element. But I want to

00:02:02.090 --> 00:02:06.150
<v Sjors Provoost>hobby around a bit with these QR codes that you can basically put in steel plates.

00:02:06.720 --> 00:02:09.780
<v Aaron van Wirdum>Right. You're going to hammer your private keys into steel.

00:02:09.980 --> 00:02:13.300
<v Sjors Provoost>Or some testnet private key probably, but we'll see.

00:02:13.380 --> 00:02:18.420
<v Aaron van Wirdum>Fair enough. Yes. Well, so the specific thing we're going to discuss is SeedQR.

00:02:18.720 --> 00:02:20.100
<v Aaron van Wirdum>This is something you proposed.

00:02:20.440 --> 00:02:20.560
<v Sjors Provoost>Yes.

00:02:20.560 --> 00:02:23.620
<v Aaron van Wirdum>I'd never heard of it. I don't know where you found it. And I think you didn't

00:02:23.620 --> 00:02:24.860
<v Aaron van Wirdum>remember where you found it either.

00:02:24.980 --> 00:02:25.420
<v Sjors Provoost>I remember.

00:02:25.780 --> 00:02:26.620
<v Aaron van Wirdum>Oh, where did you find it?

00:02:26.620 --> 00:02:29.920
<v Sjors Provoost>Yeah, I was on Twitter as I sometimes do.

00:02:30.140 --> 00:02:30.700
<v Aaron van Wirdum>As usual.

00:02:30.880 --> 00:02:36.300
<v Sjors Provoost>And I was doom scrolling. And then I saw this really cool video of somebody

00:02:36.300 --> 00:02:41.200
<v Sjors Provoost>writing down with pen and paper a QR code, just with regular pen and paper,

00:02:41.400 --> 00:02:46.500
<v Sjors Provoost>and scanning it, and it actually worked. So I was quite surprised to see that you

00:02:46.500 --> 00:02:48.620
<v Sjors Provoost>can actually draw it by hand, and quite sloppily even.

00:02:49.020 --> 00:02:51.920
<v Aaron van Wirdum>Why is that surprising? That doesn't surprise me at all.

00:02:52.040 --> 00:02:57.020
<v Sjors Provoost>I was expecting it to be very sensitive. So if you don't print it with a computer

00:02:57.020 --> 00:03:00.820
<v Sjors Provoost>and the squares are not perfectly square, then I thought it wouldn't work. But it

00:03:00.820 --> 00:03:03.820
<v Sjors Provoost>turns out now you can do pretty sloppy work, and it still works.

00:03:04.100 --> 00:03:09.800
<v Aaron van Wirdum>Right so basically you you can draw out a grid and start you know coloring some of the…

00:03:10.260 --> 00:03:14.500
<v Sjors Provoost>Yeah, but I think he didn't even draw out a grid here. So yeah, it was just roughly.

00:03:14.500 --> 00:03:15.320
<v Aaron van Wirdum>Oh, and it still works?

00:03:15.460 --> 00:03:15.580
<v Sjors Provoost>Yep.

00:03:16.460 --> 00:03:21.520
<v Aaron van Wirdum>That's actually pretty interesting then. So this was someone using SeedQR? Does

00:03:21.520 --> 00:03:22.080
<v Aaron van Wirdum>this tie in?

00:03:22.200 --> 00:03:25.600
<v Sjors Provoost>Yeah, so I was wondering like, what is that? You know, what's behind that? What's

00:03:25.600 --> 00:03:29.540
<v Sjors Provoost>the standard or maybe a proposed standard? And yeah, so there's apparently

00:03:29.540 --> 00:03:34.760
<v Sjors Provoost>something out there called SeedQR. And the context in which it's used is a

00:03:34.760 --> 00:03:37.840
<v Sjors Provoost>device. I guess we'll get to that later. It's called the device called the

00:03:37.840 --> 00:03:43.560
<v Sjors Provoost>SeedSigner. And that is not really a company. It's just an open standard for how

00:03:43.560 --> 00:03:47.600
<v Sjors Provoost>you can make your own device. So you buy, I think it's a Raspberry Mini or

00:03:47.600 --> 00:03:52.340
<v Sjors Provoost>Arduino, something like that. Very tiny computer, has a little camera on it, and

00:03:52.340 --> 00:03:56.440
<v Sjors Provoost>you install some software on it that's open source. And then you can use that to

00:03:56.440 --> 00:04:02.320
<v Sjors Provoost>scan a QR code. And this QR code will then convert into your 12 words or

00:04:02.320 --> 00:04:02.940
<v Sjors Provoost>24 words.

00:04:03.850 --> 00:04:04.210
<v Aaron van Wirdum>Okay.

00:04:04.350 --> 00:04:07.870
<v Sjors Provoost>And vice versa, you can use a keyboard, or it's not really a keyboard, just a

00:04:07.870 --> 00:04:12.830
<v Sjors Provoost>couple of buttons to enter your 24 or 12 words, and it'll show you a QR code, and

00:04:12.830 --> 00:04:15.870
<v Sjors Provoost>you can then draw that QR code on a piece of paper. That's kind of what it does.

00:04:16.130 --> 00:04:16.330
<v Aaron van Wirdum>Right.

00:04:16.330 --> 00:04:19.130
<v Sjors Provoost>We're getting a little ahead of ourselves, but that's what I was looking at.

00:04:19.310 --> 00:04:24.290
<v Aaron van Wirdum>Yeah, let's just take this one step at a time, and then we'll get to whatever

00:04:24.290 --> 00:04:25.530
<v Aaron van Wirdum>you're talking about in a minute.

00:04:26.780 --> 00:04:27.260
<v Sjors Provoost>Okay.

00:04:27.660 --> 00:04:28.340
<v Aaron van Wirdum>Sounds good.

00:04:28.540 --> 00:04:29.000
<v Sjors Provoost>Sounds good.

00:04:29.300 --> 00:04:34.700
<v Aaron van Wirdum>All right. There we go. So first of all, Sjors, how do people make sure they

00:04:34.700 --> 00:04:35.620
<v Aaron van Wirdum>don't lose their Bitcoin?

00:04:35.920 --> 00:04:36.840
<v Sjors Provoost>They make backups.

00:04:37.180 --> 00:04:37.560
<v Aaron van Wirdum>Great.

00:04:37.780 --> 00:04:38.800
<v Sjors Provoost>Or they become a no-coiner.

00:04:39.020 --> 00:04:44.550
<v Aaron van Wirdum>Well, so people used to make backups. You know, back in the days, we all made

00:04:44.550 --> 00:04:50.110
<v Aaron van Wirdum>backups, which basically meant you literally backed up every private key you had, right?

00:04:50.530 --> 00:04:54.070
<v Sjors Provoost>Yeah, so I'm using the word backup very broadly. But back in the day, you

00:04:54.070 --> 00:04:57.890
<v Sjors Provoost>actually had to make a backup in the more narrow sense that you click the button

00:04:57.890 --> 00:05:01.670
<v Sjors Provoost>that says make backup and you store the backup somewhere else. So if you were

00:05:01.670 --> 00:05:06.030
<v Sjors Provoost>using the old Bitcoin client before it was called Bitcoin Core, it came with a wallet.

00:05:07.750 --> 00:05:11.170
<v Sjors Provoost>Yes, in order to not lose your coins, you had to make a backup of the wallet. But

00:05:11.170 --> 00:05:17.110
<v Sjors Provoost>not just once. Initially, every time you made a new receive address, it would

00:05:17.110 --> 00:05:20.910
<v Sjors Provoost>be a completely random receive address. So you'd have to make a backup every time

00:05:20.910 --> 00:05:24.730
<v Sjors Provoost>you received coins. Or at some point, I think it was improved, so it would make

00:05:24.730 --> 00:05:28.870
<v Sjors Provoost>100 receive addresses in the background. And you'd make a backup of those 100

00:05:28.870 --> 00:05:33.890
<v Sjors Provoost>addresses. If you forgot to do that, you would suddenly lose all your coins if

00:05:33.890 --> 00:05:35.610
<v Sjors Provoost>you restored an old backup.

00:05:36.640 --> 00:05:42.040
<v Aaron van Wirdum>Right okay so the problem with this for one is you need a lot of well maybe not a

00:05:42.040 --> 00:05:47.200
<v Aaron van Wirdum>lot but you need to back up a bunch of data one for each transaction one for each

00:05:47.200 --> 00:05:50.680
<v Aaron van Wirdum>receiving transaction because ideally of course you make a new address for each

00:05:50.680 --> 00:05:54.540
<v Aaron van Wirdum>transaction as we've explained like three episodes ago I think.

00:05:54.980 --> 00:05:56.220
<v Sjors Provoost>We've mentioned it a couple of times.

00:05:56.700 --> 00:05:58.200
<v Aaron van Wirdum>It's also somewhat everyone knows.

00:05:58.400 --> 00:06:01.280
<v Sjors Provoost>And so you didn't have to do it every transaction. I think you would have to do

00:06:01.280 --> 00:06:04.860
<v Sjors Provoost>it every 100 transactions or something, and they would just make 100 backups,

00:06:04.960 --> 00:06:08.520
<v Sjors Provoost>something like that. But anyway, if you forgot to do that, your coins, not only

00:06:08.520 --> 00:06:12.160
<v Sjors Provoost>do you use new receive addresses, even if you use the same receive address every

00:06:12.160 --> 00:06:16.320
<v Sjors Provoost>time, when you're sending coins, you create a change address, your wallet. And

00:06:16.320 --> 00:06:20.650
<v Sjors Provoost>your wallet will create new change addresses because it's very disciplined. And

00:06:20.650 --> 00:06:24.950
<v Sjors Provoost>so when you hit change address number 101 or whatever it was, and you don't have

00:06:24.950 --> 00:06:29.690
<v Sjors Provoost>a backup of number 101, now all your coins went to this new change address and

00:06:29.690 --> 00:06:30.210
<v Sjors Provoost>they're all gone.

00:06:30.670 --> 00:06:36.230
<v Aaron van Wirdum>If your computer crashes or something yeah yeah okay so this was improved we're

00:06:36.230 --> 00:06:39.030
<v Aaron van Wirdum>just gonna have to kind of rush through this because we've discussed it before

00:06:39.030 --> 00:06:42.810
<v Aaron van Wirdum>and I think we've even had entire episodes about some of this stuff like for

00:06:42.810 --> 00:06:47.450
<v Aaron van Wirdum>example the thing we're gonna mention now are seeds I think we've had a whole

00:06:47.450 --> 00:06:51.190
<v Aaron van Wirdum>episode it was like episode it was an early episode what is an xpub?

00:06:51.190 --> 00:06:52.850
<v Sjors Provoost>Yeah that's a famous episode.

00:06:53.500 --> 00:06:55.100
<v Aaron van Wirdum>Is it a famous episode?

00:06:55.320 --> 00:06:55.880
<v Sjors Provoost>No, I don't know.

00:06:56.660 --> 00:07:00.240
<v Aaron van Wirdum>I think all of our... Well, actually, none of our episodes are famous, I'd say.

00:07:02.140 --> 00:07:04.480
<v Aaron van Wirdum>BIP 32, that's seeds. So what is seed?

00:07:05.710 --> 00:07:08.210
<v Aaron van Wirdum>Am I saying that right? No, no, no, I'm saying it wrong.

00:07:08.230 --> 00:07:13.840
<v Sjors Provoost>Seed, yes, but it's not a mnemonic. So basically, a seed just means one key that

00:07:13.840 --> 00:07:16.480
<v Sjors Provoost>creates all the other keys. So it's like a plant seed.

00:07:16.720 --> 00:07:17.120
<v Aaron van Wirdum>Right, yep.

00:07:17.260 --> 00:07:21.280
<v Sjors Provoost>And so what BIP 32 did is you create this one master seed, master key, or

00:07:21.280 --> 00:07:22.120
<v Sjors Provoost>whatever you want to call it.

00:07:23.490 --> 00:07:26.770
<v Sjors Provoost>And that's the thing you backup, which is the first thing you do when you get the

00:07:26.770 --> 00:07:31.700
<v Sjors Provoost>new wallet. You backup this master seed and you're good. Then what happens is you

00:07:31.700 --> 00:07:37.580
<v Sjors Provoost>have a tree of derivations, basically, so that each address is unique, but

00:07:37.580 --> 00:07:41.660
<v Sjors Provoost>it is all derivable from this one seed. So that's how you can restore it.

00:07:41.920 --> 00:07:45.580
<v Aaron van Wirdum>Just to jog my own memory, really. I mean, if I don't remember, probably some of

00:07:45.580 --> 00:07:50.240
<v Aaron van Wirdum>our listeners don't. Is it essentially just the case that you... generate a first

00:07:50.240 --> 00:07:53.640
<v Aaron van Wirdum>private key and then you hash the private key and the hash and the hash and the

00:07:53.640 --> 00:07:57.020
<v Aaron van Wirdum>hash and that's just new private keys or is it a bit more complicated?

00:07:57.020 --> 00:08:00.840
<v Sjors Provoost>It is a bit more complicated but it really boils down to that you right hash it

00:08:00.840 --> 00:08:04.480
<v Sjors Provoost>and maybe you add the number one and there's some some nuance there but yeah.

00:08:04.480 --> 00:08:06.960
<v Aaron van Wirdum>That's essentially the gist of it all right.

00:08:06.960 --> 00:08:09.900
<v Sjors Provoost>It's deterministic so your wallet will know what to do.

00:08:09.900 --> 00:08:10.360
<v Aaron van Wirdum>Right.

00:08:10.360 --> 00:08:13.280
<v Sjors Provoost>Once it gets a seed. It will know how to find the addresses that you've used before.

00:08:13.280 --> 00:08:18.420
<v Aaron van Wirdum>Sure okay now then I guess the problem here again we're rushing through it a bit

00:08:18.420 --> 00:08:22.640
<v Aaron van Wirdum>through this part. The problem here is that remembering even the seed, even the

00:08:22.640 --> 00:08:27.240
<v Aaron van Wirdum>first private key is a little bit hard. Not for you, of course, but for regular

00:08:27.240 --> 00:08:31.260
<v Aaron van Wirdum>people like me and most of our listeners, we don't actually remember that kind of

00:08:31.260 --> 00:08:33.000
<v Aaron van Wirdum>stuff. So we need something that's a bit easier.

00:08:33.320 --> 00:08:36.700
<v Sjors Provoost>Well, so the thing is, initially with the Bitcoin client, you would just back up

00:08:36.700 --> 00:08:42.020
<v Sjors Provoost>on a USB stick or something like that, right? It'd still be a digital backup. And

00:08:42.020 --> 00:08:45.360
<v Sjors Provoost>so some people would prefer to have a backup that's physical, that's probably

00:08:45.360 --> 00:08:49.320
<v Sjors Provoost>written on a piece of paper. And that means, yeah, then it gets really cumbersome

00:08:49.320 --> 00:08:55.060
<v Sjors Provoost>to start writing these hexadecimal things down, if you can even find them. Right.

00:08:55.060 --> 00:08:58.500
<v Aaron van Wirdum>It's not even about memory. You shouldn't even use your memory. You should write

00:08:58.500 --> 00:09:00.920
<v Aaron van Wirdum>it down either way. But we need an easier way to write it down.

00:09:01.160 --> 00:09:01.300
<v Sjors Provoost>Yeah.

00:09:02.820 --> 00:09:07.560
<v Sjors Provoost>And I guess that's another thing. So then there was this idea called BIP 39,

00:09:07.580 --> 00:09:12.600
<v Sjors Provoost>which is a mnemonic. And the idea is really you just take the letters or the

00:09:12.600 --> 00:09:18.220
<v Sjors Provoost>hexadecimal numbers and you just map them onto words. So there's 4,000 words

00:09:18.220 --> 00:09:19.460
<v Sjors Provoost>and each...

00:09:19.460 --> 00:09:21.860
<v Aaron van Wirdum>No, there's 2,048 words, I think.

00:09:22.000 --> 00:09:25.120
<v Sjors Provoost>Okay. Some... Those just map onto the numbers.

00:09:25.360 --> 00:09:29.900
<v Aaron van Wirdum>It's 2 to the 12th. 2 to the power of 12th. That's 2048.

00:09:30.320 --> 00:09:33.660
<v Sjors Provoost>That sounds like 4,000. 2 to the power of 10 is 1,000.

00:09:34.650 --> 00:09:40.270
<v Aaron van Wirdum>No, I'm pretty sure. I looked it up this afternoon. So I think it's 2048 words.

00:09:40.510 --> 00:09:43.210
<v Aaron van Wirdum>But there may be several standards, right? Aren't there several?

00:09:43.410 --> 00:09:44.470
<v Sjors Provoost>Well, I'm talking about BIP 39.

00:09:45.030 --> 00:09:45.630
<v Aaron van Wirdum>Me too.

00:09:45.830 --> 00:09:49.950
<v Sjors Provoost>So there's a number of words, which we'll have to look up. And they really, those

00:09:49.950 --> 00:09:53.570
<v Sjors Provoost>words just represent numbers, essentially. So that's that simple.

00:09:54.170 --> 00:10:00.150
<v Aaron van Wirdum>Basically, it's just the first word is number 0000. They all

00:10:00.150 --> 00:10:05.930
<v Aaron van Wirdum>have four numbers, right? And then the second word is 0001, and that's all the way through.

00:10:06.250 --> 00:10:12.110
<v Sjors Provoost>Exactly. Now, there is a little caveat there. It works one way, as in you

00:10:12.110 --> 00:10:16.130
<v Sjors Provoost>start with the numbers. So the numbers are the seed you generated, essentially,

00:10:16.610 --> 00:10:22.360
<v Sjors Provoost>your computer generated, and then they are converted to words. But when you use

00:10:22.360 --> 00:10:26.040
<v Sjors Provoost>it, it's actually not using the words. Sorry, it's not going back to the numbers.

00:10:26.160 --> 00:10:30.380
<v Sjors Provoost>So when you enter the words, the next step in order to create this hierarchical

00:10:30.380 --> 00:10:36.040
<v Sjors Provoost>wallet is to just process the words as they are written and hash that.

00:10:37.650 --> 00:10:40.810
<v Sjors Provoost>It's a little implementation detail that you generally don't have to worry about

00:10:40.810 --> 00:10:43.240
<v Sjors Provoost>unless you want to do translations.

00:10:44.470 --> 00:10:50.370
<v Sjors Provoost>So basically the first address of your wallet is derived. So you start with this

00:10:50.370 --> 00:10:56.300
<v Sjors Provoost>random numbers. Those are turned into words, and those words pasted behind

00:10:56.300 --> 00:11:00.540
<v Sjors Provoost>each other, and maybe with a little password behind it, those are hashed, and

00:11:00.540 --> 00:11:01.980
<v Sjors Provoost>that's where the first key comes from.

00:11:04.600 --> 00:11:09.800
<v Sjors Provoost>But that means that if you have, say, a German alternative for this BIP 39,

00:11:10.400 --> 00:11:15.530
<v Sjors Provoost>that... If you start with the same numbers, but now you start to write German

00:11:15.530 --> 00:11:19.190
<v Sjors Provoost>words, and when you hash the German words, you're going to get a different key

00:11:19.190 --> 00:11:23.390
<v Sjors Provoost>than when you hash English words. So you cannot translate one seed into another.

00:11:23.550 --> 00:11:24.770
<v Sjors Provoost>That makes no sense.

00:11:25.290 --> 00:11:26.470
<v Aaron van Wirdum>Right. Okay.

00:11:27.630 --> 00:11:32.650
<v Sjors Provoost>And this is relevant because that's one reason why I don't think it's a good idea

00:11:32.650 --> 00:11:35.630
<v Sjors Provoost>for people to use BIP-39 in other languages.

00:11:36.830 --> 00:11:40.670
<v Sjors Provoost>Because in that case, you may have one piece of software that will understand

00:11:40.670 --> 00:11:44.410
<v Sjors Provoost>what to do with the German words, but your other piece of software that you may

00:11:44.410 --> 00:11:48.670
<v Sjors Provoost>want to use later, your other wallet, will not understand it. Because most of the

00:11:48.670 --> 00:11:49.690
<v Sjors Provoost>support is for the English words.

00:11:50.850 --> 00:11:56.410
<v Aaron van Wirdum>Right. Okay, well, I didn't know that. Is it important for the rest of the episode?

00:11:56.590 --> 00:12:00.810
<v Sjors Provoost>It's not important for the rest of the episode. It is one of those things that if

00:12:00.810 --> 00:12:04.030
<v Sjors Provoost>we ever had to redo these standards, that we should do better.

00:12:04.370 --> 00:12:09.510
<v Aaron van Wirdum>Right. I do have another question. So some seeds have 12 words and some have

00:12:09.510 --> 00:12:15.170
<v Aaron van Wirdum>24. I think these are the two most common amounts of words.

00:12:15.530 --> 00:12:18.130
<v Aaron van Wirdum>Why is there a difference? Is one just more secure?

00:12:18.670 --> 00:12:23.980
<v Sjors Provoost>Yeah, it's more bits. So 12 words means 128 bits. Of random data.

00:12:24.480 --> 00:12:28.820
<v Sjors Provoost>So basically throwing coins. Yeah, you're basically throwing 128 coins.

00:12:30.190 --> 00:12:31.470
<v Aaron van Wirdum>For heads of tails, yeah.

00:12:31.690 --> 00:12:37.150
<v Sjors Provoost>Yes. Or if you have 24 words, you're effectively throwing 256 coins, heads of

00:12:37.150 --> 00:12:40.810
<v Sjors Provoost>tails. And that is not twice as secure. That is like...

00:12:40.810 --> 00:12:42.010
<v Aaron van Wirdum>A lot more secure.

00:12:42.230 --> 00:12:42.370
<v Sjors Provoost>Yeah.

00:12:42.790 --> 00:12:43.670
<v Aaron van Wirdum>What's the numbers, Sjors?

00:12:43.910 --> 00:12:44.750
<v Sjors Provoost>Well, I don't know.

00:12:44.970 --> 00:12:45.770
<v Aaron van Wirdum>From the top of your head, come on.

00:12:45.850 --> 00:12:48.270
<v Sjors Provoost>It's basically twice as many bits of security.

00:12:48.670 --> 00:12:49.110
<v Aaron van Wirdum>Yeah.

00:12:49.530 --> 00:12:55.140
<v Sjors Provoost>But... It takes a lot more time to brute force it. Because every bit you add

00:12:55.140 --> 00:12:58.520
<v Sjors Provoost>means it takes twice as long to brute force it. If you want to guess what

00:12:58.520 --> 00:13:03.700
<v Sjors Provoost>somebody's mnemonic is, you try one combination of words, you try another, you

00:13:03.700 --> 00:13:09.000
<v Sjors Provoost>try another, you try another. And if it's a two-bit system, if it's a two-bit

00:13:09.000 --> 00:13:14.740
<v Sjors Provoost>seed, well, then you just have to try four times. But if it is a 4-bit seed,

00:13:14.940 --> 00:13:17.440
<v Sjors Provoost>you don't have to try 8 times, you have to try 16 times.

00:13:17.660 --> 00:13:22.260
<v Aaron van Wirdum>So is 12 enough then? Why don't all wallets just use... If some wallets use 24,

00:13:22.440 --> 00:13:23.900
<v Aaron van Wirdum>why don't they all use 24?

00:13:24.680 --> 00:13:30.160
<v Sjors Provoost>I mean, ultimately, it's better to have more bits of security. If there's no

00:13:30.160 --> 00:13:35.860
<v Sjors Provoost>trade-off, why not? Right and ultimately in the long run you know the worry is

00:13:35.860 --> 00:13:40.160
<v Sjors Provoost>that as computers get faster or as problems are found you need more bits to be

00:13:40.160 --> 00:13:44.660
<v Sjors Provoost>really secure and maybe one day we'll reach the point where 128 bit is not secure

00:13:44.660 --> 00:13:49.040
<v Sjors Provoost>anymore but then 256 will last us a bit longer so it's it's that kind of

00:13:49.040 --> 00:13:50.040
<v Sjors Provoost>long-term thinking.

00:13:50.040 --> 00:13:54.120
<v Aaron van Wirdum>Is it maybe also partly a human problem like some people will cut their seed in

00:13:54.120 --> 00:13:58.020
<v Aaron van Wirdum>half thinking if they hide them in different places then they're good but then if

00:13:58.380 --> 00:13:59.960
<v Aaron van Wirdum>[unclear] if someone…

00:13:59.960 --> 00:14:03.960
<v Sjors Provoost>Yeah so then you're getting really in trouble right because six if you have a 12

00:14:03.960 --> 00:14:09.780
<v Sjors Provoost>word seed and you cut it in two that's six words each and that is only 64 bits of

00:14:09.780 --> 00:14:14.340
<v Sjors Provoost>entropy that's still that's still a lot but it might be within the realm of

00:14:14.340 --> 00:14:18.560
<v Sjors Provoost>something you can crack because again Twice as long does not mean that it takes

00:14:18.560 --> 00:14:22.620
<v Sjors Provoost>twice as long to crack it. It means it takes exponentially longer to crack it.

00:14:23.020 --> 00:14:23.160
<v Aaron van Wirdum>Yep.

00:14:23.640 --> 00:14:26.480
<v Sjors Provoost>So that's indeed one of the risks, but I don't think that's the reason. So

00:14:26.480 --> 00:14:31.640
<v Sjors Provoost>basically, you could say that the limit of Bitcoin, the way it's architected, is

00:14:31.640 --> 00:14:37.480
<v Sjors Provoost>256 bits. And that is because the hashes of a block, as well as the elliptic

00:14:37.480 --> 00:14:40.480
<v Sjors Provoost>curve, all use 64 bits, 256 bits.

00:14:41.800 --> 00:14:47.800
<v Sjors Provoost>So if you have a way to crack a 256-bit number, like find the private key,

00:14:47.880 --> 00:14:50.920
<v Sjors Provoost>etc., that's basically the security level anyway. So you might as well use that.

00:14:51.100 --> 00:14:52.100
<v Aaron van Wirdum>Broken Bitcoin itself, yeah.

00:14:52.480 --> 00:14:56.520
<v Sjors Provoost>Yeah. So that's why I guess that's one argument to say, well, then why don't you

00:14:56.520 --> 00:15:00.880
<v Sjors Provoost>use seeds that are at that limit? It makes no sense to go beyond it, but it also

00:15:00.880 --> 00:15:05.260
<v Sjors Provoost>makes no sense to stay below it. All things equal. Because you do have to write

00:15:05.260 --> 00:15:09.520
<v Sjors Provoost>these things down or do something else with it. And if that's too much work, then

00:15:09.520 --> 00:15:15.520
<v Sjors Provoost>people won't do it. And then you just lose your coins. So the benefit of

00:15:15.520 --> 00:15:17.780
<v Sjors Provoost>12 words is that people are more likely to write them down.

00:15:18.930 --> 00:15:23.670
<v Aaron van Wirdum>Okay, now let's get to the meat of this episode. I think that was a long recap of

00:15:23.670 --> 00:15:28.150
<v Aaron van Wirdum>stuff that people already knew, or at least most people already knew most of

00:15:28.150 --> 00:15:34.150
<v Aaron van Wirdum>that. So now we're getting to SeedQR, and this is your hobby project. So I guess

00:15:34.150 --> 00:15:35.330
<v Aaron van Wirdum>Sjors, just explain what it is.

00:15:36.010 --> 00:15:40.110
<v Sjors Provoost>Yeah, so as far as I know, it's a proposed standard, and there are some tools

00:15:40.110 --> 00:15:45.370
<v Sjors Provoost>that are using it. And the idea is that you take these 12 to 24 words, and rather

00:15:45.370 --> 00:15:49.950
<v Sjors Provoost>than writing them down as words, you convert them into a QR code. Because

00:15:49.950 --> 00:15:53.230
<v Sjors Provoost>remember, these things represent numbers. So you just take the word, find the

00:15:53.230 --> 00:15:57.170
<v Sjors Provoost>corresponding number, and now you have a bunch of numbers. And if you have a

00:15:57.170 --> 00:16:02.110
<v Sjors Provoost>bunch of numbers, essentially, if you have 128 bits of data or 256 bits of data,

00:16:02.330 --> 00:16:05.150
<v Sjors Provoost>you can squeeze that into a very small QR code.

00:16:05.900 --> 00:16:11.800
<v Aaron van Wirdum>Right. So right now a lot of people are storing their Bitcoin essentially,

00:16:12.000 --> 00:16:16.840
<v Aaron van Wirdum>their private keys as a list of, or at least their backup as a list of words. And

00:16:16.840 --> 00:16:22.740
<v Aaron van Wirdum>according to, with this standard, they could backup their keys as a

00:16:22.740 --> 00:16:24.020
<v Aaron van Wirdum>QR code, which they...

00:16:24.610 --> 00:16:27.790
<v Sjors Provoost>Yeah. And so one benefit of that could be...

00:16:27.790 --> 00:16:32.950
<v Aaron van Wirdum>Is that new? I mean, I've never heard of it, but it sounds like a fairly obvious

00:16:32.950 --> 00:16:34.290
<v Aaron van Wirdum>thing to do, but it's new.

00:16:34.450 --> 00:16:38.290
<v Sjors Provoost>Yeah. I mean, it really depends on your use case, right? So if you have your keys

00:16:38.290 --> 00:16:43.820
<v Sjors Provoost>in some very far away cold storage place in the middle of the Antarctica, well,

00:16:44.950 --> 00:16:49.650
<v Sjors Provoost>it may be useful for you. If you need those words anyway, you can either type

00:16:49.650 --> 00:16:53.670
<v Sjors Provoost>them or you can scan them, right? Those are the two ways you can enter them back

00:16:53.670 --> 00:16:58.650
<v Sjors Provoost>into a machine. And since most hardware wallets are a pain in the ass to type on,

00:16:59.450 --> 00:17:04.810
<v Sjors Provoost>maybe using a camera might be easier. But I think only the Jade hardware wallet

00:17:04.810 --> 00:17:10.710
<v Sjors Provoost>and the Specter DIY wallet have cameras. So there's only

00:17:10.710 --> 00:17:12.010
<v Sjors Provoost>limited use for QR codes.

00:17:12.470 --> 00:17:17.770
<v Aaron van Wirdum>Okay, so the general idea is we're using a QR code as a backup. What

00:17:17.770 --> 00:17:19.450
<v Aaron van Wirdum>are the challenges here?

00:17:19.570 --> 00:17:23.090
<v Sjors Provoost>Yeah, and not just as a backup. It could even be, let's say you have a phone wallet.

00:17:24.890 --> 00:17:28.290
<v Sjors Provoost>And when you're walking around with your phone, maybe it's a phone wallet that

00:17:28.290 --> 00:17:31.850
<v Sjors Provoost>you don't use for shopping, but you do use it for your, I don't know, everyday

00:17:31.850 --> 00:17:35.410
<v Sjors Provoost>stuff. It's not like cold storage. It's not a huge amount of money. But when

00:17:35.410 --> 00:17:39.030
<v Sjors Provoost>somebody robs you in the street, you don't want to be able to give them Bitcoin.

00:17:39.030 --> 00:17:42.550
<v Sjors Provoost>So you don't want to have the private keys on the phone itself. You want to have

00:17:42.550 --> 00:17:46.250
<v Sjors Provoost>them somewhere safe at home. And so then a QR code could be useful because when

00:17:46.250 --> 00:17:50.430
<v Sjors Provoost>you do want to use it, you just scan the QR code. And now, boom, you can spend

00:17:50.430 --> 00:17:54.250
<v Sjors Provoost>your Bitcoin. But when you're on the street, nobody can rob you. If they go to

00:17:54.250 --> 00:17:56.170
<v Sjors Provoost>your home, they can. You know, that's a trade-off.

00:17:56.410 --> 00:18:00.270
<v Aaron van Wirdum>Right. So the idea there would be that your phone doesn't actually store any of

00:18:00.270 --> 00:18:05.030
<v Aaron van Wirdum>the keys. It just scans them for one-time use. It scans the QR code for one-time

00:18:05.030 --> 00:18:08.350
<v Aaron van Wirdum>use and then forgets it. And it can be a phone. It can also be another device, of

00:18:08.350 --> 00:18:11.570
<v Aaron van Wirdum>course. It could be a hardware wallet that operates like this. So then the keys

00:18:11.570 --> 00:18:12.830
<v Aaron van Wirdum>aren't even on the device.

00:18:13.030 --> 00:18:16.270
<v Sjors Provoost>Yeah, well, they are when you're using it. But after that, they're not. Well,

00:18:16.390 --> 00:18:17.090
<v Sjors Provoost>unless it was compromised.

00:18:17.620 --> 00:18:23.060
<v Aaron van Wirdum>Right, so rather than thinking of it as a backup, in that case, it is essentially

00:18:23.060 --> 00:18:25.240
<v Aaron van Wirdum>your actual cold storage wallet.

00:18:26.240 --> 00:18:30.460
<v Sjors Provoost>Yeah, or at least your actual offline, semi-offline wallet or something like that.

00:18:30.700 --> 00:18:36.500
<v Aaron van Wirdum>Right, right, right. Okay, so what are the challenges to accomplishing this,

00:18:36.520 --> 00:18:38.180
<v Aaron van Wirdum>if there are any?

00:18:38.950 --> 00:18:42.850
<v Sjors Provoost>Well, for one thing is, again, it depends on the use case. For the easy use case

00:18:42.850 --> 00:18:46.970
<v Sjors Provoost>where you are printing a QR code with a physical printer, then I guess it doesn't

00:18:46.970 --> 00:18:49.690
<v Sjors Provoost>matter, right? You can make a very big QR code or a very small one. It doesn't

00:18:49.690 --> 00:18:53.930
<v Sjors Provoost>matter. But when you, as we described in the beginning, you want to write down

00:18:53.930 --> 00:18:58.630
<v Sjors Provoost>your QR code on a piece of paper, which you can draw. It's nice if the QR code is

00:18:58.630 --> 00:19:02.130
<v Sjors Provoost>not too many little points because it's very tedious to do it. And if you want to

00:19:02.130 --> 00:19:04.120
<v Sjors Provoost>put them on metal,

00:19:05.390 --> 00:19:10.170
<v Sjors Provoost>then you really don't want to have 5,000 little points that you need to put on

00:19:10.170 --> 00:19:10.750
<v Sjors Provoost>the QR code.

00:19:10.930 --> 00:19:16.630
<v Aaron van Wirdum>Right. And I guess the reason this matters is that you ideally

00:19:16.630 --> 00:19:22.330
<v Aaron van Wirdum>don't want to have your private keys touch. A computer at all, possibly,

00:19:22.550 --> 00:19:24.050
<v Aaron van Wirdum>or a printer at all.

00:19:24.230 --> 00:19:24.450
<v Sjors Provoost>Exactly.

00:19:24.870 --> 00:19:28.810
<v Aaron van Wirdum>These things can be hacked, and I think some printers even have memory of stuff

00:19:28.810 --> 00:19:33.150
<v Aaron van Wirdum>they printed. Ideally, it just flashed on your hardware wallet or something, and

00:19:33.150 --> 00:19:34.370
<v Aaron van Wirdum>then you write it down with a pen and paper.

00:19:34.370 --> 00:19:38.470
<v Sjors Provoost>Exactly, and that's what the SeedSigner does. So the SeedSigner is a sort of

00:19:38.470 --> 00:19:41.650
<v Sjors Provoost>open-source device where you can buy off-the-shelf components and make it

00:19:41.650 --> 00:19:46.390
<v Sjors Provoost>yourself. What this device does is you enter your words, and it shows you the QR

00:19:46.390 --> 00:19:51.180
<v Sjors Provoost>code, or you scan the QR code, and it shows you the words. And then I think that

00:19:51.180 --> 00:19:55.080
<v Sjors Provoost>device can also sign things, but maybe you don't want to use that part. Maybe you

00:19:55.080 --> 00:19:58.560
<v Sjors Provoost>want to use your regular hardware wallet for the signing. So you then take your

00:19:58.560 --> 00:20:01.500
<v Sjors Provoost>mnemonic and put it in your regular hardware wallet, something like that. That

00:20:01.500 --> 00:20:04.540
<v Sjors Provoost>could be the operation flow. And that means you're not using your main computer,

00:20:04.580 --> 00:20:07.680
<v Sjors Provoost>which will probably have millions of viruses on it. You're not using your

00:20:07.680 --> 00:20:11.740
<v Sjors Provoost>printer, which will probably have millions of viruses on it. And then it's really

00:20:11.740 --> 00:20:15.600
<v Sjors Provoost>important because you're doing this step by hand, you're drawing a QR code. The

00:20:15.600 --> 00:20:17.340
<v Sjors Provoost>drawing part should be as little work as possible.

00:20:17.540 --> 00:20:17.980
<v Aaron van Wirdum>Right.

00:20:18.200 --> 00:20:21.320
<v Sjors Provoost>So then they've done some research about how small these QR codes can get.

00:20:21.960 --> 00:20:23.820
<v Aaron van Wirdum>How small can these QR codes get?

00:20:23.940 --> 00:20:29.160
<v Sjors Provoost>For 12 words, you can use 21 by 21 points. And a large part of that, if you look

00:20:29.160 --> 00:20:34.090
<v Sjors Provoost>at a QR code, there's these giant rectangles, right? So it's 21 by 21, including

00:20:34.090 --> 00:20:35.110
<v Sjors Provoost>those giant rectangles.

00:20:38.290 --> 00:20:40.930
<v Aaron van Wirdum>How small can QR codes get in general?

00:20:41.290 --> 00:20:42.310
<v Sjors Provoost>21 by 21.

00:20:42.790 --> 00:20:44.730
<v Aaron van Wirdum>Is that the smallest type of QR codes?

00:20:44.790 --> 00:20:49.750
<v Sjors Provoost>I believe that is the smallest type of a regular QR code. There is also a micro

00:20:49.750 --> 00:20:55.050
<v Sjors Provoost>QR standard that is even smaller, but that is useless for this purpose. So if you

00:20:55.050 --> 00:20:58.050
<v Sjors Provoost>look at my book, maybe I'll just shamelessly shill that I have a book.

00:20:58.410 --> 00:21:00.410
<v Aaron van Wirdum>We're shilling all the way in this episode.

00:21:00.590 --> 00:21:05.200
<v Sjors Provoost>Bitcoin, a Work in Progress. Or just Google Bitcoin Sjors. You'll need to know

00:21:05.200 --> 00:21:05.900
<v Sjors Provoost>how to spell that anyway.

00:21:06.080 --> 00:21:06.760
<v Aaron van Wirdum>No one knows Sjors.

00:21:07.730 --> 00:21:13.250
<v Sjors Provoost>That's all right. What was I saying? Yeah, so the book actually contains QR codes

00:21:13.250 --> 00:21:16.790
<v Sjors Provoost>that will take you to various resources, right? So you don't have to type the

00:21:16.790 --> 00:21:20.790
<v Sjors Provoost>whole URL. You scan the QR code. It takes you to a short URL. Those short URLs

00:21:20.790 --> 00:21:26.560
<v Sjors Provoost>fit exactly into the smallest possible QR thing of the 21 by 21. So

00:21:26.560 --> 00:21:30.160
<v Sjors Provoost>that's HTTP colon slash slash yadda yadda yadda.

00:21:30.710 --> 00:21:31.150
<v Aaron van Wirdum>Okay.

00:21:31.270 --> 00:21:33.050
<v Sjors Provoost>But you can also put a seed in it.

00:21:33.920 --> 00:21:39.300
<v Aaron van Wirdum>So the smallest, at least the smallest sort of regular QR code is 21. Do you know

00:21:39.300 --> 00:21:40.220
<v Aaron van Wirdum>what QR stands for?

00:21:40.720 --> 00:21:41.600
<v Sjors Provoost>Quick response.

00:21:41.700 --> 00:21:47.440
<v Aaron van Wirdum>Very well. Very good. So the smallest QR code is 21 by 21. And

00:21:47.440 --> 00:21:49.620
<v Aaron van Wirdum>then there are bigger ones.

00:21:50.300 --> 00:21:53.920
<v Sjors Provoost>Yeah. And so the reason you want to use bigger ones is, for example, because you

00:21:53.920 --> 00:21:55.740
<v Sjors Provoost>have more words that you want to put into it.

00:21:55.900 --> 00:21:56.060
<v Aaron van Wirdum>Right.

00:21:56.260 --> 00:22:00.840
<v Sjors Provoost>So I think you need a 25 by 25 to have 24 words. And the other thing you can do

00:22:00.840 --> 00:22:06.170
<v Sjors Provoost>is increase the error correction. And so what a QR code does is it shows you, a

00:22:06.170 --> 00:22:11.750
<v Sjors Provoost>QR code starts with the actual thing that it's describing. So say a URL, a piece

00:22:11.750 --> 00:22:16.210
<v Sjors Provoost>of text, and then it has a bunch of extra bits and a bunch of extra pixels. And

00:22:16.210 --> 00:22:20.910
<v Sjors Provoost>their purpose is to basically help the device that's scanning it to correct for

00:22:20.910 --> 00:22:23.010
<v Sjors Provoost>errors because the camera might not be accurate.

00:22:23.870 --> 00:22:28.760
<v Aaron van Wirdum>Yeah, or, you know, your ink may be blurry.

00:22:28.930 --> 00:22:32.790
<v Sjors Provoost>Yeah, so basically, you know, some people abuse this feature. They'll put the

00:22:32.790 --> 00:22:36.170
<v Sjors Provoost>company logo in the middle of a QR code. And what that does is basically it

00:22:36.170 --> 00:22:39.970
<v Sjors Provoost>obscures part of the QR code, but because it has so much error correction, you

00:22:39.970 --> 00:22:44.730
<v Sjors Provoost>can actually obscure 5% or 10% of the QR code and still read it. That's the idea.

00:22:44.890 --> 00:22:49.150
<v Sjors Provoost>We talked about error correction in an earlier episode, I believe, about this

00:22:49.150 --> 00:22:50.810
<v Sjors Provoost>mempool sync project.

00:22:52.110 --> 00:22:52.670
<v Aaron van Wirdum>Okay.

00:22:53.250 --> 00:22:53.670
<v Sjors Provoost>Minisketch.

00:22:53.830 --> 00:22:58.430
<v Aaron van Wirdum>I don't remember. Well, I kind of remember vaguely, but let's get back to the

00:22:58.430 --> 00:23:02.050
<v Aaron van Wirdum>point. So we're using 21 by 21 QR codes.

00:23:02.450 --> 00:23:08.330
<v Sjors Provoost>Or bigger. Yeah. The SeedQR standard uses several different sizes of

00:23:08.330 --> 00:23:08.770
<v Sjors Provoost>QR codes.

00:23:08.930 --> 00:23:14.560
<v Aaron van Wirdum>Right. And is there any sort of... I recall

00:23:14.560 --> 00:23:19.260
<v Aaron van Wirdum>they're doing some tricks to actually make it fit. Is that not the case?

00:23:19.940 --> 00:23:25.520
<v Sjors Provoost>Yeah, exactly. There are two ways to put the data into the QR code. One is a way

00:23:25.520 --> 00:23:31.370
<v Sjors Provoost>that is as compact as possible. That's where you get to 21 by 21. The other is a

00:23:31.370 --> 00:23:35.730
<v Sjors Provoost>way that other apps can actually read it. So the problem is when you use the most

00:23:35.730 --> 00:23:40.310
<v Sjors Provoost>compact way to store it, there are not a lot of off-the-shelf applications that

00:23:40.310 --> 00:23:44.750
<v Sjors Provoost>can actually read this QR code. So if you point your phone at it... If you use

00:23:44.750 --> 00:23:47.570
<v Sjors Provoost>this very compact form, your phone will be confused. It won't understand what to

00:23:47.570 --> 00:23:51.350
<v Sjors Provoost>do with the QR code. That's kind of a feature, actually, because you don't want it to.

00:23:53.010 --> 00:23:57.730
<v Aaron van Wirdum>They've used optimizations that other apps don't understand. Is that the right

00:23:57.730 --> 00:23:58.330
<v Aaron van Wirdum>way to put it?

00:23:58.330 --> 00:24:03.210
<v Sjors Provoost>Basically, when you scan a QR code, your phone is generally expecting a URL or at

00:24:03.210 --> 00:24:08.250
<v Sjors Provoost>least regular text. But these things will use full basically

00:24:08.250 --> 00:24:13.570
<v Sjors Provoost>256-bit ASCII. So if you ever go... I don't know if you've ever seen

00:24:13.570 --> 00:24:17.290
<v Sjors Provoost>some binary file and you open it up and it has all these symbols and your

00:24:17.290 --> 00:24:18.430
<v Sjors Provoost>computer starts beeping at you.

00:24:18.650 --> 00:24:18.930
<v Aaron van Wirdum>Yeah.

00:24:19.150 --> 00:24:23.530
<v Sjors Provoost>Yeah. So that's basically what's in the QR code too. It's using all the bits it

00:24:23.530 --> 00:24:27.610
<v Sjors Provoost>can. And so your phone thinking it's text will render complete gibberish.

00:24:28.850 --> 00:24:30.410
<v Sjors Provoost>In fact, it will just not work.

00:24:30.770 --> 00:24:31.590
<v Aaron van Wirdum>Right. Okay.

00:24:33.530 --> 00:24:35.150
<v Sjors Provoost>But I think that's all solvable.

00:24:37.020 --> 00:24:40.880
<v Aaron van Wirdum>And what you were saying is that in a way it's kind of nice that it does that

00:24:40.880 --> 00:24:45.700
<v Aaron van Wirdum>because if some random person finds this QR code that has all your money on it,

00:24:45.840 --> 00:24:48.020
<v Aaron van Wirdum>then it's kind of nice if they don't understand what it is.

00:24:48.240 --> 00:24:52.920
<v Sjors Provoost>Well, that's one nice thing about QR codes. So now you can start thinking about

00:24:52.920 --> 00:24:56.340
<v Sjors Provoost>where could these fit into your security model. Well, if you're traveling with 12

00:24:56.340 --> 00:25:00.040
<v Sjors Provoost>words written on a piece of paper, if the customs search your bag, they'll see

00:25:00.040 --> 00:25:04.650
<v Sjors Provoost>the 12 words. They know what to do with it. Maybe if you have, say, a vaccination

00:25:04.650 --> 00:25:08.770
<v Sjors Provoost>passport that has a bunch of QR codes on it anyway, you kind of shove in your

00:25:08.770 --> 00:25:12.950
<v Sjors Provoost>little Bitcoin backup in that passport and maybe they won't see it. But that's,

00:25:13.010 --> 00:25:14.630
<v Sjors Provoost>you know, that's always a little scary.

00:25:15.720 --> 00:25:21.140
<v Aaron van Wirdum>Okay, so, so far, so far this all sounds... Great.

00:25:21.680 --> 00:25:25.420
<v Aaron van Wirdum>Also kind of straightforward. Is this just a straightforward episode or is there

00:25:25.420 --> 00:25:29.360
<v Aaron van Wirdum>some magic still waiting in the corner? Where are we taking this?

00:25:29.500 --> 00:25:33.440
<v Sjors Provoost>My magical suggestion would be that, yeah, this is pretty straightforward, but I

00:25:33.440 --> 00:25:38.000
<v Sjors Provoost>would say that the downside of QR is that it is designed for computers. So it's

00:25:38.000 --> 00:25:42.520
<v Sjors Provoost>very easy for computers and cameras to scan it. You can read it by hand, as in

00:25:42.520 --> 00:25:46.720
<v Sjors Provoost>there's a couple of YouTube videos and documents that you can read. That will

00:25:46.720 --> 00:25:51.460
<v Sjors Provoost>explain to you, if you see a QR code, how to read it, but it's very difficult. So

00:25:51.460 --> 00:25:56.360
<v Sjors Provoost>what I would like to see is another standard, a new standard, that kind of looks

00:25:56.360 --> 00:26:00.920
<v Sjors Provoost>like a QR, but that is much easier for a human to read. So that means you

00:26:00.920 --> 00:26:04.200
<v Sjors Provoost>wouldn't even need the SeedSigner device. You would just be able to take a pen

00:26:04.200 --> 00:26:09.580
<v Sjors Provoost>and paper and just look at where the squares are and do some math, and then you

00:26:09.580 --> 00:26:12.800
<v Sjors Provoost>would actually know what the seed is.

00:26:18.480 --> 00:26:19.960
<v Aaron van Wirdum>I'm just thinking of the...

00:26:20.270 --> 00:26:22.750
<v Sjors Provoost>Yeah, I know which XKCD you're thinking about.

00:26:23.130 --> 00:26:24.070
<v Aaron van Wirdum>Which one is it?

00:26:24.250 --> 00:26:26.090
<v Sjors Provoost>But this standard might actually already exist.

00:26:26.120 --> 00:26:28.830
<v Aaron van Wirdum>There are 14 competing standards. 14, ridiculous.

00:26:30.130 --> 00:26:32.990
<v Aaron van Wirdum>Anyways, I think everyone knows it. I'm not going to finish the joke.

00:26:33.290 --> 00:26:36.210
<v Sjors Provoost>Yeah, so I don't necessarily think there has to be a new standard and maybe that

00:26:36.210 --> 00:26:39.490
<v Sjors Provoost>there's already are standards out there that are designed for humans to parse

00:26:39.490 --> 00:26:41.210
<v Sjors Provoost>rather than for cameras to parse. Yeah.

00:26:43.180 --> 00:26:47.360
<v Aaron van Wirdum>Okay, well, let's see if someone develops that then, Sjors. Why don't you? Why

00:26:47.360 --> 00:26:50.500
<v Aaron van Wirdum>don't you develop a new standard? We need the 15th standard.

00:26:50.740 --> 00:26:52.560
<v Sjors Provoost>I'm not a encoding master.

00:26:52.920 --> 00:26:57.020
<v Aaron van Wirdum>Okay, well, I'm not going to do it either. So hopefully one of our listeners will

00:26:57.020 --> 00:26:59.360
<v Aaron van Wirdum>feel inspired by your encouragement.

00:26:59.640 --> 00:27:03.020
<v Sjors Provoost>I hope sipa picks it up because it'd be nice to have some error correction. Let's

00:27:03.020 --> 00:27:07.120
<v Sjors Provoost>say you have a QR code, right? And QR code is every, if you read it from left to

00:27:07.120 --> 00:27:11.180
<v Sjors Provoost>right, basically it's either black or it's white. So it's like a bit. So you

00:27:11.180 --> 00:27:14.440
<v Sjors Provoost>could imagine having a device where you're clicking a button, either the left

00:27:14.440 --> 00:27:17.460
<v Sjors Provoost>button or the right button. If you see a white pixel, you click the left button.

00:27:17.540 --> 00:27:22.480
<v Sjors Provoost>If you see a black pixel, you click the right button. And then based on that

00:27:22.480 --> 00:27:26.890
<v Sjors Provoost>click, click, click, click, click, click pattern, it reconstructs your seed. And

00:27:26.890 --> 00:27:30.150
<v Sjors Provoost>it's nice if there's error correction while you're doing that. So rather than

00:27:30.150 --> 00:27:33.930
<v Sjors Provoost>typing all the 24 words as you would now, and then it says, nope, sorry, it's wrong.

00:27:35.590 --> 00:27:38.450
<v Sjors Provoost>Every six or seven characters, they would tell you, no, no, no, you did something

00:27:38.450 --> 00:27:41.470
<v Sjors Provoost>wrong. And then you know that you have to go back and check the last seven

00:27:41.470 --> 00:27:45.970
<v Sjors Provoost>characters. Because, you know, it's not easy to manually type something like a QR

00:27:45.970 --> 00:27:50.000
<v Sjors Provoost>code without making mistakes. So I think there's promise there.

00:27:50.400 --> 00:27:50.760
<v Aaron van Wirdum>Okay.

00:27:50.940 --> 00:27:51.640
<v Sjors Provoost>But that's all I got.

00:27:51.960 --> 00:27:53.700
<v Aaron van Wirdum>Okay. So when are you going to make yours?

00:27:54.990 --> 00:27:55.970
<v Sjors Provoost>Oh, I don't know. Whenever.

00:27:56.150 --> 00:27:56.750
<v Aaron van Wirdum>Your steel plate?

00:27:56.950 --> 00:27:59.830
<v Sjors Provoost>Whenever it arrives. I'll go play with it.

00:27:59.950 --> 00:28:02.790
<v Aaron van Wirdum>You're waiting for the actual plates to arrive? That's what you're waiting for?

00:28:02.930 --> 00:28:03.250
<v Sjors Provoost>Yeah, exactly.

00:28:03.730 --> 00:28:05.970
<v Aaron van Wirdum>All right. Well, you got the rest of the tools ready.

00:28:08.180 --> 00:28:10.360
<v Aaron van Wirdum>Sjors, I think that's it then. I think that's our episode.

00:28:10.580 --> 00:28:12.640
<v Sjors Provoost>Sounds good. Thank you for listening to Bitcoin.

00:28:13.140 --> 00:28:13.480
<v Aaron van Wirdum>Explained.

