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

Loading player…

The State of Whisper by Guilaume Ballet (Devcon4)

DevconWed, Oct 9, 2019, 12:00 AM

Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more. https://archive.devcon.org/archive/watch/4/the-state-of-whisper Whisper is the Ethereum Foundation's secure communications protocol. It has been designed to ensure darkness, i.e. guarantee that neither a message's content nor its metadata can be captured by an attacker. With the release of version 6 last spring, it is now also used to prototype the switch of the P2P stack from DevP2P to libp2p. This talk will start with a summary of the protocol, followed by in-depth coverage of  two upcoming features that will improve its usability: 1) insights into the libp2p switch, and 2) compiling it to WASM to run directly inside a browser, thus bypassing the confusing RPC interface. Speaker(s): Guilaume Ballet Skill level: Intermediate Track: Privacy Keywords: whisper Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon 4 was held in Prague, Czech Republic on Oct 30 - Nov 2, 2018. Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/

Transcript

I'm gonna give an update on whispers so a quick reminder what is whisper it's a peer-to-peer messaging system with strong metadata privacy guarantee you cannot like no one can read the content of your message and they cannot know who you're sending it to either so because of the way it's implemented you need a lot of bandwidth you cannot really do video chat things like that the best use case is really to distribute a message to several recipients and so like what would be a necessary or possible in distributed exchanges but you have some company like less like like status of course who have who have implemented that as a messaging system so so that's really nice as a quick reminder of how it works imagining that those diamonds represent nodes on the network and node on the far left wants to send a message to notes on the on the right so what they do they just forward now you have forgot to say the blue lines are the network here links so the the node force the message to their to its neighbors and those neighbors in turn forward the message to to their neighbors and you can already see that the one at the bottom already received two copies of the message and the other thing is that one of the recipients got the message but to not be identified as the recipient they will still keep forwarding the message to their neighbors and you can see that one of the nodes already received three copies and that is a pretty simple network so over the last year we released version 6 I built a test net and I implemented a leap p2p version of whisper right so the leap p2p version last year in Cancun we we had to talk with parity with a p2p people and we agreed to try to use whisper as a test bed for a p2p simply because whisper is fairly independent from the rest of the of the network so so that was a nice experiment and I made a couple a couple article that a couple PRS one of them one of those proof of concept of work so it's available at this address I have a test net of Lee p2p of whisper clients talking to each other the problem is that literally p2p at least the go implementation is not exactly modular yet so we have to bring in 400 files so that's a bit of a problem so that's why it's not it's not available yet so when it comes to the development that is going to take place this year first status is starting a big documentation effort so I'm joining in so kudos to them for for helping with that there's drive because parity has a slightly different version of the protocol is not compatible so I'm going to spend some time trying to make them talk offer a PR hopefully I'll get a t-shirt in in response and the other the other two things so there's the test net there are examples on how to use it but people keep asking questions so there's there's a need to to improve the communication on that so these are the easier things now I want to have a little bit more into the leap p2p changes so this is a very contrived examples or representation of the of the current state with Def be to PD so on top in the red boxes you've got the protocols you have you have ETH you have whisper and then just below it you have library let's call it the libraries so the server object the protocol object and then you have def p2p proper and the FPTP does all the heavy lifting it does the discovery does all the connection connection things and and really down at the bottom you got the transport layer which is called our lpx it's got some sub security issues so that's what's initially driving the potential potential switch to to the p2p now the pr that i that is available the one I described earlier it's basically just putting another server right next to the DEF p2p server and like you have some - almost independent entities except whisper kind of still relies on the library layer so it's a bit of a hack but this is not what we want to do for several reasons well one of them is that we know a lot of things about the deaf p2p felix has invested a lot of time in in in that for example we can't just chuck everything and move to the next to something new that we don't really understand the other the other issue is that the p2p itself I mean that's that's a big change that's really an engineering problem here lee p2p has we started discussion with them recently it's got a lot of a lot of modules that we don't need a lot of redundant things so I'm really positive really happy really enthusiastic but the work that we can do together but yeah the goal would be to end up with this so we just keep testing 2p4 now to benefit from all the security we have so far and we just slowly phase out our lpx and we use the lip the transport layer of flip p2p and over time we slowly replace components of the FPTP weasely p2p if that makes sense and then they are on the horizon there are more long-term improvements so one of them is the proof of work so whisper when you send a message you calculate the proof of work on this message this is to prevent spamming because if you remember when you send one message it gets duplicated and sent over several times so you need to make sure that you don't abuse the system the problem with that is that status is complaining that the proof of work is draining the battery like calculation is draining the batteries of mobile phones so I want to spend some time trying to find alternative proof of work algorithms that will consume less power and Daniel from from swarm has suggested to use proof of burn which is great for for preventing spam because it's your own money however it's connected to your a theorem account which means that when it comes to privacy you are pretty much identified so so yeah that needs to be to be improved and then we want I want to do some some simulations or I try to not for forward the message to every every single node try to have a bit more feedback between the nodes to to not forward so as once again a control the example if you remember this slide at the point where the node received two messages if you see that the same message keeps going it keeps coming from two different peers well you simply remove remove one of the peers so once again this is a very controlled example we need to make sure that you know privacy is in metadata privacy privacy is isn't sure if we do that but I think it's it's a good it's a good experiment to have in the coming year and the last improvement I want to work on it was them so I'm sure most of you have heard of wisdom but just in case you've been living under a rock so what some lets you take whatever language you have a program written in whatever language compile it to a blob and that blob will run in the virtual machine in your browser or unknown and onesome has a lot of nice properties because so far what we use is the remote procedure call call so if you have addy app it's running in your browser it connects to one of the nodes ask the node to create a private key for you to encrypt your message and to forward it which means you need to trust the node and thanks to awesome now you all you need to do is trust your browser okay I thought I thought people would think it's funny but ideally if you can trust your browser then it's it's much more secure because yet it's much more secure but or if you run its own note on your on your machine you don't have to trust anybody the only issue with a which was I'm at this stage that to go for example to go compiler to SM is pretty new a lot of a lot of the dependencies don't compile so there's some need to wait for the for the ecosystem to mature so we're a bit yeah we're waiting a bit for for that to happen so I'll end up with a roadmap so the easy stuff first documentation and parity compatibility then around the middle of next year I hope to be able to publish some results about my networking experiments maybe the collaboration with wisly p2p will will be fruitful and we can we can provide some some li p2p enable enable guest and then next year early next year was demand and the proof of work experiments so that was pretty much it if you have plenty of questions you can hit me on any of those platforms or you can catch me and hit me for real and yes that's that was and it was all for me [Applause] you

Automatic transcript — names and jargon may be misspelled.