 So, I'm Alex van der Sonde and I want to talk about the big UX problems. And I think UX is, it's important to talk about UX because UX is as important as scalability. There's no point in having a blockchain that can handle a billion transactions if your apps can't reach half a billion users, right? So that's why it's so important to pay attention to that. Now, before I was in Ethereum, I was just in a startup world. I founded startups, failed at most of them, and we learn a lot of metrics that we keep our eyes on when we are in the startup world. Things like the K-Factor, Virality, SEO, and we don't talk about those here because it seems that we sort of work in a different level, right? Those rules don't apply to us. But that's not true, right? We are in the same game and we need to pay attention to things like this. This is the equation that I used to spend my days looking at. It's basically, it's also called the K-Factor and it's a virality measure. Basically, what you're doing is every time your user is exposed to your app in any way, there's a chance that they might actually pay attention. If they do, there's a chance that they might want to sign up. There's a chance that they might complete the sign up process, that they might download the app, and after a bunch of steps, they might share some content to, let's say, 10 or 30 friends. Here's the basic thing. Multiply all those factors. If it's above one, then your app is going to go to exponential growth. If it's slightly below one, then your app is dying, and paying attention to that is the life or death of your app, because for every user, you're losing more users, and it means that you need to put more money to attract more users, and that doesn't work. How does it work for Ethereum apps? For any Ethereum app, it looks terrible. It looks something like this, where you go, oh, a CryptoKitty, that's interesting, and then the user has to go into a whole rabbit hole, where they need to read a quick Wikipedia for Ethereum, and at some point, they are taking a selfie with their passport so they can get a Coinbase account so that they can get validated in three months. That's crazy. No normal app would do that to you, and that's why outside of us, outside of us, the viral factor, it's zero. It's not like 0.9, which is bad, it's zero. We've had more ICOs last year than we have more daily active users anywhere, and that's sort of the point. The point is that if you want to pay, the point is if you want to reach something else than like us, the tech enthusiasts, those who go to tech conferences, we need to reach normal people. I'm not getting the thing here, but it's going there, right? And what do normal people want? Normal people, they don't like average users, the medical average users, they don't care about Ether, they don't care about your token, your ICO, your Kiosk, they just want a username, they just want to use an email, if they're going to buy something, why can't they use a credit card? They don't understand why they can't use a credit card. And here's another thing. Your users sort of expect to be able to use multiple devices with the same account. And that's something he takes for granted, and it's super hard for us to do. How do we solve that problem? First attempt we tried is every time you download a new app, you create a new account, you write down a new seed phrase, you have to move Ether to it, and if you want to use the same account, let's say, and then you install it in your iPad, and then you have to do the same process and pay to make the transaction so you can use both your iPad on your, it's crazy. And then we move to a even worse solution, which is let's type your private key everywhere. Oh, it's here. And I mean, there are bad solutions. There are solutions that are so bad that they create a scam industry so big that Elon Musk goes on Twitter and complains about it. And I'm very happy that we are sort of getting out of this phase where we ask people to type their private key or the seed phrase in order to log into the app. But we are going into, I'm seeing like a few other startups are trying to solve the problem with a wonderful interface, with a username, an email, you go to the server, it's super slick, it's beautiful, and I bet there are a few people like in this room that are working on that solution right now. And if you are, please stop because if you succeed, here's the thing, if you succeed doing that, we all fail. Because I'm not building, we are not talking about decentralization for you to build the next Facebook Connect. Because that's what I'm describing is just Facebook Connect for Ethereum, where you keep all the private data with them. And like, we cannot accept that. Like, we don't want that to be the future. And I think we can do better. And how I think we can do better is this thing I'm calling universal against. It's not a single service, it's not a single website, it's an architecture that I hope a lot of, that any app can introduce. And here how it looks, this is all like live code running, I'm just recording it just because it's easier. But the idea is that it's just like a website where you click and you type your name. That's all you need to do. And I even like show you multiple user names that you can pick, sort of like you can pick multiple emails. And when you do, you're logged in. And here's a nice thing. When you're logged in, I'm giving you stuff. I create some tokens, I'm giving you tokens. The idea being it's gamification, another word we don't use a lot. The idea being that every time you do something, a few actions will cost tokens, other actions will get you tokens. So you're incentivizing the user to do the right things. One of those right things is when you create a new user name, you get a bunch of tokens. And here's the app. The app, you can see the token is called click. And I'm just, it's just a single, there's a header and there's a single button. And that button is tied to a smart contract. When you click that button, it costs you one token, exactly one token, forget gas freeze and et cetera. It just costs you one token. And when you click it, you can see that your name is down there on a list of people who press the button. The app does nothing. You just click it and it says you click the button. But the interesting thing is that you just interacted with a smart contract the first time on a normal browser without having to download anything to sign up anything. And for the smart contract itself, it sounds like you are, you are just a normal user account. Okay. But it sounds weird, Alex. There's no password. There's no nothing. How do I even like sign up with an iPhone, let's say? Here's how you do it. You just type your name. What's your, like you say, look, I'm Bob. And the nice thing is that once I can detect that you are Bob, I can see, look, Bob already exists. So instead of creating a new username, I'm going to connect you with Bob. And when you click connect to you with Bob, I will receive a push notification on my browser and I'm going to click there and say, yeah, that's me. That the person that was trying to connect on an iPhone, on this IP, on that time, that's me. You can accept it. What happens is that both your devices will be synchronized. And you'll be able to see soon that on the top there, there's like your, oh, yeah. And you just get more tokens because you added a new device. And you can see it's the same address, the same icon, because from the point of view of the app, you are using the same material account. And whatever you do in one side, it will reflect to the other, right? So if I click on the phone, it will click on the desktop. If I click on the desktop, it clicks on the phone. And here's another thing. The phone itself is not a master key. I'm not doing this thing where you do something on the desktop and then you have to approve in your master phone device. No, every device you add, every new app you add, can be an approval or a signer for the other apps. Which is already great because you can have multiple devices, multiple apps, everyone using the same username. But what if I lose all my devices? Well, if you lose all your devices, we can do something extra where I can create a new code for you. I'm not just going to go very quickly. The idea is just you click and generate some codes on the browser. I'm not actually backing up the keys. I'm just generating new codes on the browser, which you'll be able to use. That's the code. You can print it and then maybe cut them out. Keep them one year safe, one in your mom's house, the other if you're a lawyer. I don't know, maybe laminate them if you want. But the idea being, if you lose all your devices, you can still have access to it via the recovery code, which is sort of very easy. And how do you sort of, same, when you click the backup code, we have this three-step security thing where every time you do something you like, you get more tokens. And bling, you just got your latest thing checked out so you're super safe. How do you do the recovery then? Just same thing. Let's say you lost all your tokens. Go on the website, type I am Bob. And instead of clicking Connect, notice that there is a Recover button. On the Recover button, you just type one of those codes. And I'm actually typing it instead of just copy-pasting it to show you it's not something as complex that you need to actually have a QR code or a digital file. It's something that you can actually write. You might be able to remember it because it sounds like a Star Wars planet. But it's not memorable, but it's writable. You can write that down in a piece of paper somewhere. And when you do, you're logged in. Notice something that I was able to log in in multiple devices. I have a paper wallet. I have shown you a bunch of stuff. Here are the things I did not show you. No mention of Ether, no hack strings, no passwords, no QR codes, incremental security. It means that the first time the user logs into the app, he can immediately start playing with it. Only after some time some value has passed, I tell them, you should probably download a smartphone. Maybe after a few months, or maybe after they have a lot of value, maybe you encourage them to print and download the codes. And the user just deployed a modifactor self-sovereign smart contract with no identity. And they didn't even notice. The thing is, we are tricking users into using modisig. Modisig is a complicated, complex thing that only advanced developers do. And instead, I'm tricking them into using it without realizing. So what's the magic we are doing? The first thing is that every app has its own private key. Generate the private key, as we already do with apps. The difference here is that don't try to back it up. Don't try to take it out of the device. Don't keep any money or anything on that private key. Instead, use that private key to write, to sign a message telling a smart contract to do something. We call those messages meta transactions. We probably saw this word, you probably seen like this meta cartel thing going around. That's it. It's about a meta transaction is a sign message telling a smart contract to do something. And how do you do something if you don't have ether on that device? You have a relayer. Who's the relayer? Anyone with ether, an internet connection, can be a relayer. You can set a relayer for your app. You can create a decentralized relayer network on Whisper. The idea is that the relayer, someone who takes that message, pays the gas cost to publish it to the blockchain, and then the contract does something. But wait, why would someone pay that? Because the smart contract, because it's smart, can pay back the relayer. It can pay back even depending on how much ether, how much gas they spent. So what you're basically saying, signing messages, saying, look, I'm willing to pay, let's say, one die or three status tokens for someone to deploy that message for someone. And now anyone in the relayer network can look at that and say, hey, I think I can probably deploy that for less than that. So I'm taking that. I'm getting that money. If you need extra recovery keys, make an extra backup for it. Don't do a backup of that. Just do an extra one. The advantage being, because it's a smart contract, you can add conditions. Let's say you can only do a recovery key after the contract has been inactive. Or maybe you need to have five trusted friends who will be able to do a recovery. You can be creative on whatever you want to do because it's a smart contract that's doing the recovery. It's not about just recovering a single key. And we have something very cool also. They're called counterfactual contracts. I hate the name, but basically it's a deterministic contract address, which is the idea that you already have the contract address before you deploy it. That means that you can already send funds to it. You can send tokens or ether to the contract address before you deploy it. It means that you can pretend for your users that his account is live until they pay it, and then you deploy the contract. And because it works on multiple chains, you can deploy it on a test net or on a side chain and only move it to the main chain after the user has passed some sort of tree showed. I'm still looking for a better name for that. So another cool thing, authorization terms per key. Not every key is the same. Not every key is as safe as the other. Browser keys are not as safe as other keys. So one of the things you can do is that some keys can add transactions. Other keys cannot add transactions, things like that. It's better for users. It's better for apps, because every time you install a new app, you have more security, and you have cross compatible user names. Users don't need ether, and that means you can have more open business models. For instance, you can have a subscription model where the user just goes in and you pay his transaction for free. And then you just ask, you have a credit card system where you just charge them five months per day. So we have less than five minutes. So yeah, we had a very quick thing here, but I think we are going to, OK, can you do it in two minutes? OK, just two minutes. Wanted to show you how simple the API we build is. So to start using universal logins, all you need to do is to create SDK. SDK has just two parameters, the address of Relayer and the address of the Web Free Note. Then it just one command to create an identity. You just specify the name of the identity, ENS name of the identity, and you have a private key and identity address as a return. And bam, you can send your transaction, which looks pretty much the same as any Tune transaction with this extra gas token parameter. So we can say, pay in something else then. Either Anna, I think we're running out of time. Thank you very much. OK, now here's the thing. I don't want here for us to build the best on-boarding experience on the Web. I think we can use the Ethereum technology to build the best on-boarding experience anywhere because there's no passwords and you are in control of your own identity. You are in control of your own funds, which is something we don't find in Facebook. As a final thing, I would like to thank the Keating Community Fund on fPrize. They have a generous grant that has made this work possible. And of course, the Tune Foundation has been supporting all the crazy stuff I do. Thank you. Thank you, Anna.