# devp2p development update by Felix Lange (Devcon4)

- Channel: [Devcon](https://streameth.org/devcon)
- Date: 2019-10-09
- Duration: 20:14
- Topics: blockchain, smart contracts, distributed ledger, Science & Technology
- Watch: https://streameth.org/watch/yt-N2VTqUZRxjY
- YouTube: https://www.youtube.com/watch?v=N2VTqUZRxjY

## Description

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/devp2p-development-update

This talk presents 2018's developments in devp2p, the communication system underpinning the Ethereum main network. I will speak about the state of the network and implementation progress on the ideas presented in last year's devp2p talk.

Speaker(s): Felix Lange
Skill level: Intermediate
Track: Security
Keywords: state, devp2p, language

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

hi guys so yeah I'm Felix I work for a third Foundation I'm one of the maintainer of goethe room and I'm also the maintainer of the deaf PDP specifications so in this talk I'm just gonna you know talk about things that happened around FPTP in 2018 so yeah I get to answer this question every year so once def TV well it's a peer-to-peer networking stack and it's a system that if there am notes used to talk to each other over the network so and it has all the things that peer-to-peer networking stacks usually have so it has a system for finding nodes on the internet and it has an encrypted transport protocol that you even heard about a bit earlier it's not the best but it does have one and this is the protocol that the notes actually use once they are exchanging data I think the important thing to know about this PDE mostly is that it's an integrated networking stack so all the components work together in a predefined way and this is great because it means that the system has certain properties that we can rely on and it's actually much easier to evaluate the security this way because if well if you know how exactly this stuff is going to be used and it's it's it's easy to to reason about so there are around 10 implementations of def PDP right now so you can see them listed here most of these implements are like most of the deputy implementations are part of some kind of ethereum blockchain client but it's not all block chains so there's there are some implementations that are incomplete or they're just a library that implements a certain part of it and their feet EP isn't just useful the blockchain it's also used by other projects like this one distributed file system most of the offshoots of sois file system also use it and even the status messenger abuse it for a long time but I'm not sure whether they're still using it or whether they switch to something else by now yeah so apart from these implementations that are just you know speaking the protocol there are a couple of tools around specifically what we have is a couple of DHT crawlers some of them open-source some of them dot so the most famous one is ether notes org which you can visit and check stats and basically so a DHT troller it explores the note discovery system to see which notes are around and then it lists those on a webpage and then finally for networking nerds this year consensus has released Wireshark detectors for the protocols and I'm actually really happy about that because it means it's much easier now to debug issues with a protocol because I can just load it up and in Wireshark and see what is the note doing and it labels all the packets that are being sent on the wire by name and things like that so this is a really helpful thing alright let's talk about the live network for bit so we're still alive I guess we have around 12,000 if they remain had notes just like last year at least that's what if a note says and the number of tht participants is actually quite a bit higher because when you look at even notes would you what you see on the front page is if there are made out nodes which ether notes has decided that you know this note is part of the main that but actually in the discovery you'll find a bunch more nodes that are doing all kinds of stuff like there are other block chains which which have somehow imported FPTP there there's there are swarm nodes there are all kinds of nodes listed so you can actually find a lot more nervous than just those oh right I forgot something yeah actually we haven't in 2018 they haven't been any new attacks so this is oh I'm also happy about that so and in general we're not seeing a lot of network level attacks so most of the attacks on a theorem have been on the consensus protocol level but on on the network level we haven't actually seen any malicious activity as far as we know at least in 2018 so there wasn't was none like a major network disruption but what we did see was that there was a research paper was published in the beginning of the year by researchers at the University of Boston where they explored the possibility of an Eclipse attack on the etherium Discovery Network but fortunately for us this this was disclosed responsibly through the bounty program so they sent the paper to us a month in advance and we could actually read it before it was published and we could mitigate the issues and I'll talk a bit about that later so yeah this is now the section where we talk about you know what happened in terms of development in 2018 so the first new thing is actually kind of old so all the specs were rewritten and if you read the old spec it was just one document maybe you'll understand why so it was really a lot to read it was incomplete at times you couldn't really figure to figure out what what the semantics of the protocol were half of the document was stuff that never got implemented which is the big bunch of notes basically so yeah I'm a bit proud to say that you know the specs are now much more readable and they're up to date and yeah just in general the drive type I've split up the specs into into into multiple parts so I feel like it should it should all be a lot nicer now and [Music] we never tested now so this is something I'm very sad about Frank has joined the Goya theorem team very recently and he has created a peer-to-peer networking testitude based on the high of tool so hive is a tool that we use for testing the consensus between clients and it's also a it's also used for testing the RPC interface - - - to the clients so now we can test the peer-to-peer networking as well and death parity LF and ether MJ are hooked up to this test suit and Trinity is being added well it's you know been being added since a couple months now so I think it's gonna be done any any second but yeah it will eventually also be there and really like adding a client to to hive isn't all that hard so it's I think this is a huge success so in guess what what's happened in gif so in the beginning of you we were we were really busy implementing the mitigation for the for the Eclipse attack and basically the way that attack works is that a node can be surrounded on the discovery level with attacker nodes and it won't be able to find any any kind of honest node because all all all it will know about is like these these these attackers that were spawned specifically to to to bring us know down and the way we approach the mitigation was to introduce IP limits on the connectivity and so basically you you can you have to have like a nice-looking IP address to connect yeah something like that and and we also we reworked how the discovery tables work so that the table can't be overrun by attackers so easily and then later in the year we've introduced support for Ian's are throughout the gold p2p codebase I'll have something about Ian or later if that doesn't mean anything to you it's fine and and we've modularized the discovery code in general so we're now ready to actually plug in different pure discovery mechanisms and this is massively gonna help with adoption of some of the new changes but most of the changes so the PD code base haven't had any kind of immediate impact on the connectivity so you know as a user of Kathy not gonna like see I don't know any improvements basically it's only especially it's mostly pin prep work and then as you mentioned we found this experiment to run to run deaf p2p applications or let p2p so since you already talked about it so much evolution to skip it now so it was I think the experiment was successful and we have a pretty clear roadmap now of how to integrate the p2p into the whole deaf people thing okay so there are some ongoing changes to the to the to the low level protocols so independent of any actual implementation and yeah so what I've done this year is to just I've published three eep drafts the first one is EEP seven seven eight that's aetherium note records and this is kind of at the heart of it so if there are no records or a new concept is like a small document format about with note metadata it's a bit like business cards for for notes and in those business cards the notes can declare transport capabilities and application capabilities in all these kinds of things and then they can be relayed through some medium and then Nick up next we have this eight six eight which is a specific tiny specification that integrates note records into the existing discovery protocol so this one's really short and then finally we have something new which is the last item and that one is a entirely new mechanism for discovering notes based on on DNS so it basically allows you to find node records behind a certain DNS name and it's totally independent of the of the distributed hash table so yeah Ian's are so what's that about so I'll maybe I'll it's when people look at the e on our specification they can sometimes well they come back to me and they say well what can I use this for I mean this is like you know there are almost no details and the eep about you know potential users and and it's it's it's a document format I mean how does that relate to to to to the grand scheme of things so the thing about you know is that is more like it's like a medium for negotiating all kinds of capabilities that nodes have and it can't be about hard to imagine like which capabilities are actually worth negotiating between nodes so I'll just have a couple examples for for for you guys now so the one of the things that makes me excited about E&R is that it gives us the option to switch to a zero round-trip in skin encryption scheme so if two nodes learn about each other in some discovery system what what the discovery system can do for them is it can relay key material which can be used to pre-compute secrets for a connection and this is actually really nice because it means that as soon as a connection between those two nodes is created the the nodes can start sending data that's relevant to the application pretty much within the first bite because because most of the secrets that are needed to encrypt their communication are already pre computed before the connection was even created and yeah so I feel like this is this is a pretty useful feature but what we need for that obviously is a way to like relay this initial key material and this is where where where you know can help the second thing is well transport options so this is something that also makes sense to into to negotiate up front because like Guillaume told you we have this ambitious plan to use some of the lipid EP transport offerings in our deaf p2p stack but in order to make this work well if you have a note that speaks the p2p and have in it you have another that wants to talk to it that other node needs to know whether the p2p is supported and this isn't really something you can just sort of try I mean you can poke the node and then see it was not responding but that just takes super long and the right solution here is to just know that this node is capable of speaking the p2p and so for these kinds of things it's obviously very useful if the node can declare upfront in in some kind of system that is compatible with with with with whatever transport you want to speak and then finally there's another thing which is negotiating prices so what kind of prices well so in systems like the etherium like client or swarm you have something called an incentive system so in an incentive system on the network level there are clients and there are servers and the clients pay the servers for whatever bandwidth they if they're using and well that bandwidth comes at a certain price and if you have an incentive system set up then there's a market for service obviously because some servers have gonna have one price and other server is gonna offer another price and as a client you want to connect to servers that are sort of like in your price range right I mean you don't have an infinite budget you you need you you need a server that gives you it like the most how do you say bang for the buck I guess and so to make this work if you if you can already know up front that a certain server force a swarm can offer you data at a certain price that can influence your your your connectivity decision as a client so you're obviously gonna prefer the the servers that are you know match your your price expectations right and let's just go and look a bit at how the D&S discovery works because this is like the new thing so the DNS discovery is a bit different from the others because it doesn't it doesn't talk about improving any existing protocol it's a totally new protocol and we've come up with this scheme because we want a replacement for bootstrap node lists so in most clients what you'll find is there's a there's a hard-coded list of bootstrap nodes but usually it's not that long and these nodes are the initial entry point into the network so when you want to talk to the blockchain you've got to start somewhere so you gotta find someone who's on that blockchain more or less talk to them first and then find all the others who are also you know into this thing and these maintaining these lists is you know annoying because when we if we want to add a note to it and we could just put in a source code people can download some releases and you release off the client and then they'll have it but we'd rather them much rather have a list that's dynamic that can be updated on the fly and the list is like very very long right so we you know for initial entry points you better give people some some options so what we envisioned for DNS discovery is a system that can dynamically with the help of the distributed hash table create a massive list of nodes that have a certain of time and that have certain capabilities like say let's say like a big list of many of meyneth nodes well then we compile them into a certain format and publish that at some DNS provider and well and then clients would be able to find them there and well that's DNS discovery for you all right and there's one more feature so the thing is the the system also includes a certain it's a bit like a web of trust so one node list can actually refer to another node list using the DNS name of the list and the public key and this means that well certainly the list can sort of authorize each other and we can we can group them into metal lists and things like that right so yeah the eeap's so if they're endowed Records is implemented in gold Python and JavaScript so far the extension is implemented in gold but isn't isn't merged in the master branch and no discovery via DNS is implemented in go in Python but the deployer tool that that moves it to moves it to it to a DNS provider isn't really done yet right and now I had just have two more minutes so I guess more or less it says two there so I'm just look at this clock and so I'll just talk about a bit about what's next so we have an ongoing discussion with the sharding team the the research team about how we can how we can join the efforts because the if they're I'm shorting right now the networking is based on the p2p so I feel this is a good decision with Lapita P because it gives them a lot of options to try out obviously like I myself want to like feed my improvements that I'm working on you know on the phone if your foundation payroll I want to you know feed those improvements into the shorting so I feel like the things that that we're doing here to to improve the FPTP these things can actually benefit shorting in the long run but right now there isn't much overlap but like I said we have an ongoing discussion and then the the biggest challenge the charting phases is just that they need a system where peers can can can be switch really quickly and we're trying to make that work right I'm gonna skip this part and I'm gonna just quickly say before I have to go that there's a big plan for 2019 to our offered FPTP as a web assembly module so that you guys if you ever want to use def PDP you don't have to use go or like another good implementation but probably that's gonna be go so this is a plan that we have and thanks you
