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

00:00:00.530 --> 00:00:02.910
<v Aaron van Wirdum>Before the show, a quick word from our sponsor.

00:00:11.780 --> 00:00:14.820
<v Aaron van Wirdum>Live from Utrecht, this is the Van Wirdum Sjorsnado.

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

00:00:15.700 --> 00:00:16.140
<v Aaron van Wirdum>Hey Sjors.

00:00:16.360 --> 00:00:16.640
<v Sjors Provoost>What's up?

00:00:17.530 --> 00:00:21.890
<v Aaron van Wirdum>Are you running the BIP 8 true independent client yet?

00:00:22.350 --> 00:00:24.790
<v Sjors Provoost>Negative. I did not even know there was one.

00:00:25.310 --> 00:00:30.550
<v Aaron van Wirdum>Yeah, one has been launched, started. I don't think it's actually a client yet. A

00:00:30.550 --> 00:00:31.430
<v Aaron van Wirdum>project has started.

00:00:31.710 --> 00:00:35.330
<v Sjors Provoost>Okay, a project has started. It's not a binary or a code that you can compile.

00:00:35.590 --> 00:00:41.410
<v Aaron van Wirdum>No, not yet. But I did see you were reviewing the BIP 8 code a little bit.

00:00:42.070 --> 00:00:45.990
<v Sjors Provoost>Yes. I mean, it's… it's a, you know, pull request that has a bunch of changes in

00:00:45.990 --> 00:00:51.250
<v Sjors Provoost>it. A lot of them are totally not controversial. So I'm just working on it from

00:00:51.250 --> 00:00:51.910
<v Sjors Provoost>top to bottom.

00:00:52.330 --> 00:00:53.310
<v Aaron van Wirdum>Just code review.

00:00:53.650 --> 00:00:57.150
<v Sjors Provoost>Code review, and I've also started my own pull request where I've taken a couple

00:00:57.150 --> 00:01:01.810
<v Sjors Provoost>of commits from that just to split it up. Makes everybody's review life… life

00:01:01.810 --> 00:01:06.010
<v Sjors Provoost>easier. Right. If everybody's talking about LOT is true or LOT is false on a pull

00:01:06.010 --> 00:01:09.610
<v Sjors Provoost>request, but there's a lot of nitty-gritty stuff that you really don't want to

00:01:09.610 --> 00:01:12.210
<v Sjors Provoost>screw up just because you're talking about one little thing.

00:01:12.630 --> 00:01:13.210
<v Aaron van Wirdum>That's good.

00:01:13.680 --> 00:01:15.940
<v Sjors Provoost>So that's all good, and we'll see where that ends.

00:01:16.140 --> 00:01:19.660
<v Aaron van Wirdum>And I think you were working on something else as well, and that's actually what

00:01:19.660 --> 00:01:20.860
<v Aaron van Wirdum>this episode is going to be about.

00:01:21.020 --> 00:01:25.960
<v Sjors Provoost>By the way, if… if there are independent clients, just be sure to listen to our

00:01:25.960 --> 00:01:29.820
<v Sjors Provoost>earlier episodes about open source and deterministic builds and all the things

00:01:29.820 --> 00:01:32.280
<v Sjors Provoost>that can go wrong there, and then do it right.

00:01:32.740 --> 00:01:35.760
<v Aaron van Wirdum>Other project, other thing, the other thing you're working on.

00:01:35.920 --> 00:01:37.340
<v Sjors Provoost>Oh, yeah, hardware wallet stuff.

00:01:37.560 --> 00:01:43.310
<v Aaron van Wirdum>Yeah, you're working on not just you, but... I think you're one of the core

00:01:43.310 --> 00:01:47.530
<v Aaron van Wirdum>devs working on hardware wallet integration for Bitcoin Core. Is that correct?

00:01:47.810 --> 00:01:52.280
<v Sjors Provoost>Yeah, that's right. It's me. It's Andrew Chow, instagibbs, as he likes to call

00:01:52.280 --> 00:01:52.820
<v Sjors Provoost>himself on GitHub.

00:01:53.140 --> 00:01:57.700
<v Aaron van Wirdum>Yeah, and you've made some good progress. That was a new merge this week. And

00:01:57.700 --> 00:02:02.230
<v Aaron van Wirdum>we're… Basically going to discuss hardware integration in Bitcoin Core in a

00:02:02.230 --> 00:02:04.010
<v Aaron van Wirdum>general sense in this episode, I think, right?

00:02:04.270 --> 00:02:04.410
<v Sjors Provoost>Yep.

00:02:04.610 --> 00:02:07.490
<v Aaron van Wirdum>So basically your top specialty, maybe.

00:02:08.050 --> 00:02:09.850
<v Sjors Provoost>Definitely one of my favorite topics.

00:02:10.510 --> 00:02:14.110
<v Aaron van Wirdum>You wanted to refer to some previous episodes where we discussed some of this

00:02:14.110 --> 00:02:14.650
<v Aaron van Wirdum>stuff, I think.

00:02:14.910 --> 00:02:19.470
<v Sjors Provoost>I mean, we talked in the first episode about hardware wallets, sort of the

00:02:19.470 --> 00:02:23.840
<v Sjors Provoost>security things you need to worry about when it comes to change, etc, so that

00:02:23.840 --> 00:02:28.700
<v Sjors Provoost>might be a nice refresher. Apologies for the atrocious audio in the first

00:02:28.700 --> 00:02:34.220
<v Sjors Provoost>episode. There was a literal tornado. I think in episode 7 we

00:02:34.220 --> 00:02:39.400
<v Sjors Provoost>explained to Peter McCormack but also to other listeners what an xpub is, which

00:02:39.400 --> 00:02:42.580
<v Sjors Provoost>is quite relevant when it comes to hardware wallets because an xpub represents a

00:02:42.580 --> 00:02:47.580
<v Sjors Provoost>whole bunch of addresses. And hardware wallets like to communicate that. And then

00:02:47.580 --> 00:02:49.460
<v Sjors Provoost>there was episode 21,

00:02:50.940 --> 00:02:54.040
<v Sjors Provoost>which I don't know what it was about, but you should just listen to all of them.

00:02:54.280 --> 00:02:56.800
<v Aaron van Wirdum>You put it in a show notes so it has some relevancy.

00:02:57.080 --> 00:02:57.660
<v Sjors Provoost>That's right.

00:02:58.690 --> 00:03:02.690
<v Aaron van Wirdum>Okay, Sjors, where are we with hardware wallet integration for Bitcoin Core?

00:03:02.870 --> 00:03:04.230
<v Aaron van Wirdum>Let's just start from the top.

00:03:04.730 --> 00:03:08.800
<v Sjors Provoost>Yeah, so there was a lot of things that needed to happen, and mainly... that

00:03:08.800 --> 00:03:13.480
<v Sjors Provoost>which has been done a while ago is to rewrite the entire wallet that Bitcoin Core

00:03:13.480 --> 00:03:18.460
<v Sjors Provoost>comes with because it was atrocious and that's mostly been done by Andrew Chow.

00:03:18.460 --> 00:03:20.460
<v Sjors Provoost>I've done a lot of testing and reviewing for that.

00:03:20.460 --> 00:03:23.660
<v Aaron van Wirdum>And, what was the problem? What was so bad about it?

00:03:23.660 --> 00:03:29.500
<v Sjors Provoost>Well it was started by Satoshi and it just had pay to public key addresses in it

00:03:29.500 --> 00:03:33.140
<v Sjors Provoost>and then pay to public key hash I guess was added and then those other things

00:03:33.140 --> 00:03:38.750
<v Sjors Provoost>added and then SegWit was added and it just became an unmaintainable mess. So all

00:03:38.750 --> 00:03:44.350
<v Sjors Provoost>that unmaintainable mess has been put in a box and that box has been abstracted

00:03:44.350 --> 00:03:49.680
<v Sjors Provoost>in a way that you can create another box that has the same functionality,

00:03:49.680 --> 00:03:53.540
<v Sjors Provoost>but the implementation can be rewritten from scratch. And so that's kind of what

00:03:53.540 --> 00:03:57.060
<v Sjors Provoost>we did. We put the existing stuff in a box because we don't want to understand it

00:03:57.060 --> 00:04:02.940
<v Sjors Provoost>anymore. And we created a new box to replace it with the same form. And that uses

00:04:02.940 --> 00:04:07.300
<v Sjors Provoost>descriptors. And I guess we'll dedicate some other episode in explaining what

00:04:07.300 --> 00:04:11.520
<v Sjors Provoost>output descriptors are. But they're kind of a nice, elegant way to describe how

00:04:11.520 --> 00:04:15.460
<v Sjors Provoost>to derive your addresses from, for example, from the seed. So we say, okay, take

00:04:15.460 --> 00:04:20.570
<v Sjors Provoost>the seed and then... Take the first account, and then here's an xpub, and then

00:04:20.570 --> 00:04:25.550
<v Sjors Provoost>take these address derivations, and then I want you to make it a native SegWit

00:04:25.550 --> 00:04:30.310
<v Sjors Provoost>address. You can express that in one string. And the reason that's nice, and that

00:04:30.310 --> 00:04:35.190
<v Sjors Provoost>gets just to the hardware wallet part, is because a hardware wallet can then spit

00:04:35.190 --> 00:04:39.190
<v Sjors Provoost>out that information. So a hardware wallet can tell you, okay, these are the

00:04:39.190 --> 00:04:43.430
<v Sjors Provoost>addresses I have, and then you just import it. And when your hardware wallet is

00:04:43.430 --> 00:04:46.530
<v Sjors Provoost>disconnected, you can… you know, exactly which… which addresses the hardware

00:04:46.530 --> 00:04:49.330
<v Sjors Provoost>wallet has, and you only need to connect when you want to sign something.

00:04:49.830 --> 00:04:54.950
<v Aaron van Wirdum>So would the hardware wallet in that case spit out the xpub? Is that why you

00:04:54.950 --> 00:04:56.270
<v Aaron van Wirdum>mentioned xpub just now?

00:04:56.670 --> 00:05:02.130
<v Sjors Provoost>Yeah, well, actually, currently, indeed, it spits out xpubs. Ideally, it would

00:05:02.130 --> 00:05:07.910
<v Sjors Provoost>spit out these descriptors. So because a hardware wallet might not understand

00:05:07.910 --> 00:05:13.030
<v Sjors Provoost>what Taproot is, or it might not understand even what SegWit it is. And if it

00:05:13.030 --> 00:05:16.270
<v Sjors Provoost>just gives you an xpub, well, that xpub doesn't really tell you anything. It's

00:05:16.270 --> 00:05:19.750
<v Sjors Provoost>just a way to derive addresses, but it doesn't tell you what kind of things it

00:05:19.750 --> 00:05:24.050
<v Sjors Provoost>can do. So you really want some way for a hardware wallet to tell it what it's

00:05:24.050 --> 00:05:28.770
<v Sjors Provoost>capable of. But for now, we've avoided having to think about that, using a

00:05:28.770 --> 00:05:30.490
<v Sjors Provoost>project called HWI.

00:05:30.730 --> 00:05:33.910
<v Aaron van Wirdum>Yes, I've seen it a lot, HWI. What does it stand for?

00:05:34.230 --> 00:05:35.730
<v Sjors Provoost>Hardware Wallet Integration,

00:05:36.230 --> 00:05:36.510
<v Aaron van Wirdum>Nice.

00:05:36.790 --> 00:05:38.030
<v Sjors Provoost>Or interface, I guess…

00:05:38.170 --> 00:05:39.050
<v Aaron van Wirdum>Or which one is it, Sjors?

00:05:39.490 --> 00:05:41.830
<v Sjors Provoost>I don't care. I think it's interface.

00:05:42.130 --> 00:05:42.290
<v Aaron van Wirdum>Okay.

00:05:42.830 --> 00:05:44.530
<v Sjors Provoost>So that is a Python library.

00:05:45.970 --> 00:05:50.890
<v Sjors Provoost>And again, mostly by Andrew Chow. What he did is, because all these hardware

00:05:50.890 --> 00:05:54.650
<v Sjors Provoost>wallets, like the Trezor and the Ledger and the KeepKey and the COLDCARD, etc.,

00:05:54.650 --> 00:05:57.970
<v Sjors Provoost>they all have their own little Python libraries that you can find on GitHub

00:05:57.970 --> 00:06:01.860
<v Sjors Provoost>because it's all open source. But they're all different. They all have different

00:06:01.860 --> 00:06:05.700
<v Sjors Provoost>ways to display an address. They have different ways to get an xpub. They have

00:06:05.700 --> 00:06:11.240
<v Sjors Provoost>different ways to sign a transaction. So what he did is he combined all these

00:06:11.240 --> 00:06:15.310
<v Sjors Provoost>drivers. Stripped all the shit coins out of them because some of them would do

00:06:15.310 --> 00:06:17.250
<v Sjors Provoost>Ethereum things and we don't want Ethereum code.

00:06:17.750 --> 00:06:18.470
<v Aaron van Wirdum>I don't.

00:06:18.630 --> 00:06:23.930
<v Sjors Provoost>And then basically put that all together in one little library and made it

00:06:23.930 --> 00:06:29.770
<v Sjors Provoost>consistent. So as far as the user is concerned, you tell HWI Enumerate and it

00:06:29.770 --> 00:06:32.550
<v Sjors Provoost>will give you the list of all the connected hardware wallets using all these

00:06:32.550 --> 00:06:38.250
<v Sjors Provoost>different drivers to find them. And if you say, get descriptors, then it will

00:06:38.250 --> 00:06:43.190
<v Sjors Provoost>give you a list of descriptors that describe exactly what keys, what addresses

00:06:43.190 --> 00:06:46.790
<v Sjors Provoost>the hardware wallet has. And it does all the magic of fetching xpubs using

00:06:46.790 --> 00:06:48.210
<v Sjors Provoost>whatever method is necessary.

00:06:48.450 --> 00:06:53.750
<v Aaron van Wirdum>So could I describe HWI as sort of like a meta protocol

00:06:53.750 --> 00:06:59.570
<v Aaron van Wirdum>that communicates with all of the different hardware wallet protocols, so to say?

00:07:00.210 --> 00:07:06.160
<v Sjors Provoost>Yeah, I guess. Another way to say it is that HWI is a tool. But

00:07:06.160 --> 00:07:10.420
<v Sjors Provoost>it has a way of communicating. You have a way of giving it commands, and that is

00:07:10.420 --> 00:07:15.460
<v Sjors Provoost>a protocol, essentially. So somebody else could make a tool that behaves the same

00:07:15.460 --> 00:07:21.150
<v Sjors Provoost>as HWI, but is just for their own hardware wallet. So a hardware wallet

00:07:21.150 --> 00:07:26.170
<v Sjors Provoost>manufacturer doesn't have to let people use HWI. They could make their own driver

00:07:26.170 --> 00:07:30.530
<v Sjors Provoost>that just behaves the same way as HWI. And then Bitcoin Core, as we'll discuss

00:07:30.530 --> 00:07:32.030
<v Sjors Provoost>next, will know how to talk to it.

00:07:32.510 --> 00:07:37.750
<v Aaron van Wirdum>Right. And if someone brings a new hardware wallet to the market, which does its

00:07:37.750 --> 00:07:43.130
<v Aaron van Wirdum>own thing again, then HWI will be updated potentially to be able to communicate

00:07:43.130 --> 00:07:43.850
<v Aaron van Wirdum>with that as well?

00:07:44.070 --> 00:07:48.670
<v Sjors Provoost>Yeah. So depending on the enthusiasm of the maintainers of HWI, they might... Go

00:07:48.670 --> 00:07:54.430
<v Sjors Provoost>out and find that driver and include it. If the enthusiasm is slightly

00:07:54.430 --> 00:07:59.890
<v Sjors Provoost>less, then the manufacturer or a fan, a user, can go to, you know, can go to HWI,

00:07:59.930 --> 00:08:02.730
<v Sjors Provoost>make a pull request and say, hey, here's the support for this new hardware

00:08:02.730 --> 00:08:07.870
<v Sjors Provoost>wallet. And then recently there were some guidelines merged for that. So the

00:08:07.870 --> 00:08:11.690
<v Sjors Provoost>hardware wallet has to be open source. At least the firmware that runs on it has

00:08:11.690 --> 00:08:15.790
<v Sjors Provoost>to be open source, with the only exception being if there's a secure element in

00:08:15.790 --> 00:08:17.670
<v Sjors Provoost>it that's under NDA, that's okay.

00:08:18.920 --> 00:08:24.140
<v Sjors Provoost>And it has to be sort of maintainable, the software. But then, yeah, anybody can

00:08:24.140 --> 00:08:29.910
<v Sjors Provoost>just make support, add support for any other hardware wallet to HWI.

00:08:30.190 --> 00:08:33.570
<v Sjors Provoost>But again, it's not necessary. You could also, the hardware manufacturer could

00:08:33.570 --> 00:08:38.600
<v Sjors Provoost>also make their own software that just speaks the same language as HWI.

00:08:39.670 --> 00:08:44.270
<v Aaron van Wirdum>Right. And HWI was already merged into Bitcoin Core?

00:08:44.470 --> 00:08:49.350
<v Sjors Provoost>So HWI is a separate program. That's in the Bitcoin… not in the Bitcoin Core

00:08:49.350 --> 00:08:53.570
<v Sjors Provoost>repository, but there is a GitHub, there's a GitHub organization called Bitcoin

00:08:53.570 --> 00:08:59.330
<v Sjors Provoost>Core, which has a bunch of repositories. And that includes HWI. So it's

00:08:59.330 --> 00:09:04.030
<v Sjors Provoost>separate from Bitcoin Core because it's all this Python stuff and USB drivers. So

00:09:04.030 --> 00:09:08.130
<v Sjors Provoost>I guess we don't want to put that in the Bitcoin source code because that's too

00:09:08.130 --> 00:09:11.590
<v Sjors Provoost>scary with all the dependencies. But it is maintained by Bitcoin Core people. So

00:09:11.590 --> 00:09:16.910
<v Sjors Provoost>it's a trust slightly less or... I don't know how to put it.

00:09:17.550 --> 00:09:23.550
<v Aaron van Wirdum>Okay, so HWI is... A separate program, essentially. And it needs

00:09:23.550 --> 00:09:25.990
<v Aaron van Wirdum>to be installed separately if you want to use it?

00:09:26.230 --> 00:09:29.670
<v Sjors Provoost>Exactly. You can download it separately, install it separately, or just put it somewhere.

00:09:30.290 --> 00:09:34.570
<v Aaron van Wirdum>Right. It's not in the Bitcoin Core client that I'm running at home?

00:09:34.730 --> 00:09:35.090
<v Sjors Provoost>No.

00:09:35.330 --> 00:09:35.550
<v Aaron van Wirdum>Got it.

00:09:35.750 --> 00:09:38.490
<v Sjors Provoost>Because that would, you know, in order for that to happen, first of all, it will

00:09:38.490 --> 00:09:42.750
<v Sjors Provoost>probably have to be written in C++ or in Rust or something like that. And all the

00:09:42.750 --> 00:09:46.930
<v Sjors Provoost>USB drivers would have to be inspected with a tooth comb. And that'll take

00:09:46.930 --> 00:09:51.850
<v Sjors Provoost>forever. So yeah, it's something you install separately. And there is some risk,

00:09:51.970 --> 00:09:53.510
<v Sjors Provoost>obviously, with just running that software.

00:09:54.150 --> 00:09:57.330
<v Aaron van Wirdum>Right. But this is not new, is it?

00:09:57.950 --> 00:10:00.590
<v Sjors Provoost>That's right. HWI has been around for at least a year.

00:10:00.950 --> 00:10:05.570
<v Aaron van Wirdum>Right. So what was merged this week? Or am I getting ahead of the podcast?

00:10:05.610 --> 00:10:06.650
<v Sjors Provoost>That's exactly right.

00:10:06.710 --> 00:10:08.510
<v Aaron van Wirdum>Okay, so what was merged last week?

00:10:08.550 --> 00:10:13.630
<v Sjors Provoost>So before last week, if you wanted to use HWI with Bitcoin Core, you can do that.

00:10:13.890 --> 00:10:18.280
<v Sjors Provoost>But you have to execute a bunch of commands manually. So for example, if you

00:10:18.280 --> 00:10:21.800
<v Sjors Provoost>wanted to sign a transaction, you would tell Bitcoin Core, okay, I'd like to

00:10:21.800 --> 00:10:24.880
<v Sjors Provoost>create a PSBT. So we explained PSBT in an earlier episode.

00:10:25.060 --> 00:10:26.920
<v Aaron van Wirdum>Yeah, partially signed Bitcoin transactions.

00:10:27.140 --> 00:10:30.240
<v Sjors Provoost>Exactly. So you tell Bitcoin Core, okay, give me a PSBT, a partially signed

00:10:30.240 --> 00:10:34.760
<v Sjors Provoost>transaction. In this case, actually an unsigned transaction probably to the

00:10:34.760 --> 00:10:39.580
<v Sjors Provoost>destination. And then you would copy paste the result and you'd say, okay, HWI,

00:10:39.760 --> 00:10:45.170
<v Sjors Provoost>please sign this thing. And then HWI would do its thing. And then you get a

00:10:45.170 --> 00:10:48.030
<v Sjors Provoost>result and you copy-paste that back into Bitcoin Core and say, Bitcoin Core,

00:10:48.170 --> 00:10:50.130
<v Sjors Provoost>please process this thing and send this thing.

00:10:50.370 --> 00:10:54.630
<v Aaron van Wirdum>Ah, right. So you're running both programs, the Bitcoin Core program and the HWI

00:10:54.630 --> 00:11:00.310
<v Aaron van Wirdum>program, and then you're manually basically sending data from copy-pasting data

00:11:00.310 --> 00:11:01.230
<v Aaron van Wirdum>from one to the other…

00:11:01.430 --> 00:11:02.750
<v Sjors Provoost>And [unclear]…

00:11:02.750 --> 00:11:06.890
<v Aaron van Wirdum>Using your hardware wallet on HWI, getting some signature and then copy-pasting

00:11:06.890 --> 00:11:08.690
<v Aaron van Wirdum>it to Bitcoin Core, and that's how it would work.

00:11:08.830 --> 00:11:09.090
<v Sjors Provoost>Exactly.

00:11:09.170 --> 00:11:12.100
<v Aaron van Wirdum>And you're doing this all in the command line, I assume?

00:11:11.940 --> 00:11:17.180
<v Sjors Provoost>Yes, that's right. And there was already some help with that because HWI also

00:11:17.180 --> 00:11:21.280
<v Sjors Provoost>comes with a little graphical program where you can actually click buttons to

00:11:21.280 --> 00:11:24.000
<v Sjors Provoost>make it do these things. But you'd still be copy-pasting back and forth at

00:11:24.000 --> 00:11:24.460
<v Sjors Provoost>Bitcoin Core.

00:11:24.660 --> 00:11:25.400
<v Aaron van Wirdum>I love buttons.

00:11:26.020 --> 00:11:31.920
<v Sjors Provoost>Yeah, so do I. So what is new now is that Bitcoin Core now knows how to

00:11:31.920 --> 00:11:36.440
<v Sjors Provoost>communicate with HWI. Still from the command line, but it still gets easier.

00:11:36.600 --> 00:11:40.660
<v Sjors Provoost>Because now when you want to send coins, you just tell Bitcoin Core, send, and

00:11:40.660 --> 00:11:45.740
<v Sjors Provoost>then the destination, and the amount. And it will know that it needs the hardware

00:11:45.740 --> 00:11:51.100
<v Sjors Provoost>wallet. So it will say, hello, HWI, please do these things. And it will wait for

00:11:51.100 --> 00:11:54.880
<v Sjors Provoost>the result and it will process the result and it will send the transaction. So

00:11:54.880 --> 00:11:59.700
<v Sjors Provoost>you go from like four back and forth with copy pasting to just send and it works.

00:11:59.940 --> 00:12:00.940
<v Aaron van Wirdum>No more copy pasting.

00:12:01.080 --> 00:12:05.080
<v Sjors Provoost>That's right. So all you need to do is tell Bitcoin Core where HWI lives. So

00:12:05.080 --> 00:12:09.220
<v Sjors Provoost>where on your computer you installed it. And then it will just call it for you.

00:12:09.550 --> 00:12:14.030
<v Aaron van Wirdum>Right, so if you know how to work the command line, this is a pretty big

00:12:14.030 --> 00:12:14.850
<v Aaron van Wirdum>improvement, I guess.

00:12:15.130 --> 00:12:19.710
<v Sjors Provoost>This is significantly less tedious, yeah. I have used both the approaches, like

00:12:19.710 --> 00:12:22.550
<v Sjors Provoost>with the manual back and forth, and with this, it's much easier.

00:12:22.690 --> 00:12:24.690
<v Aaron van Wirdum>But you do still need to use the command line.

00:12:25.490 --> 00:12:30.750
<v Sjors Provoost>Yeah, or in Bitcoin Core, you have this window, the debug console, which is

00:12:30.750 --> 00:12:32.170
<v Sjors Provoost>essentially a little command line.

00:12:32.290 --> 00:12:33.550
<v Aaron van Wirdum>Right, right.

00:12:34.080 --> 00:12:37.620
<v Sjors Provoost>So I cannot do it in the user interface, but you can actually, yeah, you can open

00:12:37.620 --> 00:12:40.760
<v Sjors Provoost>this window console and then you can just type send and it'll work.

00:12:40.960 --> 00:12:46.400
<v Aaron van Wirdum>Right. So this was merged into Bitcoin Core, which will be released in, I guess

00:12:46.400 --> 00:12:48.440
<v Aaron van Wirdum>it will probably be Bitcoin Core 22.

00:12:49.000 --> 00:12:51.820
<v Sjors Provoost>Yeah, Bitcoin Core 22 should be out in, I don't know, fall.

00:12:52.880 --> 00:12:57.080
<v Aaron van Wirdum>Might it also come into a minor release? I guess that might depend on Taproot

00:12:57.080 --> 00:12:57.900
<v Aaron van Wirdum>activation stuff.

00:12:58.140 --> 00:13:00.220
<v Sjors Provoost>This is not the kind of stuff that would be backported.

00:13:00.720 --> 00:13:04.500
<v Aaron van Wirdum>No? So it's definitely going to be a major release. Is that what you're saying? Yeah.

00:13:04.840 --> 00:13:09.680
<v Sjors Provoost>Because for things to backport, it has to be simple enough, or like a really

00:13:09.680 --> 00:13:13.100
<v Sjors Provoost>critical bug fix. But usually the only things that are backported are bug fixes

00:13:13.100 --> 00:13:16.880
<v Sjors Provoost>and soft forks, but not entire new features.

00:13:17.660 --> 00:13:21.540
<v Aaron van Wirdum>Got it. Okay, so this will be in the upcoming Bitcoin Core 22 release.

00:13:21.740 --> 00:13:24.000
<v Sjors Provoost>Yeah, or if you compile the master branch yourself.

00:13:24.860 --> 00:13:30.160
<v Aaron van Wirdum>Sure. The step after that, I would assume, would be GUI support?

00:13:30.460 --> 00:13:34.560
<v Sjors Provoost>GUI support? That's right. Yeah, because still, you know, having to type commands

00:13:34.560 --> 00:13:38.640
<v Sjors Provoost>is kind of annoying. So I have a pull request open that builds on top of this,

00:13:38.680 --> 00:13:43.180
<v Sjors Provoost>and it adds a couple of things. It adds something to the settings screen. So

00:13:43.180 --> 00:13:46.980
<v Sjors Provoost>there is a settings screen in Bitcoin Core, and there you tell it where HWI

00:13:46.980 --> 00:13:50.520
<v Sjors Provoost>lives. So you don't have to give that to the command line. You just copy-paste

00:13:50.520 --> 00:13:51.480
<v Sjors Provoost>that file directory.

00:13:52.960 --> 00:13:57.810
<v Sjors Provoost>And then… When you go to the menu to create a wallet, if you have

00:13:57.810 --> 00:14:03.550
<v Sjors Provoost>this HWI path correctly and you have a hardware wallet inside your computer

00:14:03.550 --> 00:14:08.710
<v Sjors Provoost>and it's unlocked, if you create a new wallet, it'll detect it. So it'll say, oh,

00:14:08.950 --> 00:14:14.890
<v Sjors Provoost>would you like to use this Ledger X or whatever? And then you click next. And

00:14:14.890 --> 00:14:19.250
<v Sjors Provoost>it will automatically pull the keys from the device, and your wallet will just

00:14:19.250 --> 00:14:21.230
<v Sjors Provoost>look like any other wallet, but if you click on your address…

00:14:21.230 --> 00:14:23.030
<v Aaron van Wirdum>It will pull the public keys, to be clear, right?

00:14:23.130 --> 00:14:27.730
<v Sjors Provoost>Correct, yeah, public keys. It pulls the public keys from the device, and your

00:14:27.730 --> 00:14:30.870
<v Sjors Provoost>wallet will work just as any other wallet. You can click on receive address,

00:14:30.870 --> 00:14:34.210
<v Sjors Provoost>you'll see an address. And then the other feature is that if you click on a

00:14:34.210 --> 00:14:38.530
<v Sjors Provoost>receive address, so in Bitcoin Core you click on get me a new address, then it

00:14:38.530 --> 00:14:42.510
<v Sjors Provoost>kind of makes a little mini address book. And you can right click on that, I

00:14:42.510 --> 00:14:46.780
<v Sjors Provoost>believe, and then click on verify. That's a new button. And the verify button,

00:14:47.240 --> 00:14:50.800
<v Sjors Provoost>again, if the device is plugged in, will [unclear] show the address on the

00:14:50.800 --> 00:14:51.300
<v Sjors Provoost>hardware wallet.

00:14:51.420 --> 00:14:51.840
<v Aaron van Wirdum>Right, yep.

00:14:51.940 --> 00:14:52.600
<v Sjors Provoost>So you can check that it's real.

00:14:52.840 --> 00:14:53.020
<v Aaron van Wirdum>Yep.

00:14:53.440 --> 00:14:58.720
<v Sjors Provoost>And then the… the third thing that's added is you can now just send Bitcoin as

00:14:58.720 --> 00:15:01.920
<v Sjors Provoost>you would in Bitcoin Core. Just click on send and type the destinations

00:15:01.920 --> 00:15:07.800
<v Sjors Provoost>[unclear]. And when you hit send, if the device is plugged in, it'll show up on

00:15:07.800 --> 00:15:13.370
<v Sjors Provoost>the device and you click on approve. And it just sends it. Now, the downside is

00:15:13.370 --> 00:15:18.010
<v Sjors Provoost>that if anything does not go exactly right as I just described it, it will

00:15:18.010 --> 00:15:18.570
<v Sjors Provoost>probably crash.

00:15:18.770 --> 00:15:19.130
<v Aaron van Wirdum>Right.

00:15:19.230 --> 00:15:20.190
<v Sjors Provoost>So it's still work in progress.

00:15:20.470 --> 00:15:25.210
<v Aaron van Wirdum>Would it work with all of Bitcoin Core's current features? So that would be, for

00:15:25.210 --> 00:15:30.090
<v Aaron van Wirdum>example, be RBF, I guess, and sent to many or whatever it's called, batching,

00:15:30.310 --> 00:15:31.230
<v Aaron van Wirdum>these kinds of things.

00:15:31.430 --> 00:15:35.590
<v Sjors Provoost>Well, if in the graphical interface you can send a transaction, you can send it

00:15:35.590 --> 00:15:41.020
<v Sjors Provoost>to like 10 different recipients if you want to, that'll work. I believe RBF... I

00:15:41.020 --> 00:15:45.660
<v Sjors Provoost>have not implemented because internally that does a few other things. I don't

00:15:45.660 --> 00:15:49.160
<v Sjors Provoost>know, you can try. But it will be trivial to add that as a follow-up.

00:15:49.200 --> 00:15:49.600
<v Aaron van Wirdum>Right.

00:15:49.540 --> 00:15:52.760
<v Sjors Provoost>But I try to keep these pull requests as minimum as possible. So these are like

00:15:52.760 --> 00:15:55.950
<v Sjors Provoost>three features that I think are really at least good enough.

00:15:56.630 --> 00:16:01.310
<v Aaron van Wirdum>Sorry, are these things possible now? Are we just talking about GUI?

00:16:01.750 --> 00:16:05.290
<v Sjors Provoost>Yeah, the GUI pull request. Right now you can do all these things with the

00:16:05.290 --> 00:16:10.050
<v Sjors Provoost>command line, right, but they'll work in the GUI. Which is very nice because,

00:16:10.350 --> 00:16:14.710
<v Sjors Provoost>especially coin selection. So in the command line, typing send an address and an

00:16:14.710 --> 00:16:15.850
<v Sjors Provoost>amount, that's not too bad.

00:16:16.270 --> 00:16:18.550
<v Aaron van Wirdum>Yeah, other good example, right? Coin selection.

00:16:18.790 --> 00:16:23.130
<v Sjors Provoost>But the coin selection is only practical in the GUI. So you can actually decide

00:16:23.130 --> 00:16:26.970
<v Sjors Provoost>which coins to spend. And having coin selection with hardware wallets is very nice.

00:16:27.230 --> 00:16:28.330
<v Aaron van Wirdum>Yeah, I agree.

00:16:29.720 --> 00:16:34.860
<v Sjors Provoost>It does work, but it only works if it doesn't crash. So that just needs more

00:16:34.860 --> 00:16:39.440
<v Sjors Provoost>review and requires me to fix things and maybe make it asynchronous so the screen

00:16:39.440 --> 00:16:41.460
<v Sjors Provoost>doesn't block while the hardware wallet is doing something.

00:16:41.960 --> 00:16:46.120
<v Aaron van Wirdum>Yeah, this will probably not be ready before Bitcoin Core 22. I don't know.

00:16:46.260 --> 00:16:46.740
<v Sjors Provoost>I'm bullish.

00:16:47.060 --> 00:16:48.000
<v Aaron van Wirdum>You think it might be?

00:16:49.120 --> 00:16:53.340
<v Sjors Provoost>It depends on the review because I have a couple of things that I want to improve

00:16:53.340 --> 00:16:56.980
<v Sjors Provoost>about it, but I tend to get more motivated when people start screaming at me in

00:16:56.980 --> 00:16:57.420
<v Sjors Provoost>the reviews.

00:16:58.780 --> 00:17:02.620
<v Aaron van Wirdum>I can scream at you in the reviews. I won't say anything useful, but I can scream at you.

00:17:02.680 --> 00:17:05.720
<v Sjors Provoost>Well, you do have to actually test it, right? Don't just come in from Twitter and

00:17:05.720 --> 00:17:08.760
<v Sjors Provoost>comment on it. But if you actually run the code and something goes wrong, then

00:17:08.760 --> 00:17:10.620
<v Sjors Provoost>I'll try to help or fix the bug.

00:17:11.320 --> 00:17:16.580
<v Aaron van Wirdum>I'll consider that as well. I could consider that. What about multisig?

00:17:17.530 --> 00:17:19.430
<v Aaron van Wirdum>Using, that's like one of the arguably safest…

00:17:19.430 --> 00:17:22.410
<v Sjors Provoost>Yeah, so everything I've described so far is single sig.

00:17:22.950 --> 00:17:27.210
<v Aaron van Wirdum>Yeah, so for example, if you'd want to use three hardware wallets and then two

00:17:27.210 --> 00:17:29.830
<v Aaron van Wirdum>out of three stuff like that.

00:17:30.470 --> 00:17:34.090
<v Sjors Provoost>Well, eventually I'd like to see something similar to how Electrum, you know,

00:17:34.170 --> 00:17:35.450
<v Sjors Provoost>just lets you make a pie chart.

00:17:35.970 --> 00:17:36.670
<v Aaron van Wirdum>Yes, exactly.

00:17:37.010 --> 00:17:40.830
<v Sjors Provoost>None of that is there yet, not even in the command line. It is possible. I think

00:17:40.830 --> 00:17:44.670
<v Sjors Provoost>I once made an experimental pull request that did do multi-sig at least from the

00:17:44.670 --> 00:17:49.030
<v Sjors Provoost>command line. But there's a lot of moving parts. So I'd like to get all the

00:17:49.030 --> 00:17:53.050
<v Sjors Provoost>single-sig stuff merged. Then we'll move on to multi-sig. So Bitcoin Core

00:17:53.050 --> 00:17:58.850
<v Sjors Provoost>multi-sig with hardware wallets will be a while. That said, well, there's another

00:17:58.850 --> 00:17:59.390
<v Sjors Provoost>way to do it.

00:18:00.010 --> 00:18:02.130
<v Aaron van Wirdum>There's another way. That's great. Let's hear it.

00:18:02.250 --> 00:18:04.630
<v Sjors Provoost>This project is called Specter.

00:18:05.370 --> 00:18:06.370
<v Aaron van Wirdum>Specter wallets, yes.

00:18:06.750 --> 00:18:10.650
<v Sjors Provoost>Which is very cool. Specter is also a hardware wallet, but in this case, what

00:18:10.650 --> 00:18:15.090
<v Sjors Provoost>we're talking about is the Specter desktop software. Another Python project.

00:18:15.250 --> 00:18:16.930
<v Aaron van Wirdum>There's a device, a Specter device.

00:18:17.130 --> 00:18:20.990
<v Sjors Provoost>Yeah, it's very cool. I should have brought it with me. But it's a do-it-yourself

00:18:20.990 --> 00:18:25.190
<v Sjors Provoost>hardware wallet. So you can actually order the components from any manufacturer

00:18:25.190 --> 00:18:31.190
<v Sjors Provoost>that sort of makes these Arduino-like or smartphone-like things. And you take

00:18:31.190 --> 00:18:36.660
<v Sjors Provoost>a QR scanner and you solder it on it. This is by by Stepan Snigirev.

00:18:37.270 --> 00:18:40.830
<v Sjors Provoost>He's been working on that. He's also been working, I believe, on support for

00:18:40.830 --> 00:18:45.590
<v Sjors Provoost>actual secure elements so that you can buy your own secure element from like a

00:18:45.590 --> 00:18:49.790
<v Sjors Provoost>manufacturer that makes a lot of these general purpose secure elements. So they

00:18:49.790 --> 00:18:52.750
<v Sjors Provoost>might not even know that you're using it for Bitcoin purposes, which is very nice

00:18:52.750 --> 00:18:53.490
<v Sjors Provoost>supply chain wise.

00:18:53.690 --> 00:18:53.830
<v Aaron van Wirdum>Right.

00:18:54.110 --> 00:18:58.890
<v Sjors Provoost>And you don't have to trust them. Yeah, it's very cool. Basically, you can do a

00:18:58.890 --> 00:18:59.570
<v Sjors Provoost>lot of stuff with it.

00:18:59.830 --> 00:19:03.670
<v Aaron van Wirdum>That's the device. We were actually going to talk about the wallet, I guess, the software.

00:19:03.520 --> 00:19:07.070
<v Sjors Provoost>Because… because I guess in order for them to develop that device, they wanted to

00:19:07.070 --> 00:19:11.030
<v Sjors Provoost>use that inside a multisig setup. And so they… they spent a lot of time building

00:19:11.030 --> 00:19:16.800
<v Sjors Provoost>a multisig system. And that is called the Specter Desktop. What it does is,

00:19:17.060 --> 00:19:21.200
<v Sjors Provoost>again, it's a program you download and it opens on your computer. And then it

00:19:21.200 --> 00:19:26.250
<v Sjors Provoost>says, hey, where's Bitcoin Core? Or hopefully it finds it. And then if it finds

00:19:26.250 --> 00:19:29.890
<v Sjors Provoost>Bitcoin Core, it says, okay, well, Bitcoin Core is synced. It's got all the

00:19:29.890 --> 00:19:33.930
<v Sjors Provoost>blocks. Do you have any devices you'd like to configure? And then you say, okay,

00:19:34.050 --> 00:19:39.270
<v Sjors Provoost>yeah, I have a Ledger wallet and I have a Trezor wallet and whatever. You add

00:19:39.270 --> 00:19:43.050
<v Sjors Provoost>those devices one by one by just plugging it in. And under the hood, that uses

00:19:43.050 --> 00:19:43.730
<v Sjors Provoost>HWI.

00:19:44.890 --> 00:19:47.010
<v Aaron van Wirdum>Specter uses HWI as well, right?

00:19:47.150 --> 00:19:50.990
<v Sjors Provoost>Yeah, it just comes bundled with it. So it knows how to detect them, it knows how to add them.

00:19:51.050 --> 00:19:52.890
<v Aaron van Wirdum>So you need to install HWI as well?

00:19:53.030 --> 00:19:54.750
<v Sjors Provoost>No, I think Specter just has…

00:19:54.750 --> 00:19:56.010
<v Aaron van Wirdum>Oh, it includes it.

00:19:56.170 --> 00:19:56.330
<v Sjors Provoost>Yeah.

00:19:56.450 --> 00:19:56.870
<v Aaron van Wirdum>Right, got it.

00:19:56.910 --> 00:19:59.490
<v Sjors Provoost>Yeah, so that's the trade-off, right? So in Bitcoin Core, we don't just want to

00:19:59.490 --> 00:20:02.550
<v Sjors Provoost>add HWI, but in Specter, they do.

00:20:03.320 --> 00:20:03.740
<v Aaron van Wirdum>Got it.

00:20:04.510 --> 00:20:09.590
<v Sjors Provoost>And then basically you add devices and then you say, okay, I'd like to configure

00:20:09.590 --> 00:20:14.120
<v Sjors Provoost>a wallet. And the terminology is a bit confusing. That's why I use the word

00:20:14.060 --> 00:20:17.160
<v Sjors Provoost>device… device because the device is also a wallet.

00:20:17.120 --> 00:20:17.460
<v Aaron van Wirdum>But yep.

00:20:17.580 --> 00:20:20.880
<v Sjors Provoost>We create a wallet and you say, okay, I want to combine the Trezor and the Ledger

00:20:20.880 --> 00:20:26.770
<v Sjors Provoost>and I want a two of two sure, or one of two. And then it says, okay,

00:20:26.830 --> 00:20:31.010
<v Sjors Provoost>I'm going to create a wallet now. And it creates that wallet in Bitcoin Core. So

00:20:31.010 --> 00:20:35.010
<v Sjors Provoost>that means that Specter does not have to maintain all the code necessary to

00:20:35.010 --> 00:20:38.590
<v Sjors Provoost>create a whole wallet from scratch, because that's a lot of work. It lets Bitcoin

00:20:38.590 --> 00:20:42.700
<v Sjors Provoost>Core do that. It also means it can let Bitcoin Core do all the coin selection magic.

00:20:43.300 --> 00:20:46.280
<v Aaron van Wirdum>And this uses the GUI of Bitcoin Core?

00:20:46.520 --> 00:20:50.440
<v Sjors Provoost>No, it creates its own GUI, which is basically just a little web server on your

00:20:50.440 --> 00:20:54.180
<v Sjors Provoost>own computer, kind of like how a modem looks if you log in, log into the admin panel.

00:20:55.230 --> 00:21:00.890
<v Aaron van Wirdum>Right. So it uses Bitcoin Core as a backend, but you're actually looking

00:21:00.890 --> 00:21:05.090
<v Aaron van Wirdum>at Specter, which also includes HWI.

00:21:05.410 --> 00:21:08.990
<v Sjors Provoost>Yeah, that's right. And I guess one scenario where this might be nice is if you

00:21:08.990 --> 00:21:13.810
<v Sjors Provoost>run Bitcoin Core, not on your computer, but on a Raspberry Pi somewhere, which

00:21:13.810 --> 00:21:16.510
<v Sjors Provoost>might not have a screen, or at least you don't want to use the screen. And you

00:21:16.510 --> 00:21:20.570
<v Sjors Provoost>could imagine remote connecting to your Raspberry Pi with Bitcoin Core running on

00:21:20.570 --> 00:21:24.630
<v Sjors Provoost>it. And you're not worried because your keys are not on Bitcoin Core. It's just

00:21:24.630 --> 00:21:28.870
<v Sjors Provoost>the read-only stuff is on Bitcoin Core. So your Raspberry Pi in your living room

00:21:28.870 --> 00:21:34.730
<v Sjors Provoost>with no security is not really a threat, but it is a full node. And yeah,

00:21:34.850 --> 00:21:36.250
<v Sjors Provoost>so you can use it that way.

00:21:36.630 --> 00:21:37.950
<v Aaron van Wirdum>Yeah, so that's one way.

00:21:37.950 --> 00:21:40.890
<v Sjors Provoost>It looks pretty slick. It's very easy to use in my experience once you get it running.

00:21:41.110 --> 00:21:46.010
<v Aaron van Wirdum>So that's one way to use a hardware wallet in combination with Bitcoin Core

00:21:46.010 --> 00:21:47.190
<v Aaron van Wirdum>already, including...

00:21:48.760 --> 00:21:50.520
<v Aaron van Wirdum>Including multi-sig solutions.

00:21:51.020 --> 00:21:55.220
<v Sjors Provoost>Yeah, especially the latter. I guess, you know, soon TM, you'll be able to use

00:21:55.220 --> 00:21:59.100
<v Sjors Provoost>Bitcoin Core with single-sig, and then I would say the fewer moving parts you

00:21:59.100 --> 00:22:02.640
<v Sjors Provoost>have, the better. So nothing against Specter, but if you don't need it, then

00:22:02.640 --> 00:22:03.840
<v Sjors Provoost>don't run additional code.

00:22:04.060 --> 00:22:04.220
<v Aaron van Wirdum>Yeah.

00:22:04.680 --> 00:22:08.300
<v Sjors Provoost>But for multi-sig, it's great. And to get that kind of UI, especially in Bitcoin

00:22:08.300 --> 00:22:10.360
<v Sjors Provoost>Core, that's going to take a while.

00:22:10.940 --> 00:22:14.820
<v Aaron van Wirdum>Yeah, there are a couple of other solutions like this. You already mentioned

00:22:14.820 --> 00:22:19.350
<v Aaron van Wirdum>Electrum. Which you could, of course, also run in combination with your personal

00:22:19.350 --> 00:22:22.870
<v Aaron van Wirdum>Electrum server, in which case you're also using full node security.

00:22:23.190 --> 00:22:28.570
<v Sjors Provoost>Yeah, although I'd have to see, I don't know if Electrum personal server also has

00:22:28.570 --> 00:22:31.910
<v Sjors Provoost>support for multisig, but in theory that could be added.

00:22:33.060 --> 00:22:38.120
<v Aaron van Wirdum>Yeah, there's something called a Lily wallet. I don't know if that uses full node

00:22:38.120 --> 00:22:41.160
<v Aaron van Wirdum>security. I've never used it. It looks very slick. I've seen that.

00:22:41.340 --> 00:22:41.480
<v Sjors Provoost>Okay.

00:22:41.640 --> 00:22:47.140
<v Aaron van Wirdum>But that also allows for hardware wallets, multi-setup stuff. I think, but I

00:22:47.140 --> 00:22:51.360
<v Aaron van Wirdum>could be wrong. I think that's SPV light-client type of wallet though.

00:22:51.440 --> 00:22:52.480
<v Sjors Provoost>I'm not, I don't know.

00:22:52.640 --> 00:22:54.580
<v Aaron van Wirdum>I think there's also one called Caravan.

00:22:54.860 --> 00:22:56.180
<v Sjors Provoost>Caravan, yep. I've heard of that.

00:22:56.460 --> 00:23:00.580
<v Aaron van Wirdum>I don't know much about Caravan. I know it does something similar.

00:23:01.130 --> 00:23:06.130
<v Sjors Provoost>Yeah, that's what I heard too. And then there is, I guess, Casa. I don't know how

00:23:06.130 --> 00:23:10.670
<v Sjors Provoost>they do it. So yeah, there's all sorts of ways. I… I imagine in the future this

00:23:10.670 --> 00:23:13.120
<v Sjors Provoost>is going to get better and better. Right, so now we have…

00:23:12.350 --> 00:23:14.950
<v Aaron van Wirdum>Well, it's getting better already, clearly.

00:23:15.210 --> 00:23:19.030
<v Sjors Provoost>Well, we talked about very simple multisig setups, but imagine a scenario where

00:23:19.030 --> 00:23:23.450
<v Sjors Provoost>we have not just Taproot. Yeah, we have Taproot, and then we have Miniscript,

00:23:23.630 --> 00:23:26.970
<v Sjors Provoost>which we talked about in an earlier episode, which allows you to make far more

00:23:26.970 --> 00:23:32.710
<v Sjors Provoost>complicated setups. So now you can imagine instead of a two or three setting

00:23:32.710 --> 00:23:38.540
<v Sjors Provoost>where you have two hardware wallets, one you keep in a vault somewhere, one you

00:23:38.540 --> 00:23:44.490
<v Sjors Provoost>keep wherever you are. And then the third key, quote unquote, is not actually a

00:23:44.490 --> 00:23:48.170
<v Sjors Provoost>single key. It's not a single device. It is some sort of bank, some sort of bank

00:23:48.170 --> 00:23:53.920
<v Sjors Provoost>that helps you. And they internally use some extremely complicated setup, which

00:23:53.920 --> 00:23:56.360
<v Sjors Provoost>you don't have to understand. From your point of view, it just looks like one

00:23:56.360 --> 00:24:01.160
<v Sjors Provoost>signature. In reality, it's very complicated. And it can all be communicated

00:24:01.160 --> 00:24:04.820
<v Sjors Provoost>through Miniscript. And then you do something like Specter. So you and your site

00:24:04.820 --> 00:24:08.260
<v Sjors Provoost>can make sure everything works. And only when you need the bank, then you need to

00:24:08.260 --> 00:24:12.080
<v Sjors Provoost>ask them for a signature. Sure. But other than that, it all just works from your

00:24:12.080 --> 00:24:15.900
<v Sjors Provoost>end. Even though they have some super complicated rule set that for you, it's

00:24:15.900 --> 00:24:20.320
<v Sjors Provoost>just a third party and you don't care. So I'm very bullish on the future, but

00:24:20.320 --> 00:24:21.300
<v Sjors Provoost>this is going to take a while.

00:24:22.700 --> 00:24:26.220
<v Aaron van Wirdum>Well, Sjors, thanks for the update. This is where we are with hardware wallet

00:24:26.220 --> 00:24:29.600
<v Aaron van Wirdum>integration in Bitcoin Core now and soon, TM.

00:24:30.170 --> 00:24:31.630
<v Sjors Provoost>That's right. Anything else?

00:24:32.150 --> 00:24:33.350
<v Aaron van Wirdum>I think that's it for me.

00:24:33.530 --> 00:24:36.130
<v Sjors Provoost>Alrighty. Thank you for listening to the Van Wirdum Sjorsnado.

00:24:36.590 --> 00:24:37.090
<v Aaron van Wirdum>There you go.

