Bitcoin Core 22.0 Explained - Episode 45
Ep. 45

Bitcoin Core 22.0 Explained - Episode 45

•

Episode description

The Van Wirdum Sjorsnado has rebranded, and is now called Bitcoin, Explained!

In this episode of Bitcoin, Explained, hosts Aaron van Wirdum and Sjors Provoost discuss Bitcoin Core 22.0, the latest major release of the Bitcoin Core software client, currently the de facto reference implementation of the Bitcoin protocol. Aaron and Sjors highlight several improvements to the Bitcoin Core software.

The first of these is hardware wallet support in the graphical user interface (GUI). While hardware wallet support has been rolling out across several previous Bitcoin Core releases, it is now fully available in the GUI. The second highlighted upgrade is support for the Invisible Internet Project (I2P), a Tor-like internet privacy layer. Aaron and Sjors also briefly touch on the differences between I2P and Tor.

The third upgrade discussed in the episode is Taproot support. While Taproot activation logic was already included in Bitcoin Core 0.21.1 Bitcoin Core 22.0 is the first major Bitcoin Core release ready to support Taproot when it activates this November, and includes some basic Taproot functionality.

The fourth upgrade that Aaron and Sjors discuss is an update to the testmempoolaccept logic, which paves the way to a bigger package relay upgrade. This could in a future release allow transactions to be transmitted over the Bitcoin network in packages including several transactions at the same time.

Additionally, Aaron and Sjors briefly discuss an extension to create multisig and add multisig address, the new NAT-PMP option, and more.

Transcript

Download transcript (.vtt)
0:09

Aaron van Wirdum Welcome to Bitcoin Explained, the podcast with the most boring name in Bitcoin. Hey, Sjors.

0:16

Sjors Provoost What's up? What's the new name?

0:18

Aaron van Wirdum We've rebranded our podcast. What do you think?

0:21

Sjors Provoost Well, I think, you know, especially if you read it correctly, Bitcoin, comma, Explained, I think it's an amazing name. I think the problem was that a lot of people have no idea what the hell a Van Wirdum Sjorsnado is.

0:33

Aaron van Wirdum Apparently, no one had any idea what Van Wirdum Sjorsnado means or even how to pronounce it. So we decided to go for a new name.

0:41

Sjors Provoost Though I think if people listen to it long enough, they'll know how to pronounce it. But I think the problem is people who are not listening don't know how to pronounce it.

0:49

Aaron van Wirdum So from now on, we're Bitcoin Explained. Why is the comma so important for you?

0:54

Sjors Provoost It makes it sound more profound. So if you just say, oh, I'm going to explain Bitcoin, whereas Bitcoin Explained, you know, really says, okay, now you truly understand it.

1:03

Aaron van Wirdum Very profound. So the first episode, we're just going to keep counting. So this is episode 45 of Bitcoin Explained, previously known as The Van Wirdum Sjorsnado. And we're going to start off with the new Bitcoin Core release, Bitcoin Core 22.

1:19

Sjors Provoost That's right.

1:20

Aaron van Wirdum From now on, it's not 0.22 anymore. It's just Bitcoin Core 22, right?

1:25

Sjors Provoost Yeah. Highly undemocratically decided at some point to just change the numbering because people were asking, when is version one coming of Bitcoin? They were like, yeah, we're just going to skip it. Because it's always bad luck when you do that.

1:37

Aaron van Wirdum Right. So from now on, does this mean we're not in beta anymore, Sjors, is that the big announcement?

1:43

Sjors Provoost No, I think it means nothing. I think it just means that we stopped having this zero prefix.

1:47

Aaron van Wirdum Basically, Bitcoin Core changed the name for the same reasons that we did. Just to avoid annoying questions and make it more clear. Is that it?

1:56

Sjors Provoost I guess. I wasn't really there at the decision. It just happened and nobody wanted to undo it.

2:01

Aaron van Wirdum Got it. Well, at the point that we're recording this, the new Bitcoin Core release has not actually been released yet. Bitcoin Core 22 has not actually been released yet. But by the time this episode is released, then maybe Bitcoin Core 22 is released as well. And otherwise, it will be released very soon, right?

2:20

Sjors Provoost That's right. There's now a third release candidate out. So that means basically any day now.

2:25

Aaron van Wirdum At the point of recording, at least. And maybe, like I said, maybe it's out by the time this episode is released. So anyways, we're going to highlight some of the improvements compared to Bitcoin Core 21, essentially, and Bitcoin Core 21.1. Was there a Bitcoin Core 21.2 as well? I don't think so.

2:46

Sjors Provoost I think there's one in progress.

2:47

Aaron van Wirdum Right, exactly. Yeah, there's one coming as well. We're going to give a short overview of the most notable changes.

2:56

Sjors Provoost Yeah, exactly. So usually the last version digit, those changes are very small. They're usually bug fixes and those kind of things. So the release we're talking about now is a big one.

3:06

Aaron van Wirdum Well, they're either very small or they're a protocol upgrade.

3:12

Sjors Provoost Right. So in this case, it's a bit more complicated because it's small fixes and Taproot that go into 0.21.1 and also in 0.22.2, uh, 21.2.

3:23

Aaron van Wirdum So let's get to Bitcoin Core 22. That's what the episode is about. I think the most notable change, the biggest change, I think you'll agree with that because you worked on it. So you're biased, is hardware wallet support, the GUI, right?

3:39

Sjors Provoost I think that's a pretty cool change. I don't know if it's the biggest change. I'm definitely very happy with it. Yeah, so basically if you download Bitcoin Core 22 and then also download HWI, which we talked about in episode 30, which is just a Python script that connects to all sorts of different hardware wallets essentially using their drivers. Then I think you just have to change one setting, which is to tell it where you put the HWI script. And then once you've done that, you just insert your hardware wallet. You say to Bitcoin Core, give me a new wallet. And it'll say, oh, do you want to use a Trezor, Ledger, whatever you just inserted? And it'll just work to you like any other wallet, except that your hardware device will now show on screen, hey, do you want to approve this transaction? So that's pretty cool, I think.

4:25

Aaron van Wirdum Right. But am I understanding you correctly that it does not work out of the box? You can't only download Bitcoin Core 22. You also need to download the HWI.

4:35

Sjors Provoost Correct.

4:36

Aaron van Wirdum Which is a separate software package.

4:38

Sjors Provoost Yeah, it's a Python library. And because it contains all the stuff from the hardware manufacturers and it communicates with USB. So it is potentially a can of worms. And so we don't want to put it in Bitcoin Core for everybody. Maybe one day will be, but I think it'll be a while because just including USB drivers into Bitcoin Core sounds a bit scary.

4:58

Aaron van Wirdum Right. So for now, it's like an add-on.

5:00

Sjors Provoost Yes. But like I said, pretty easy to install. You download it, put it somewhere, point to it, and that's it.

5:05

Aaron van Wirdum Hardware wallets were already supported by Bitcoin Core though, right?

5:10

Sjors Provoost Indirectly, yes. You could use HWI already. but you had to use it from the command line yourself. And actually, HWI also came with a graphical tool, so you could actually use it somewhat reasonably, but I think this is much easier now. It's just right into the Bitcoin Core interface.

5:27

Aaron van Wirdum Yeah, no one uses the command line, sure, so only a couple of Bitcoin Core developers themselves use that stuff.

5:33

Sjors Provoost A surprising number of Bitcoin Core developers use the graphical interface too, and it's especially because of coin selection. It's just a lot easier to do. If you want to decide which coins you want to spend using a graphical interface, you just click on them. Whereas with the command line, it's horrible. You have to copy-paste the transaction hash and the identifier.

5:52

Aaron van Wirdum Right. So which hardware wallets are supported?

5:55

Sjors Provoost Off the top of my head, whatever HWI supports. So that is the Trezor, the Ledger, the KeepKey, COLDCARD. Maybe some more. Yeah, I was just opening the support matrix. There's a whole list of it. BitBox.

6:10

Aaron van Wirdum Okay, is that the only hardware wallet related change in the Bitcoin Core 22?

6:15

Sjors Provoost I mean that's a big enough one right and I'm sure in in next versions there'll be some more incremental improvements like being able to bump the fee for example would be nice that sort of stuff. Multisig would be very nice if it was possible to do that directly.

6:30

Aaron van Wirdum Yeah. And for now, I think it's just one hardware wallet per Bitcoin Core wallet, right? You can't do two out of three or that kind of...

6:38

Sjors Provoost No, exactly. Multi-signature support is not there yet. And that just is a whole can of worms in general, right? Multi-signature support with Bitcoin Core is still not very easy. It's all possible, but it requires some manual work.

6:50

Aaron van Wirdum Right. So hardware wallet integration into Bitcoin Core has been a long process, has been an incremental process. And now for the first time with Bitcoin Core 22, we have hardware wallet support in the GUI, which basically means we for the first time have hardware wallet support for regular users.

7:08

Sjors Provoost Yeah, exactly. I think it's still marked experimental.

7:11

Aaron van Wirdum Great. Next up, I2P. Sjors, what is I2P?

7:15

Sjors Provoost I don't know. There's a lot of articles on the internet that say, what is the difference between I2P and Tor? And then those articles start by saying, many people ask what the difference is between I2P and Tor? Then they proceed in some really convoluted language. But basically, you know, it is a Tor-like system that is somehow different. But the good news is that Bitcoin Core can now use it.

7:37

Aaron van Wirdum Exactly, yeah. It's a privacy layer on top of the internet, a lot like Tor. You know, Tor uses onion routing. So messages are encrypted and routed across different users that all have a sort of encryption step on the way. And therefore, you gain privacy. I2P is similar and the differences are pretty subtle. It seems that I2P has a more distributed way of mapping the network. I don't think either of us know the details of how that works exactly, but it's more distributed than with Tor. And somehow I2P is more dedicated to...

8:21

Sjors Provoost It's internal, so it's more difficult to get out of I2P, whereas in Tor it's very easy to use the original internet in addition to dedicated darknet, or not darknet, but onion sites.

8:32

Aaron van Wirdum Yeah, that's what I was going to say. I2P is more dedicated to hidden services. So if you stay within the network... I2P is sort of specialized for that, I guess, where Tor is more usable if you want to send stuff to the regular internet, to the web, right?

8:48

Sjors Provoost That's what we've read in random Google searches. So we wouldn't know.

8:52

Aaron van Wirdum These appear to be the subtle differences. So what does this have to do with Bitcoin Core?

8:56

Sjors Provoost Well, so this kind of ties back into an earlier episode. So first of all, Bitcoin Core 22 supports that network. So if you are interested in using it, you can.

9:05

Aaron van Wirdum Yeah, so you can now connect to the Bitcoin network through I2P.

9:10

Sjors Provoost Yeah, and so what we talked about in episode 13, back when it was still called the Van Wirdum Sjorsnado, what we talked about then is that Bitcoin Core added support for Tor version 3. And the other aspect we talked about then was more generally, how does Bitcoin Core tell other nodes that which nodes to consider? So there's basically a message where you can say, hey, here's a bunch of addresses for other nodes. And what we explained in an episode is that there's now a new message that makes it easier to announce nodes of various kinds to other nodes, including to say, okay, here's a list of Tor version 3 nodes, or here's a list of IPv6 nodes, or here's a list of I2P nodes. And this mechanism is now more generic, which means that in the future, if other networks like this come about, some other anonymity network, you know, maybe internet over the Lightning network, who knows? It'll be much easier to add support for that because we'll have a way to gossip those nodes around.

10:10

Aaron van Wirdum Right. Speaking of these kinds of topics, you already mentioned Tor version 3. Tor version 2 has now been fully deprecated, right?

10:25

Sjors Provoost Yeah, it was essentially already the case because in the previous version of Bitcoin Core, if it started up, it would immediately switch to Tor version 3 and would just not use your Tor version 2 settings. But you could still go back if you did something manually. And now I think all that code has been stripped out because I think Tor version 2 is more or less shut down. Because remember, Tor is centralized in that way. Like there's somebody out there that can say, okay, this thing no longer works.

10:52

Aaron van Wirdum Right. Yeah. We've discussed this in one of the previous Bitcoin Core release episodes, I think, where the switch from Tor version 2 to version 3 was happening.

11:02

Sjors Provoost Yeah, we did that in the same episode, episode 13.

11:05

Aaron van Wirdum Right. Got it. These are two changes we've mentioned, hardware wallets and I2P support. You've also mentioned at the start of this episode, this difference between major releases and minor releases, where minor releases are usually either bug fixes or they include protocol upgrades. Now, the last minor release did include protocol upgrades, namely Taproot, which also means that this is the first major Bitcoin Core release that has Taproot support. And we can find this Taproot support in a couple of places in this upgrade, right?

11:38

Sjors Provoost Yeah, of course, the most important part is that all the Taproot consensus stuff is in here. obviously, the activation code, the speedy trial, all that sort of stuff.

11:46

Aaron van Wirdum If you haven't upgraded to the minor release yet, Taproot is going to activate in November. So this would be a good opportunity to actually upgrade if you want to enforce the new Taproot rules, which you should do if you want to get the maximum security that a full node promises to offer.

12:02

Sjors Provoost Yeah, but the good news is that if you really, really liked version, say, 0.21.0, and you don't want to change too much then you could just go to 0.21.1 and you'll enforce Taproot but as we'll talk about now I think version 22 has a few more things on top of this, the consensus enforcement.

12:22

Aaron van Wirdum Yes. So what does Bitcoin Core 22 include Taproot wise?

12:27

Sjors Provoost Well, it includes some very rudimentary support for wallet Taproot wallets. Basically, you're just a single public key type of wallet you know which doesn't make Taproot that interesting and slightly more generic things where you can have one private, one, yeah one key per Taproot branch so remember in Taproot you have a main key and you also have scripts that are sitting in a tree And so there's now support for those scripts in a tree. However, as far as I understand it, those scripts can only be of the super simple type, namely a public key.

13:03

Aaron van Wirdum Right.

13:04

Sjors Provoost So they're not very interesting yet, but this is how it goes with Bitcoin Core. We add little increments at a time.

13:10

Aaron van Wirdum Yes, we've mentioned that a couple of times. Bitcoin Core is improved slowly but surely. Every half year there's a new release, so it's not necessarily that all the Taproot stuff comes at the same time. It's just step by step. And now the first step is to have very basic Taproot support, which essentially comes down to Taproot support for regular transactions. So none of the fancy smart contract stuff, but you can use a Taproot type of address and transaction to receive funds.

13:41

Sjors Provoost Yeah, in principle. But again, it's not even on by default. You actually have to manually make it happen. So probably for version 23, you know, it'll automatically do the Taproot things.

13:53

Aaron van Wirdum Yeah, I think another way to put it short, if you agree with me, is that there's no actual benefit yet in using Taproot in this Bitcoin Core release. But it's possible to use it for sort of regular transactions, right?

14:05

Sjors Provoost Yeah, exactly. So you can if you really know what you're doing. And other than that, it's probably useful to have it in there anyway for people who want to test things on Signet or Testnet or that sort of stuff. Because we want other developers to keep working on Taproot.

14:17

Aaron van Wirdum Yeah, so this was basically Taproot addresses we were discussing. A little bit deeper under the hood, you have the Taproot descriptors.

14:25

Sjors Provoost Yes. So a descriptor is a way to say, I want to generate a series of addresses, basically. So instead of saying, okay, our wallet is one address, you say, okay, our wallet starts with the root private key, and then it does a bunch of BIP32 style derivations. And then it says, okay, give me the address number 15 or 16 or 17. And descriptors allow you to describe that. And now they also let you do that for Taproot.

14:52

Aaron van Wirdum I think descriptors also allow you to sort of categorize your funds into specific types of... funds right so you can have you can say these are all my Taproot funds locked in Taproot stuff and these are all my multisig funds like the multisig addresses and the descriptors sort of let you label these right?

15:12

Sjors Provoost Yeah, because they describe in a sort of a human readable form what your addresses are how to get to your addresses yeah you can say I have one descriptor for my SegWit addresses. I have one descriptor for my Taproot addresses. Yeah.

15:26

Aaron van Wirdum Yeah. So now there's a Taproot descriptor. So that's another sort of small step in the Taproot process for Bitcoin Core.

15:33

Sjors Provoost That is what the wallet has support for. So you can add Taproot descriptors to the wallet now, but you have to do it yourself.

15:39

Aaron van Wirdum Right. So, hardware wallet support in the GUI, I2P support, Taproot, first major release with Taproot. Oh, are we done with Taproot?

15:57

Sjors Provoost Almost. The other thing is there's a little safety measure there. Well, two things. So there's a little safety measure there that you cannot add Taproot to a wallet on mainnet before it activates. Just to make sure you don't have people send to your Taproot address before it activates because then you lose all the coins. And the other thing is that...

16:16

Aaron van Wirdum Wait, wait, wait. Why would you lose the coins? It just means you can't spend the coins, right?

16:21

Sjors Provoost No, if you're receiving money on a Taproot address before Taproot activates, then that's anyone can spend.

16:27

Aaron van Wirdum Yeah, right, right.

16:29

Sjors Provoost So yeah, that's a bad idea. So this is a little basically anti-footgun measure.

16:35

Aaron van Wirdum Got it.

16:35

Sjors Provoost The other upgrade is that there's now some support for Bech32m. We talked about, I think, Bech32 addresses in general, and that for Taproot, there's a small change to it. The episode 28, we talked about addresses.

16:49

Aaron van Wirdum I remember that.

16:50

Sjors Provoost Yeah, and so to the human eye, they'll look identical. They start with bc1, but there's some subtle changes in the checksum that you can safely ignore, but it does have to be built.

17:00

Aaron van Wirdum Right. That's also included in this release and also related to Taproot.

17:05

Sjors Provoost Exactly.

17:06

Aaron van Wirdum All right. Was that all Taproot?

17:08

Sjors Provoost I think so.

17:09

Aaron van Wirdum Okay, great. So yeah, hardware wallet support, I2P, taproot. And then the fourth notable change that we're going to discuss is there's an update to testmempoolaccepts. Am I saying that right?

17:23

Sjors Provoost That's right.

17:24

Aaron van Wirdum Or is testmempoolaccept newly included?

17:26

Sjors Provoost No, testmempoolaccept has been around. So testmempoolaccept is an RPC method, right? So the RPC is a way to programmatically talk to a node from maybe from a Python script or just manually. And what testmempoolaccept does is it it takes a transaction and it says yeah if you were to broadcast this transaction it would be valid or it would say no this transaction is invalid because the signature is wrong so it's just a way to check if a transaction is correct before actually sending it and one of the things I believe it checks against is whether the fee is high enough to even make it into your mempool Because your mempool might be very full and if it's too low, it'll say, no, fee is not high enough. But one of the restrictions that comes with that, and we talked about this in episode 19, package relay and other things. One of the restrictions is that it evaluates these transactions one at a time. So you might have one transaction that pays a very low fee and then the next transaction actually spends that first transaction and pays a huge fee. you won't get through because the first transaction is immediately tossed away. And so the longer term goal that we talked about in this episode is that these transactions can be analyzed as a package in various places. So by the mempool itself and in the peer-to-peer messaging protocol. And so this adds a tiny, tiny, tiny step, which is that now you can give this command multiple transactions. It's still going to evaluate them one by one. But again, this is baby steps.

18:55

Aaron van Wirdum Yeah, if I have to jog my memory, the point here was that for some protocols like the Lightning Network, you might need to use a trick called child pays for parent, which means that you create a new transaction that has a high enough fee to essentially pay for a previous transaction.

19:15

Sjors Provoost Yep.

19:16

Aaron van Wirdum That a transaction is sort of stuck in the mempool or whatever. Well, that's where it will be stuck. And to speed it up, you create a new transaction that spends the same funds, include an extra high transaction there. And that's how you sort of get them both unstuck. That's how you get the first transaction unstuck, which you sometimes actually really need to do with some. You might be in a rush, in a hurry to actually do that in context of protocols of the Lightning network, because sometimes you actually need transactions to confirm before some kind of time lock runs out. And then the problem is that while this works for getting a transaction actually included in a block, it doesn't necessarily work for getting a transaction into a mempool. So sometimes, am I saying this right? Sometimes you need to get a transaction unstuck, but that transaction doesn't even make it into the mempool, which means you also can't get it unstuck with child pays for parent. And then the solution there would be to have... the network to broadcast packages of transactions over a network. So in the same way that a package of transactions can sort of be confirmed by a miner all at once because the miner calculates the total fee, that sort of same calculation, the total fee calculation would come to apply for what regular nodes put in the mempool. That's sort of the long-term upgrade that's being worked on. And this is a very small step in that process, right?

20:44

Sjors Provoost Yeah. And for Lightning, it's a way to reduce fees, right? Because right now when you... Well, to reduce fees in some cases. So right now with Lightning, you have to pre-sign a transaction, which means you have to decide in advance what the fee is going to be for that transaction. And so these fees have to be taken some sort of worst case scenario into account. Whereas with this change, eventually the hope is that... you just set no fee on it on the backup transaction that you have in Lightning and you just send it on the blockchain and then whoever really needs this transaction will just pay the extra fee that is needed right then as a child pays for parent, so it's a useful feature but yeah there's some problems with relay when the mempool is very full so,

21:27

Aaron van Wirdum yeah, that makes sense. So this testmempoolaccept is a small step in improving that process.

21:32

Sjors Provoost Yep.

21:33

Aaron van Wirdum Another, another incremental improvement. Exactly. All right, so one more to go, Sjors?

21:39

Sjors Provoost Oh, maybe two actually. I have some some other [unclear] but one small one is addmultisigaddress I think we talked about that. Well, basically the multi-signature support inside the RPC you can now use it for 20 public keys instead of 16, which is something that SegWit supports.

21:59

Aaron van Wirdum Right, this is for Bitcoin Core users that want to receive a transaction. Right now, this is limited to, you can create a multisig, but it's limited to 16 public keys. Is that right?

22:12

Sjors Provoost Yeah, and I think the reason is that legacy addresses could only do 16 P2SH and SegWit can do 20. Right. But the Bitcoin Core couldn't support it yet.

22:22

Aaron van Wirdum Right, so now Bitcoin Core users can receive transactions on 20 key multisigs.

22:30

Sjors Provoost Yeah, it's not a consensus change. None of the rules change. It's just that the Bitcoin Core wallet can now do a little bit more.

22:36

Aaron van Wirdum Yeah, it was always possible according to the consensus rules, but not according to Bitcoin Core yet, until now.

22:43

Sjors Provoost Yeah, so another thing we can mention that is, I think, fun is support for NAT-PMP. Basically, when you have a router, like if you're running a node at home and you usually have a router, that will cause your node to not listen to anything else. You know, your node can connect outbound, but other nodes can't connect to you because they can't see you. And the way you solve that is by opening a port on the router, forwarding that port to your node, which you can do manually. Like you go to, I don't know, 192.16802, and then you log in and you say port forwarding and you say send port 8333 to this device that runs my node. But nobody wants to do that. So there are libraries that are often used by games and by programs like BitTorrent and all these things that will do it for you automatically. They will just, from your computer, ping your router and say, please route this port to me. And that was done using UPnP, but apparently that's very insecure and very bad. So it was turned off by default in Bitcoin Core, so nobody was using it. And now there's another library called NAT-PMP that apparently is a bit safer, a bit easier. And that's now added. So if you open Bitcoin Core in the settings, in the GUI, there's a button that says NAT-PMP. I think you can click on it and it'll try. And then it'll try to open the other port on the router to listen. I don't know if it gives any useful feedback. If it doesn't work I haven't tried it. It doesn't. I don't think it works on my router.

24:16

Aaron van Wirdum Great. And then other than that what we haven't mentioned of course every Bitcoin Core upgrade has a ton of smaller improvements bug fixes these kinds of things but I think we agree that these were what we've mentioned now were the six most notable changes.

24:32

Sjors Provoost Yeah, there's there's one meta change I think we should we forgot to mention which is not inside the build itself, is that the deterministic builds for this release are being made using Guix for the first time.

24:45

Aaron van Wirdum Right, yeah, I do think we've mentioned that, but maybe you can explain real quick what that is.

24:49

Sjors Provoost I think we talked about reproducibility in an earlier episode, why open source matters, episode 21. We talked about it's important for Bitcoin Core to be open source, but also that the thing you're downloading from BitcoinCore.org is actually related to that source that's out there. Because we could just say, hey, look at this beautiful source code and then give you some binary that's just ransomware. And we spent the whole episode 21 explaining how to prevent that. And Guix, G-U-I-X, is a new project, relatively new, that makes that process of verifiability better. And we're now using that for the release.

25:28

Aaron van Wirdum Great.

25:28

Sjors Provoost Yeah, I think that's basically it.

25:31

Aaron van Wirdum Yeah, so the main changes were hardware wallet support in GUI, I2P support, first release to have Taproot, which includes receiving very basic Taproot transactions. testmempoolaccept was updated as an incremental step towards package relay.

25:47

Sjors Provoost I mean, I don't even know if you want to call it the main changes. It's the changes we discussed and that are maybe the most visible and and makes sense. But I can list a few other things. There's a coinstats index which has been on my to-do list for a long time to see UTXO snapshots. We talked about UTXO snapshots I think another episode and just another little piece of progress in there. Yeah, hundreds of things.

26:11

Aaron van Wirdum Extended multisig support is what I forgot to mention. NAT-PMP. It's amazing.

26:17

Sjors Provoost It's awesome. It's going to be available in a store near you. Oh no it's free.

26:21

Aaron van Wirdum Oh, even better.

26:22

Sjors Provoost All right, I think that's all right.

26:24

Aaron van Wirdum Yeah, that's that's it for me.

26:26

Sjors Provoost Okay, then, thank you for listening to Bitcoin Explained, formerly known as the Van Wirdum Sjorsnado.