Episode 78: Partially Signed Bitcoin Transactions (PSBTs) (And Dutch Auctions)
Ep. 78

Episode 78: Partially Signed Bitcoin Transactions (PSBTs) (And Dutch Auctions)

•

Episode description

In this episode of Bitcoin, Explained, Aaron (@AaronvanW) and Sjors (@provoost) explain Partially Signed Bitcoin Transactions (PSBTs), discussing what problems they solve, how they work, and some of the ways they are used. In the last part of the episode, the hosts zoom in on one particular PSBT use case called Dutch Auctions, which Bitcoin Magazine recently used to sell ordinals.

Episode Sponsor: https://voltage.cloud/

Sjors New Book: https://btcwip.com/

Transcript

Download transcript (.vtt)
0:20

Aaron van Wirdum Live from Utrecht, this is Bitcoin

0:22

Sjors Provoost Explained.

0:24

Aaron van Wirdum Hey Sjors.

0:24

Sjors Provoost Hello.

0:26

Aaron van Wirdum So Sjors, today we're going to talk about partially signed Bitcoin transactions.

0:31

Sjors Provoost That's right.

0:32

Aaron van Wirdum AKA PSBTs. Now, our dear avid listener. As you probably, as you certainly know, we've already discussed this in probably at least one or two, maybe even three episodes previously. But every time that it came up, it was sort of in context of some other topic, like the actual topic we were discussing. And we didn't really make any episode specifically about partially signed Bitcoin transactions. So Sjors and I decided we should have an episode that's really about partially signed Bitcoin transactions.

1:08

Sjors Provoost That's right.

1:09

Aaron van Wirdum I'm just sort of prefacing that because if you've heard us explain it in previous transactions, you know, we won't blame you if you want to skip this episode. We'll still be your friend. Isn't that right, Sjors?

1:21

Sjors Provoost No, I think you should just listen to it.

1:25

Aaron van Wirdum Sjors, Sjors and I don't always see eye to eye. Let's just get to our favorite part of the episode.

1:31

Sjors Provoost That's right.

1:32

Aaron van Wirdum Sjors stacks sats, Sjors stacks sats, Sjors stacks sats.

1:37

Sjors Provoost Yeah. This is why you really wanted to have video because it's quite funny, but I'll read two. One is from Eric 99 who says, stay humble stack sats. And for 50,000 satoshis. and another one that's funny I think from at vague 10 000 satoshis with this podcast has encrypted my heart.

1:57

Aaron van Wirdum Oh, that's so sweet.

1:59

Sjors Provoost And that's a reference to the last episode to the peer-to-peer encryption episode.

2:04

Aaron van Wirdum Sjors, if people want their boostagrams read out loud in Bitcoin Explained and pay you the sweet sats, what do they need to do where do they where do they go?

2:13

Sjors Provoost Oh, they need to google something like value for value or boostagrams and install one of these modern podcasting 2.0 apps that allow you to stream sats per minute. And also, if you like, do a shout out. There's no guarantee that I'll read it.

2:29

Aaron van Wirdum So that was Sjors Stacks Sats. Back to the episode. Sjors, partially signed Bitcoin transactions. First of all, is this one of the parts of Bitcoin that you've contributed to actively? Is that right?

2:46

Sjors Provoost I've definitely done testing of it, a little bit of review.

2:49

Aaron van Wirdum Because you've done a lot of work on hardware wallets integration, and I think that probably has something to do with this.

2:55

Sjors Provoost That definitely uses PSBTs a lot, so I've definitely seen a lot of them, but I don't write this particular code.

3:02

Aaron van Wirdum okay so let's as always start at the beginning what is what what before there were partially signed Bitcoin transactions before this existed Usually we start with the one sentence explanation of what it is. So can you give us a one sentence explanation of what PSBTs are?

3:23

Sjors Provoost Yeah, it's basically a file that contains a draft transaction or even a complete transaction and some extra information about the transaction. So the partially signed stands for that it might not be signed at all or it might have one signature if it's a multisig out of five, etc. So it's a place where you collect all the components for a transaction.

3:42

Aaron van Wirdum Okay. so that's the one sentence explanation now let's go to the beginning so before this existed what was the problem why did someone think that this needed to exist?

3:53

Sjors Provoost Well, the problem is when you're trying to do anything other than just creating a simple transaction where you know you have a wallet you're sending coins somewhere and your wallet just makes a transaction signs it and it's done if you want to do something more complicated like signing offline or if you want to use a hardware wallet, maybe especially one that's somewhere else, or if you wanted to do a multisig transaction, when we talked about multisig in earlier episodes, then things became more complicated. You'd have to somehow ferry that transaction around and make sure that all the other devices know what they need to do. And there was only ad hoc solutions to that.

4:29

Aaron van Wirdum Hang on. Okay. So the key thing here is that sometimes a Bitcoin transaction consists of you know, data,

4:41

Sjors Provoost inputs, signatures, outputs.

4:45

Aaron van Wirdum Well, that's the point though. So sometimes you want to create a signature on a different device than you created the rest of the transaction with, right?

4:54

Sjors Provoost Yes.

4:55

Aaron van Wirdum And this was already possible even before PSBTs.

4:58

Sjors Provoost Yes, it was.

4:59

Aaron van Wirdum Like Electrum already allowed this and I think even Bitcoin Core allowed this kind of stuff, but they did it in different ways.

5:11

Sjors Provoost Yeah, and it was a fairly ad hoc. Yeah, basically it was ad hoc. Yeah, and it was not very flexible. So, for example, Bitcoin would create a transaction that would just... I think it would just set all the signatures to zero. And then your other wallet software would just have to guess what it has to do.

5:27

Aaron van Wirdum You said Bitcoin. I think you mean Bitcoin Core then?

5:30

Sjors Provoost Yes.

5:30

Aaron van Wirdum Right. Okay, but that... I mean, that would still work if you use Bitcoin Core, right? So it's only a problem, I would guess, if you want to create a transaction on Bitcoin Core and then sign it with Electrum or something like that. Or if you want to create a multisig and one person is using Bitcoin Core, someone else is using Electrum, someone else is using whatever wallet they're using. That's when it becomes a problem. Is that right?

5:56

Sjors Provoost I think it also becomes a problem if you want to use a wallet that's offline and not caught up to the most recent blockchain. So because if you're not up to date to the use blockchain, you don't necessarily know how to sign something because the transaction itself, when you receive it, it has inputs and those inputs refer to previous outputs. and you don't have those previous outputs unless your blockchain is up to date so if you have some deep cold storage and you don't want to sync it to the blockchain it was this is also quite annoying.

6:23

Aaron van Wirdum Okay, so that's that's and we did discuss this in a previous episode I remember I don't remember what episode but this also so this so there are several issues where it could be an issue that there wasn't a unified protocol for figuring out this kind of stuff. That's the core of that problem, right? Originally…

6:45

Sjors Provoost So there's another thing that is difficult to do. So it really depends on how your wallet is set up. If you have your copy of Bitcoin Core somewhere else in an offline place, but that has the same wallet as you do, then the following problem is not a problem. But one of the things you want to do is you want to check that your change address is actually real. So if we're doing a transaction together, for example, I might say we might have a shared wallet of 10 Bitcoin and we want to send one Bitcoin somewhere. Then I'll show you a transaction. Hey, just sign this part and it'll show one Bitcoin and nine Bitcoin. And then the problem is that you don't know that the original amount is 10 Bitcoin. Like I might tell you that that is the case, but in order for you to check that, you need to know a few other things about the wallet.

7:33

Aaron van Wirdum You know what? I think this is the very first episode we ever made is what we discussed, what you're mentioning right now.

7:41

Sjors Provoost Yeah, exactly. In the first episode, we described some attacks related to change addresses. So I guess there's two different things. I wasn't super clear there. One is that you want to know that the change address that's listed in a transaction is actually yours. So Bitcoin Core can easily check that. It sees an address. It just checks out its 3,000 addresses that it has in memory and says, okay, this is one of mine. So anything that goes there has really change. The other is that you want to make sure that the total amount that you're spending... so in this case one Bitcoin goes somewhere nine Bitcoin is change that that is actually the total amount that you're spending so I could trick you and and spend a 20 Bitcoin coin and have one Bitcoin going somewhere nine Bitcoin being change and then 10 Bitcoin going to some miner that I'm collaborating with and in order to prevent that you need to have the previous output so basically there's a bunch of information that you want to know for your own safety.

8:34

Aaron van Wirdum All right I've now heard a lot of things and I want to I want to move on to the next part of this podcast but also I want to make sure that this part was clear so to reiterate even before PSBTs you could sort of create transactions and sign them somewhere else it was already possible but there were a number of problems with that one is you're using different wallets to create the transaction and to sign it that was a problem another one is multisig where different wallets want to sign it in a different way and then the third is there are a couple of attacks is that the best way to sort of bucket that one there's a couple of attacks and it has to do with change addresses it has to do with previous transactions and you not knowing how much money was involved so overpaying fees.

9:30

Sjors Provoost Yep, exactly.

9:31

Aaron van Wirdum Okay, how about we just cut it there so we got…

9:36

Sjors Provoost Yeah.

9:37

Aaron van Wirdum The third bucket is all kinds of attacks.

9:40

Sjors Provoost Yeah.

9:41

Aaron van Wirdum Simple. All right. So at some point, someone thought we need to improve this. Who was this when?

9:50

Sjors Provoost Well, many people probably thought it, but Andrew Chow actually wrote the standard called PSBT in 2017, I think.

9:56

Aaron van Wirdum Okay, he started in 2017 and it's done now?

10:01

Sjors Provoost Yeah, it's been done for many years.

10:03

Aaron van Wirdum I guess you can always upgrade it or update it. Does that happen or is it kind of just done?

10:08

Sjors Provoost No, there is a version 2 for PSBT, which came out a few years ago, but it's only a very small change. So generally with PSBT, it's pretty flexible, so we can explain how it works.

10:20

Aaron van Wirdum Yeah, how does it work, Sjors? So what is PSBT like concretely? What does it do?

10:25

Sjors Provoost Yeah, it's a bit boring. It's just a file. And the file contains the information you need for a transaction. You could say the ingredients for a transaction. So it contains the inputs that you're trying to spend. It creates the outputs that you want to send to. It contains signatures. And, you know, normally in a Bitcoin transaction, the signatures are right inside the input, but here you would neatly separate all this stuff.

10:50

Aaron van Wirdum Well, they're in the witness, right?

10:53

Sjors Provoost Yeah, or depends on if it's SegWit or not.

10:55

Aaron van Wirdum Okay, does PSBT do both? Does it do non-SegWit? Okay.

10:59

Sjors Provoost Yeah, but the signatures are basically in a separate place or the witnesses are in a separate place. The same with Taproot. I think it has its own place for these things. But you can also put more in it. For example, you can put an xpub in it, and this xpub can help the other wallet figure out which addresses it owns. You can put BIP32 derivation paths in it, so you can see, okay, if I have my wallet seed, what derivations do I do to actually get this change address, for example, so that you can check that it's your own address. There can be Taproot -specific things, so if you have multiple different possible scripts, you can... You can provide the script in there.

11:36

Aaron van Wirdum Right. So here's how I would imagine this. And just correct me if this is too simple. So it sounds like you're basically creating a file which has fields which are dedicated for put the inputs in this field, put the outputs in this field, put the signatures in this field, and so forth.

11:57

Sjors Provoost That's right.

11:59

Aaron van Wirdum and you don't have to fill them all you can just fill some of them and leave others open and that's what you would send to whether it's your multisig partner or your hardware wallet so you and then you're your multisig partner would know, oh, this is a PSBT. So this is how I look at this. This is what these fields mean. These are filled out. These are empty. Now I know what to do with it.

12:24

Sjors Provoost Exactly.

12:24

Aaron van Wirdum This is basically what it is.

12:26

Sjors Provoost Yeah. And one of the other things that you can add to it is a previous transaction. Right. So in the scenario where you don't know how much money you're spending, the trick is to basically put in the previous transaction because the previous transaction will say on the output side, what the amount is. And therefore the signer can check that.

12:45

Aaron van Wirdum And the signer would check that by checking the blockchain essentially?

12:49

Sjors Provoost No, it would simply check that this transaction that it's spending that this has the output. It doesn't necessarily care that this transaction really existed. It depends on what you're trying to verify. But in this case, the idea is that you can't make a fake transaction. I mean, you could make a fake transaction, but if the fake transaction doesn't exist on the blockchain, then you're signing something that is spending a transaction that does not exist on the blockchain.

13:12

Aaron van Wirdum And therefore is invalid.

13:13

Sjors Provoost So it won't get broadcast. So in that sense, you should be fine there.

13:17

Aaron van Wirdum Right.

13:17

Sjors Provoost But it is annoying to have to include the previous transaction. And we talked in earlier episodes that SegWit reduced the need to include this previous transaction, but there was a bug in SegWit. And so you still kind of have to include the previous transaction and with Taproot hopefully you don't have to include the previous transaction because you actually know what the amount is without having to check the previous transaction so that's nice.

13:39

Aaron van Wirdum Okay, so just to sort of contextualize this the PSBT it's not a consensus rule it's not it's not even part of the Bitcoin consensus or Bitcoin protocol at all. No, I guess depending what you want to call part of the Bitcoin protocol but it's really a convention that essentially wallet developers can use right that's what it comes down to.

14:02

Sjors Provoost Yeah, it makes wallets more interoperable and makes it easier to do these more complicated signings.

14:08

Aaron van Wirdum Right, that makes a lot of sense so what wallets use this right now?

14:14

Sjors Provoost Well, or yeah that's that's actually increasing so I think the first wallet that actually ever supported it is the COLDCARD and the way the COLDCARD works is, or it has different ways of working, but one way it works is completely separate from your computer, air gap, as people would call it. You use Bitcoin Core on your computer to create a transaction that has no signatures on it. Then you put that on an SD card. You put the SD card in the device. The device signs it, spits out the SD card, and you put the SD card back in the computer, and then Bitcoin Core reads it, sees the signatures, and sends it. And so this is a nice, that's kind of why it fits that model very well. But recently, I believe Ledger also added it. And so actual support for it. And one of the things that, I think they needed PSBT 2 for this because PSBT 2 made some things easier to handle for the device. The problem with these hardware wallets is that they tend to have very limited resources. So they cannot, especially in case of the Ledger, they can't hold the whole transaction in memory. So if the transaction is very big, especially if it has previous transactions that you also want to look at, it cannot hold all of it in memory. And so I think they set up a whole ritual where the computer would send the first part of the PSBT and then the wallet would check it and would ask the computer for the next part of the PSBT or some other part, et cetera, and then go through it. One of the other things hardware wallets can do with this is, again, because they don't have so much memory, a hardware wallet typically doesn't know which addresses it controls. So if you're saying here's a change address, if you're doing that on a laptop, you can just check your list of 3000 addresses and see that it's a change address. But for a hardware wallet, keeping such a long list is not practical. So instead, the PSBT says, hey, you know, this is how you derive your own change address. And then the hardware wallet will actually do the derivation and say, yep, if I do this from a seed, I get this address. And now I know that it's actually a change address. So that's kind of what the devices do with it. Others that use the device. I don't know of any other hardware wallets, how far they are along, but there is a project called HWI, which we have covered in an earlier episode, episode 30, I believe.

16:21

Aaron van Wirdum Yeah, maybe give a quick recap of what it is.

16:24

Sjors Provoost Yeah, it's called Hardware Wallet Integration. And what it does is it basically is a bridge between Bitcoin Core and a whole bunch of different hardware wallets. And that way, Bitcoin Core only needs to speak PSBT as a language it can send a PSBT to a device it can receive a PSBT from the device but if the device itself doesn't speak PSBT HWI can do the translation for it so then it's HWI it's actually taking the PSBT and turning it into whatever obscure format the device wants okay

16:59

Aaron van Wirdum is there a reason not to just speak PSBT other than I haven't had the time to implement it yet are there any downsides to it

17:11

Sjors Provoost Well, I think that's the biggest argument. So wallets haven't had times to implement it. My guess is that any wallet that wants to do something fancy and new, like say Miniscript, would be wise to just use PSBT because just having to figure out yourself how to do these complicated things, it's probably easier to just use something that's out there.

17:30

Aaron van Wirdum All right. But if you use a hardware wallet with Bitcoin Core, and the hardware wallet speaks PSBT then you don't need HWI?

17:40

Sjors Provoost Well, you kind of still do because other than the format there's other things you need to do to communicate to a hardware wallet you need to speak USB for example and all the USB stuff that's also something that we don't want to put in Bitcoin core because it creates a bunch of dependencies so the HWI will still you know know where to find the hardware wallet physically like which port it's on and and then talk over USB or some other protocol but it will not have to do any translation.

18:09

Aaron van Wirdum Are you fluent in USB Sjors?

18:12

Sjors Provoost I am not. And also the example of the Ledger I just gave you, where the Ledger cannot hold the whole PSBT in one, all of it in its memory, then what PSBT does is basically helping with the back and forth. So it's able to send part of a PSBT that the hardware wallet asks for. Bitcoin Core doesn't know how to do that. So there's still a role for HWI or something similar. Which I think brings us to the last user that we wanted to briefly talk about.

18:41

Aaron van Wirdum Yeah, so there's also... So recently we've seen, for example, Bitcoin Magazine has been publishing these inscriptions and these Ordinals, which we love because we're contractually obligated to love it. Aren't we, Sjors?

19:00

Sjors Provoost I don't think I'm contractually obligated to love it. I didn't even know they had them until like five minutes ago.

19:05

Aaron van Wirdum Oh, you didn't know? Yeah, Bitcoin Magazine has been publishing some inscriptions and some Ordinals. And it is controversial. Like people are now not coming to the conference in Miami. I mean, I don't think a lot of people, but you know, it's like a Twitter controversy, you know.

19:21

Sjors Provoost Okay.

19:22

Aaron van Wirdum For the record, Ordinals are still retarded. I agree with that [unclear] as well, I think.

19:28

Sjors Provoost But are they a cancelable offense? That's the question, right?

19:32

Aaron van Wirdum Yeah, that is the question I would say probably not.

19:34

Sjors Provoost Anyway, we we talked about inscriptions especially not so much Ordinals in general in an earlier episode so we don't have to repeat that.

19:43

Aaron van Wirdum Yeah, and but there is something interesting so there's something interesting about the way that Bitcoin Magazine did the sale and I don't think it's unique to Bitcoin Magazine but there is something interesting there and it is using PSBTs. So it's called a Dutch auction. What is a Dutch auction, Sjors? And why is it called a Dutch auction?

20:06

Sjors Provoost Well, because the Dutch invented it.

20:08

Aaron van Wirdum I mean, is this how the tulips are still traded?

20:11

Sjors Provoost So usually when English people say Dutch something, it's an insult. Dutch courage is like if you drink a lot of alcohol and then you have courage. But a Dutch auction is actually not an insult. It's actually just the mechanics of an auction. The idea is you, as the seller, you start at a high price and you say, does anybody want to buy it at this price? And then you go down in price and you go down in price until finally somebody... matches your order.

20:35

Aaron van Wirdum I mean I think that's still how it works right if you go to like the big auction houses for the tulips and stuff like I've never been but I've seen it on television I think that's actually how they do it.

20:44

Sjors Provoost I think so then so then they would have been doing it for about 400 years now, so… right, it's a long tradition. so you can use PSBTs for this and apparently that's what Bitcoin Magazine did they did a Dutch auction using PSBTs.

20:55

Aaron van Wirdum Yeah, so how does that work? What's the idea here? And how do PSBTs come in?

21:01

Sjors Provoost Yeah, so PSBTs even come in without an auction because there's also websites where you can just buy, I think you can buy inscriptions or something like that. And they also use PSBTs. So we should explain that mechanism first. The idea is that basically you create a PSBT, so a draft transaction essentially, that has on the input side, it takes your inscription or [unclear], whatever. And then on the output side, it's sending a certain amount of money to you. But that's not the complete transaction. But that's the only part you care about. What you want is to receive a bunch of money. So that's what you're specifying on the output. And what you're willing to do for that is to send the inscription slash ordinal slash whatever it is anywhere. You don't care where it goes. You just care that you get the money. Now, you publish this PSBT on a website or an exchange, whatever it is. somebody else can come in and say, hey, I think this is a fair price. Let me take this PSBT and add an input, namely my money, and add one or two outputs. Maybe you add an output for change and an output for where you want the ordinal inscription, whatever it is, to go. And then you sign that and you put it yourself on the blockchain. So it's kind of a non-interactive thing where as a seller, I can just, make this PSBT, sign my part of it, send it somewhere off to a website and forget about it. And one day I wake up and there's money in my wallet and the ordinal inscription, whatever it is, is gone.

22:38

Aaron van Wirdum Yeah, so we've mentioned the empty fields of a PSBT. And so you publish a PSBT with some of these fields empty. Actually, probably most of the fields are empty, right? Like really the only field that's not empty is one of the outputs and the amount there.

22:54

Sjors Provoost Like you just—so the, the workflow…

22:56

Aaron van Wirdum And I guess one of the inputs, which has to be the ordinal.

22:59

Sjors Provoost Yeah, the workflow is a little bit different than you might be used to because for a multisig, the transaction, if you're doing a multisig, the transaction is generally complete, but it's missing signatures. And in this case, the transaction is incomplete in the sense that it even misses inputs and outputs. So because the thing I just published as a seller is not going to be accepted on the blockchain. Because it is a transaction that is spending more than it's sending. Because what it's sending is just some satoshi. So it's only spending one satoshi. And it tries to have an output of, I don't know, 100 Bitcoin or whatever I asked for my amazing NFT. So somebody will have to provide that input. Yeah, and that's the buyer has to add their own inputs. So then how do you make that into a Dutch auction? Well, the idea is very simple. I, as a seller, create this transaction which has sent me one Bitcoin. And then after some time, I create another transaction that says, okay, whatever, send me 99—or send me 0.99 Bitcoin. And then a while later, I make one that says send me 0.98 Bitcoin until somebody actually publishes something on the blockchain. So I keep an eye on the mempool probably. And as soon as I see... this money coming towards me I will stop making new PSBTs. Yes, unless of course it's double spent and I just try again.

24:16

Aaron van Wirdum Yep, I think that's that's also how Bitcoin Magazine did it so they published a new PSBT I think maybe every block or otherwise maybe it was every hour or I don't remember exactly but yeah so the price for each new PSBT went down and if someone wants to pick it up you know.

24:34

Sjors Provoost Yeah, so in theory you could publish a whole bunch of PSBTs in one go and use time locks but this will create problems but what you could do is say well at you can commit inside the PSBT or you can say okay this can only be spent after this height this can only be spent after that height and that means whoever wants the the NFT or whatever it is from you will have to you know take that transaction and and make sure that it's confirmed before the next round because otherwise some other person might take the lower fee It might take the lower price, sign that, and pay a higher fee.

25:10

Aaron van Wirdum Wait, what you're saying is there are several things you could be saying, and I'm not sure which one it is.

25:17

Sjors Provoost Okay.

25:17

Aaron van Wirdum But that's also because I wasn't paying attention because I was thinking about the next step in the podcast.

25:22

Sjors Provoost All right.

25:22

Aaron van Wirdum So what you were saying is if... there's several people during the same block that pick up, that both want to buy it, then it becomes a bidding war of fees, right? Is that what you were saying?

25:33

Sjors Provoost No, we didn't cover that yet. That's actually interesting. No, I was covering a scenario where you create multiple PSBTs. At the same time,

25:40

Aaron van Wirdum Yeah,

25:41

Sjors Provoost you put them all on the website and you just say the first one can only be spent after this height. the second one…

25:46

Aaron van Wirdum With time locks, that's what you were saying.

25:47

Sjors Provoost Exactly.

25:48

Aaron van Wirdum See, I wasn't paying attention at all at

25:50

Sjors Provoost No, clearly [unclear].

25:50

Aaron van Wirdum this moment. Okay, you were talking about the time lock solution and the problem with that was?

25:55

Sjors Provoost The problem with that is that as a buyer, let's say I'm okay with the highest price, I sign it, but I put a very low fee on it. Now after a block or two or whatever the next interval is, Some other person takes the second highest price and puts a higher fee on it. And they might be able to get into a block earlier than me. So even though they paid a lower price, they still win the auction.

26:16

Aaron van Wirdum Yeah. Well, yeah. So that's why you can only publish one PSBT at the time. You really can't publish them all.

26:21

Sjors Provoost It just depends on how much chaos you're willing to accept. But as a seller, of course, you have an incentive to get the highest price for it. So it's not a good idea as a seller to publish a lower offer.

26:32

Aaron van Wirdum It's just a bad idea for the reason you just explained.

26:35

Sjors Provoost Yes.

26:35

Aaron van Wirdum [unclear] I mean…

26:37

Sjors Provoost No, I mean, the chaos is something… you may…

26:39

Aaron van Wirdum If that's the goal in itself, yeah.

26:41

Sjors Provoost You may not care about chaos, right? You may be ambivalent to it, but it's not to your advantage to get a lower price. It's great for the miners, but it's not good for you.

26:50

Aaron van Wirdum Okay, and then the problem I mentioned, which is a real issue, is that... Different people can say yes to the same price, but because a Bitcoin block is only mined once per 10 minutes, as opposed to an actual tulip auction, which really the first person to press the button will get it, a Bitcoin block is only mined every 10 minutes. So now you can get a fee war before a block is actually mined where people bid against each other. Does PSBT, I guess it doesn't even matter anymore now that Bitcoin Core has completely [unclear], replace by fee. or first seen is actually where they all [unclear], right?

27:27

Sjors Provoost I mean you can I think part of the PSBT is you can probably specify whether or not it's…

27:34

Aaron van Wirdum Well, that was gonna be my…

27:34

Sjors Provoost RBF flag is on. I haven't looked at that.

27:37

Aaron van Wirdum That was gonna be my question yeah. However, now that Bitcoin Core has the full replace by fee option and it doesn't even matter anymore does it, Sjors?

27:45

Sjors Provoost Well, I don't know if it mattered at all in the beginning so we did a whole episode about that rather not rehash it.

27:50

Aaron van Wirdum I mean I was just trying to get a reaction which I didn't get

27:54

Sjors Provoost Go listen to the episode we did about RBF.

27:58

Aaron van Wirdum All right, so that was that. So I think we've explained PSBTs. We explained where it came from. We explained... how it's being used now in dutch auctions and I think so one of the links you mentioned is OpenOrdex so I guess that's where it just happens all the time or that's where people can buy Ordinals? Yeah,

28:16

Sjors Provoost but that's not an auction I think that's just marketplace.

28:18

Aaron van Wirdum Okay, yeah for those who are wondering by the way so the Bitcoin Magazine inscriptions and Ordinals that was like the first The original Bitcoin Magazine covers were uploaded as an inscription on the blockchain, and then the Ordinals give you the ownership rights of the covers. Just kidding. That's obviously not true. That's not how ownership rights work, as we also discussed in the previous episode, [unclear] just a satoshi, but you can then pretend to own the cover. So that's... That part, I think we're kind of done then, right? Is there anything else we need to discuss in this episode?

28:54

Sjors Provoost Yeah, the only thing I wanted to bring up is so the PSBT format is pretty flexible. And one of the things that I don't think I put in the show notes, but the idea is that when a new standard comes along, like Taproot or something else, you can add fields to it. And so old wallets will not understand those fields. They probably just don't know how to sign the Taproot transaction and it'll be fine. And the other thing you can do, so this is like a soft fork, so everybody wants those new fields. So you'd probably make a BIP and say, hey, these new fields now belong to PSBT. But if you run your own company and you have some process internally where the accountant needs to sign something, nobody outside of you cares about the accountant's signature. But there's actual fields in PSBTs that you can use for that called proprietary fields. So you can... within your organization extend the PSBT format basically to include extra stuff that you need for yourself and you don't bother anyone else with

29:49

Aaron van Wirdum right okay Sjors, this was clear to me I learned a lot like always.

29:56

Sjors Provoost Sounds good in that case thank you for listening to Bitcoin

29:59

Aaron van Wirdum Explained.