{
  "episodeId": "SLP172",
  "speakers": {
    "stephan": {
      "name": "Stephan Livera",
      "role": "host",
      "tag": "STEPHAN"
    },
    "nicolas_dorier_kukks": {
      "name": "Nicolas Dorier & Kukks",
      "role": "guest",
      "tag": "NICOLAS"
    },
    "guest_2": {
      "name": "Guest 2",
      "role": "guest",
      "tag": "GUEST"
    }
  },
  "segments": [
    {
      "speaker": "stephan",
      "time": "00:03",
      "start": 2.56,
      "text": "Hi everyone, welcome to the show. So we have Nicolas Dorier and Kukks on for an episode about BTCPay Server. I've got my BTCPay Server shirt on, so welcome everyone. I am just firstly going to introduce the sponsors of this show. Yeah."
    },
    {
      "speaker": "stephan",
      "time": "00:25",
      "start": 24.58,
      "text": "Okay, so, firstly, we have Kraken, one of the world's leading Bitcoin exchanges. They're also one of the longest standing Bitcoin exchanges, they've got a lot of liquidity, they've got, really high volume, and they've also, they also offer some of the really lo- some of the lowest fees out there available. So, this is where you can go to sign up for that, and Kraken also have a Kraken Pro mobile app, which is also for iPhone and Android. So, it's got a beautiful mobile-first design, so go and check that out. Kraken also offer Crypto Watch, which is crypto w a t dot c h, and on that site, you can see it's a charting and trading terminal, and essentially you can drive the interface for different exchanges through that also. So go and check them out there. next, I've got a new sponsor. They are Coinfloor. So they're one of the UK exchanges. Their, their website is coinfloor dot co dot uk, and they're offering Auto Buy, so just like other companies have got dollar cost averaging or auto buy, and so this is a fantastic feature that I'm really excited about. And the cool thing with Coinfloor is that they are Bitcoin only as well. So if you're in the UK or you've got friends who are new coiners or pre-coiners, send them to coinfloor dot co dot uk. And additionally, they've got an affiliate campaign coming soon, so you can earn Bitcoin by referring new or existing customers into, Coinfloor. So they've also done some work around making it really easy to- Sign up. Next up is Swan Bitcoin. So I'm an advisor and I hold a part, small equity stake in Swan Bitcoin, but Swan Bitcoin is where you go if you are in the US and you wanna sign up to stack bitcoins in an automated way using your connected up ACH, ACH connection with your bank account. And so then you can stack bitcoins regularly with every paycheck, and they have the lowest, the cheapest dollar cost averaging fee in the US. So you've gotta check them out, have a look. I've done some em- Episodes with, Cor- with Corey Klipstein and with Jan Pritzker from the team as well, and they've got a focus on education as well. They're really trying to teach people how to hold their own keys and take self-custody. lastly but not least is Unchained Capital, Bitcoin financial services. So Unchained Capital offer a vault service. You can get a two of three multi-signature vault, and you can store your bitcoins and separate your keys geographically. And so that's the vault product. And then on the other side, they've got the loans product. So you can put up some Bitcoin and then get USD as liquidity, and you still hold one out of the three keys in that scenario. So that's a great setup for you also. And Unchained Capital, as we've got their website open And right now, you can see on their blog, they've got incredible content such as Gradually Then Suddenly by Parker Lewis. They've also got open source content, such a-- open source material rather, such as Caravan, which is an open source multisig coordinator. So go and check them out. so that is, our, Sponsors for the, for the show. And so today, I think most of my, listeners are well aware of Nicola and Kukks, who are past guests on the show, but just for those of you who are a little newer, you don't know who they are. Nicola Dorier works at DG Lab in Tokyo, and he is the creator of BTCPay Server, which is, a Bitcoin, you know, full node and a, it's a basically like a stack, it's a full stack that you can use as your payment processor alongside other things as well. And Guest on the show, he's a, a big contributor to BTCPay, and he is also sponsored by Bitzee, one of the, Bitcoin exchanges. So, welcome, welcome, guys. Hey. Hey. So guys, I know, you've done a lot of work recently, there's been big updates on BTCPay, and we've got Pay to Endpoint coming into BTCPay and a range of other things as well, but, first, let's, let's just start with, with you, Nicolas. Tell us a little bit about, what's come in in this recent update and, perhaps why you were looking into Pay to Endpoint."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "04:26",
      "start": 265.64,
      "text": "Yeah, so at Bitcoin point actually, it's for Kukks that got the initial idea, so maybe I should defer to him about this."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "04:38",
      "start": 277.74,
      "text": "but, yeah, ba-basically in the last three years, there, there's been lots of works going. So there, there was a patent for that I will let Kukks go because it's, it's the one that developed the first implementation and then decided to put it in, in there. And, there is also the, all the website re-redesign that, so there is many people that worked on it, actually, I can, I can't cite all of them because,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "05:10",
      "start": 310.24,
      "text": "ev- but on my side, actually, I, I didn't contribute too much on the design. but, yeah, there, there is a new checkout page, there is a new, like, homepage. so lot, lots of UX improvements. So,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "05:29",
      "start": 328.77,
      "text": "and yeah, the, the dark mode, like scroll a little bit, I don't remember. Yeah, the, the checkout design."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "05:39",
      "start": 339.13,
      "text": "so basically it's like a long-term goal in BTCPay these days as well is like to, to, to try to unify all the different design. We have different website everywhere, so we try to unify all the color, all the design everywhere. So that's what's part of this. And, yeah, so, so there is also like lots of improvement on the wallet. So I will let, Cooks go because actually it's him as well that developed on the, the new wallet improvement as well."
    },
    {
      "speaker": "stephan",
      "time": "06:10",
      "start": 369.66,
      "text": "Excellent, Cooks, do you wanna tell us a bit about, yeah, some of your work on that?"
    },
    {
      "speaker": "guest_2",
      "time": "06:15",
      "start": 374.52,
      "text": "Yeah, so, back like midway through last year, Blockstream contacted me to, to add, liquid support on BTCPay. And to add support for that, I needed to add a, we needed to add a feature called the, the hot, well, the hot wallet feature, so that they could, set up a liquid node and liquid wallets with it. and in, I think it was in November, December, the, the whole idea about pay join and pay to endpoint started pumping again. So I think in November I was looking at it, at one point just a brief overview of what's available in the market and what's, what specifications have been made around it. so I started looking into it, and with the addition of the hot wallet system, Nicolas pointed out that it should be quite straightforward to actually start working on doing payjoin, at least it became possible to do it. And, Blockstream contacted me and, they said they wanted to, get the idea moving forward to add it into BTCPay and that they would, sponsor me to work on it. So that, that was a good, That was a good, kick at least to get it started. so the work started in around January, so yeah."
    },
    {
      "speaker": "stephan",
      "time": "07:30",
      "start": 449.67,
      "text": "Fantastic. And so look, let's start talking a little bit about, the BTC Pay Server Payjoin. So I'm just, for the audio listeners, I've got on the screen Payjoin implementation notes. So, Kukks, can you just talk us through a little bit around what was the scene existing in terms of Payjoin, at the time, and what was, you know, what's the idea with BTC Paths did you go down?"
    },
    {
      "speaker": "guest_2",
      "time": "07:54",
      "start": 474.37,
      "text": "Yeah, so I looked at what's available, what was available in, I think November, October last year. And there was, I think there was two or, two or three implementations. There's the, the Stowaway from Samurai, there's the Payjoin from Joint Markets, and then there was a, a BastaPay, but, I think it went, I don't think it was any, I don't think it was live anymore for a while. but BastaPay had a, B- BIP, BIP, with, with the specification for it. So that was a good starting point at least. I started off by, pretty much implementing BIP 79, basta pay. and, reading through the feedback of Adam Gibson and, and a few other people, which was basically add PSBT support and some other features here and there. and I pretty much agreed with most of them, so I went that route. I think it took maybe a month or two to do that, and afterwards, Nicolas started reviewing it and, he did some small changes. So, yeah?"
    },
    {
      "speaker": "stephan",
      "time": "09:04",
      "start": 543.8,
      "text": "So, let's, let's talk a little bit about then differences and what, what's going into this. So, actually, first of, maybe we should just clarify, just for listeners who aren't aware, a pay join is a transaction where you, so if you're used to doing Bitcoin transactions where you just scan and pay, that's just like a standard send to the receiver, but with a pay join transaction, you're actually coordinating that back and forward with the merchant or with the other party. So, So perhaps, Cooks, you could, tell us a little bit about how, how, how does that collaboration work in Pay to Endpoint with BTCPay? Yeah, so it's-"
    },
    {
      "speaker": "guest_2",
      "time": "09:43",
      "start": 582.58,
      "text": "It's"
    },
    {
      "speaker": "stephan",
      "time": "09:43",
      "start": 582.74,
      "text": "actually two, yeah,"
    },
    {
      "speaker": "guest_2",
      "time": "09:44",
      "start": 584.06,
      "text": "go ahead."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "09:44",
      "start": 584.42,
      "text": "Just a little, just a little thing that these days I'm writing a proper, a proper, Bitcoin implementation, proposal. So I will just share the link in the private chat so you can show it, because there, there is a, there is a nice graph that explain high level view of the protocol. so, I sent you in the pri-private, private chat. Yep, one second. Okay. This one, yeah. Okay, you can go ahead, Kukse, sorry."
    },
    {
      "speaker": "guest_2",
      "time": "10:16",
      "start": 615.69,
      "text": "Yeah, no worries. so the, the Pay2EP implementation in, BTCPay is actually quite simple in terms of collaboration. It's literally, I think it's just one HTTP request from the sender to the receiver. So there's two parties in this always, a sender and a receiver. The and, in our, in our, in, in our implementation, the receivers, is a merchant who has an always-on server, so it's quite simple for the sender to communicate with the receiver. So w- the sender just sends the, so the receiver creates a payment invoice, which is a BIP21, payment request, so it's Bitcoin colon address and then some additional parameters. We just added a flag there, similar to how Bopay does it, but We changed it from Bostepay to Payjoin, and, as soon as the client, the sender sees it, he just, notices that there's Payjoin support, and if they support Payjoin, they send the transaction that they wanted to do to the server, to the, to the merchant instead of just sending it on the Bitcoin network. And, the receiver, if they can do something with it or if they can, provide a payjoin transaction or proposal, they'll send it back to the, to the sender, and they can sign it again and do it on the Bitcoin network. And it's really just a one HTTP, request to, to the receiver."
    },
    {
      "speaker": "stephan",
      "time": "11:45",
      "start": 704.8,
      "text": "Yeah. Okay, gotcha. And so, in terms of some of the parts that go into it, we have, PSBT as well. So that's Partially Signed Bitcoin Transaction. So for listeners who are unfamiliar and you want some more detail, go back and episode, see episode ninety-nine with Andrew Chow, the creator of PSBT. but, maybe just a simple way to To think of it is your Bitcoin wallet is, sort of proposing certain transactions and has to sign them, and then the other side has to take that and then also sign with its own inputs. would, would you guys agree that's basically like a kind of a high level summary of what's going on there?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "12:26",
      "start": 746.16,
      "text": "Yeah, yeah. So basically just to, so for, for imagine that you want to several people to sign the same transaction, what would happen before is that somebody take the transaction in, in, in bytes and give it to somebody else to contribute to it, but the problem is that in, in a transaction in byte there is lots of missing informations, where if you give it to the other person, there is lots of- Lots of work for them to do to add their own signature on top of it. So basically, like PSBT is like a new standard where, of a way to represent the transaction with all the data that is needed for the signer, so it's- It's easier for each party to verify it and then to sign it. And it has been, it has been,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "13:19",
      "start": 798.71,
      "text": "i-i-it has been a huge contribution to Bitcoin. It's, it's not a, it's, it's, it's not a consensus layer change, it's not a peer-to-peer layer change, but it definitely changed the game, yeah."
    },
    {
      "speaker": "stephan",
      "time": "13:34",
      "start": 813.66,
      "text": "Right, it's, it's, it's also used in other things like, say mul- it could be used in multi-signature or where you have, say, a hardware wallet and you want to be able to use the software on your computer to communicate with the software, well, with that hardware wallet. And so that's where PSBT is a useful, standard or wallet interchange format, I think, is like the technical term for it. and so, let's talk a little bit about the process of putting this into BTCPay, so maybe you just wanna tell us a little bit about what had to change in BTCPay to make, Payjoin work with it, Cooks?"
    },
    {
      "speaker": "guest_2",
      "time": "14:11",
      "start": 851.38,
      "text": "Yeah, well, I mean, not that much honestly, since, we already have PSBT support like all across in there. we support sending, so we have a full featured, wallet, in there so that you can send your money through BTCPay without using another software. we added hot wallet supports, a few versions back, so now we can also automate sending money, and you can also sign transactions on demand. so in terms of that, it wasn't too bad. we already generated bit twenty-one, payment requests, so, and we already had a checkout page where you can do a collaboration and show the QR code to the- To the client, to the customer. Yeah. So in terms of, in terms of BTCPay, not much change, we just added a little bit more code. basically the, basically the endpoint where the, where the sender has to connect to, to collaborate on the payjoin."
    },
    {
      "speaker": "stephan",
      "time": "15:07",
      "start": 906.99,
      "text": "Yeah. I don't know"
    },
    {
      "speaker": "guest_2",
      "time": "15:08",
      "start": 907.85,
      "text": "a little bit about Bib twenty-one, the payment link. Yeah, so bip21 is quite an old standard at this point, I think it's from 2012 or something, or maybe even older. it's basically a way to say that you wanna pay in Bitcoin to this specific address, this specific amount, and then some additional data. So you can add like a label or a message, or in our case, we added a, a P2EP flag, so payjoin, and you tell it where to connect to to actually do the, to do the collaboration. Yeah. but yeah, it's quite a widely used standard, so it felt good to just, it felt natural to just go for that."
    },
    {
      "speaker": "stephan",
      "time": "15:50",
      "start": 949.79,
      "text": "Yeah, yeah. And let's talk through, I think it might be, I've got the Payjoin guide, so let me just, pull that up. So here, this is how you actually do it. So for those of you who have BTCPay or if you're just trying to figure out how that works, you have to enable it. so Nicola, do you wanna just talk us through a little bit about the"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "16:10",
      "start": 970.44,
      "text": "Yeah, I just want to add something about, the change in BTCPay that we needed. Actually, so to make it work for first version, it was quite simple as, as Kuk said, but there was some adjustment that we needed to do. Actually, very often what happened when we add feature on BTCPay We start running into stuff that before were edge cases that we didn't care. And, one of the, one of the,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "16:40",
      "start": 999.59,
      "text": "Edge cases was in BTCPay, so when you pay an invoice on BTCPay, actually people can do a, A replacement, a, a BPF replacement. So imagine that you, you send a transaction to the merchant, there isn't enough fees, you can bump the transaction to increase the fees. So normally it was supporting this, but it turns out that there was a bug. and, the second transaction were like increasing the fees of the invoice. So, the, the, the, this kind of problem basically when we implemented Payjoin, like it starts surfacing again, and like we needed to clean that up. And, and because, so it's a privacy, feature. Adam, Adam Gibson pointed out lots of, how can I say, fingerprints of BTC pays transactions, so for, for example, we weren't properly setting up the sequence, of the input of the transaction, very specific details that can show up on the blockchain, that can leak some private keys on the blockchain. So this kind of stuff needed to be fixed as well. but, yeah, other than this, it was, not too much to change."
    },
    {
      "speaker": "stephan",
      "time": "17:59",
      "start": 1078.76,
      "text": "Right, yeah, yeah, and we'll, we'll absolutely get into some of the fingerprinting and some of those, privacy components, but I think it would be good to just, just walk through, just for listeners who maybe they haven't used BTCPay before, let's talk through some of that process. did you wanna talk through some of that?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "18:15",
      "start": 1094.88,
      "text": "Yeah, yeah. So, first thing to know is that In Payjoin, you cannot use Payjoin if your store is tied to a hardware wallet. So in BTCPay, when you create a new store, you can say, \"Okay, all the money go to my hardware wallets.\" You can do this. however, if you do that, you cannot use Payjoin because in Payjoin there is this, collaboration between the sender and the receiver, and the receiver needs the ability to sign a new, a new transaction, a new Payjoin transaction automatically. So, it means that when you create a store, on BTCPay, you need to, create your store and go to the derivation scheme and say, \"I want to create a new hot wallet.\" So it's what, it's what you see here. then once you, created the hot wallet things, you can just, so yeah, you can scroll. Sorry. The, it's, it's kind of normal setup. And, once you created it, there is a, there is a checkbox here, yeah, that you can check on your store to say, \"Okay, I want to enable Payjoin.\" I, I, I'm starting to think maybe in next release or so maybe we'll put that on automatically, but I'm not really sure because it's, So the, I, I wish to enable this pay join automatically, but it's, I, I don't know if it's a good idea because still like it's a hot wallet, so we don't want to sign something without the explicit permissions of the merchant. So we, we might need to do something UX-wise to, to make that easier."
    },
    {
      "speaker": "stephan",
      "time": "19:54",
      "start": 1194.01,
      "text": "But yeah,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "19:56",
      "start": 1195.57,
      "text": "and maybe it's"
    },
    {
      "speaker": "stephan",
      "time": "19:56",
      "start": 1196.05,
      "text": "like two separate wallets that are there, so you-- they would put in their hardware wallet one, and then have another one that's just the Payjoin one, all part of the same store kind of thing."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "20:05",
      "start": 1205.4,
      "text": "Yes, yeah. So right now you can't, you can't do this. Right now it's like one store, one wallet. but it's all go la-later to be able to have several wallet for one store. I'm not quite clear how to do that yet, but, After you, I, I will explain why it's important as well for, for the fingerprinting aspect."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "20:27",
      "start": 1226.7,
      "text": "and, yeah, that's it, yeah."
    },
    {
      "speaker": "stephan",
      "time": "20:29",
      "start": 1228.6,
      "text": "Yeah, and then let's talk about paying."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "20:31",
      "start": 1230.78,
      "text": "Also, you also need one more thing so for Paytron to work, you need some, some, some coins, some UTXO in your wallet. So you need to send yourself some money so that those UTXO can be used with a Paytron with somebody else."
    },
    {
      "speaker": "stephan",
      "time": "20:45",
      "start": 1245.13,
      "text": "Yeah. Right. and, Kukks, did you wanna tell us about the process for doing a pay join? So let's say I've got, a BTCPay and I wanna pay into another BTCPay, to do a pay join."
    },
    {
      "speaker": "guest_2",
      "time": "20:59",
      "start": 1259.06,
      "text": "Yeah, it should be fairly straightforward actually. It's as if you're not doing a pay join. It's, so you get the payment link from the invoice from BTCPay. you go on your, on the send wallet screen of the, of, BTCPay for your wallet, you click, yeah, the paste, bit 21, and you just give it the The, the payment link, and it'll just populate all the data in there to pay the address and the amount, and it'll also add a Payjoin URL inside the advanced settings. And, as soon as you sign, it'll just tell you that it's, you can do a Payjoin, or it can try to do a Payjoin, or you can just, skip Payjoin altogether. And once you click that button, which is \"Broadcast Payjoin,\" it'll just, It'll try to negotiate a payjoin transaction and, send it over the network. So"
    },
    {
      "speaker": "stephan",
      "time": "21:53",
      "start": 1313.16,
      "text": "fantastic. So I guess just to summarize, so, for listeners, if you're used to using a BTCPay or paying into a merchant who has BTCPay, in the copy tab at the bottom, there'll be that little payjoin link. So basically, you copy that and then you paste that into your own BTCPay wallet. Or now there'll be support with other wallets as well, correct? So as I understand, Blue Wallet are looking at it. Blockstream Green, obviously they sponsored some of this work, so they're gonna get it into Blockstream Green. I think Wasabi are looking at it as well. can you tell us a little bit about that process there of the collaboration, to make that happen?"
    },
    {
      "speaker": "guest_2",
      "time": "22:28",
      "start": 1347.9,
      "text": "Yeah, and one more thing as well, it's not just a payment link as well, you can also use the QR code, which is, what you always scan anyway nowadays if you're on the phone. but yeah, in terms of collaboration, there's Wasabi, I think Join Market,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "22:48",
      "start": 1367.7,
      "text": "there, there is also, not GS implementation that are in the work."
    },
    {
      "speaker": "guest_2",
      "time": "22:52",
      "start": 1372.46,
      "text": "Yeah, that's the, that's the one that's being worked on for, for, Blue Wallet. So, but it, it works for both of them, so it's, it's just a library, a separate library being worked on by Jonathan Underwood from Bitbank and, Luke Childs."
    },
    {
      "speaker": "guest_2",
      "time": "23:09",
      "start": 1389.32,
      "text": "so, I, I started trying to mess around with the Blue Wallets implementation just to add it as a prototype, and I talked to some of the guys from Blue Wallets about it, and they seemed keen on it, and they created some wireframes and UX, so I thought that was a good start to, to kind of just try, try tampering, tinkering with it a bit. and then I asked, Jonathan Underwood and Luke Childs for some help 'cause they're, they're more experienced with the Node.js and JavaScript libraries, so, with the Bitcoin.js based, JavaScript libraries. So, yeah, and they kind of did a lot more work than me at this point on it, so it's all up to them, pretty much doing, they're pretty much doing all the work so far. excellent. And that's on the blue wallet side. And basically, if you have, an open source or, well, a bit, a JavaScript-based wallet, now you can use that library and just implement Payjoin as well. and then in terms of Wasabi, I did a very pre-preliminary, pull request there, and then, Lucas on Taverro, grabbed it, well, I don't think he even grabbed it, I think he redid the whole thing and added, pretty much ported the logic from BTCPay himself. and since it's in C# Wasabi is in C#, it kind of works out pretty well, I guess, for them."
    },
    {
      "speaker": "guest_2",
      "time": "24:28",
      "start": 1468.29,
      "text": "yeah."
    },
    {
      "speaker": "stephan",
      "time": "24:29",
      "start": 1469.31,
      "text": "Excellent. and so let's talk a little bit about what merchants should think about, right, when they're using this Payjoin, because now they're thinking, in the past they might have had the cold wallet with, you know, let's say their Trezor or Ledger or cold card, right? They'd take the xPub and put that into BTCPay. So now they're thinking more like, okay, I've got this continually, I'm receiving, bitcoins, but it's now on my hot wallet, which I, I could have that on, A nerd VPS or I might have it in some device. what are the considerations there for the merchants?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "25:04",
      "start": 1504.36,
      "text": "Yeah, so, so activating hot wallet definitely like raise the risk, of attacks. So for the merchant that I know, in, in general, anyway, they are like kind of,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "25:23",
      "start": 1523.03,
      "text": "sometimes selling Bitcoin at the end of the day, so at the end of the day, they have all their receipt, they just do a, a transfer to the, to the exchange and sell it. So for those people it doesn't risk that much in the sense that anyway the money they have on this wallet is always very small. and for people where it's more, problematic, so one thing, one feature in BTCPay I want to add for, for wallets that are auto-wallets is the automatic transfer. So the idea will be later that you can create your, hot wallets, and you can say to your hot wallet, okay, if it goes above a certain limit, then do a transaction that Send that all, all on the hardware wallet, so this will decrease, the maximum, amount of money that you can lose. So yeah, we, we plan to work on this."
    },
    {
      "speaker": "stephan",
      "time": "26:20",
      "start": 1579.68,
      "text": "Awesome. And Cooks, did you want to tell us a little bit about, Transmuter and whether that might be something you're looking at as well? Although I understand that isn't in an early stage, right?"
    },
    {
      "speaker": "guest_2",
      "time": "26:30",
      "start": 1590.49,
      "text": "Yeah, so the, the feature that Nicolas explained is kind of available right now in a plugin sort of way. So, we have BTC Transmuter, which is in alpha, at least kind of alpha. it lets you basically create hot wallets in there as well. we've had that in there for a long time, and you can tell it to Forward funds from one wallet to another, so at least you can kind of mitigate the risk right now by telling, by configuring BTC Transmuter and telling it to transfer funds from the Payjoin Hot Wallet to your hardware wallet in, you know, every X amount of time or When the balance reaches a certain amount or if you have, you know, any other criteria. so at least you can kind of mitigate it through that for now. you can do plenty of other things, right now we also recommend it for when you do email receipts and stuff like that."
    },
    {
      "speaker": "stephan",
      "time": "27:22",
      "start": 1642.36,
      "text": "Yeah, yeah. And so, I guess for listeners who might not be as familiar, if you've ever used something like if this then that, it's kind of like you can set up certain rules or recipes in the transmuter, and then it will then- automatically execute those. And so, like you're saying, you can set up a h- a hardware wallet and periodically flush out the balance from that. but I suppose if we are thinking about from a privacy perspective, right, that merchant also has to start thinking about, well, do I need to do coin joins out of, on the way out, right? So, I'm doing pay joins, with my customer, let's say I'm a merchant, then that's periodically accumulating, but then I've got, depending on, again, who I'm- who I'm trying to be private from, I might need to do coinjoins before sending that out, so that's another thing to think about as well, right?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "28:15",
      "start": 1694.82,
      "text": "Yeah, so that, that's an interesting point where- if you want to coinjoin before sending to your hardware wallet, actually there is a, the way we designed the protocol, is very"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "28:32",
      "start": 1712.06,
      "text": "flexible for what the receiver can do. Actually, so the receiver has lots of flexibility to modi-- to, to create a Payjoin transaction, and one of the possibility he can do is bundle his, his own payments inside the Payjoin, transactions. So which means that actually, like, the process of sending money to her, how do I, I don't have to be in a different transaction, it can be just a customer that pay. So the customer tried to pay, you create a Payjoin with him, but inside the Payjoin at the same time you send, you send all your UTXO to a hardware wallet. And so in one transaction basically you get the customer that pay you and you that send to You know, I don't know, I make change or like, or to, to your hardware wallets. So this is something that will be possible."
    },
    {
      "speaker": "stephan",
      "time": "29:21",
      "start": 1760.54,
      "text": "Right. And also, I, I guess you could try and, let's say you're the merchant, you could try doing a pay join into your own hardware wallet potentially if you found a way to make the PSBT for that work also, right?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "29:34",
      "start": 1774.07,
      "text": "You can't, because like, as, as when you want to do a pay join, you, the receiver always have to sign, so you need the Keys in hot wallets. yeah, so that's the problem."
    },
    {
      "speaker": "stephan",
      "time": "29:46",
      "start": 1786.2,
      "text": "I see, yeah, yeah, yeah. No, that makes a lot of"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "29:48",
      "start": 1787.98,
      "text": "sense. and even like, be-because, so Payoneer is very good if you really have a normal payment, if you're transferring between two wallets. Like, chain analysis can still kind of get information, figure it out and cluster"
    },
    {
      "speaker": "stephan",
      "time": "30:04",
      "start": 1804.17,
      "text": "that all together potentially. Yeah. And while we're on this whole idea of fingerprinting, right? So, just for listeners who are a little bit newer, part of the aspect of privacy is trying to break certain heuristics and certain assumptions that are used by an external observer or potentially an observer with inside information. So let's say, the chain surveillance company has KYC data from the exchange, and so there's information sharing going on, and so- They would know, okay, Stephan Livera withdrew this amount from this exchange and it went to this address, and so we know that's his coin, that kind of thing. and so, it gets into some of this aspect of how can these hierarchies be broken? And so I think one of the important ones, that, Kukks you were mentioning earlier was BIP sixty-nine, which is in relation to the output ordering, correct? So, the transactions have inputs and outputs, and then BIP sixty-nine, I think it- has some guidance on how to order those outputs. Could you tell us a little bit about that and how that's working in with this?"
    },
    {
      "speaker": "guest_2",
      "time": "31:03",
      "start": 1863.43,
      "text": "Well, with the initial implementation I had done, it was, I think it was just by default following Bib sixty nine, but Nicholas, refactored it and made it, randomize, both inputs and outputs, if I remember correctly. And I think that was also some of the feedback from Adam Gibson on making sure it, didn't kind of follow that standard."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "31:27",
      "start": 1886.68,
      "text": "The main problem, if we follow the standard, it means that any transaction that doesn't follow the standard are not pay join. So it would have been pretty bad. So yeah, that's why, that's why I removed it."
    },
    {
      "speaker": "guest_2",
      "time": "31:39",
      "start": 1898.67,
      "text": "So that's a specific fingerprint on its own, so?"
    },
    {
      "speaker": "stephan",
      "time": "31:43",
      "start": 1902.8,
      "text": "Yeah, and that, I guess that's part of the broader difficulty around, coordination, right? So I think on the whole, like, I think this is a great step forward in terms of pe-people being able to use Payjoin, but we have to sort of understand as well that there are limitations there and that, you know, coordinating cross-wallet can be sort of difficult, and as, as long as there's one leak somewhere, then it can be sort of fingerprinted in a way, and they can say, \"Oh, look, see, I think that's a Wallet A type of transaction, or no, that's wallet B because they, they did some other flagging or they did some different n sequence number, right? Yeah, so there, there is,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "32:22",
      "start": 1942.35,
      "text": "So when we implemented Payoneer, I'd say there, there has been lots of fingerprinting, things that have been reported. in the BTCPay Server wallet, and I start wondering like, \"Oh, what's a big wallet was doing?\" And I think what's a big wallet has the right approach. So most of people are trying to concentrate on, \"How do we do?\" For making all wallets behaving like they are the same, but it's not really possible because you cannot, coordinate between people and different wallets to force this kind of behavior. However, what we-- you can do, and it's what Wasabi Wallet is doing, and I think it's a pretty great idea that we're also implementing BTCPay, is to randomize, your fingerprints. So basically, the, the basic idea is that you check on the blockchain, like, all the different fingerprinting where of all the different transaction, you create a statistic on this. Then when you need to create a new transaction, you say, okay, maybe fifty percent of the transaction have block time zero. And so fifty percent of the time you create a transaction that has a lock time zero. And so, by doing this, basically you, you don't, you don't hope that all wallet do the same, you don't really care, you just adapt automatically to what Majority of the network is doing, and I think it's a, it's the right approach to this. And there is also another, thing that I'm, interested in is what I call fingerprint poisoning. so all those different heuristic are very well known, and we know that chain analysis are, are like following that So if you know that, it means that you can trick them by using those heuristics to draw them in the wrong conclusion. So one of the Payjoin idea, for example, is that imagine that in your wallet you have very small, amount of change. So Having a very small coin inside your wallet can happen in several ways. So one of the ways that, channelizers very often send very little amount of Bitcoin to your wallet, like for example, five hundred Satoshi. And when you receive this coin, if you don't, if you make the mistake to spend this coin along with another of your coin, then, then China Aces know that this other coin belongs to you. So the idea is, with, like fingerprinting poisoning is, okay, what if we allow the, this user to make a Payjam transaction with this Small five hundred Satoshi. And if they send this five hundred Satoshi to another de-- to another developer or to another service that support Payjoin, the service will like mix its own inputs, and like now the, the chain analysis will say, \"Oh, this other input like belongs to the same wallet,\" but it's not the case, actually, it's belonging to the person that- To another person. So it's kind of like, a way to trick them. There's o- other way, like for example, channel I see very often when you have a A transaction with two outputs, if there is one output that have a round ch- round number, so for example, zero point one Bitcoin, they think that it's the payment, and the other one is the changer. So like if you notice, you can, you can- Take advantage of this heuristic to reverse, to reverse it where the change has a, a round, a round amount. So we, we are doing already That's, and, the basic idea is that they can't really know who is doing payjoin, they can't really know how many people do sp- do payjoin, but nevertheless, there, there is always this little do-doubt that all their analysis is poisoned, and it might be enough to, to prevent them from using their data in a productive manner."
    },
    {
      "speaker": "stephan",
      "time": "36:28",
      "start": 2188.33,
      "text": "Yep. Kukks, did you have anything to add in terms of that whole discussion around fingerprinting?"
    },
    {
      "speaker": "guest_2",
      "time": "36:33",
      "start": 2192.99,
      "text": "No, I mean, makes sense as well. And even once we add, batch transactions, being bundled inside the, inside the Payjoin itself, it's gonna be more than-- it actually becomes more than just a two-party coin join, right? You can have, I mean, you can batch like five transactions in one, and you'll send, you know, you'll, all of a sudden you have a five-party coin join happening in a Pay So at that point, you can't really say that wallet A and wallet B are, are, you know, they're different and that you can't trust it or something, or that it's a payjam because of it."
    },
    {
      "speaker": "stephan",
      "time": "37:07",
      "start": 2226.7,
      "text": "So, yeah, that sounds great. And, yeah, so I think just touching back to what you were saying, Nicola, there around the, drunk wallet or kind of randomized wallet, I think that's an interesting idea as well, because I think- Trying to align across all of these different wallets is just not feasible, right? Because as soon as one wallet updates, or as soon as one wallet tries to have a new feature, then boom, now they're not in alignment. And as soon as, as, and unless you can maintain perfect alignment and maintain it, it's just not a realistic way to proceed. So I think the approach there of the randomizing and putting different fingerprints is probably the right one. I think the other approach I've heard of is trying to mimic a well-known wallet. So think Things like mimicking Bitcoin Core, mimicking Electrum as an ex-as an example as well."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "37:55",
      "start": 2275.24,
      "text": "Well, it's, it's not also a good idea because actually Bitcoin Core is what maybe ten percent of the transaction of the network, so even if maybe it's popular, it's not that much as well."
    },
    {
      "speaker": "stephan",
      "time": "38:05",
      "start": 2285.34,
      "text": "Right, right. Yeah, that's, that's a good point as well."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "38:08",
      "start": 2288.43,
      "text": "Yeah, yeah, I think, I think trying to mimic another wallet is the same problem of trying to do everybody's the same. I, I think the Best way is really to randomize those fingerprints and, do it in a dynamic manner. So like right now, Wasabi Wallet, for example, hardcoded the probabilities of some, of some of the fingerprints. I think it should be like You know, adaptive, on the condition of the network. But"
    },
    {
      "speaker": "stephan",
      "time": "38:36",
      "start": 2316.48,
      "text": "yeah,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "38:37",
      "start": 2316.88,
      "text": "yeah, I think it's better approach."
    },
    {
      "speaker": "stephan",
      "time": "38:39",
      "start": 2318.82,
      "text": "That's a, the work, yeah, that's the direction to go in. Okay. Okay, I think the other interesting one is around, privacy in terms of, perhaps who, who do we want privacy against, right? So it comes down to maybe the ideal privacy way of doing pay joins is between, let's say, end user, you know, two end users, let's say, whereas if one of those parties is a regulated party, then co-pay joining with that person Might not necessarily give that much of a benefit because, well, depending how things go, because they might be-- that regulated party might have some kind of information sharing agreement with, say, chain surveillance, right? But what, what do you guys think? Do you guys agree, disagree? Does it make more sense from an end user to end user?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "39:25",
      "start": 2365.41,
      "text": "Always the thing is that, with Payjoin, the information about what's happening is local, is local. So it's not global. So even if you are doing a coinjoin with a regulated entity and this entity is sharing data with, with a chainalysis, chainalysis isn't sharing this data with everyb-- anybody else. So like it's still better than just having everybody in the whole network knowing what's going on. You know, like you, you have kind of still- load informations and, and they can not re-easily share with each other because it's their business model. If they share about it, then it's bad for them, as well. So, I think that even if you are pay-paying with a regulated entity, it's still a benefit."
    },
    {
      "speaker": "stephan",
      "time": "40:11",
      "start": 2411.3,
      "text": "Yeah, yeah. And Kukks, did you have anything to add there or do you feel similar?"
    },
    {
      "speaker": "guest_2",
      "time": "40:16",
      "start": 2415.74,
      "text": "I mean, I highly doubt that regulated entities are gonna be offering Payjoin as well. In, in any case, I mean, it, it's too much effort on their, on, on their end, and some companies can't even support SegWit, so I doubt they're gonna go for Payjoin."
    },
    {
      "speaker": "stephan",
      "time": "40:30",
      "start": 2429.91,
      "text": "Yeah,"
    },
    {
      "speaker": "guest_2",
      "time": "40:30",
      "start": 2430.45,
      "text": "yeah. So it'll"
    },
    {
      "speaker": "stephan",
      "time": "40:31",
      "start": 2430.99,
      "text": "maintain, it'll be sort of more like, independent merchants and, you know, the self-sovereign user types who really"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "40:38",
      "start": 2438.07,
      "text": "wanna I will really like to see and, I, I should try to pin it's exchanges doing it for, for, deposit money. So it will be very nice if one exchange like Hello Pay join for deposits. But yeah, like, like, like Cook said, I, I don't know if it will, it will, it's, i-it's realistic or not. So maybe we can try to ask, we'll see."
    },
    {
      "speaker": "stephan",
      "time": "41:06",
      "start": 2466.3,
      "text": "Well, the other argument I have heard is that potentially- And there are different views I've heard in the Bitcoin world on this, that it can potentially save chain space by, the, like having a cons-- kind of a snowball accumulating UTXO that that may potentially save Bitcoin, on-chain space, and therefore exchanges could potentially try and offer that, not from a privacy perspective, but from a chain efficiency perspective. What's your view there? Yeah,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "41:38",
      "start": 2497.9,
      "text": "that's correct. So right now, like, the fees are kind of- Flow so it doesn't work, but imagine that fees become very expensive, it become very profitable to, to batch your, UTXO consolidation with a pay run of, people. So there can be a huge advantage of several dollar per transaction if, if, if fees start to rise. So yeah, that's a good point. And that's why also the, the protocol allows some flexibility to the receiver because It also gives some, so take for example, an, an, Lightning Network. So when you are transacting on the Lightning Network, everything is private between the two parties. There, there might be theoretical way to know where the money goes, but it's so complicated that I'm pretty sure like no, no, Chinese company is doing that. So,"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "42:33",
      "start": 2553.03,
      "text": "yeah, so even, even if from privacy perspective, Lightning Network is way better than Payjoin Like regulated entity will still support it, be-- why? Because like they can say, \"Oh, it's not for privacy perspective, it's for, the utility of sending payment for cheap.\" So I think it's an important point, yes. And later on, I don't know how it will go because it, it still maybe, I still don't fully understand everything on this, but when we will have, Schnorr signature into Bitcoin and we can aggregate signature into one, it might be even possible to m- to make larger savings, Around this. So it, it will, it will be interesting."
    },
    {
      "speaker": "stephan",
      "time": "43:18",
      "start": 2598.35,
      "text": "Yeah. And so I guess, it might be, and the, the defense, let's say of some, somebody who wants to enable payjoin could just be, \"Look, I'm not just doing it for privacy, it's also...\" it's also this saving of cost, and so therefore it is the cheapest way to do it, and also because of, not just that, that most people will do it just because it will save them cost. And so then if a lot of people do it, then it kind of drives the incentive for a lot of people to use Payjoin, which in turn helps break the common input ownership heuristic, which is what people were trying to break all at the start, right? Which brings it back to what were, what were we doing this for, right? So, yeah. Did you have"
    },
    {
      "speaker": "stephan",
      "time": "43:59",
      "start": 2639.13,
      "text": "No, I'm just completely correct, though."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "44:01",
      "start": 2641.35,
      "text": "Yeah. So, one, one of the things also that we plan on doing in the next release of BTCPay, will be, the refund, a refund mechanism, formations, easier refund mechanism, and actually we want to try to plug that to Payoneer. So, think about that. Ima- imagine that, merchant want to get a, want to emit a refund, what will happen is that it will give a link to the user, and the user will go to this link and put his own address to receive the refund. And, what will happen is that in the database we'll save, okay, this customer try, ask for a refund of this amount and put it somewhere in the wallet interface of the merchant. And imagine that you have like ten customers doing this kind of requests. Like, what will happen is that, oh, until, until the merchant like, so we will require the merchant to accept it, and when he accepts, we, we will allow him to the, to say, okay, do it in the next, next Payone transaction. So when the next Payone will come, comes in, then all those refunds will be bundled inside it, and like, You make even worse of a mess for analysis on this."
    },
    {
      "speaker": "stephan",
      "time": "45:21",
      "start": 2720.78,
      "text": "Right, and it's more chain efficient too, right?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "45:23",
      "start": 2723.26,
      "text": "And it's even more chain efficient. It's finally a, a way of doing batching in a user friendly way, I think."
    },
    {
      "speaker": "stephan",
      "time": "45:30",
      "start": 2730.25,
      "text": "Yeah. I guess just for listeners who, maybe you're a little bit newer, you're not clear what we're talking about there. The idea is in Bitcoin transactions, you are generally charged based how many, like we, we quote it normally, how many satoshis per byte, right? And so the idea is normally in each transaction The thing that drives the size of it is the number of UTXOs, the pieces of Bitcoin. And so, what you're getting at there is that because you're aggregating across, let's say, ten pieces of Bitcoin, the signature data and all those other bits of data, you're sort of amortizing that cost and spreading it. And so that's where we're talking about you're getting a chain efficiency, benefit because you're basically costing, you're taking up less bytes on Bitcoin's blockchain, and that's the saving, just for listeners who are- A bit newer. so, let's talk a little bit about some of the other new features. I noticed you've got coin selection now in the BTC Pay wallet, so can you tell us a little bit about that, maybe Cooks? Yeah, sure."
    },
    {
      "speaker": "guest_2",
      "time": "46:30",
      "start": 2790.05,
      "text": "we've, I think it, it, it was actually quite a simple thing to do 'cause we had there's so much support in, in Bitcoin to do it and, and, and be exploring all our services already. So it was really just the UI thing, we just never exposed it, I think. but Nicolas did all the work like Maybe over a year ago for this stuff. So, I just plugged it in, in the UI and worked out pretty nice. we also had the labeling for the coin selection, so it was already in, in BTCPay, it was just not, widely used, I think. It was just, something to Listened the transactions that you received so you can label them before. so that came out nice, so now when you, now when, when you go spend a Payjoin or something, you can actually use the wallet toggle coin selection and say you wanna send only transactions that came from an invoice or multiple invoices. So that's great as well, in terms of a merchant using the same wallet, from, from incoming funds versus his, exchange funds or whatever. in case he doesn't wanna expose specific data to, merchant. Yeah, and"
    },
    {
      "speaker": "stephan",
      "time": "47:42",
      "start": 2862.16,
      "text": "speaking of exposure as well, I think that just reminded me as well this, idea of the, the probing attack, right? So when you do a pay join, there's that coordination, and one party is showing the other, \"Hey, here's one of my UTXOs.\" So, Kukks, I, I understand you've got a, there's some coding in there in BTCPay around showing just the same one and not kinda showing all the different"
    },
    {
      "speaker": "guest_2",
      "time": "48:06",
      "start": 2885.66,
      "text": "Showing just the same one? actually it was, let me see how that was. That was actually, so somebody does a, request to pay join, so they send you a transaction, you grab a UTXO based on some, model. we try to focus on using, some heuristics that I think Lawrence had, had, written down in a gist somewhere. but we only prioritize by that if we don't find something that matches Pretty good in, in terms of that, we grab one by rand, deterministically. I think Nicholas did that part. so we grab one based on the type of, transaction that is being presented, if I remember correctly. and we return that, and, if somebody runs away with that UTXO, it's still i-in the next, in the next, attempt Because of, the terminus, because of how the UTXO is selected, I think, I think Nicholas can expand on this a bit better."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "49:06",
      "start": 2946.08,
      "text": "So basically, like, the proba-- the, the basic of the problem attack is that somebody send you a normal transaction So you reply with a Payone transaction, by replying with a Payone transaction, you are exposing one of your inputs. But then the person that, that created this request can decide to broadcast the original transaction, making the Payone like invalid. But at the end of the day, it means that this party learned about one of your inputs. So, it's, it's kind of, A to somebody that is targeting you, can easily find out your UTxO, and so we can't really prevent that one hundred percent, but we can make it more difficult for them to achieve this. And the way we, we do this is if we detect that The, the original transaction got broadcasted and rendered the Payone invalid. The ut- the input that we used for this Payone will be reused in priority. For the next, for the next time. However, it's not one hundred percent sure, because if it was one hundred percent sure, then it means that you have a notification mechanism that the attacker can use to know who is the next person that pay you. So it's, but- We're still in priority. So, yeah, it's, we can't prevent it one hundred percent, you know, like if the attacker, like Kret, sent, ten thousand invoice in one second, try to defraud you and doing this, then you will learn all your, your, your check, so there's no way to prevent that one hundred percent, but with Still, it need to be targeted, and if you do that, you're spending money on, on, on fees. So, and like if lots of merchant is doing it, like you don't get lots of information on the network in general, and even if you get this information as an attack, it's only the attacker that know, it's not the whole network, so it's still, it's still better."
    },
    {
      "speaker": "stephan",
      "time": "51:06",
      "start": 3065.58,
      "text": "Right, yeah, yeah, it makes a lot of sense. and I, I guess just, with coin selection and labeling, that's also interesting. If you are a merchant who is more privacy conscious, you might say, \"Oh, this came from a KYC exchange,\" and you might label those, just, okay, or this just came from customers and so on, and you might tag them and use them in a way"
    },
    {
      "speaker": "stephan",
      "time": "51:29",
      "start": 3088.54,
      "text": "API, so do you wanna just tell us a little bit about that and what's the direction that you're going for with that?"
    },
    {
      "speaker": "guest_2",
      "time": "51:35",
      "start": 3095.38,
      "text": "Yeah, sure. oh, you wanna go? Okay. Yeah, it's, so it's still quite early. We only have, maybe three APIs so far, which is you can register a new user and you can create or edit a store, just the name actually for now. but the basics is there so we can expand upon everything in the UI. So the idea is that we can, anything you can do through the UI, you can do through the API. And maybe even more honestly, 'cause we have a lot of features inside the BTCPay that we don't completely expose in the UI, so that should be interesting as well to see what people can come up with. my-- the way I'm gonna be testing the API to see if it's like useful is, I think I'm gonna be developing a small, well, small, relatively small app, like cross-platform, so you can use BTCPay as a wallet on your phone or as a desktop application to manage as a merchant. So, that's how I'll be testing all the API stuff I'll be working on. Well, we'll be working."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "52:38",
      "start": 3158.23,
      "text": "the truth is, or I guess that's it, that's"
    },
    {
      "speaker": "guest_2",
      "time": "52:42",
      "start": 3161.6,
      "text": "all. Yeah, as well, since we have a, since we also have the third party, well, not third, we have a plugin, called BTCPay Transmitter that connects to BTCPay, we can also just hook it up. To all the new API stuff that's available, so you can trigger anything on the UI basically on it. like for example, we have a full, we have full interoperability with, with all the Lightning nodes inside BTCPay, like you can tell it to open channels or pay Lightning invoices if we wanted it to, but we never exposed it. so actually with Transmitter you can already do that, but I don't advertise it much 'cause I haven't tested it that much yet. but it would be nice to actually build all these things inside an ICY for, or a separate application that uses BTCPay under the hood."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "53:31",
      "start": 3210.61,
      "text": "Yeah, one, one of the things that we, we plan on doing in this API as well as, as is mentioned is that, so in Lightning you have like five different implementations or something like, like, like Clear, LND, Sealining, Peter Migan, like Whatever, like it's go- it's growing with time. And the, the, the thing is that all those different implementation have their own specific feature, but there is a core feature that everybody has, which is create an invoice, pay it, connect to a peer, and create a channel. You know, like whatever implementation you are doing, they all do the, these core features. so in BTCPay, we already did the work to abstract all of this. So like basically no code There is no condition if LND, LND do this, if CLY do that. We don't do that at all. We have a common interface, a common abstraction where whatever the implementa-- wha-whatever the implementation is, we just create the invoice, send the payment or like do this kind of operation of normal lightning network. So th-this we will, we will expose this API. So it means that people that will integrate with this and that only need those common feature of light- Lightning network, will be able to support all different, implementations of, of Lightning network and add it to their app and it would just work"
    },
    {
      "speaker": "stephan",
      "time": "54:59",
      "start": 3299.4,
      "text": "Awesome. So, yeah, so it can make it a little bit easier in terms of, people who wanna code up their additional feature, they don't have to think about, oh, what does LND, how does LND say this, how does C-Lightning say this, how does Electrum say this or whatever else. It's kind of all part of the one, thing. and There is also BTCPay Vault, so did you wanna just tell us a little bit about that and where is that at this point?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "55:23",
      "start": 3323.35,
      "text": "Yeah, so BTCPay, so... it's a feature we added like maybe, I don't know, six months ago, so it's not very new, but, for a long time BTCPay Server was only supporting, oh, it's called, ledger wallets. And so ledger wallet was implemented via, it's technical detail, but via, U2F protocol. And U2F protocol normally it's used for authentication. you know, it's like when you plug in, when you try to log to your, Google accounts, you can use like a key like this, you know, plug your USB key like this, and then click on the button to authenticate you. So it's like a two-factor authentication. And basically Ledger wallet, for example, was hacking this protocol to transmit data to their hardware wallet, which was a great idea. the, the problem with this is that Microsoft with an update like completely broke it, because now every time you send a message to this device, there is a popup that is coming up on Windows, and this popup basically makes the, the process so slow that it completely broke the integration. Like you, for, for, for signing a transaction, you will need to wait five minutes in front of your computer while the popup like go up and down. And like you couldn't click anywhere, so it was a disaster. there was also WebUSB, but WebUSB like don't work, like depending on, of, of if you are on Linux or Windows or Mac, like there is shit that's going on, so we, we completely stopped using it. so the idea was, how can we do this? How can we support any wallet with a, with, you know, with that we are sure that nobody will break? And, there, there, there's been like Andrew Chow that is doing, so Andrew Chow that created PSBT, actually, one of the reason he created PSBT was to create a sort of abstraction over hardware wallets. and on top of PSBT, we created this project that is called HWI project. It's a command line, i-it's a command line, application That allow you to always use the same interface with PSBT to sign your transaction, whatever the wallet you're plugging into your computer. so, but problem is that it's a command line application, so people can't-- normal people don't use it. So what we did, what we created is like-- it's called a BTCPay Vault. So BTCPay Vault is a desktop application that you run, and this desktop application U-under the hood is basically using this H-WI utility developed by Andrew Chow, and, what, what, what this application is also doing is opening a communication channel that your browser can talk with. So basically what's happening is that you open BTCPay Server Vault, then in BTCPay, in your BTCPay Server website, you can say, \"Okay, I want to sign with a hardware wallet.\" And from the JavaScript of your browser, we will communicate with the BTCPay Server Vault, and basically we can sign any transaction of any hardware wallet supporting the HW- By, that are supported by HWI. So, it's, it has been a huge step in usability of hardware wallets. Now you can use any hardware wallet you want and it just works, there's never any problems on this. and, yeah, it's, it, it has been awesome. It's, it's working"
    },
    {
      "speaker": "guest_2",
      "time": "59:09",
      "start": 3548.73,
      "text": "really well. Yeah, and, and you have to keep in mind as well that you can also, use other applications with the BTC Pay Vault, 'cause it's just an API, right? So you just need some JavaScript. Yeah. so you can build your own app and you can just connect to BTC Pay Vaults, for hardware wallets, signing and, fetching, configuring wallets and whatever."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "59:31",
      "start": 3570.98,
      "text": "Yes. So yeah, like you said, it's, it's open to a-any website that want to integrate with it, they can do quite easily. and, the-- an, an important point as well is that This work of hardware wallet integration is done basically by Andrew Chow, so he's doing all the integration of all hardware wallets. And I, I hope that we will find a new-- by making Hwui used more and more, I hope it will reverse the tendency where new hardware wallet maker will integrate themselves to H-Hwui because they want to be supported by a bunch of services that only support Hwui. And, it would be great because hardware wallet maker in general are not software developer. So it's better if they can just concentrate on doing the hardware and then just do this small kind of integration and then they can just integrate to any application that support the protocol you're on. And, I think it's a great idea and it's, Andrew Cho that worked to reach this point today, and it took lots of time, and I think it's finally, getting, starting to get the benefit of this approach right now."
    },
    {
      "speaker": "stephan",
      "time": "01:00:41",
      "start": 3641.01,
      "text": "Yeah. I haven't had a chance to use BTCPay Vault, I actually will, have a look at it next, after this, but, in terms of using it, are you able to, is it able to just ingest the xPub out of, like, when you plug it into Look up against its, you know, full node and then says, \"Okay, this is your balance, this is your transactions,\" and then you're able to do that. Yeah, so it's the case"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:01:04",
      "start": 3664.29,
      "text": "that when you create a new store on BTCPay Server, like you need to say, \"Oh, okay, where the money goes?\" So, a-and in the option you say, \"Okay, use the BTCPay Vault.\" And so, if you choose this, the BTCF vaults will just show you a popup to know that, to ask you, \"Yeah, do you really want to expose this kind of data to this website?\" So if you click yes Then we, the BTCPay fetch the xPub directly from your hardware wallet and then populates all the data that is needed for the integration to work. So it's The user experience is way better than saying to the user, \"Oh, if you-- \" Be-before that, we would say to the user, \"If you have ledger, you need to open ledger live to go to this tab, to copy paste this data, and to put it there.\" And it was very complicated. Now it's just like, \"Start the, start the vault, and that's it.\""
    },
    {
      "speaker": "guest_2",
      "time": "01:02:00",
      "start": 3720.27,
      "text": "Yeah. You can, if you wanted to compare the Vault to something, it would be, Trezor has a, has a dedicated app as well that you run on your computer, I think it's called Trezor Bridge, and it works almost exactly the same way, except that Trezor Bridge only handles Trezor, obviously. Right, and so this way, the Kraken wallet. And this"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:02:22",
      "start": 3742.12,
      "text": "Treasure Bridge don't allow any other application than the Wallet Treasure.io, right? Yeah, you can only, you can only- Yeah, you can't use it."
    },
    {
      "speaker": "guest_2",
      "time": "01:02:29",
      "start": 3749.63,
      "text": "Yeah, you can only use it with Treasure.io, so. Yeah. Okay, gotcha."
    },
    {
      "speaker": "stephan",
      "time": "01:02:34",
      "start": 3754.34,
      "text": "are there any other tips that you guys have for merchants out there? So let's say a merchant is listening and they want to use BTCPay or they are using BTCPay, have you got any tips for them in terms of what to do, how to do it with?"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:02:47",
      "start": 3767.63,
      "text": "Well, like, we are more interested in the reverse, the feedback that they, they can get, like what kind of problem we, we can solve for them. I think the next big problem that we can solve for them is the refund, UX flow."
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:03:05",
      "start": 3785.42,
      "text": "so o-also, I, I, I'd like, so if you're a Bitcoin, a merchant Bitcoiner, and you're, I, I would like that you sort, Allowing Payjoin and that you advertise it so that we can retweet this, and I, I guess you will have like interested users that won't just buy, buy something just for the fact that they will- They will, mix their utxos, so it would be pretty great."
    },
    {
      "speaker": "stephan",
      "time": "01:03:34",
      "start": 3814.54,
      "text": "Awesome. Kukks, any, anything from you that, you would like, BTCPay users to know?"
    },
    {
      "speaker": "guest_2",
      "time": "01:03:41",
      "start": 3821.03,
      "text": "yeah, I mean, we get a lot of questions sometimes about the, conversion to fiat and whatever. So we also have plugins, BTC Transmuter and all those, similar things. We also have the configurator actually, that you can use to either edit your existing deployment in BTC Pay or configure exchanges to, to transfer your incoming Bitcoin to, to, to market sell or trade. I'm always looking for feedback And that as well, so it's always the reverse kind of thing. But if you want these kind of features, they are available, they just need, I just need feedback from people to refine them."
    },
    {
      "speaker": "stephan",
      "time": "01:04:19",
      "start": 3859.03,
      "text": "Excellent. And, look, just for the last question, we're obviously coming up to the halving very soon, right? So we're recording this, tenth of May twenty twenty, and we've got the halving coming up in, you know, two days or whatever. so have you guys got any, reflections or any thoughts on the hal"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:04:39",
      "start": 3879.49,
      "text": "Well, on, on my side, given how Bitcoin is unpredictable, I have no, no fucking clue of what's going, what's going on. So I, I just, I, I, you know, from So this halving every four years, like I was used to think that it was a technical mistake from Satoshi, I think it should be, it should have been, you know, more gradual. But at the end of the day, like it's kind of a social event as well, you know, it's like, It's fantastic. So it's like, okay, it's every four years, it could have been better on the, on the technical plan, but it's always like, The occasion for the Bitcoin community to celebrate and make some noise about it, so, well, it's not that bad."
    },
    {
      "speaker": "guest_2",
      "time": "01:05:24",
      "start": 3924.24,
      "text": "And Cooks? Yeah, I mean, as long as the-- I mean, for me, I kind of enjoyed the bear market. I got to get more technical and work without having to worry about people, \"Ah, you lost my money or something.\" So it's, it's kind of nice. I'm, I'm excited to see what"
    },
    {
      "speaker": "stephan",
      "time": "01:05:38",
      "start": 3938.83,
      "text": "happens now. Awesome guys. so look, listeners, make sure you check out BTCPay. Let me just put this up on screen share. So this is the website, btpayserver dot org. Go and sign up, go and use it. I use it myself on my own personal website and on Ministry of Nodes, we use BTCPay Server. and obviously follow the guys. So Nicola, he is on Twitter at nicola dorieau, and Kukks is on Twitter at mister kukks. any-anywhere else that you would like the guys to find you"
    },
    {
      "speaker": "nicolas_dorier_kukks",
      "time": "01:06:11",
      "start": 3971.91,
      "text": "So, another place where you can find us is, on chat.btcpayserver.org. so like it's where the community is hanging ar-around and like, if you have problem, you come here, we always check at least once a day. Like, there is several of us to reply to questions, so it could be great. And also, Stephan, did you activated Payone for your donation page?"
    },
    {
      "speaker": "stephan",
      "time": "01:06:36",
      "start": 3996.72,
      "text": "I have, I just did, yes."
    },
    {
      "speaker": "stephan",
      "time": "01:06:42",
      "start": 4002.0,
      "text": "I have, I, I did. so I've got a little widget there. So that's actually a good tip, as well, because, one thing, I was actually, in fact, I asked Nicola, Nicola himself. one thing, if you already run BTCPay, it's a good way that you can help your friend who wants to take donations. You can just get them to set up an account on your BTCPay, and I've done that for other people, so I've done that for They use, they kind of piggybacking off my BTC Pay, so that's something you can do if you are, let's say, you know, you're a Bitcoin advocate and you wanna use it and you wanna help other people, then this is another way you can help your friends get started with accepting Bitcoin into their shop because you're, you're helping them just piggyback off your instance. So that's probably the final tip. but, look, I think that's pretty much it for this episode. So thank you very much guys for joining me. Listeners, you Subscribe on YouTube. that's it, guys. Thanks for joining. Thanks."
    }
  ]
}
