New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Integrating Ethereum Into Our Daily Lives - Jarrad Hope

DevconMon, Oct 9, 2017, 12:00 AM

Status is a hybrid DApp Browser / Instant Messenger client built with Whisper and Ethereum. We had been mentioned in DEVCON1 as being a recipient of a DEVGrant for our EthereumJ work and we have since moved beyond that and are very excited to show off what we have been working on.

Transcript

all right cool hi my name is Jared I've been active community member in ethereum since like 2014 my background is actually in software distribution here I'm today to talk to you about integrating aetherium into our daily lives using status a therm light client developed for Android and iOS but before I do I kind of want to talk about my my personal motivations and why I believe in aetherium so in recent history like you can see many cases of like economic collapse institutional failures and large populations of people who have no access to dependable legal technologies and of course these are complex problems but I believe they stem from our inability for us to adapt socially fast enough but what if we could create digital spaces and where we can experiment with new ideas new economic models new policies and new ways of socially organizing social systems as operational closures in which we have unprecedented access to the entire economies history down to the very transaction level and the social contracts that bind them what if we can then use this data to discover something new and then deploy it globally within 30 seconds or less for anyone to use voluntarily that's the kind of world that I want to live in but none of that's really possible until we start getting a fair iam into the hands of people show of hands who has a smartphone with them right now there's more than more than that now keep keep your hand up if you don't have your laptop with you right now right so smartphones and now the new personal computer in 2014 they Dover take overtaking desktops in users and now we're seeing that more being spent on them then on desktops armed with this information we decided to bring a theorem to Android and iOS last year with a higher end goal of recreating the mists dat browser experience on mobile devices but as we were developing I started looking at my own behaviors and how I was using my own smartphone and I realized I wasn't really browsing the web except for when I was at restaurants or I was at home sitting down with Wi-Fi and to be honest the web is a little tedious so there got me wondering how are other people using their smartphones it turns out that we are social creatures and we love instant messaging and social networks in fact I have compared to browsers instant messengers have three times the amount of monthly active users and a third of all time spent on smartphones is actually inside an instant messenger it seems to me if we want to create the biggest surface area possible for accessibility this is a really good candidate but then I started to wonder what would a theorem look like as an instant messenger how can we keep its generality how can we maintain decentralization and what would add app ecosystem look like in the context of chat how we humanize the protocol turning addresses into faces under the hood status actually runs a full implementation of Go ethereum with the light client and whisper protocols enabled on top of whisper we build our instant messenger and we actually do our own key management and transaction management to DAB's it all looks pretty much the same they still have access to web 3 and a local JSON RPC server and we also introduced a new kind of extensibility to adapts which is more integrated with chat and can render with us with a subset of react native and I'll get into those in a moment so when you first run status you meet your first autonomous entity console console is is there really to help you with humble onboarding to educate you on how to use the basic features of status it also is also there to set up your first account so here you can see our request message and it's asking us to tap on it so let's do that here the request is asking us to set up a password so let's type it in and to confirm now a message is sent and status has generated a master key based on and given us our passphrase now we also have the passphrase in multiple languages including Mandarin with this master key we derive two child keys a main account and a sub account root with the main account we actually do something a little interesting and something you're not really supposed to do with whisper we actually inject the keeper directly into whisper this gives us an interesting property and not only you can transact with that public key but you can also chat with it this becomes your handle in status of course there is a trade off with address hash security so we'll probably end up doing some automated management with any funds that are in there into a sub account in status DAPs are first-class citizens that means they look and feel just like your friends at the top here we have our default that wallet and let's tap on in and have a look wallet is an HTML and JavaScript app just like what you would find in mist or meta mask and it pretty much all of those would work the same within status this is actually rendered with a special built-in command that turns the text input field into something like an address bar and it renders a web view in the suggestions area I'll talk a bit about that in a minute underneath the suggestions area we have a chat history and this can be used for that transaction log and can even be used as a support channel if the DAP developer wants to talk to you chat taps integrate with status a little more closely using a chat API they can create new commands and new message types here we have an example with example dab and here they've sent us a request message just like console did and we'll get to that in a moment but in the the bottom left next to type there is a command this icon you'll notice it has a little blue dot on it indicating that there is a pending request somewhere within the chat history so when you want commands you can either start typing directly here with an exclamation mark or you can type on the command list icon once here the suggestions area is populated with all our commands and requests that are available within the context here we have one pending requests and two commands now we can either type start typing in the command that we want and filtering down the search or we can tap directly on it so now we've typed in sent and we're on our first parameter a command is instantiated using status command it is parceled object with multiple properties the most noteworthy of the parameters and three handlers preview handler and validator now we are on our first parameter - and you can see that it is the type contact and the default value is the first participant with in the chat context we can either type in the name or we can just press tap on the example down every time we interact with the parameter the valid data for our function is called and it can either inform status to move on to the next parameter or it can return a subset of react native to render some custom user interface within the suggestions area so we'll do that now we're on the second parameter from using context context self as the default value which is us so we'll just do that and here is the third one amounts are the code is emitted because they couldn't fit on the screen but notice how this the type is number so changes the keyboard and in this case the validator has returned some custom user interface which is a slider in this case now we've filled out all our parameters we can hit Send once this has happened the message actually goes into a staging area the preview handler is called and the preview handler defines and what the the chat message is going to look like now when we press send after the user is reviewed it we're going to call the method the commands handler function and this is where the meter the the command actually happens in our case we're going to end up calling web 3 send transaction let's see what happens Oh state change any any send transaction request is intercepted by status and is put into a transaction queue for the user to to review it is represented visually by a list of horizontal scrolling cards the user can either confirm or deny the transactions and remember certain types now I want to talk about requests and responses they allow us to daisy-chain commands and even pre-fill parameters for per hour to friends to fill out commands as well they allow us to have more rich in our interactions and more meaningful conversations you can imagine in the future we're going to have multiple gaps being used in modular fashion and they can be daisy chained together in this case example that would have ran a command whereís which would have made a status request for for our response and the target is the first parameter so we tapped on that that message that was pending in the request message and noticed how in the suggestions area the header has changed indicating what type of request it is who was by and when it's given the given us one parameter which is our address and now we're it's in the staging error like before responses I have the same object structure as commands they are just instantiated with status no response so let's than them in status gaps can be added into group chats this are cause a mild dilemma in that with daps the codes are executed on each participant's device that means we need to enable permissions for each command for everyone to use it within the chat context this is as simple as going to the daps profile and tapping on the commands another core feature of status is called discover and allows you to advertise your goods and services find apps and other participants by hashtags so let's make ourselves discoverable change my name and I'll add in status when my status has hashtags in it it is published to a public topic and all my friends who are monitoring me they can see this on the discover screen at the top we have a series of cars which demonstrate the most popular tags in the information you have available below it we have a live stream of recent statuses coming in this information is disseminated using a package which is created from a list of statuses from your friends and also an aggregate of packages that you've received from your other friends it's weighted by a number of factors whether online how recent the status is if you've seen it amongst multiple peers and if you've actually opened a chat history with it there's a couple other extensions to the chat API such as like sqi generator and scanning and contact menu creation which won't go into we're also multi account ready so for shared devices and other developers with multiple accounts or just to log out of the app everything I've described today we are feature complete it's a bit rough around the edges but it's all there are we are now moving into a testing phase and we should hopefully have a binary by the end of the year we are open source as of today we're under MPL - and that's our technology stack so if you're a closure script developer I would love to chat with you there's a developer guide that just guides you through the whole process it's pretty pretty painless also stay tuned we're working on a github issue bounty BOTS where you can assign bounties to github issues and then they can be paid out to contributors on successful pull requests the current a little naive so yeah probably give us like a month or two on that one and thank you so much I hope everyone's using status by DEFCON 3

Automatic transcript — names and jargon may be misspelled.