Epicenter - Learn about Crypto, Blockchain, Ethereum, Bitcoin and Distributed Technologies - Ben DiFrancesco: Umbra – Privacy Preserving Token Transfers

Episode Date: May 19, 2023

Public transaction history in blockchains represents one of their key features which, alongside immutability, aim to provide an alternative to CeFi. However, this transparency comes at a price: privac...y. As a result, different solutions have been proposed, that preserve privacy while maintaining all the other benefits of blockchain technology, but there currently isn't a one-size-fits-all answer to this problem. For example, zero knowledge proofs convey the validity of a transaction batch without sharing any other details, but the underlying arithmetic circuits are both complex as well as computational intensive. Umbra proposes a system that relies completely on elliptic curve cryptography, employing multiple private-public key pairs to achieve stealth payments.We were joined by Ben DiFrancesco, founder & CEO of ScopeLift, to talk about Umbra's privacy preserving stealth token transfer system and if the need for privacy on blockchains outweighs any implicit UX frictions.Topics covered in this episode:Ben’s backgroundUmbra's missionHow Umbra worksNon-interactive key distributionPotential solutions (& trade-offs) for Umbra's computational intensityGenerating private-public key pairs by the Umbra smart contractUser experience (UX) for senders and receiversFee structure for deterring griefing attacksHow Umbra works for ERC20 tokens & NFTsPrivacy preserving withdrawals from stealth addressesPrivacy vs. UX frictionSmart wallets & account abstractionPrioritising privacyEpisode links: Ben DiFrancesco on TwitterUmbra on TwitterScopeLift on TwitterThis episode is hosted by Friederike Ernst. Show notes and listening options: epicenter.tv/496

Transcript
Discussion (0)
Starting point is 00:00:00 This is Epicenter, episode 496, with a guest, Bendie Francesco. Welcome to Epicenter, the show which talks about the technologies, projects, and people driving decentralization at the blockchain revolution. I'm Trinidad, and today I'm speaking with Beni Francesco, who is the CEO of Scope Lift and creator of Umbra, a privacy layer for Ether-based token transfers. Ben, it's the title of you on. Yeah, thank you so much for having me. Really appreciate it, excited to chat.
Starting point is 00:00:43 Cool. So I think the very clear first question here is tell us about yourself. Who are you? How did you get into the space? And is it true you are originally an aerospace engineer? Yeah, sure, absolutely. Yes. I am originally an aerospace engineer. So believe it or not, growing up, I was kind of a nerd. And so I was interested in. I know. Really shocking. Unusual in the space. Very unusual. But, so I was interested in computers from a very early age. I kind of like played around and started teaching myself to program. I was also interested in like aviation and aerospace and airspace and all that kind of stuff. And so I went to school for aerospace engineering because I was very excited about that. And I really enjoyed kind of the coursework and the, you know, the sort of like overall idea of doing aerospace engineering. And then when I got out of school, I went to work at a large. aerospace engineering firm here in the States and what I learned pretty quickly is that the reality of aerospace engineering at least at these big firms is very different from kind of the um you know uh idealistic view that I had as a as a young kid going to study it so in reality you know aerospace engineering for good reason is very um slow basically you know you can work on a project and aircraft project for for many years before it can come to fruition there are a lot of people
Starting point is 00:02:09 involved in any given project and in general especially again at these big firms things are very bureaucratic and slow moving. And it also turns out that at these big firms, engineering firms, traditional engineering firms, really in general, they desperately need more people to program because there's all kinds of stuff that needs to be done software-wise, building software, but it's hard to get people that have the knowledge to build the software, but also have the engineering side of things. And so within this large firm, I was doing all software engineering work anyway. And what I realized was that I wasn't loving my job. I loved, I really enjoyed the programming side of things, the software side of things. What I didn't like was the bureaucracy, the top heaviness,
Starting point is 00:02:49 the slow moving side of things. And so I left Boeing and went into kind of, I basically started freelancing and then eventually grew my company Scoplift into a consulting firm, a dev shop, for lack of a better word. And this was probably around 2012, 2013. At the time, I was not doing work in crypto, but I was following crypto. So I had found Bitcoin. I was really fascinated by it, and I was following the project. I was doing stuff on the side, you know, for fun. I, like, built a mining rig and I was mining Dogecoin, believe it or not, like probably at a loss in my house, but like paying more for the electricity than the Dogecoin I was mining. But I was following it. There wasn't really much of a crypto industry of the time, except for like a few companies out there. So it was
Starting point is 00:03:37 really when Ethereum launched that I sort of got really excited about crypto because I realized this was it went from like, oh, this is an interesting kind of, interesting kind of, you know, thing, digital scarcity that's been invented to, oh, this is like a whole new platform. And as a software engineer, I can build things on top of this. And this is going to allow us to create all brand new kinds of software that do things we couldn't previously do before. And so that kind of, when I learned about smart contracts and saw Ethereum coming together, that like Mike bulb kind of went off. And so again, I continued to sort of follow the project, started tinkering with Ethereum and smart contracts. And then it really wasn't until the boom of 2017 into like 2018 when I
Starting point is 00:04:19 started picking up projects. Scoplish started picking up projects. By this time, it was a small consultancy, and we started picking up actual crypto projects. And by 2019, I decided to really shift the firm 100% into focusing on crypto. So we wound up our legacy projects, our web two, and kind of, we were doing some native mobile work as well and decided to focus 100% on crypto, sort of having to start from the ground up with business development and all that kind of stuff. But really, it's been an also ride because, as you know, the space since 2019, the space has changed an enormous amount. And we've had the opportunity in that time to really contribute to a whole bunch of stuff in the Ethereum ecosystem in particular and some other ecosystems as well. But mainly we're
Starting point is 00:05:03 focused in Ethereum. And that's been really gratifying. and a lot of fun. And yeah, that's kind of the long-winded explanation to your question. Can you tell us about some of the projects you've contributed to over the years? Yeah, absolutely. We've done a lot of work with a lot of great projects. We've been lucky to get to contribute to projects. Certainly, your audience, would have heard of optimism,
Starting point is 00:05:28 Gipcoin, we've done a ton of work with them, Uniswap, Endowments, Oble, a bunch of other really, really cool projects. And then, of course, we also have done some of our own internal projects over the years with varying degrees of success. And the one that has a decent amount of, has probably the most traction of the internal stuff that we've built is Umbra. Ambra is also the project we're here to talk about today. But maybe before we dive into that, how is it kind of being a hired gun on some projects and kind of scurring that with building your own? I imagine that's a really difficult line to toe. Yeah, I mean, yes and no.
Starting point is 00:06:11 I mean, I think me personally, and I think as a culture the company selects for this, we're like, we're a seven-person team. We're all engineers. We're all very, we just like to build things, basically, I think would be the culture. And so it's like really a culture focused on engineering excellence. And you come to us with hard problems and we help you solve them
Starting point is 00:06:28 is kind of the approach that we take. And, you know, I think like I just have fun. We have fun doing that. that, right? So I think it's, I'm always impressed when people can, you know, find an idea that they're so passionate about, like a singular project that they're willing to sort of grind on that for years and years and years and years. My mind likes to kind of jump all over the place. And so it's been awesome to get to contribute to a whole bunch of different projects and to, you know, have a few things going on at any given time. It also just gives us like a really wide view of the space because there is
Starting point is 00:07:02 so much going on, right? And even with that wide view, it's like, it used, you know, in 2017-ish, you could reasonably, like, have a sense of everything going on in Ethereum as one person if you were really paying attention. By then, it was starting to already get hard. Now it's like literally impossible. You can barely keep an eye on a sliver of the activity that's happening in the ecosystem at any given time. But, you know, we get to, we get to see a relative to maybe other folks, we get to see a wide breath of that. So that's a lot of fun. Of course, there is some tension with our client work and our own projects that we would like to push forward. But we've been really lucky, especially with Umbra, to get funding in the form of grants from a lot of different sources,
Starting point is 00:07:42 a number of different sources in the ecosystem. And so we've been able to, you know, push that forward while at the same time balancing it with our client work in the ecosystem. In a nutshell, what does Umbra set out to do? Yeah, cool. So Umbra is a privacy tool. It's a stealth adjunctual. system and it's different from some of the privacy tools that maybe your audience would be used to. So it's primarily about receiving payments or receiving a transaction sent to you by a known sender where the fact that they've sent it to you isn't immediately, isn't legible on chain, isn't obvious on chain. So another way to say that is it's about receiving payments where
Starting point is 00:08:27 only the sender and the receiver know who the receiver is. Right. So, The sender is visible on chain. The receiver is stealth. That's where the stealth address side of things comes into play. So unlike some other tools that your audience may be familiar with, like Tornado Cash being the most prominent example, for example, would be it's not a mixer, right? So a mixer is primarily about taking funds that you control,
Starting point is 00:08:56 but are doxed in some way. It's known that you control these funds in this. address and then moving them through the mixer and when they come out the other side of the mixer, they're in an address that you control, but it's no longer clear that you're the owner of them. So it's breaking the link between address A and address B, both of which are controlled by the same entity, right? That's not what Umbra does. That's what a mixer does and we're not a mixer.
Starting point is 00:09:21 So Umbra is about, I want to receive a payment. It could be e-commerce. It could be, you know, you're paying an invoice because I'm a business and we worked together. could be you're paying my salary, you know, whatever it is. We have some economic relationship. You want to pay me, but we don't all want it to be obvious on chain that you have sent this amount of money to me. So if you use UMRA, basically what it looks like is you've sent some tokens or some ether to an address that has never been seen before on chain. Now, behind the scenes, it turns out that I control that address and only I control that address. And as soon as you've
Starting point is 00:09:59 sent those funds, they're essentially custodied by me and you couldn't recover them. No one else could recover them. Only I have the ability to remove them from that stealth address that they've been sent to. But on chain, who that address is controlled by is
Starting point is 00:10:15 not visible or legible at all. So that's sort of a quick summary of what UMRA enables. So if I look at my ragbeiler saying Meta Mask, it lets me derive a de facto unlimited number of addresses from a single seat phrase.
Starting point is 00:10:37 So basically, if we coordinate ahead of time, what I could do is I could just make a new address from the seed phrase that I'm already using and give you that. But what Umbra actually does, it actually lets you kind of, I mean, it works differently. We'll talk about how it works in just a bit, but it'll let you generate a new address on my behalf, right? Yeah, that's a great, that's exactly right. That's a great way to think about it, right? So, yes, like the privacy sort of tradeoffs that you get from Umbra are the same as
Starting point is 00:11:12 if you, if I, you were going to pay me and I generated a fresh address, you know, just went into Metamask and clicked add new or created some private keys and imported it, whatever, generated a fresh address and then sent that address to you and then you sent the funds to that address. That's the privacy. The privacy properties that you would get from that interaction are the privacy properties that you get from Umbra. The difference is that it's a non-interactive protocol.
Starting point is 00:11:39 In other words, we don't have to do that out-of-band coordination in order for you to get a fresh address that only I control. You can, as you alluded to, effectively generate a fresh address on my behalf that only I can control, but still looks completely completely. used a new on chain and it basically looks like a regular address on chain. It 100% looks like a regular address on chain. There's nothing special about it because it is a special address. It's just generated using some cryptography.
Starting point is 00:12:13 Okay. So basically saying, I want to pay you, say 15 die or whatever. How do I go about creating this address that you and only you have the private key tool? Cool. Yeah. So do you want to dive into this from at the technical level, at like the user experience level? Like where do you want to start with this? Yeah, I think that's a great question.
Starting point is 00:12:37 Let's get the maths straight first. And then we can go through the user experience after. Okay, cool. So I'm going to describe the way that it works in UMRA today. And the principle is the same, right? The underlying math principle is the same. There are slightly different constructions, like ways that you could put it together. And so like different stealth address schemes might have slightly different constructions.
Starting point is 00:12:58 but I'm going to describe the one that we use in Umbra and the underlying, you know, principles are all the same regardless of the exact implementation details. So to do that, I'm going to have to back up a little bit and talk about elliptic curve cryptography, which is the kind of cryptography that underlies basically all of the serum, right? So elliptic curve cryptography is asymmetric cryptography. In other words, you have not just, you know, with symmetric cryptography, you have a private key and you use that private key. to encrypt something and then you use that key to decrypt something. So the key is the secret and the key lets you encrypt it and decrypt it. In asymmetric, asymmetric cryptography, you have a private key and you have a public key, right? And so that and those two things are a pair, right? So for every private key, there's an associated public key and vice versa. And if you have the public key,
Starting point is 00:13:50 you can't derive the private key, but you can use the public key to encrypt something. So to take some text or data and encrypt it so that it can't be viewed. And then once that's encrypted with the public key, only the owner of the private key can decrypt it. So this is what we use in things like, you know, private chat apps, right, like Signal or whatever, right? So I, you know, the app does this process where you can see my public key and then you send you take, you write a message. The app encrypts it with my public key sends it to me. I decrypt it once on, it's on my device with my private key. when it went over the wire, nobody could read it, right? So that's the same cryptography that underlies all of Ethereum. And the private key and the public key in these scenarios are just big
Starting point is 00:14:37 numbers, right? So they're big integers. And your Ethereum address, the Ethereum address that you have in Metamask is derived from the public key of the private key, right? So it's actually the hash of your public key just defines your Ethereum address. And so when you send a transaction on Ethereum, you sign it with the private key and then you broadcast it out and people running nodes have to validate that the signature is correct and then execute whatever actions it has to include it in that blockchain. Okay. Sorry for that background, but I think it's important to establish what I'm going to talk about
Starting point is 00:15:15 next, which is how getting back to how Umbro works, right? So the way that it turns out, right, and this is just a property of the math, but it turns out within elliptic curve cryptography, you have this big number for your private key and this big number for your public key. And the math that's going on isn't like normal math, right? It's not like the math where we multiply numbers together, right, the way that we learned to do it in grade school, right? It's a different kind of math called elliptic curve math, basically. And I won't get into exactly what that is and how it works because it's out, it's even further outside of the scope than the scuff I've already described. But basically, it turns
Starting point is 00:15:52 out the way that it, the way that the properties of this math and the way that it works is, if you take the number that is your private key and you pick another number, a random number, and you multiply it by that random number. So private key times random number gives you another new number, right? If you use that number, you can use that number as a private key and generate a new public key, right? With me so far, is that making sense? So private key times random number, new number, new private key, right? So if it turns out, if you go back to that original private key, the associated public key, if you take that public key and you multiply it by the same random number, right, then the resulting number that you get, the resulting public key that
Starting point is 00:16:39 you get is the public key that associates with or is paired with that private key that we got in the first step, right? So in fact, the way that I'm works is in reverse. So what you as the sender do, or what the software does on your behalf behind the scenes is it takes a public key associated with the receiver. It multiplies it by a big random number and it generates a new public key from that operation. And again, this is all elliptic curve math that's going on, not normal math. And then what the user on the other side, the receiver can do is take that same, if you can communicate that same random number to the user, and we'll talk about that in a second. But if you somehow send that other, that random number to the user,
Starting point is 00:17:22 they can take it, multiply it by their private key and get the private key for the associated public key that you calculated as the sender in the first step. So again, a little confusing, but hopefully that sort of made sense. I'll let you ask some questions. Yes, absolutely. So, but that still leaves me to get the random number to you encrypted, right? Because if I send it to you unencrypted, then anyone can just try out which public key belongs to it, right? Right. Yeah. So you might be one.
Starting point is 00:17:54 This is exactly. So basically the question you're asking is, okay, that sounds neat, but what good has it done? Because I still have to send you that random number before you can figure out how to generate the new address, the new public key, which associates with the stealth address, the new address. So how do you, how do we do that? I still have to send it to you and you might as well have just sent me an address, right? So like what have we gained by doing all this this math? So what Umbra does to make this non-interactive is, remember we talked about how these public and private key pairs allow for this asymmetric encryption, right?
Starting point is 00:18:27 So effectively what we do then is we take the public key and we use it to encrypt that random number that we just created and we use to generate the new address. And then once we've encrypted that random number, we take that increment. encrypted data that nobody can decrypt except you as the holder of the private key. And we announce it on chain through an event in a smart contract, right? So UMbra is a smart contract system. There's an associated smart contract. Your funds flow through that smart contract when you make the payments. And we make an announcement, an event that gets broadcast on chain with that encrypted data inside of it. And so then what you do as the receiver when you use UMRA is you come,
Starting point is 00:19:12 you log on and you look at all the payments that have happened through UMBRA, every event that's occurred through UMBRA since the last time you used the app. And then you basically tried to decrypt each one and you're not going to be able to decrypt most of them, but you will be able to decrypt the ones that are payments to you. And so when you decrypt them, you get that random number that you need and you can use it along with your private key to generate the private key for the new stealth address that received the funds. And so we basically use events on Ethereum and indexing those events, processing those events locally on your computer because we want to keep it privately, obviously, to enable this data to be communicated in a non-interactive way.
Starting point is 00:19:59 Okay, I think I follow so far. Isn't it an awful lot of overhead for you to kind of look at every single event, not knowing whether this may be decrypted message for you? basically if this is something that kind of is used at scale, is that even computationally feasible? Yeah, yeah, really good question. So in computer science terms, this is like an O of N problem. So it's a linear, it scales linearly, right? So that's not terrible, but it's not great. Right? What it means is every time someone sends a transaction, every other user of the system is going to have to decrypt, attempts to decrypt that transaction when they go to receive their, on payments. So the way there are there are a couple kind of approaches that you can use to deal with that. And I would kind of put them in two buckets, right? One bucket is like sort of like researchy
Starting point is 00:20:52 sort of things, right? So you can think of like gossip protocols and different things that we can do like research that we can do to take this linear problem and make it like an O log end problem again in computer science terms, right? So one that is more scalable. And those are, there is research being done on that and we're very interested in that we're kind of following it and paying attention and would like to even presentially contribute to it in the future. But then the other bucket of solutions and these are the ones that we've pursued so far and there's still a bunch of more of them that we can pursue to make things more efficient are what I would call like the engineering hack bucket of solutions, right? And so these are solutions that don't make the,
Starting point is 00:21:32 they don't solve the problem in that it's still a linear, it's still an O of N problem, but they can take a lot, they can do a lot of things to improve the user experience, basically reduce the constant time cost that comes with doing this, right? So in the long run, you know, if we were going to scale this up to every payment on earth, which, by the way, I don't think it needs to or should, like there are a lot of different privacy solutions and different ones are appropriate for different use cases, right? And so Umbra has a set of tradeoffs that are valuable in certain situations, but not necessarily everyone. But if we were to scale this up to every payment on Earth, we need one of those
Starting point is 00:22:11 sort of like researchy solutions to come through in order to make this scalable. But we can get really far with what I would call the kind of like engineering hacks in terms of still providing a useful and acceptable user experience in the sort of like short to medium term. And so that's kind of where we are today. And I can dive into like what some of those are, some of the ones we've done already some of the ones we're looking at in the future. But yeah, that's kind of the high-level answer. So in my understanding of what I lean from the answer is that the computation still needs to be done in the background somewhere, it's just done such that it doesn't bother the user so much. Is that correct? Yeah, yeah. So let me dive into some of those possibilities, right?
Starting point is 00:22:58 So one of them is the one that you maybe alluded to, right? So when I described the system earlier, I said that we take the public key and we use that to generate the stealth address. And then we also take the public key and we use that to encrypt the data. In reality, in Umbra, the way that we do it is we actually have two separate public keys. And when you set up Umbra as to be a receiver, to receive payments, you generate two public private key pairs and you publish the two public keys in a registry. And one of those is a spending key and the other is the viewing key. So the first one is used to generate the stealth addresses.
Starting point is 00:23:35 The viewing key is used to do the encryption and decryption of these events. And so what that means is one option that you have, an imperfect option for sure, but at least an option, is you can give some third party that viewing key so that they can do the monitoring and decrypting on your behalf and then just let you know when you've received a payment. But that third party is not able to withdraw your funds. So obviously you've given up your privacy to that third party. but you haven't given up control of your funds to that third party. And there are a lot of, now that isn't perfect for everyone, right? There are plenty of people who are going to say, well, that's not a tradeoff I want to make.
Starting point is 00:24:12 But there are plenty of people who might say that that actually does work for them. So for example, if you're using this for like receiving payments or, you know, invoice payments or salary payments or something like that, you know, just like today, you're probably okay with your invoicing software company or your bank or whatever knowing about your salary payment or your insurance. invoice payment, you're okay with them knowing that. You just don't want it like broadcast and legible to literally everyone who knows how to go to EtherScan, right? So it might be an acceptable privacy tradeoff for you to give a trusted third party the ability to see what you've been paid, but not withdraw the funds, right? In fact, that's an improvement over today where your bank literally can see they're not really your funds at all, right? They're the banks until you withdraw them. So that's one sort of like simple, simple low-tech solution to this problem.
Starting point is 00:25:05 Putting that aside and talking about, well, what if I'm an individual user who doesn't want to give up my privacy? What options do I have? There's still a bunch of stuff out there. So one of them obviously is just like caching, right? So once you've decrypted, like Ethereum is, you know, past blocks are immutable, right? So once we've scanned that event once, we don't ever have to scan that one again. And so if you use Umbra to receive payments regularly, like every week, two weeks or a month, you're only going to have to scan the events from the last time
Starting point is 00:25:32 and decrypt the events from the last time that you use them. Another obvious one is just parallelization, right? These are totally independent things, right? And so computers are getting more and more parallel, like your MacBook these days has like 32 cores or more. And so we can blast those across all the processors on your phone or your computer and decrypt them in parallel. They're not contingent on each other at all. And so that that's a big help in reducing the time. There's another solution called view tags. This is something that actually comes from Manaro. We don't have this implemented currently, but it's something that we're looking into. And I won't get into the details there, but basically it's a constant time speed up where you can get as much as maybe like a 6x
Starting point is 00:26:17 constant time speed up on the decryption. And the kind of short explanation of it is like there's sort of like a two-step process. One of them is is computationally. inexpensive and then the other is the actual decryption, the process that we do today. And you can do the computationally inexpensive step to basically rule out big chunks of the transactions before actually doing the full computationally expensive step to see if it's definitely one for you. And so you can rule out five, six of the transactions before you even do the expensive step and then only decrypt the six that are left. And so you get a big speed up there. So this is just like a, you know, a short sampling of some of the things that are out there,
Starting point is 00:27:00 but there's a lot of juice to squeeze in terms of making this fast enough to work for users today before we hit the limit. Again, in the medium term, these approaches can get us pretty far. So let me recap and then kind of let's go over the user experience. So just to kind of reiterate how it works. So I want to send you funds. So you have an address, you have a public address and basically I generate a random number and multiply your address by that random number.
Starting point is 00:27:39 And then I encrypt the random number to send it to you. And then you can generate the private key to that new public key that I generated with the random number. And I can send funds to that to that. Yes, that was a good, good summary. The public key that you generate, that I go off of, is that just a standard Ethereum address? So basically, if you give me your metamask key, can I perform this? Or where exactly does Umbra actually come in? Yeah, yeah, really good question.
Starting point is 00:28:20 So as we said earlier, like elliptic curve cryptography is what underlies all of Ethereum, right? So your address, any address that you use in Metamask or whatever, is backed by a standard public key on, like the ones that we use in Umbra. Now, the address itself is actually the hash of that public key. And so if you know anything about hash functions, like you can't reverse a hash function. You can verify it if you have the plain text, but you can't take a hash and figure out what the plain text was, right? So if I give you just an address, that isn't actually enough information for you to know, what the pub key of that address is. So the public key has to be shared somewhere. Now, it turns out when you sign a transaction and send it to the Ethereum network, you effectively at that point
Starting point is 00:29:08 reveal the public key of the address. And so once at least one transaction has been broadcast on the network for a given address, we can recover the public key that underlies that address, and then we can use it in Umbra to do everything that we just described. That is a is possible in Umbra. Nothing about the way Umbra works prevents you from doing that. And in fact, we even support it in our front end, but we support it behind a flag that we call like an advanced mode flag. And we put like all kinds of friction in front of the user before we allow them to do that.
Starting point is 00:29:43 The reason is because as the receiver, the only way for you to receive your funds is to take the private key associated with your address and to then put that private key into a wallet, for like the front end of UMRA that supports looking for these transactions, right? That gives you all the functionality. And so obviously we don't want users pasting their private keys into like random front ends, even our own, right? It's just not a good security practice that we want users getting in the habit of doing. And so we allow you to do it if you know what you're doing. Like our app is open source. You can pull it down locally, run it locally, paste your
Starting point is 00:30:18 private key in there if you want feeling better about that we're not logging it or something like that if you know how to audit the code yourself, etc. But it's not something anybody should do normally. And so the way we have it set up is when you come to the Umbra app as a default user, if you don't go through the trouble of turning on this advanced mode, you sign a very specific message, a human readable message. It says like, you know, this message is used to generate your Umbra keys. You sign that message and we use the signature to generate two public private key pairs, the viewing key and the spending key that we talked about before. And what this allows you to do is we generate those keys from the signature from your address.
Starting point is 00:30:57 And so only you as the wallet holder can generate those keys. But, you know, you don't have to back up any new key material. Right. So if your seed phrase is backed up somewhere, you know, in a safe or on a piece of steel, then, you know, you're fine. As long as you can recover that address, you can sign that message and recover your umber funds as well. So no new key material comes into play. but it's still not actually the underlying key that's used for all of your other Ethereum stuff.
Starting point is 00:31:26 And then once we've generated that public private key, those two public private key pairs, we publish the two public keys in a registry. So it's just a really simple contract that you store, you know, you take your address, you associate it with two public keys. And then as a sender, you would come and you would look up, the software looks up in that registry, the address and pulls the public key for the viewing key and the spending key, you know, uses the spending key to generate the address, uses the viewing key to encrypt it and announce it on Umbra.
Starting point is 00:31:54 So that's the kind of scheme and the approach that we've taken for kind of like a user safety, user safety reasons. But Umbra is only a web app or can I download this as a desktop app? Because that would kind of alleviate a lot of your security concerns, no? Yeah, really good question. Right now it's only a web app and we hosted in the front end ourselves. We've explored before maybe packaging it up, you know, like using some of these technologies like electron or whatnot to like package apps up so that they can
Starting point is 00:32:23 run locally on the desktop. That's probably something that we should look into more in the future. We're also actually sometimes soon, it's on our roadmap to deploy Umbra to like a decentralized storage solution, which, you know, it doesn't really alleviate the exact problem that you were describing, but is something that I think is also useful. The app is also open source, right? So if you're a developer and you know like the basics of, you know, NPM and stuff like that, you can pull the app down and spin it up and run it locally. But right now we don't have a desktop app. It's probably something that we should explore some time in the future.
Starting point is 00:32:56 Okay, so let's talk about the users again. So the receiver and the sender, do they both need to be Umbra users, at least in the non-advanced node? Yeah, good question. So just to back up real quick, I want to add something that I should have also included. We hope in the future that like this stealth address
Starting point is 00:33:17 tech, like the stuff that underlies Umbra, will also be integrated in wallets so that users can use it directly in the wallet. So I think in the long run, that's like the ideal gold standard of how users would interact with this stuff. It would just be like an option in your wallet. So again, you wouldn't even have to worry about those private keys, public keys existing anywhere, anywhere else. And that's sort of why we develop Umbra as more of a protocol as opposed to like just adapt. We have a front end. We have a first party front end, but it's really just a set of standards that anybody can plug into. And we should talk more about our work to, in the future, to talk about to make an EIP,
Starting point is 00:33:54 a standardized EIP to push for exactly that future. But so getting back to the question that you asked, which is what is the user experience like for the sender and the receiver? Do they both have to be like Umbri users? So right now, the receiver, in order to receive payments, again, if you're not going to do this advanced mode thing, which we again recommend against, the receiver has to, has to do one transaction per network to publish their public private key pair that is used in the rest of the system. So if I want to receive payments with UMRA, the first step that I have to do
Starting point is 00:34:27 is go to UMRA, click setup, and it'll say, you know, sign this message, click sign in Metamask, and then it'll say, submit this transaction. It's a very low gas cost transaction. We've optimized it as much as possible, compressing the public keys, et cetera. And then you accept that, you pay the network fee and it publishes those public keys. It's a one-time thing. After that, you can receive as many payments as you want from Umbra. And then what you would do as someone who wants to get paid with Umbra is you would you would send, you would tell your sender, hey, can you pay me via Umbra? Just go to this app, go to this app, go to app.comba.cash and pay me there. And so as a sender, you go to those site and you click on send and you get a form that just
Starting point is 00:35:10 has like two address, token amount, right? Very, very straightforward. You don't have to do any setup, all you have to do is fill in those fields and click send and it sends the tokens, right, or the or the ether underlying via Umbra. You don't need to know any of the details of all the stuff that we just described. The software is taking care of all of that for you automatically. On chain, it looks just like, well, yeah, we can talk a little bit more about what it looks like on chain, tokens versus ether, et cetera. But for you as a user, it's just like another transaction interacting with a contract.
Starting point is 00:35:44 the gas fees are only slightly above what the gas cost would be for a normal transaction. Again, this is one of the advantages of Ambrough compared to other privacy solutions. Like zero knowledge proofs are super cool and awesome and have a lot of really cool use cases, but currently at least they're very expensive to validate on Ethereum, right? Maybe some pre-compiles in the future will make that cheaper. But right now, you know, validating ZKPs at the smart contract level is expensive. if we're not using ZKPs, there's no zero knowledge magic happening. And so the gas costs both for sending and receiving are minimally,
Starting point is 00:36:22 minimal compared to just sending and receiving in the clear. So yeah, that's a quick overview of the user experience for the receivers and the senders. So if I do this via your web app, what's the information that you can, US-URA can glean from that? So basically, if you say send funds to me and you say send it to ferns.eh, obviously, Anbra will know who's sending what to whom, because the address is kind of generated server side for you, right? So the address is generated, not server side, no, it's generated client side, right?
Starting point is 00:37:04 Yeah, so the web app is doing all the generation. Now, if we're malicious and we publish code in our front end that is, isn't doing what we say it's doing or is logging things back to our server or whatever, then obviously we can get that information. But we're not. And you don't have to trust us on that. You can go look at the open source version and run it locally yourself to validate that. But yeah, everything is done client's side. So as for us, as Umbra, we can't, what's visible to us is what's visible to everyone else, which is you sent a transaction to a stealth address. That stealth address looks like a brand new address on chain. We don't know who controls that stealth address. And we'll
Starting point is 00:37:45 never know who controls that stealth address unless they intentionally docks themselves or do something stupid on the withdrawal side of things, which is something we should talk about, about preserving your privacy as a receiver. But yeah, and same with the decryption as a receiver, right? All of that is happening client side. So unless, of course, like we talked about earlier, you delegate your viewing key to a third party intentionally. And as far as I know, there's no service is doing that right now. We've thought about building one ourselves and, you know, giving users that option, but so far we haven't, and not sure if the demand is there for that or not at this point. But unless you, so unless you delegate that to someone else intentionally, then everything
Starting point is 00:38:23 is done client side. So if you go to the app, like all the decryption is done on our side, we don't know which stealth addresses you control or you don't. Okay, say I haven't checked in for like a month. How, how don't would it take me to kind of go? through all the transactions to see whether I actually received anything. Yeah. So it depends on the network, right? And it depends because it depends on how many transactions other people have sent. Right.
Starting point is 00:38:49 So like if we deploy to a new network tomorrow and do a couple test transactions, it'll be like instant because it's really quick. But I think the network that currently has the most transactions that have gone through Umbra is Polygon. I think it's on the order of low hundreds of thousands. So maybe like, I don't know, maybe 100,000, 200,000, something like that. in total on Polygon. I think that's right. I think that's roughly right. Something on that order of magnitude. And right now I was actually just doing some testing with this yesterday because we
Starting point is 00:39:20 were tracking down a small edge case bug. And I think on my computer, you know, like kind of a middle of the road, eight core or whatever developer machine, it was taking me like three or four minutes to decrypt everything, you know, to fetch the data. That actually takes a little bit of time. as well. They have to fetch the announcements and then you have to decrypt them. And, you know, it was like the total time was three or four minutes. So that's not ideal. But obviously with like caching and stuff, that gets better. And that's currently the worst case scenario for Polygon. One thing that is, oh, yeah, and one thing that's worth noting there is that as he said, like, it gets worse as more people send transactions. And so one thing that we also do is there's a small
Starting point is 00:40:08 toll associated with each send that you do on umbra and the reason is we don't like there's a a griefing attack that you could do if you just you know whatever when it like it doesn't you can't steal anything it's not stealing funds or anything but you could just make everyone's life difficult by like wash sending a bunch of you know transactions through to yourself you're not losing any money and but you're adding all these events to the send history that now become this sort of like um you know uh this sort of like uh challenge for everybody else to decrypt on their side, right? And so there's a small toll that's associated with each cent that you have to pay, and that's purely as like a spam mitigation method, right? So if you have to pay a couple of cents, which is basically what we have it said to right now for
Starting point is 00:40:52 each send, then you're going to be, you know, discouraged from sending thousands and thousands of these, which is what it would take to make a noticeable difference in the decryption time. And that's only on low fee networks, by the way, on main net, the gas fees themselves are enough deterrent to do that, but on roll-ups or side chains like Polygon, the fees are low enough that someone who just felt like, you know, felt like causing problems for everybody could do that for pretty cheap. And so we want to make sure we have a mechanism to prevent that. Sure. What happens to the fiends? Yeah, good question. Right now, they are just custodied by the contract. We have an admin key. It's the only admin. It's the only privileged role in the system that we have right now. That admin has the right to
Starting point is 00:41:36 withdraw those fees. But again, it's on the order of like cents per cent, you know, and we've had a few hundred thousand transactions across all of our networks every time. So you can kind of do the math on how much that is. It's not a ton. But it's there to prevent spam. Now, it is an interesting question because we are working to try to develop an EIP standard to sort of make this like a global standard that anybody could use. And so then the question becomes like, okay, well, that's fine for UMRA, which is developed by scope lift, but what happens when this is, when we're trying to make this into a totally decentralized public good, where do those fees go? Should we just burn them? But part of the challenge too is that you want to be able to adjust
Starting point is 00:42:19 those over time, right, to say, oh, you know, gas has gone up on this roll up network. So we actually don't even need the fee anymore. We want to set it to zero. Well, that's an admin privilege as well. So who gets that if you're trying to deploy this as a totally decentralized protocol, which is the goal? And so that becomes, that is one of the challenges that we have right now and that we're trying to figure out with the CIP. You could also just redeploy, right? I mean, there's no network effects at play here, right?
Starting point is 00:42:47 So basically, you could just always re-deploy and kind of reset the fees. Yes, that would be an option. I guess the only like challenge with that is. is, you know, it just makes the like client software more complicated, you know, if there's like multiple places that you have to check if there's been payments and stuff like that. So yeah, there's like an overhead cost associated with it, but you're right. There's nothing where it's like there's not like a liquidity pool or something like there might be with a D5 protocol where redeploying doesn't, you know, a redeployment has some disadvantage compared to the original.
Starting point is 00:43:22 Good point. So we've been talking about sending ETH, but obviously you could also send any ELC 20 token. And then in principle, basically, if I send, for instance, you five optimism tokens, you may be in a position where you cannot withdraw them from the address without doxing yourself
Starting point is 00:43:46 because you have no gas, no ether for gas on the address. How do you go about that? Yeah, really good question. So basically there are two paths in Umbra's contract, and one is for sending the base assets, so ether or like Matic if you're on Polygon or whatever, and then the other path is for sending E or C20 tokens, and they're different for exactly this reason. And so when you send ether through Umbra, what we do is we actually take that ether
Starting point is 00:44:14 and we send it straight to the stealth address, right? And then you as the receiver, you can withdraw from that stealth address, but what that really means is just sending a transaction as that stealth address to send the ether to wherever else you want to send it to. And that's an interesting question. I think we'll come back to in the future where to send it to, but that's a separate question from the one you asked. As a, if you receive tokens and we did that with tokens, let's say we just sent the tokens straight to an address. Like you said, you now have to fund that address. How do you do that without doxing yourself? This becomes a challenge because you have to pay gas fees to actually move the tokens.
Starting point is 00:44:48 So the way that we solve that is when you send tokens in UMRA, we custody the tokens in the address. and the stealth address, the stealth receiver, has to sign a message in order to withdraw them. They can withdraw them directly, so you're not completely relying on a relay area. If you can fund the stealth address without doxing yourself, that's the route you can choose to go. But by default, what's going to happen is
Starting point is 00:45:11 you're going to use a relaying service to withdraw the funds from the contract. So you have to sign a message with the stealth address that received them. You have to agree when you sign that message to pay a small fee to the relay, to compensate them for the gas, and then the relayer will take your transaction or take your signed message and use that to submit a transaction on chain
Starting point is 00:45:33 that the Umbra contract will validate and say, okay, yes, the stealth address agreed to let this relayer withdraw for them to pay this fee and send the tokens to this new to this other address while paying the fee to the relayer. So that's the system that we have in place for Umbra for EOC20 tokens. I mean, that makes total sense.
Starting point is 00:45:55 How do you go about receiving NFTs? So basically, obviously, that works for vulnerable tokens because you can just sell, you know, whatever portion of it. But if you receive an NFT, how do you send it on? Yeah. So the concept of stealth addresses work for NFTs, unlike other privacy tools, right? Because you can send an NFT to a stealth address and the same properties apply in that as it would be if you were sending tokens. Like, okay, I see that you've sent it to an address,
Starting point is 00:46:25 but I don't know who actually controls that address. So unlike, you know, mixers or something that require fungibility, the privacy properties that you get from stealth addresses applied to NFTs equally as they do to fundable tokens, which is pretty cool. There are challenges with like the one that you described, right? So currently today, the current version of member that we have in production does not support NFTs. And this is one of the reasons why it doesn't, right?
Starting point is 00:46:51 there are solutions there are things that you could do there the simplest and easiest and we do hope to and plan to support nfts in the future and future versions of umbrah one of the easiest things that you could do there would be to give the sender the option to include some you know base assets and eth uh along with the nfti when they sent it right so instead of it being a transaction that just sends the nfti the transaction could go through the smart contract to send the nfti and a small amount of eath to the stealth address such that the user on the other side could use that eth to pay for gas to move the NFT in the future. So that would probably be the simplest solution. If you don't want to do that, then you get into, well, what basically mixing and matching privacy tools. So how can I fund,
Starting point is 00:47:38 how can I use some other privacy tool to fund the stealth address in a non-doxed way such that I can then remove the NFT without reeling myself? You alluded to this idea, even after having received something on a new staff address, there's a myriad of ways to kind of still give my identity away. So what should I do? Maybe I can turn the ground. What shouldn't I do? Good question.
Starting point is 00:48:07 Yeah. So the obvious thing that you shouldn't do is just immediately send the funds from your self-address to a doxed wallet, right? If you do that, it's going to be pretty obvious that this, These were funds that were sent to you. And that's actually like a lot harder to communicate than you would think to users. And this is one of the challenges that we've had with Umbro, which is the crypto community as a whole has kind of, because it was basically the first privacy solution available, mixers were, that is,
Starting point is 00:48:36 the crypto community has kind of anchored on mixers as like their, their mental model around what privacy tools mean in crypto. And so a lot of people think like, okay, well, if it went in and then I take it out, well, it's private or something, you know, like as if like that's just, there's like some magic that happened in between the two things. But that's not the case, right? You've sent it to a new address. And so if you want to preserve your privacy, you have to make choices that do that, right? Right now, there are not a ton of great options. So one option would be, this is probably, I would say, the biggest challenge that stealth
Starting point is 00:49:11 has still have. And I think we're exploring a bunch of possible ways to solve this. But, but there's it's still a challenge. So one option would be if you've received funds to a stealth address, you can either just leave the funds in that stealth address or withdraw them to a brand new address and just continue using that address, right? So if you receive like a big payment of ether or something like that, that's like an easy thing to do, you could then take that eth and swap it and, you know, invest in defy or do whatever and just continue using, continue using that address.
Starting point is 00:49:46 and no one except the person who sent it to you knows that you control it, right? That's fine. If you have, now the one obvious question is, well, even that solution doesn't work for tokens, right? So what do you do with tokens? One of the things that we've built into the Umbra contracts is this concept of a post-withdraw hook. And the post-withdraw hook basically says when you take your funds out of Umbra, when you withdraw your funds from Umbra, not only can you move the funds to some other location, but you can take arbitrary actions as well.
Starting point is 00:50:17 So you can basically do an arbitrary transaction on the network in addition to moving your funds at the same time. And you can submit that all through the relays. You can pay for the relator to do it. And so like one example of a post withdrawal hook that we could build, we actually have the contracts for this, but we haven't integrated it into the front end yet. But it's a question as to whether the U.S. is good or not
Starting point is 00:50:37 and whether you just really want it. But one of the things we could build, for example, would be if you receive die, say, you receive 10,000 die, and you want to do what I just described, which is just keep using that without, you know, unchain without do dachshing yourself. You could do a post-withdraw hook to swap some of that dye for each. So now you have, you know, 9,900 dye in a new address with $100 worth of ETH to pay gas fees. And then you can, you know, deposit it in AVE and earn yield or whatever else you want to do, right?
Starting point is 00:51:07 So the broader point is that this idea of a post-withdraw hook gives us the surface area to, integrate, and the fact that, you know, Ethereum is a composable chain and has all these other things available, gives us the surface area to integrate with other things that allow you to make privacy preserving decisions. So another obvious option would be, you know, there's a bunch of other privacy tools out there that do different things, like just one that we've done some work with them and we're interested in their tool as well. It's called Railgun. I don't know if you're familiar with Railgun at all, but it's an interesting privacy solution. but Aztec would be another one that your users would be familiar with, right?
Starting point is 00:51:49 So when you think about those kinds of solutions, there are solutions where you kind of have to enter into a shielded ecosystem, right? And so you could create a post-withdraw hook where you withdraw your funds and immediately shield them into some other privacy-preserving ecosystem like Aztec or Railgun or any other that is or could be developed in the future, right? So that's another sort of like on-chain native solution. The truth is that what I think most of our users are doing today is a lot less sexy, but is practical for a lot of use cases, which is they get paid with UMRA,
Starting point is 00:52:26 like say they're doing some work for a DAO. You know, we've talked to users who are doing this. They're getting paid by a Dow. They don't want that completely legible on-chain. The Dow pays them via UMRA. And then they withdraw their funds directly to an exchange, right? And so they send the funds to an exchange and they cash out to Fiat or send them back on-chain somewhere.
Starting point is 00:52:42 else, you know, effectively using the exchange as a mixer, obviously not a very good mixer because the exchange knows who you are, right? So you have to be okay with that privacy tradeoff, but again, for a lot of use cases, that is acceptable. I mean, even if you're okay with the exchange knowing who you are, these days, exchanges only give you one deposit address. So if you use that trick and it's like a one-time trick. Yeah, it depends. Different exchange. do different things. A lot of them do do one deposit address per asset these days. You know, if you don't, if you only ever used it for Embra, right, then it allows you to consolidate the payments. So you can say like, okay, these different payments all must have
Starting point is 00:53:25 been going to the same entity, but you still don't know who that entity is. But you're right. It's a problem. So yeah, there are, there, this, this is, I would say, the biggest challenge that stealth address addresses have. The privacy properties are really nice in terms of receiving payments in this non-interactive way that aren't obvious on chain. But then it's not necessarily necessarily easy to make privacy preserving decisions after that, after you've received the payments, right? And so this is one of the things that we're working on. As I alluded to, there's this possibility for integrations via these withdrawal hooks. And I think it's one of the places where we can make a lot of improvements in the future. And like I said before, like, I don't think stealth addresses are like a, are like the silver bullet for privacy. Like they're one tool that has a specific or a set of specific use cases and properties. that are useful for certain things. And I think in the long term, in general, for the Ethereum ecosystem and for, you know, crypto ecosystems in general, I think there's not going to be like one tool that like,
Starting point is 00:54:25 oh, this is how you do privacy. It's going to be more like there's a bunch of different tools that give you different properties and you have to sort of know how to use them in conjunction with each other to get the level of privacy that you want and need for whatever your kind of situation is. And I think we can do a lot to make that the UX for doing that easier. But I think that's sort of the reality of privacy in crypto is that there's always going to be multiple tools and you'll have to understand the properties of the different tools
Starting point is 00:54:52 and make decisions to kind of like get the level of privacy you need. Yeah, I mean, as a user, I mean, to us, it seems almost normal. But I mean, if you explain it to anyone else, it would seem crazy, right? Basically, it's like, yeah, so what actually happens is you have several wanted in your different pockets. And you know, you can't mix and can't put like $5 from one to the other. Or everyone will know that they both belong to you. And if you want to, if you want to kind of consolidate,
Starting point is 00:55:26 you have to get like really big pass, kind of like the ad tech or radar gun analogy. And you have to put it in the past. And then in the past, you can exchange money from one wallet into a new wallet. And then basically there's enough to abstract away here for the average user. There is for sure. And so the UX, there's a ton of work to do to make the UX better. You know, I think like a couple things I would say to that.
Starting point is 00:55:56 One is that all of that does sound insane and is to a certain extent, like it'll get better, but it's never going to be, it's never going to be zero friction, right? All other things being equal, a solution that gives you more privacy is probably going to have some additional friction and some additional cost than a solution that doesn't, right? Just sort of logically, that's the case. And so users have to decide the level of privacy that they want and need and are willing to pay for and willing to put up for with an additional amount of friction. One of the things, by the way, that is just a reality of the privacy space, in my opinion,
Starting point is 00:56:35 and learn this firsthand with Umbra is that privacy is one of those things that everyone says they want, and everyone says that they're willing to put up with some friction or additional cost to get. But revealed preferences seem to be that a large chunk of the population, a majority, a large majority, actually doesn't feel that way. Because if you put even the smallest amount of friction or additional cost in their way to achieve privacy, they just don't do it. They choose not to do it. And so, yeah, that's just like, you know, for some of us like myself, like it just is, that's insane.
Starting point is 00:57:11 Like it just like we like, like why would, you know, but that does seem to be the reality. That's okay. Like people can and should make the decisions that they want, but we want these tools to exist and to have the lowest friction and barriers as possible out there. The other thing that I'll say about something that makes building a privacy tool challenging is that there are users out there who do care about privacy. and care about it quite a lot. And for whatever reason, maybe their circumstances, maybe just their disposition, really want the maximum privacy that they can get
Starting point is 00:57:41 and they are willing to pay for it. It turns out, though, that it's really hard to talk to those people because they value their privacy. And so doing user research for a privacy tool and understanding the use cases that people care about and what they're using and what they're not is really hard because those people don't want to talk to you for good reason, right? So this is just a general structural problem with creating privacy tools.
Starting point is 00:58:09 It's really hard to understand your user base. It's really hard to understand if you have product market fit or not. And I don't have a great answer to that. We kind of just have to like stumble forward. I mean, even something like as simple as like we, right, the UMRA app does not have any client side analytics at all. Right. And that's because we felt like it doesn't really seem right to have a privacy tool and a front end for our privacy tool and then be like logging every single action that our user takes tied to their IP address, right? So we don't do that. But that handicaps us, right? Because we don't know like, oh, like that feature that we shipped, are people really using that or not? Like we don't know and we can't tell easily, right?
Starting point is 00:58:49 You know, some things have like a footprint on chain that you can follow. Like, okay, we know that people are sending this token because we can see the funds flowing through. We don't know who they're signing them to, but they're doing it. So obviously, like people wanted to send that token. But we don't, you know, other than that, like more detailed, intricate stuff, we don't know because we choose not to, you know, invade our users' privacy because it's a privacy tool and that would be counterproductive, right? So it's just a structural problem with developing privacy tools, I would say, in general.
Starting point is 00:59:19 I also find that people usually say they value their privacy, but no one actually runs their own node. I mean, in FURRC is everything you do. Correct, yes. But it's not that difficult to run one, but people don't care, right? So basically then kind of needs to be quick and same for desktop apps. So I think people should really use them. Anyways, I have one more area that I would kind of like to explore. And that's smart wallets and account instruction.
Starting point is 00:59:56 So in my understanding, kind of using this stealth address model, but only works for EOAs, right? It doesn't work for smart contract wallet as it does. Okay, fantastic. I see you're nodding. So talk me through it. So sort of. So the scheme that we used today that I described earlier is we have you use your EOA to sign a message to generate that public private key pair. we effectively do that as a convenience layer thing right like it's a because we want the we want users to be
Starting point is 01:00:34 able to to use the setup they already have which for most people is a wallet like metamask or a wallet connect wallet on their phone or whatever with an EOA right and and so that's sort of like the setup that we have today signing messages but but there's no reason that that is the way that the that you have to generate the public private key pair in that way right so like you can generate a public private key pair at any way that you would like. And as long as you publish it in the registry and don't lose the associated private keys, then you're good. And so there's nothing that prevents this from working with a different wallet. And in fact, you know, these account obstruction law, some of the ones that exist, I'm not going to be able to remember up on my head. But there's like
Starting point is 01:01:16 a standard for how they do message signing, like how you sign a message with a notice to save or whatever. or like, you know, maybe you would know a bit more about that, actually. But, you know, the, yeah, there are ways that you can do that. Now, where it gets tricky is, like, some of these wallets, they have, like, the idea of, like, social recovery and stuff like that, right? Where it's like, you, if you can completely lose your private keys and still, like, get all of your assets back. That part doesn't work with UMRA because at the end of the day, there is a public and a private key. There is a public key published somewhere, and that's the public key that someone is using to,
Starting point is 01:01:50 to generate the stealth address that's receiving the funds. And so there has to be a private key that you like preserve somewhere, right? And don't lose. And so if you, you know, use some wallet that has account obstruction and social recovery and you lose the private key that's associated with that and the one that you lose the private key that was used to like generate the public key on Umbra. And then someone sends you funds. Just because you social recover the rest of your app doesn't mean you're going to be able for the rest of your your assets that were stored in that that wallet doesn't mean you're going to be able to go get your funds that haven't yet been withdrawn from umbra out of the system right because those funds were sent using a specific public key if you lose that private key there's
Starting point is 01:02:32 there's nothing that we can do right so i wouldn't say it's not possible to use with these you know smart wallets and whatnot it just adds like a layer a little bit of layer of complexity and it again at the end of the day you have to you have to retain this this key material right um and if you know Today, if you're using an EOA, we do that via the signature, so it's not a big deal. You already have to retain the key material of your EOA, you're fine. But when you get into these social recovery mechanisms and whatnot, it adds a layer of complexity that you have to think about. Maybe switching gears a little bit. How do you think we get to a word where people care about privacy, right?
Starting point is 01:03:12 Because basically, if you think on it, there had been so many revelations over some. say the last 20 years or so. Back in the day, people said, you know, why would anyone spy on me and I'm boring? I have nothing to hide and so on. But it's become so apparent that this is not a blocker. Even if you're really boring, lots of things can still be learned from you
Starting point is 01:03:36 and are learned from you unless you are incredibly sophisticated. What do you think it would take for people to win back their outrage and kind of ask to take back their privacy or just take back that privacy. Do you think it's kind of a little bit like, you know, the analogy with the frog, it's being slowly boiled, right? So when's the point you kind of jump out? Is it going to kind of make people care about their own privacy? I don't know. If there was, I wish I knew it. I don't know. I don't know is the short answer. I mean, we'll have a few thoughts on it. Like, in terms of like individuals, like quote unquote, everyday people, whatever that means, normies, not meant pejoratively
Starting point is 01:04:25 at all. Like, I'm not sure the majority of them are ever going to care unless, like, things get really bad in whatever jurisdiction or, you know, particular locale that they're in, right? Like, and, and they really are being targeted in an obvious and visceral way that motivates them to, you know, really start taking it seriously. I just, you know, I'm not sure that. And so maybe we can move the dial a little bit, get a higher percentage of people to start caring, but I'm not sure that, you know, unless, unless for you as an individual, things get really bad, your most people are going to care. And, you know, look, to a certain part of the answer is like, that's, maybe that's okay. Like, if people want to make
Starting point is 01:05:03 those decisions, like, that's, that's their prerogative, et cetera, et cetera. You know, to me, it's like self-evident that you should want better privacy, but like, obviously it seems not to be for everyone, right? That that's like a self-evidently good thing. So yeah, it's just an interesting reality. And I'm not sure I have an answer on the individual level. One thing that I will note, and this is like part of our thesis with Umbra as well, is that like, whereas individual, you know, people seem not to unmask care about privacy as much as they quote unquote should, whatever that means, right? Like, it does seem, it seems self-evident that businesses and commercial applications care about some level of privacy more than maybe the average user does, right? So if you're a
Starting point is 01:05:48 business and you have some relationship with a vendor and you're paying them some amount, right, that's not something that you're trying to hide from like a nation state, but it isn't something that you want blasted out in public for everyone, right? And same with maybe like things like paying for things on e-commerce, right? Like, I think that This is another example where maybe you can get like the average user to care at least a little bit, right? Like, okay, would you want every single e-commerce vendor that you used? Like, is there anything that you buy that maybe you don't want everyone knowing that you're buying that thing, right? Like, like maybe it would be better if there was some kind of privacy payment system that kept that at least not completely legible.
Starting point is 01:06:29 So, yeah, I mean, I don't know. I don't have a silver bullet there. I think certain people are just never going to care. People will care maybe when things get really bad in their particular situation. Businesses will care. And then some percentage of the population does care. And I think we just have to find ways to make these tools available so that when and if people need them or want them, you know, they have the option and make it as easy as possible to adopt them. I think that's a fair assessment.
Starting point is 01:07:01 So where can people learn more? about Umbra, where can they look at the code, where can they join the community? Absolutely. So you can go to app.unbara.cash to use the app. You can publish your keys with one cheap transaction and then you can receive payments there. You can join our Discord, which is linked on the site as well. And that is where we do announcements and people chat. and, you know, if there's ever any tech support or anything needed, you can find it there.
Starting point is 01:07:37 The GitHub page is also linked on the app, but it's Scoplift slash Umbra-Dash protocol. And it's a mono repo that has the front end, the smart contracts, and the SDK for interacting with those contracts all are hosted there. And you can check that out if you're a developer. And then Umbra is on Twitter at At Umbra Cash. and you can follow us there for announcements and whatnot as well. Perfect. Thank you so much for coming on, Ben. It's been a pleasure.
Starting point is 01:08:09 Thank you very much. It's really been a great conversation. Appreciate it. Thank you for joining us on this week's episode. We release new episodes every week. You can find and subscribe to the show on iTunes, Spotify, YouTube, SoundCloud, or wherever you listen to podcasts. And if you have a Google Home or Alexa device,
Starting point is 01:08:27 you can tell it to listen to the latest episode of the Epicenter podcast. Go to epicenter. dot TV slash subscribe for a full list of places where you can watch and listen. And while you're there, be sure to sign up for the newsletter, so you get new episodes in your inbox as they're released. If you want to interact with us, guests or other podcast listeners, you can follow us on Twitter. And please leave us a review on iTunes. It helps people find the show, and we're always happy to read them. So thanks so much, and we look forward to being back next week.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.