Opportunities in the Decentralized Apps World
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Müffke, Friedger
Cryptocurrencies, blockchain, decentralized apps are seen as new opportunities in the next era of the internet. These technologie are still at the early stage when it comes to its possibilities in the mobile world. In this session, I will give an overview of decentralized app platforms that can be used on Android devices already now or in the near future. The audience will see how to integrate smart contracts, decentalized identities and storage into their apps and learn about use cases and non-use cases of these technologies. During the session no tokens will be harmed or endorsed.
 I have a wife and these are our initials and I have decentralized with three kids. And so I'm interested in decentralization and decentralization, a decentralized system is a system is one which requires multiple parties to make their own independent decisions. So centralization became popular in the post French Revolution around 1800s when the French government structure became decentralized. And then also the word decentralization was introduced. But nowadays with the introduction on the internet in 2000s with peer-to-peer networks becoming popular and recently with Bitcoin cryptocurrencies and in general distributed ledger technologies. So they became popular and decentralization became a new meaning. And these are all technologies that you're using when you want to develop decentralized apps. So I don't go into the technical details, how these all relate, but I want to give you the easy start to develop apps. But first let me give you a disclaimer. So this is incomplete. Technology is still in alpha. So we are very early. We have five years to go or 10 I think. And also society is not yet ready. So keep that in mind if you dive into decentralization. And I don't give any financial advice. What is blockchain? What is decentralization? Try to solve. So it's really about intermediaries. If you lost trust in the third parties, the middle man, if you lost control of your data, then you want to think about decentralization. So intermediaries became so powerful that they can decide the rules, how you, how and who is using platforms. So if you think that's a problem, then let's start doing decentralized apps. At first try to become a user. So look out for merchants that accept cryptocurrencies. Try decentralized apps. So there's an app store that is technology agnostic, app.co. There you can have a look what is available nowadays and try to use them. Make your own experience. Teach your friends and family what you experience. And then decentralization only works when it's open source. And as we're coming from cryptocurrencies, there often are opportunities when you contribute that you get rewarded in one or the other way. So starting developing apps. I think there are three main application components that you can incorporate in your app. The first one is decentralized identities. So it's about how the user authenticates to your application. The important thing is that it's sovereign. So the user can create an account, an identity profile without a third party. And all the other users in the network can verify this user without a third party. So you have to distinguish between two identity providers. One that tries to identify a person. So one person has one identity. And then there are others that say entity, a person also can have several identifiers. So it's more like you have profiles of a person. If you interact with identity providers, you have to make your choice or see what you need, what you want. They solve different problems. But all try to get rid of the password problem. So you want to get rid of passwords of out tokens. That's what you don't want. And there's a W3C working group that tries to provide standards. And in your app, probably you should replace your login screen. Think about the login flow in a different way. It is about, as I said, forget about out, forget about emails. What you get is a distributed identifier. So here the DID example, 123. And so it's the scheme. And then comes the protocol of the network. And then the user identifier. And with this identifier, that's all you need to make whatever you want to do. So important thing is you get this ID from the authenticator that's on the device. So your app talks to an authenticator and you get this identifier back without talking to any server, without your own server, without third party server. You get that from the device. And only the authenticator has the credentials of the user, the private keys or whatever is needed to authenticate a user. So you don't deal with it, you don't have the responsibility to secure this. And only the authenticator talks to the network. The second component is about distributed state. It's all about what smart contracts are about. So you have an application, you have a state of your application and you want to make a change and that's where the smart contracts come into place. You push this to the network, then they come to a consensus, they agree this is a new state of your application and once they come to a consensus, it cannot be changed. So again, this one is really nice because you don't need a server to maintain this data to control the state. It's done in the network. So it simplifies all of this. And if you are not in control of how you change the state, you have to review probably your business model. I cannot solve that. It depends on your problems. But once you say, okay, I want to use smart contracts, you have the possibility currently there are some libraries that are available, the rest APIs to talk to these and their web views. So that is because, sorry, that is because, yeah, so most networks focus on the web. So most platforms. They are 23 listed on the awesome smart contracts on GitHub with more than six languages to write your smart contracts in. And there is, yeah, not really a solution like the authenticator that sits on here. The only thing is you can enter your private keys. You don't want to do that. Only if you do Google sign APKs. So you don't want to educate your users to give private keys into your app. Someone else has to deal with that. You can delegate the change of state to wallets. So they now know how to talk to the network. But there is not really a well-defined interface yet. So there are some projects, some efforts to define this, but I couldn't find really good way. What worked for me was the only thing that worked for me was the Firefox add-on. So for Metamask, you have Firefox add-on. And there you can log in and delegate to do the transaction through the Metamask on Ethereum. So that's what worked for me. Let's see. What else? So now you have your stage change distributed all over the world, but you also want to store some data. You don't want to do that in the network. It's probably far too expensive. So you have to think about where can I store lots of data. And there are some solutions. The advantages are that you are less prone to attacks on losing your data because you are diverse on location. And you have to distinguish between distributed storage, so where your data is on one of all these nodes, you don't know where, you don't care. Or you have approaches where the user controls where to store the data, and the app does not know about it and does not care about it. So there's an interface where you say, give me the data, and then the network makes sure that the application gets the right data from the right place. And yeah, so if you store your data somewhere decentralized, your app does not need a server. So that's really cool. Ideally you should access the data through the storage access framework in Android, but I haven't seen any solution, any project that does that yet. So something for the future. And now you just have to integrate a library or use an SDK to talk to the API for storage. Now so these are the three components that I wanted to show that's in general. If you want to go into verticals, I picked a few that can be done, usually decentralized payments. It's interesting, so you have to distinguish between what's the transaction fees, how fast can transaction happen. And currently the problem I would say is that onboarding is hard for the user, so don't expect to have it as easy flow. To integrate it in your application, you could use a pay to intent, but no one supports it because, yeah. And so you have to integrate another payment provider into your app, and it can be just in addition to that, to that existing payment providers you have already. Decentralized communication. So here the goal is really to have openness that the user does not need to, it's not limited to talking to the users in the network, but to talk all the users all over the world. So this depends on the distributed identifiers, and then you have the possibility to go further. Integration is also through probably SDK. It's nothing, I can't think of at the moment that has a better interface for your application. And then you have decentralized content distribution. You want to have, I don't know, YouTube decentralized or a block, and there usually you get a new Euro scheme, so there's some application that can deal with that, and you can use view intent to delegate to that application. And there's a problem of routing, so how you find this content in the decentralized network, and yeah, also how to discover it. There's problems in these areas, and the same thing is there's no interface. If you really want to see code, then come to Larry's talk at 335 in JellyBane, and he will go through a real example with Android code and Android SDK to integrate all these components I explained about. And if you need more pointers, so here's my personal list, I'm interested in. Feel free to ask me any questions on, I don't know, Twitter or BlockStack or EOS or in person now. Thank you. Thank you so much. Are there any questions? Next slide. Thank you.
 I have a wife and these are our initials and I have decentralized with three kids.  And so I'm interested in decentralization and decentralization, a decentralized system  is a system is one which requires multiple parties to make their own independent decisions.  So centralization became popular in the post French Revolution around 1800s when the French  government structure became decentralized.  And then also the word decentralization was introduced.  But nowadays with the introduction on the internet in 2000s with peer-to-peer networks  becoming popular and recently with Bitcoin cryptocurrencies and in general distributed  ledger technologies.  So they became popular and decentralization became a new meaning.  And these are all technologies that you're using when you want to develop decentralized  apps.  So I don't go into the technical details, how these all relate, but I want to give you  the easy start to develop apps.  But first let me give you a disclaimer.  So this is incomplete.  Technology is still in alpha.  So we are very early.  We have five years to go or 10 I think.  And also society is not yet ready.  So keep that in mind if you dive into decentralization.  And I don't give any financial advice.  What is blockchain?  What is decentralization?  Try to solve.  So it's really about intermediaries.  If you lost trust in the third parties, the middle man, if you lost control of your data,  then you want to think about decentralization.  So intermediaries became so powerful that they can decide the rules, how you, how and  who is using platforms.  So if you think that's a problem, then let's start doing decentralized apps.  At first try to become a user.  So look out for merchants that accept cryptocurrencies.  Try decentralized apps.  So there's an app store that is technology agnostic, app.co.  There you can have a look what is available nowadays and try to use them.  Make your own experience.  Teach your friends and family what you experience.  And then decentralization only works when it's open source.  And as we're coming from cryptocurrencies, there often are opportunities when you contribute  that you get rewarded in one or the other way.  So starting developing apps.  I think there are three main application components that you can incorporate in your app.  The first one is decentralized identities.  So it's about how the user authenticates to your application.  The important thing is that it's sovereign.  So the user can create an account, an identity profile without a third party.  And all the other users in the network can verify this user without a third party.  So you have to distinguish between two identity providers.  One that tries to identify a person.  So one person has one identity.  And then there are others that say entity, a person also can have several identifiers.  So it's more like you have profiles of a person.  If you interact with identity providers, you have to make your choice or see what you need,  what you want.  They solve different problems.  But all try to get rid of the password problem.  So you want to get rid of passwords of out tokens.  That's what you don't want.  And there's a W3C working group that tries to provide standards.  And in your app, probably you should replace your login screen.  Think about the login flow in a different way.  It is about, as I said, forget about out, forget about emails.  What you get is a distributed identifier.  So here the DID example, 123.  And so it's the scheme.  And then comes the protocol of the network.  And then the user identifier.  And with this identifier, that's all you need to make whatever you want to do.  So important thing is you get this ID from the authenticator that's on the device.  So your app talks to an authenticator and you get this identifier back without talking  to any server, without your own server, without third party server.  You get that from the device.  And only the authenticator has the credentials of the user, the private keys or whatever  is needed to authenticate a user.  So you don't deal with it, you don't have the responsibility to secure this.  And only the authenticator talks to the network.  The second component is about distributed state.  It's all about what smart contracts are about.  So you have an application, you have a state of your application and you want to make a  change and that's where the smart contracts come into place.  You push this to the network, then they come to a consensus, they agree this is a new state  of your application and once they come to a consensus, it cannot be changed.  So again, this one is really nice because you don't need a server to maintain this data  to control the state.  It's done in the network.  So it simplifies all of this.  And if you are not in control of how you change the state, you have to review probably your  business model.  I cannot solve that.  It depends on your problems.  But once you say, okay, I want to use smart contracts, you have the possibility currently  there are some libraries that are available, the rest APIs to talk to these and their web  views.  So that is because, sorry, that is because, yeah, so most networks focus on the web.  So most platforms.  They are 23 listed on the awesome smart contracts on GitHub with more than six languages to  write your smart contracts in.  And there is, yeah, not really a solution like the authenticator that sits on here.  The only thing is you can enter your private keys.  You don't want to do that.  Only if you do Google sign APKs.  So you don't want to educate your users to give private keys into your app.  Someone else has to deal with that.  You can delegate the change of state to wallets.  So they now know how to talk to the network.  But there is not really a well-defined interface yet.  So there are some projects, some efforts to define this, but I couldn't find really good  way.  What worked for me was the only thing that worked for me was the Firefox add-on.  So for Metamask, you have Firefox add-on.  And there you can log in and delegate to do the transaction through the Metamask on Ethereum.  So that's what worked for me.  Let's see.  What else?  So now you have your stage change distributed all over the world, but you also want to store  some data.  You don't want to do that in the network.  It's probably far too expensive.  So you have to think about where can I store lots of data.  And there are some solutions.  The advantages are that you are less prone to attacks on losing your data because you  are diverse on location.  And you have to distinguish between distributed storage, so where your data is on one of all  these nodes, you don't know where, you don't care.  Or you have approaches where the user controls where to store the data, and the app does  not know about it and does not care about it.  So there's an interface where you say, give me the data, and then the network makes sure  that the application gets the right data from the right place.  And yeah, so if you store your data somewhere decentralized, your app does not need a server.  So that's really cool.  Ideally you should access the data through the storage access framework in Android, but  I haven't seen any solution, any project that does that yet.  So something for the future.  And now you just have to integrate a library or use an SDK to talk to the API for storage.  Now so these are the three components that I wanted to show that's in general.  If you want to go into verticals, I picked a few that can be done, usually decentralized  payments.  It's interesting, so you have to distinguish between what's the transaction fees, how fast  can transaction happen.  And currently the problem I would say is that onboarding is hard for the user, so don't  expect to have it as easy flow.  To integrate it in your application, you could use a pay to intent, but no one supports  it because, yeah.  And so you have to integrate another payment provider into your app, and it can be just  in addition to that, to that existing payment providers you have already.  Decentralized communication.  So here the goal is really to have openness that the user does not need to, it's not limited  to talking to the users in the network, but to talk all the users all over the world.  So this depends on the distributed identifiers, and then you have the possibility to go further.  Integration is also through probably SDK.  It's nothing, I can't think of at the moment that has a better interface for your application.  And then you have decentralized content distribution.  You want to have, I don't know, YouTube decentralized or a block, and there usually you get a new  Euro scheme, so there's some application that can deal with that, and you can use view intent  to delegate to that application.  And there's a problem of routing, so how you find this content in the decentralized network,  and yeah, also how to discover it.  There's problems in these areas, and the same thing is there's no interface.  If you really want to see code, then come to Larry's talk at 335 in JellyBane, and he  will go through a real example with Android code and Android SDK to integrate all these  components I explained about.  And if you need more pointers, so here's my personal list, I'm interested in.  Feel free to ask me any questions on, I don't know, Twitter or BlockStack or EOS or in person  now.  Thank you.  Thank you so much.  Are there any questions?  Next slide.  Thank you.
_DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_0_227.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_228_1175.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_1176_1679.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_1680_2219.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_2220_2855.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_2856_3875.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_3876_5039.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_5040_5159.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_5160_5411.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_5412_5543.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_5544_7535.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_7536_9191.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_9192_11087.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_11088_13403.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_13404_15875.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_15876_16187.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_16188_17327.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_17328_18227.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_18228_19655.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_19656_19967.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_19968_20447.png _DCBerlin18_403_MuffkeOPPORTUNITIES_IN_THE_DECENTR_mP_NicVFz8Y_20448_20461.png