Episode 46: A First Look at the Chivo App
Ep. 46

Episode 46: A First Look at the Chivo App

•

Episode description

In this episode of Bitcoin, Explained (formerly known as The Van Wirdum Sjorsnado) hosts Aaron van Wirdum and Sjors Provoost discuss the Chivo application, the Bitcoin wallet, and payment terminal provided by the government of El Salvador. This episode is a little bit different from other episodes of Bitcoin, Explained, because the Chivo app is closed source software. Instead of analyzing the source code and design of the application, Aaron and Sjors have to rely on Aaron’s personal experience with the wallet and payment terminal or what he remembers of that personal experience. The episode opens with some general information about the Chivo Wallet, like why it was developed and who developed it (insofar anything is known about that). Aaron and Sjors go on to discuss Aaron’s experiences with the wallet and speculate what that means for the design. After that, they discuss the design of the payment terminal that’s included in the application, and also briefly touch on the Chivo ATMs that have been deployed across the country. Finally, Aaron and Sjors discuss the difference in philosophy between the design of the Chivo application and Bitcoin’s free and open-source software culture.

Chapters

00:00:00 Chivo: a first look at the rollout
00:07:19 Wallet choice, subsidies and adoption
00:13:30 Trying the Chivo consumer wallet
00:17:10 Custody, ledger entries and the $30 restriction
00:24:21 Release quality and the rushed launch
00:27:31 Merchant payments and conversion confusion
00:33:06 RBF, zero-confirmation payments and QR amounts
00:38:39 Unknown backends and reserve risks
00:40:57 Chivo ATMs and integration bugs
00:44:51 Transparency, disclosure and final assessment

Transcript

Download transcript (.vtt)
0:10

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

0:16

Sjors Provoost What's up?

0:17

Aaron van Wirdum Where are you? In Utrecht?

0:18

Sjors Provoost That's right.

0:19

Aaron van Wirdum All right. I'm still in San Salvador, El Salvador. This is my last week here.

0:24

Sjors Provoost Oh, you're coming back? Or are you going somewhere else?

0:26

Aaron van Wirdum It's going to be a little bit of a detour, but I'm basically heading back to the Netherlands. Yeah, through Miami, Nashville, then the Netherlands.

0:35

Sjors Provoost Sounds fun. Fair warning, it's raining here.

0:38

Aaron van Wirdum Yeah, not looking forward to that. So in my last week here, I think we're going to do another on-topic episode. We're going to discuss the Chivo wallet.

0:48

Sjors Provoost Yes. Tell me about it.

0:50

Aaron van Wirdum Yes, this episode will be a little bit different than others in a way. And that's also something we discuss because essentially we're talking about something that we have no idea how it actually works.

1:01

Sjors Provoost Yes, but we have you in the field. You're able to try things and you've talked to people. So we can learn by observing a system. But we've talked previously that it's nice when a system is open source and transparent. The Chivo system is not really that.

1:17

Aaron van Wirdum Yeah, so we're just kind of based on my personal observations, we're sort of going to try and explain how the wallet probably works and how it doesn't work and the good things and the bad things. And then I'm going to inquire your expert opinion on all of that, Sjors.

1:36

Sjors Provoost Okay.

1:36

Aaron van Wirdum So yeah, let's start at the beginning. First of all, everything about the Chivo app. Let me first explain what the Chivo app is, in case people don't know this. So Bitcoin became a legal tender in El Salvador a couple weeks ago. In fact, it became a mandatory tender, which means that merchants are obligated to accept it.

1:57

Sjors Provoost I think that's what legal tender means, by the way. I know you could implement it differently, but...

2:02

Aaron van Wirdum Maybe that's a whole different debate. Well, but I want to address that because it's not what legal tender means. What legal tender means is that if the legal system comes into play, essentially, then any debts incurred can be repaid in legal tender. So whether that's a credit card debt or any other, like if the judge says you need to repay this person, then that's where legal tender comes in, essentially.

2:28

Sjors Provoost Okay, so it doesn't come in for every payment. It only comes in for like... if there's a dispute.

2:32

Aaron van Wirdum Exactly. Usually, well, I mean, you can extend that a little bit and then the logic becomes any debt essentially can be repaid in legal tender because otherwise you just ask the judge and then the judge says, yep, you can repay in legal tender. But the point is that at first, before we even establish a contract or before you walk into my store, I'm not obligated to accept. a particular type of money from you it's only after the fact so to say that debts can be repaid in legal tender that's what legal tender means However, there are a few countries, and now El Salvador is one of them, where they go further than that and where they say legal tender also means that you are obligated to actually accept payments in this currency in the first place.

3:19

Sjors Provoost Yeah, in other words, if you offer a product at all, then whoever pays it has to be able to do that using either Bitcoin or the US dollars.

3:27

Aaron van Wirdum No, it doesn't even apply to US dollars. It's only applying to Bitcoin in El Salvador.

3:34

Sjors Provoost That's fascinating. So you're not obligated to accept dollars.

3:37

Aaron van Wirdum Exactly.

3:38

Sjors Provoost Yeah.

3:39

Aaron van Wirdum Interesting, right? Now I can go on a whole detour explaining all the pros and cons, but I'm not going to do that because we're going to focus on the more technical aspects of it. However, I will say that because of this mandatory aspect of the law, the government also apparently felt that they needed to apply a wallet that will allow merchants to accept payments in Bitcoin. but then have them automatically convert into US dollars. So that way no one is obligated to really accept Bitcoin or at least not to hold Bitcoin because the government says you just need to accept it, but then it's automatically transferred to dollars if that's what you prefer. Does that make sense?

4:19

Sjors Provoost Yeah, you're avoiding as a merchant, you're not getting the exchange rate risk because the government is taking that away from you and they're even giving you at least some practical way to actually accept it. Like a tool, like a wallet.

4:32

Aaron van Wirdum Yeah. So to summarize it, because it's made a mandatory tender, the government also deployed this app to tell people, look, it's mandated to accept it, but you don't have to hold it. And we're going to make sure you don't have to hold it because you can just use this app and have it converted to dollars automatically. So that's sort of, if I would have to say why this app is even a thing, why there even is this app, it's because there was this aspect of the lawmaking. Bitcoin mandatory tender.

5:00

Sjors Provoost And that is also a way to say that this app probably originally was more of a merchant app. Like that was the focus of it. But then due to some other pivots, it's now also very much a consumer app.

5:13

Aaron van Wirdum Possibly.

5:14

Sjors Provoost Or was that already the... Maybe not. But anyway, in any case, what we're talking about is essentially two apps, even though they might physically be one app. We have a merchant app that allows stores to accept Bitcoin.

5:24

Aaron van Wirdum Or dollars.

5:25

Sjors Provoost Well, I guess just Bitcoin. And we have a consumer app that lets people pay with Bitcoin.

5:30

Aaron van Wirdum Dollars as well, actually.

5:32

Sjors Provoost And dollars. You mentioned that.

5:34

Aaron van Wirdum You can also pay dollar to dollar with Chivo to a merchant Chivo. That's also possible. First, let me finish some of the basics. So this law was announced about three months before it went into effect. And that meant apparently or seemingly that the app also had to be developed within three months, which is not a lot of time to develop a wallet or a merchant app or anything like this is a short amount of time. I think you would agree. Who or what's developed it is a bit of a mystery. The government is not really giving any info. So the only info we have is sort of indirect or, you know, leaks or journalists that discovered things. It seems like the political lead, both the political lead and the technical lead are actually Venezuelans. And the technical lead has some background as a founder of like a Dash help desk company that's one of the things that has been reported on what i just mentioned was El Faro and then there's a forbes article that suggests that bitgo has had a big part of it there's also been leaked documents that suggested Athena the atm company had a big part of it i had Sergey from Bitrefill on the podcast a while ago no on the twitter spaces stream he said that there was probably several companies involved three, four, maybe five. So that all seems to sort of add up. There's different aspects of the wallet developed by different companies. And it's all sort of been glued together. And now we have the Chivo app. That's sort of what it looks like to me and what I'm hearing indirectly. Yeah. So that's what the Chivo app is.

7:19

Sjors Provoost And maybe another piece of context that's useful to point out before we go deeper into the app is that people don't have to use this app. You know, especially for the Bitcoin things, of course, it is actually Bitcoin that people are using or can use. So as a customer, in principle, you can use your own Bitcoin wallet. And as a merchant, in principle, you can use your own Bitcoin wallet. And in fact, you've demonstrated this at McDonald's where you used, I think, your own or you used the Bitcoin Beach wallet and you paid McDonald's, which was using OpenNode. So you were not using Chivo on any side of that McDonald's transaction you did, which became very famous.

7:57

Aaron van Wirdum That is correct. I will say two things. There are two things to incentivize the use of the Chivo app. So you're right that it's not obligated to use Chivo app. You can use any Bitcoin wallet you want. There are two things that incentivize use of the Chivo app. First is that any Salvadoran who downloads and starts using the Chivo app gets... $30 worth of Bitcoin for free. So there's a monetary incentive directly to use the Chivo app, to download it, to register an account. And then the second one is that the conversion that I mentioned from dollars to Bitcoin or Bitcoin to dollars, I think it works both way, is free if you use the Chivo app. While, you know, if you use any other merchant service, then usually there's a cost involved, there's fees for conversion. And with the Chivo, that's free. So merchants are incentivized to use Chivo as well. I would say.

8:46

Sjors Provoost Yeah. And there may also be some slightly different counterparty risk when you're dealing with a sovereign government versus a private enterprise.

8:53

Aaron van Wirdum Of course, I will say that. So the Chivo app is actually... So there's a Chivo company and it's like a subsidiary of the government that's maintaining the wallet. It's called Chivo. I think the company is just called Chivo, but it's not clear who actually owns the company or operates it. Again, there is a lot of... I mean, I consider it a lack of transparency. Maybe that's a colored way of putting it, objective, more facts. Let's just say there's a lot we don't know. There's a lot we don't know.

9:27

Sjors Provoost Yeah, so even the counterparty risk is literally unknown, right? Because we're assuming that this is a government thing and that the government is your counterparty, but it may actually turn out that, no, the government is not your counterparty. But at least, you know, you get the vote a little bit about this sort of stuff.

9:42

Aaron van Wirdum Okay, so I think I've now said four times that these were the basics and now get into the technicals, but I lied all four times because there's one more basic thing I want to mention. There's also the Chivo ATM, which, you know, it's branded similarly. What we know for a fact is that these are being deployed by Athena, Athena, the ATM producer. And I understand there are two types of this. We're not going to get into this in detail in this episode, I think. But there are two types, essentially, or two types of backends or two types of software developed by two different companies. But it's basically Athena that got the contract for the ATMs and there are 200 ATMs in the country now.

10:23

Sjors Provoost But it does mean that rather than the 10% or whatever or 5% that you used to pay for a commercially run Bitcoin ATM to buy and sell, now you're suddenly getting it for free or at least subsidized by the government.

10:36

Aaron van Wirdum Correct. You can use the ATMs for free. There's no conversion fee. And yes, of course, that means that it's still not free to ship cash to and from these machines and operate them and blah, blah, blah. So that's essentially subsidized by the government. In other words, it's subsidized by the taxpayer. Another basic thing, I guess I keep coming up with new basic things. Sjors, how do you like that?

10:59

Sjors Provoost That's good.

11:00

Aaron van Wirdum One more basic thing is that apparently the wallet has been downloaded. At the time of recording, the wallet has been downloaded over 2 million times. Of course, we have no way to verify that, but that's the numbers that have been published.

11:13

Sjors Provoost Doesn't the Android Play Store publish some of that?

11:15

Aaron van Wirdum Oh, I don't know. Does it?

11:16

Sjors Provoost That could still be like a million Chinese clones. But let's assume the numbers true. How many people live in El Salvador?

11:21

Aaron van Wirdum Yes, somewhere between 6 and 7 million people. So it's like one third of the country has downloaded this wallet.

11:28

Sjors Provoost Yeah, and obviously, at least I think a reasonable guess is to say that the $30 airdrop, you know, is an incentive to do that.

11:35

Aaron van Wirdum Oh, I mean, I can basically confirm that a lot of people, it's become a whole thing where a lot of people... We're skipping ahead a little bit, but since I started my sentence, I'll finish it. So a lot of people are downloading the wallet and then essentially selling their $30 to some friend or someone on Facebook or whatever for $25 in cash. And then they just get $25 cash in hand and then they're happy. And then whoever bought the $30 of Bitcoin for $25 of cash, he's going to collect it from like 10 people and then... stand in line at one of the atms to get the money out and he made you know 50 bucks if he did that with 10 people

12:18

Sjors Provoost yeah or sell it to somebody else in the line and yeah

12:21

Aaron van Wirdum yeah so there's definitely a lot of people that are downloading the wallet is basically just to cash out the funds for dollars bukele published some stats the other days which suggests that there's quite a few transactions happening but i i don't know what to think of that we definitely can't verify these stats I also don't know, is this one guy playing around doing like a thousand transactions back and forth from Bitcoin to dollar because it's free anyways? Or are there really thousand people paying for something in a shop? I doubt the latter because I just don't really see people using it a lot. I mean, my perspective is limited, obviously. I'm one guy just sort of walking around and half of the day I'm in my hotel room anyways. It's not like I'm doing research on the street every day, all day. But just from sort of looking around and... Or asking if I can pay with Bitcoin and then sort of based on the response, I can tell that I'm the first person to ask that that day, or at least it doesn't happen very often. So just based on my personal experience, I don't think people are really using it a lot.

13:24

Sjors Provoost Yeah, if they still have to charge an iPad, then that's usually a sign they haven't done it for a while.

13:29

Aaron van Wirdum Right, yeah.

13:30

Sjors Provoost That's my experience in other cities, in other countries. Okay, so maybe we should start with the user-facing app.

13:36

Aaron van Wirdum and talk about that a bit let's start actually discussing the app as far as we can actually do that so yeah there is the chivo application the wallet which i have on my phone now actually some local was friendly enough to give me her app essentially access to her app so i can sort of play around with it and see how it works and see what can be done with it so Let me open it right now while we are recording this podcast so I can sort of give a very short overview of it. It's loading, Sjors. I should have opened this before we started [unclear]

14:11

Sjors Provoost Well, here's the magic of editors.

14:14

Aaron van Wirdum Yeah, good point. All right. So it's a pretty basic app. There's nothing too interesting, I would say. But it has a home screen where you can see the history of transactions. It has a conversion screen, like I mentioned, where it converts USD to BTC and back. And then it has an options screen with options. All right. The first thing to note is that there are two ways of receiving money. So one is in dollars, one is in Bitcoin, and the dollar option is basically for other Chivo apps. So that is, if I have a dollar account and someone else has a dollar account, then you use the dollar option and then the dollars go from my wallet to your wallet.

14:55

Sjors Provoost Right, so that's essentially PayPal.

14:57

Aaron van Wirdum That's essentially PayPal, yeah, or Venmo or one of these. And we can safely assume that... Hopefully the money is in a bank account somewhere and there's just a ledger entry. This obviously has nothing to do with Bitcoin or Lightning. There's no Lightning transaction. I think that's safe to assume.

15:13

Sjors Provoost We can know for sure that these dollars do not exist in the app itself. They exist in a database on a server and they may or may not be backed by US dollars in a bank account to the full extent or some partial extent.

15:27

Aaron van Wirdum Right. Now, then there's a Bitcoin option. And if you open that, you get just a Bitcoin address, just an on-chain address. Now, there is also, it's really hidden in the app. You need to go to like other payments methods, other wallets, actually. And then if you go there, so you sort of dig in the receive page, then you actually find a Lightning option.

15:55

Sjors Provoost Very cool.

15:56

Aaron van Wirdum So it works with Lightning as well. And then you can send sort of same idea. dollars of bitcoin and if you choose bitcoin then you can scan a qr code which can be either bitcoin qr code or lightning qr code now the first thing i'll say so far so good right i will say however that every time i've tried to accept funds receive funds that works every time i've tried to send funds it did not work

16:22

Sjors Provoost okay

16:23

Aaron van Wirdum Is that because this wallet now exists on two phones and that's causing some kind of error? Is it because the wallet itself is buggy? Is it because some other reason? I don't know. All I know is I have literally not been able to send any funds either on-chain Bitcoin or over Lightning. The only thing that has worked for me is sending funds to other Chivo wallets. That actually worked when we were at the merchant and we wanted to send funds. That works, but sending Bitcoin either on Chain or on Lightning, literally every time I tried it, it just didn't work.

16:59

Sjors Provoost Okay, so that's interesting.

17:00

Aaron van Wirdum I would personally argue, but this is a personal opinion, that for a Bitcoin wallet, that's sub-ideal. If you can't make any transactions...

17:08

Sjors Provoost Well, you can, you can receive.

17:10

Aaron van Wirdum Right.

17:10

Sjors Provoost And we'll get back to that for why that's interesting. So when you installed this app, did you get a 24-word or 12-word mnemonic that you had to write down?

17:18

Aaron van Wirdum Excellent question, Sjors. I did not. No.

17:21

Sjors Provoost Okay, so then my guess is going to be that these coins are not really on your phone either, just like the dollars.

17:27

Aaron van Wirdum I am basically 100% sure that you are right. And this, I mean, we don't even have to guess. Like, yes, this is obviously a custodial.

17:37

Sjors Provoost For the lightning node, you can find out very easily. If you make a lightning invoice and your phone does not get screaming hot, then it's probably not running on your phone. But yeah, so it sounds like just like the dollars, there is a database somewhere in El Salvador or some other place in the world that is creating Bitcoin addresses and telling the app. Show this address or show the QR code. And then whenever somebody sends Bitcoin to that place, those Bitcoins go to some wallet somewhere in the world. And the number on your account goes up. And that's just the number in the database. But that means that somebody's hopefully taking care of these coins. But of course, you don't know. Again, you have no idea whether that's fractional or not.

18:20

Aaron van Wirdum Yes, exactly. So the Bitcoin in your wallet are, I would argue, better described as Bitcoin IOUs in your wallet. You're essentially getting a promise of Bitcoin. You should be able to withdraw them to your own wallet eventually, if it works at all. But you're not controlling your own keys. You're not controlling your own coins. In that sense, it has very little to do with Bitcoin.

18:46

Sjors Provoost Yeah, it's like Coinbase. But with Lightning, some Lightning support and you can't pay anyone.

18:52

Aaron van Wirdum You can't pay anyone.

18:53

Sjors Provoost But I assume you've talked to at least some people who have been able to use the Chivo wallet to send money out.

18:59

Aaron van Wirdum Yes, I have heard of examples where it actually did work. Correct.

19:03

Sjors Provoost Right. Because a general pattern that would have me very worried would be where lots of people are able to send Bitcoin to this wherever Chivo is. And nobody's able to send Bitcoin away from whatever this Chivo is. That would suggest that, you know, Bitcoins are accumulating somewhere. No, I mean, it's more like a usability problem. Your wallet doesn't work well, but other people's wallets work better or it's just luck.

19:25

Aaron van Wirdum Yeah, I mean, I think it's just buggy. And because it's closed source, which you mentioned, we can't figure out what the bug is. And people like you can't help solve it either. It's just a black box. And all I know is that it doesn't work for me. Yeah. What I'm also pretty sure of, but again, who knows, but I think it's probably safe to assume that Bitcoin transactions from Chivo to Chivo are also just custodial ledger entries. It's not like, because why would you make it?

19:55

Sjors Provoost Well, that is something you can find out, right? So you can send, say, $10 of Bitcoin to this address that the app is showing, and then you look at a block explorer. And you start just toggling it between dollars and Bitcoin or sending it to somebody else. And if that doesn't correlate with actual transactions on the chain, then you know something is in the database. My guess would be that the money stays in that address until some point their server is sweeping a bunch of addresses at the same time, unrelated to when you're making payments. Because they'll probably treat it as one big account. Although that depends, and this ties into your news article, I think there was mention of BitGo being involved. And I think BitGo at least offers services where every customer has a unique, like has a segregated account, but they may not be using that. I think the technical term is omnibus account versus individual accounts.

20:45

Aaron van Wirdum Right. So insofar that I've been able to test this, I have made one Bitcoin transaction to a merchant that used Chivo. Now, if I go into my transaction history and if I click at it, I don't see any Bitcoin address that it has been sent to. It just says an amount. For other transactions, I am seeing Bitcoin addresses.

21:05

Sjors Provoost But that's inside your wallet, right?

21:07

Aaron van Wirdum Inside my own wallet, yes, correct.

21:09

Sjors Provoost But if you look at that address on a Wallet Explorer, Bitcoin Explorer, you might see something moving, but probably you will not.

21:14

Aaron van Wirdum Yes, well, I might. But at this point, I don't know what address it originally was or how that originally... There's no way for me to figure it out. Now, my history does not show an address that it would have been sent to. It just shows there was a payment made to a Chivo app. So my...

21:30

Sjors Provoost Yeah, but then on the blockchain, you would see a transaction around the same time. Or you don't.

21:35

Aaron van Wirdum No, I get that. It's just, we have no way of verifying that right now.

21:39

Sjors Provoost That's true.

21:40

Aaron van Wirdum One thing I'll note is that, so I mentioned the free $30 that people got when they registered their wallet for the first time. First of all, this does require that you include all your personal info. So obviously there's no privacy involved at all. The government knows, or at least whoever is operating a Chivo wallet knows who's paying who, when, how much. The second thing is that these first $30 were actually locked. They had a restriction on it. These first $30 could only be spent to other Chivo wallets. So the idea here is to incentivize that people would actually use these $30 to buy something, to walk in a store and to buy. whatever it is people are buying here.

22:25

Sjors Provoost And this was $30 in dollars or $30 in Bitcoin?

22:30

Aaron van Wirdum $30 in Bitcoin.

22:31

Sjors Provoost So if they kept it, then the price would start fluctuating. So it becomes Bitcoin the second you register the app, I guess.

22:39

Aaron van Wirdum Yes, I think that's right. At the time you register, that's when you get $30 and it becomes Bitcoin essentially. So these first $30 were restricted, like I explained. I personally think that was a big mistake. I think it goes against the whole philosophy of Bitcoin where you can send your money anywhere you want. Second of all, it gave a lot of people bad experience because anyone who walked into a McDonald's found out that they couldn't actually pay for the Big Mac that they thought they were going to be able to pay for with a free $30. Plus, a company like a McDonald's and a bunch of others, they actually went the extra mile to make sure that they could accept Bitcoin on day one. They didn't wait for the Chivo app. They made sure like they want to be ready. They want to make sure that all these people can walk into the McDonald's and spend their coins. And then they didn't. So the companies that went the extra mile actually were punished for that. So that was another bad thing. And third of all, I already mentioned this. It didn't even work because most people just figured out how to cash it out after all. And they did cash it out. So the $30 restriction was a big mistake if you ask me.

23:47

Sjors Provoost So the $30, you could send it to another Chivo wallet, but not to an external wallet, right? So any merchant using Chivo would be able to accept it, but any merchant not using Chivo would not be able to accept it, which is exactly the opposite of the point of being interoperable.

24:03

Aaron van Wirdum Yeah, that's not ideal. After it was spent, so once these $30 were spent once to another Chivo app, Then they became freely spendable anywhere. But it was this first hop that was restricted to other Chivo apps.

24:16

Sjors Provoost Yeah, I guess we're going to have to do another episode about Covenants, which covers this phenomena.

24:21

Aaron van Wirdum Right, right. Yeah, so what else about the app? I mean...

24:25

Sjors Provoost We've talked about it. It's closed source. It's custodial.

24:28

Aaron van Wirdum Yes.

24:28

Sjors Provoost So the money is not in the thing itself. There appear to be some bugs. I think you've mentioned a few. that you're unable to pay and we talked about the airdrop so maybe we can talk about the merchant app

24:40

Aaron van Wirdum Yeah. Okay. So let's move to the merchant app. I want to clarify one thing. I've so far sounded very negative about the wallet. That's because I am. I think it's a piece of shit. I think they shouldn't have released something that's clearly not finished. And I don't feel like defending this at all. I've seen some people defend it with arguments like, well, they're trying something new and they rolled it out in. you know, record time and give them a slack. I think, no, you're dealing with financial software. This is other people's money. There was no real reason to necessarily release it on September 7th. They could have just said, okay, look, Bitcoin is legal tender now, but the wallet is not finished. We're not going to enforce the mandatory part of the law. We're going to keep developing the wallet; we're going to roll it out as a pilot. We're going to first roll it out to a thousand people, let them experiment. Blah, blah, blah. They could have done so many things, but instead they felt the need to, for whatever reason, roll it out to millions of people at the same time. And millions of people had a bad experience. I think it was a bad mistake. And I don't really see why we shouldn't be allowed to criticize that. I'm definitely not going to bite my tongue because I like the project or anything like that.

25:49

Sjors Provoost Well, you're still in El Salvador. I'm not.

25:52

Aaron van Wirdum Yes, as well.

25:53

Sjors Provoost But yeah, no, I agree with, this sounds like a reasonable assessment. This, I think, could have been predicted in advance that when you tried something this ambitious, because I do think it's very ambitious, it's better to roll it out more carefully.

26:06

Aaron van Wirdum It was predicted in advance. That's the other thing. It was predicted in advance. I know for a fact that several people and several companies literally told the El Salvadoran government that three months is a crazy timeline for something like this. They decided to push through with it anyways. It backfired, or at least it didn't go well, as predicted. I think at this point, it's completely fair to criticize the failure that this launch has been.

26:35

Sjors Provoost Essentially, you're launching PayPal plus Coinbase, the whole exchange mechanism, and you're doing Lightning, which is all the work that Jack Mallers and other people have done, and you're trying to explain that to a whole population. Then you're doing an airdrop, which itself is very complicated. Yeah, this is very ambitious and not something you can do in three months. Maybe Singapore could have done it, but... I don't think it was a realistic plan. Anyhow, we'll see how that evolves. Moving on to the merchant app.

27:05

Aaron van Wirdum Oh yeah, I will. Okay, so if I do want to end on a positive note on the wallet part, I do think it is being improved. It is getting better from what I understand. Even though my transactions are still not coming through, I am hearing from just other people online and elsewhere that the wallet is slowly but surely improving. So I guess that would be the positive note. Anyone who's looking for a positive note now has a positive note. There you go.

27:31

Sjors Provoost Cool. The merchant app.

27:32

Aaron van Wirdum Okay, so obviously I'm not a merchant. And so my experience with it has only been sort of from the other end. Although at one point when a merchant was having trouble, they did allow me to actually sort of click around a little bit and see what it looked like and see what was happening sort of with that app. I can say for sure, or at least, first of all, I thought the app looked a bit confusing when I was playing around with it. Because there were sort of two options. It was like either accept payment with US dollar or accept payment with Bitcoin. But it was not clear to me that if you accept a payment with Bitcoin, that it was actually converted behind the screens into dollars. And it was clear to me that payments to the US dollar version was not compatible with Bitcoin payments. If a merchant wanted to accept a Bitcoin payment, but have it converted into US dollars, maybe that was the Bitcoin option. But I'm making a mess of this explanation.

28:30

Sjors Provoost Yeah, I think I see what you're trying to get to. So it looks like you have to make a payment, an invoice in dollars or in Bitcoin, because if you made one in dollars, then you can't pay it when you have a dollar balance. but if you made it in bitcoin then the amount would be fixed in bitcoin but you're thinking maybe it wasn't fixed in bitcoin it would be changing all the time or if you go to a normal like

28:51

Aaron van Wirdum no let me let me explain very clearly what i mean so as far as i could tell there were two options either paying dollars or paying bitcoin if i chose paying dollars then i literally had to pay in dollars with the chivo app essentially as far as i could tell if i chose paying bitcoin then i could pay in bitcoin but then it wasn't clear to me if the merchant would have that amount converted in dollars if they wanted to the reason i'm unsure about this is because i wanted to do this and then the merchant said no no we don't accept bitcoin payments only dollar payments so that was odd to me because i want to pay with bitcoin and they have a Chivo app so they should be able to have it converted to dollars now maybe that was something that happened behind the screens and maybe that was something they had in their options menu and the girl i was speaking to didn't notice that's all very plausible but i will say it was not very natural like it was not obvious from just sort of scrolling through the app it was not super clear what was going on

29:45

Sjors Provoost No, and this is, of course, something that the merchant has to know and understand because they probably have to select something. Like, do you want to keep everything in dollars or do you want to keep half of it in Bitcoin? Or, you know, there's got to be some slider somewhere to do that.

29:59

Aaron van Wirdum Exactly.

29:59

Sjors Provoost And if there's no slider, then I wouldn't know what the behavior is.

30:02

Aaron van Wirdum Right. So in the wallet app, the slider is very clear. The slider is right there. If you're accepting a Bitcoin, it lets you decide right there. Do you want to have it in Bitcoin or do you want to have it in Lightning? I did not see this slider in the merchant app, which is why I wasn't sure what was actually going on. Now, about the things that I'm a little bit more sure about is the merchant app does not appear to accept Lightning transactions, only on-chain, as far as I could tell. On-chain or maybe it was a custodial kind of thing. That's also possible. But Lightning did not appear to be an option in the merchant app. I made several payments at Chivo apps. One of them was Chivo.Chivo, like I mentioned. That one was actually quick and easy. presumably because it was a custodial ledger entry, I think.

30:48

Sjors Provoost But that was a dollar transaction, I'm guessing.

30:51

Aaron van Wirdum No, that was a Bitcoin transaction.

30:53

Sjors Provoost So how does it know that then? Because you're seeing an invoice.

30:56

Aaron van Wirdum I'm seeing a Bitcoin address.

30:58

Sjors Provoost How then does it know that it's an internal thing? Does it have some sort of master list?

31:02

Aaron van Wirdum I mean, we can only guess, but that would be my guess, yes.

31:06

Sjors Provoost That's interesting.

31:07

Aaron van Wirdum I mean, or it was an on-chain transaction and it's just not visible as such in my wallet. That's also possible. To our listeners, like we mentioned, this is a bit of an odd episode because we're guessing so much. And the reason we're guessing so much is because it is closed source and it's sort of the only thing we can do is guess.

31:23

Sjors Provoost Yeah, well, there's some things you can actually observe in the app, right? So you mentioned that if it's a real on-chain payment, it's not going to go through. But if it's not, then it does. And you can use another Bitcoin app to scan the same thing and see what you're getting. To see when you scan the invoice at the shop, is it just a regular Bitcoin address with an amount? Or is there some extra information in it? Or is it not even a Bitcoin address, but some sort of website that you go to and then...

31:49

Aaron van Wirdum Okay. So if I go to one of the transactions that I made on chain back when I was working, I guess, I am seeing a receiving Bitcoin address. I see a 3 L blah, blah, blah, blah. I see an address. When I go to the one that I made at another Chivo app, I do not see an address. I just see the name of whoever. But I'm pretty sure that when I was there, I made the payments to a Bitcoin address. I think what flashed on the screen was, I think was a Bitcoin address.

32:19

Sjors Provoost So I guess next time when you go to the shop, you should bring two phones or try two apps on the same phone where you scan the address with the regular Bitcoin app and then scan it with the Chivo app. And then if you pay it with the Chivo app, and again, it shows the destination on it, that's very interesting indeed, because then they probably map the addresses to the identities in the backend and then figure it out and actually not make an on-chain transaction. That could be true. So it could be that the Chivo app, when you're trying to make a payment first says, do I know this person? If I know it, I'm just going to make a database entry. If I don't know it, I'm actually going to make a payment. Yeah. Those things you can reverse engineer it. It's just that somebody would have to do it and make a giant wiki that precisely explains what this app is doing. Or they could open source it and everybody would understand it.

33:06

Aaron van Wirdum Yeah, we are going on my personal experience and more specifically my memory of my personal experiences, which is obviously pretty far from scientific. But, you know, we're doing the best we can here, I guess. Okay, so the Merchant app does not have lightning. We mentioned that. One thing I tried is paying with a RBF transaction replace by fee transaction. Did I mention this? So one of the normal transactions without RBF that I did, that went through immediately. So it seems that they are accepting zero-conf transactions if it's not an RBF transaction. However, if it is an RBF transaction, then the merchant app doesn't register the transaction at all until it's confirmed, probably.

33:52

Sjors Provoost That's a lot of fun.

33:53

Aaron van Wirdum That was a lot of fun when I was standing in line trying to pay for my groceries. where I made the payments. I mean, I knew I was messing around. I knew I intentionally put RBF on to see what would happen. So I knew-

34:06

Sjors Provoost Yeah, but there's plenty of wallets that have it on by default, so.

34:08

Aaron van Wirdum Yeah, exactly. So I had RBF on just to see what would happen. Well, what happened was basically nothing. The merchant app did not register the payments at all. And of course, the people that were working in the store, they just thought I didn't pay. They just told me you didn't pay, even though. i mean i could explain a little bit that i was showing them my wallet and then

34:28

Sjors Provoost computer says no

34:29

Aaron van Wirdum computer says no i showed them my wallet and then they didn't understand it and i tried to explain and then more people had to come to our cash register and take a look at it and then someone else had to come to that spoke better english and then the line kept forming it got longer and longer and then someone started making phone calls and then they told me to wait you know on a bench and I think about 20 minutes later, the transaction actually confirmed. Then they started to make more phone calls and eventually they said, okay, everything is good. You can go. But we can definitely conclude that the merchant app does not show the transaction at all. So it does not show the transaction in a way like a transaction has been paid, but there's a problem because RBF or it just... it's as if no payment has been made so i would say that's clearly sub-ideal because like you said there are a lot of wallets that have rbf on by default

35:24

Sjors Provoost yeah and the problem of course with without rbf is you can't take it back Or I guess you could cancel it, but it means that if you then decide, oh, let me just pay in cash, you can't do that either because now you're paying twice. So that's why on-chain payments, we've already decided many years ago, are just not the way forward. And Lightning is much better for this type of in-person merchant experience. So let's hope that they'll add that later. My guess is they would because it's already in the user app somewhere. And I think everybody realizes that Lightning is the way to go.

35:55

Aaron van Wirdum I'm assuming they're going to roll it out eventually. All I know is that right now it seems like it's only on chain. It's possible, I guess, that it's some sort of hidden feature again. You know, if you dig deep through the options menu or whatever, maybe there's like a lightning option somewhere. But for sure, it's not obvious. And for sure, merchants that I've encountered wouldn't have known that if it was the case.

36:19

Sjors Provoost No. So basically, it's just on chain at this point in time and not very compatible with RBF either. Yeah.

36:32

Aaron van Wirdum I just recalled something. So this is another bug I ran into is that you have these QR codes, of course, if you need to make a payment. And usually you need to make a very exact payment, right? Like it's a Satoshi precise amount. And then if you don't pay the Satoshi precise amount, then it's going to be an error and the payment is going to show us failed or something, you know.

36:54

Sjors Provoost Yeah, it depends on how picky the backend is, right? Some merchants have gone pretty far in sort of dealing with user error because, for example, you might have an item that's $1 and then they show you an invoice, you scan it with your little wallet. And it says, oh, this is $1.01 because your wallet has a slightly different exchange rate. And then you as a user might say, no, I want to send $1. So you manually type $1. And then the server is smart enough to have some sort of tolerance there. But not too much because then everybody starts to game it. So it depends on how smart it is. But if it's not smart, then yeah, if there's one Satoshi too much or too little, it's going to say, please send one extra Satoshi. Or it's going to say, oh, you sent one Satoshi too much. You know, what do you want to do?

37:38

Aaron van Wirdum Right, right. Well, I mean, the reason I bring it up is because I've definitely had this come up with the wallet. where the amount that was shown on the QR was not the exact amount that was paid eventually. I should clarify maybe that because I mentioned that I've not been able to make any payments. So to clarify, I've not been able to make any payments since I copied the wallet to my own phone. Before that, we were using the same wallet, essentially the same person. And back then we made some payments that worked, like I mentioned, the Chivo to Chivo. And also this one that I'm describing right now, that payment went through, but the amount wasn't correct. After I copied it to my own wallet, it hasn't been able, I've only been able to receive.

38:21

Sjors Provoost But you're saying there's some sort of rounding error?

38:23

Aaron van Wirdum Possibly some rounding errors. Who knows? Who knows? We can't look at the source code. So who knows what the exact problem is? All we know is that the exact amount that I was supposed to send was not the amount that was sent. And that was causing problems with one of the ATMs, actually.

38:39

Sjors Provoost Yeah, that could cause some headache. Okay, so we've covered the user and the merchant app. Maybe we can briefly still talk about the backend because we don't know anything about it. But it's good to remind the listener that everything is using a server or multiple servers. And we do not know who runs those servers. We don't know how their hot wallet works, how their cold storage works, how much is in it, etc. And this is a general problem with custodial services. And even if they were to do a proof of reserves, we also know from the industry that nobody checks it, or at least very few people check it. So I don't want to necessarily blame them. I mean, the best way, of course, is to not use a custodial service. But one of the things a custodial service does give you is this super smooth exchange between fiat and Bitcoin. You know, especially frictionless because it's just a number to database and you want a number to be dollars or Bitcoin. It's one click of the button and it's changed. Which then brings the question of whether that's really happening. If they're really actually doing an exchange there, which means they're, you know, whether their asset ratios are being updated. And if they really are, whether that creates some sort of arbitrage where somebody could come in with millions of dollars and sniff little bits out of the exchange rate because of the way it's subsidized. We'll find out.

40:01

Aaron van Wirdum Yeah. Okay. We're discussing the backend now. The obvious thing is we don't know a lot about the backend at all. Like that's pretty far. What do we know? Not much.

40:10

Sjors Provoost No, again, there are things you can learn from reverse engineering. If you wanted to, you can at least see what domains the app is communicating with. And then you can look at domain registrars and see who owns these domains and who signed the HTTPS certificate. Is that directly owned by some legal entity? Then you can look up the legal entity and see if it's somewhat reasonably owned by the government. You know, if it points to some entity in the Cayman Islands, then maybe you're slightly more worried.

40:39

Aaron van Wirdum Right. Yeah, that's interesting.

40:40

Sjors Provoost But, you know, I would not put my life savings in an app like that unless I had the answers to stuff like that. Like, okay, what happens if this entity has a breach? You know, are they insured or not? That sort of stuff. Same with the dollar balance, right? Because you don't know what's backing it.

40:57

Aaron van Wirdum Yes. I actually wanted to go to the ATMs real quick as well. The Chivo ATMs.

41:01

Sjors Provoost Sure.

41:01

Aaron van Wirdum Yeah. So the Chivo ATMs I've personally used a couple of times now. Sometimes they work quite well. There are some confusing user interface things going on, confusing user experience issues. Okay. First of all, it's not Lightning compatible. There are no Lightning invoices on the atm it's just on chain

41:22

Sjors Provoost but there is Chivo to atm right because i think i saw people make a lightning payment to a Chivo user wallet and then the user making a dollar payment to the atm i guess and getting physical dollars out is that how it worked because there were people showing on the twitter

41:38

Aaron van Wirdum i think so yes i think there's chivo to chivo atm payments that are basically custodial payments custodial ledger entries i think I've mostly used the on-chain payments and they have sort of a two-step process because they're going to wait for confirmations. So you send the money, most of the cases at least, you send the money. And then receipt is printed out with the code. And it says, once your transaction has one confirmation, you can use this code to get the money out. The most confusing thing about that is that it definitely waited for more confirmations sometimes that I used it.

42:16

Sjors Provoost Okay, but that sounds like any other Bitcoin ATM.

42:20

Aaron van Wirdum Yes, I mean, it is. The ATM is pretty regular as far as, I mean, it's an ATM and I think they work like other ATMs. They're just branded as Chivo mostly. Although, like I said, I do think there's some Chivo to Chivo custodial thing in the background as well.

42:33

Sjors Provoost And some noticeable bugs that suggest that it's not just that company because they wouldn't make those mistakes if they've been around long enough.

42:41

Aaron van Wirdum Right. Yeah. About the bugs. Yeah, exactly. I've encountered some bugs myself where I try to send Bitcoin and get some dollars out and it just wouldn't give me the dollars. I've had that happen twice now for two different reasons. But I think one of them was... essentially a hardware reason like the receipts the printer was out of receipts or something like that however i also didn't get an sms message even though i was supposed to get an sms message so several things went wrong at once and then another time i already mentioned was because the amount wasn't satoshi to satoshi compatible and then it didn't give the money out either we've also heard the opposite example where someone i think bought bitcoin essentially And then kept getting more and more money for a couple of hours. Did you hear this?

43:31

Sjors Provoost Yeah, the story I heard was a famous Dutch podcaster. Let's not mention his name.

43:35

Aaron van Wirdum Right.

43:35

Sjors Provoost He put in some amount of dollars in the ATM. got on a plane, saw the transaction come in on his Bitcoin wallet. It's like, this is great. Then landed and saw the same transaction five times and then got on another international flight and eventually got 36 transactions and tried to contact the president to say, hey, let me know if you want this money back because we're not trying to rob you. But yeah, that happened.

44:03

Aaron van Wirdum Yeah, that happened.

44:04

Sjors Provoost And that sounds like the kind of bug that any ATM operator that's been around long enough. would not have because they would not be around. So that sounds like there's some sort of integration between the Chivo app, perhaps, and the ATM operators and something like Haywire in that integration.

44:21

Aaron van Wirdum Right.

44:22

Sjors Provoost Which is the kind of thing that can happen when you're doing a super ambitious project and you've got five companies working together. And it's quite easy to make a mistake where one program updates a database and says, you know, I've paid. And then... For some reason, that database change doesn't get saved. And the other side is like, oh, I should make this payment because it hasn't been made yet. And it just keeps making the same payment. And conversely, money could disappear if it's not recorded that, hey, I need to send out on this amount. But those are very painful bugs.

44:51

Aaron van Wirdum Yeah. Okay. So I think we're coming up to the end of our episode. Is there anything else you want to mention?

44:58

Sjors Provoost No, I think we've kind of gone through it. I would like to see people doing a more systematic reverse engineering of what this app is doing. Because I think by trial and error and looking at the blockchain and looking at more subtle behavior, you can probably find out a lot more than what we were just guessing in the podcast. I already proposed some experiments in our conversation.

45:18

Aaron van Wirdum Yeah, so I agree with that. I think this is sort of a first look kind of episode. That's the best way to look at it. I did, for the listeners, just so you know, I did try to reach out to at least one local hacker that I know has been doing more experiments with the wallet. He did not respond in time for this episode. So we are going a bit on my personal experience and memories and anecdotes. There's definitely room for more thorough analysis.

45:45

Sjors Provoost Yeah, and maybe a fair warning to people who are doing that. Keep in mind, there's such a thing as responsible disclosure. So if you find some behavior in a wallet and you suddenly realize that you can make millions of dollars with it, don't just go out on Twitter and demonstrate that because you shouldn't be doing that. for moral reasons, and you shouldn't be doing that for staying out of jail reasons. So, you know, just be a little bit careful with that. But again, I don't even know if they have a responsible disclosure. email address that you can say, dear Mr. Bukele or assistant, I found this issue that's making me infinite money. Maybe you want to fix this.

46:23

Aaron van Wirdum Yeah. Well, final words, I guess I have already mentioned this halfway the episode, but I'm just going to repeat it. I'm seeing a lot of excitement around this project and a lot of Bitcoiners who really like this move by the government and what they're doing and making Bitcoin legal tender. And I totally understand that. At the same time, we are talking about the Chivo wallet, which is literally a closed source, custodial, intransparent application that's pushed by a government that's not really telling anyone where the money is or anything like that. They're using taxpayer money to develop it. Like if we as Bitcoiners cannot be critical of this, then I don't know what we can be critical of anymore. The wallet is just not working very well. Unfortunately that's the only conclusion I can draw at this point. I guess I can mention once again there does seem to be a little bit of improvement if you're looking for a more positive angle. I do think it's improving a little bit even though the transactions on my own wallet are still not working. So that was sort of the first look at the Chivo app. Sjors?

47:28

Sjors Provoost Yeah, I think that's all we've got, right?

47:30

Aaron van Wirdum That's all we've got. I think our next episode might be in person again. I think we might be able to record our next episode in the Netherlands.

47:38

Sjors Provoost Exciting.

47:39

Aaron van Wirdum Although, I don't know what the restrictions are nowadays. Am I supposed to still self-quarantine and these kinds of things?

47:46

Sjors Provoost Yeah, I believe the latest rule is because El Salvador, both El Salvador and the United States are on the orange list, as we call it. So that means you probably need to take a test before you get on the plane.

47:59

Aaron van Wirdum Well, that's for sure.

48:00

Sjors Provoost And then you, I believe you still have to quarantine. No, I don't think you have to quarantine anymore. I think they changed that.

48:08

Aaron van Wirdum Great.

48:09

Sjors Provoost This depends on vaccination status. So maybe you don't want to disclose any of those details. But you should look it up. There's lots of websites that will tell you the latest rules.

48:18

Aaron van Wirdum All right. Well, Sjors, then I'll see you in the Netherlands soon.

48:22

Sjors Provoost Cool. See you soon. Thank you for listening to Bitcoin Explained, formerly known as the Van Wirdum Sjorsnado.

48:28

Aaron van Wirdum There you go.