Ethereum from a Full Node’s Perspective by E G Galano
ETHBerlin·Wed, Oct 9, 2019, 12:00 AM
https://ethberlin.com https://decentralala.com/ https://goerli.net
Transcript
so I mean again inferior needs no introduction I'm sure everyone here has used in fear if you've ever used meta mask you're using in fear the vast majority of the projects while it's software etc generate their transactions and send them through in Fura and EJ's talk is called aetherium from a full nodes perspective and you guys definitely run more full nodes than anyone else in the world so tell us about it welcome Yugi all right cool hi everybody I'm eg from in Fuhrer I work at consensus and I've been working on the inferior project for about two and a half years so as as you probably know we run etherium nodes as a service for people in the community to immediately get connected to the etherium network this kind of functionality we felt was necessary to be able to get new users into exploring the web through ecosystem connect and explore all of the DAP so that everybody's building and today we wanted to talk about what we've seen in terms of the network activity network health and certain areas of concern that we want to raise for the rest of the community to be aware of so that we can work together to improve the state of our peer-to-peer network like I was saying in fury is a cloud client of sorts we run a lot of different clients the two most popular ones are etherium sorry go etherium and parody we we run both of these clients and we are always looking at ways to sort of optimize for traffic but going back a step let's talk about the way that people currently access application data so we're considered early adopters of this kind of technology and we're the ones trying to get people to transition off of this traditional way of data access where the databases are centralized the sources of information are centralized and getting them to move from this to understanding that they're now querying a peer-to-peer network and this is one of the promises of decentralization is that now that database is no longer just in one you know source of truth everybody has the ability to not trust but verify the data set on their own this is actually this seems like blockchain 101 but the implications of this on the user experience is is significant and it's something that people have to keep in mind as they're developing depths so this is a little screenshot that I took from ether notes this morning showing the breakdown of that peer-to-peer client these are the clients that somebody in here might be running at home it's most likely better guess or parody if you're running this you you have your own node most likely it'll be a full node connected to the network talking a little bit about a full node we're talking about a node that's actually doing the verification of the information that's coming across the peer-to-peer network and not just trusting the information that you might be querying from an API so here's a list of some of the clients go a theory and parody sorry I have that listed twice I think that one was supposed to be the etherium J client the CPP etherium Trinity written in Python and then seen the Pantheon client that's coming from within consensus so one of the things is how do people actually connect to aetherium so pretend you weren't a developer you weren't you weren't already talking to somebody that told you exactly what to do you just kind of heard about it and you wanted to check it out so like most people you would go to Google you would say how do I connect to aetherium and this is actually what comes up it's it's not that helpful it's it's linked to some more technical documentation it's linked to some out-of-date documentation and this isn't you know a shot at anybody to improve their search engine optimization or things like that although we probably could put like a bounty on that and some updated documentation but but this is really to talk about the fact that it's it's something that we take for granted being in the ecosystem for a non-trivial amount of time that it actually is difficult for people to understand that they're connecting to this new source of data in the way that's not like that traditional centralized model that they're used to so this is actually how most people are connecting to the network they're not going through that more technical path of figuring out what go aetherium as the figuring out what parody is and figuring out which one they want to run there in the traditional product strategy startup world they'll talk about it in like fluid dynamic terms and say that the user will take the path of least resistance and that path of least resistance is using one at one of these types of web three browsers status coinbase wallet I'm token trust wallet and meta mask so some of these are light clients an integrated light client some of them are what people call zero clients a client that's not appear on the network by the client that's pulling in the data and trusting the the source which is like an API like in fira to provide them with reliable information and and this is something that at this stage in the ecosystem and especially earlier on was necessary for users to immediately get in and start browsing these depths that we were building I I've been kind of talking about this lately as like an inverse roadmap of what we all want to get to you we all want to get to something where theorem and decentralized applications are widely adopted right and kind of working your way back from there like how do you get to that so we're going to get to that if more people are building adapts and these DAPs become successful and adapt that your building can be one of those that becomes widely successful for your adapt to become widely successful you need to be able to convert users and these users need to understand where the theorem is and and connect to a theorem and for them to connect to aetherium sorry for you to convert these people there already needs to be a pool of users right and that pool of users will be able to connect if it's actually easy to connect right so it's it's almost like the traditional funnel of users what's what's your total addressable market whenever you're trying to build a product and they're saying well what's the what's the target market for this what's your total what's your Tam your total addressable market if if the barrier to entry into the ecosystem is so high then that entire market of potential DAP users is going to be low which brings us to the state of the nodes so there's if you follow this stuff on Twitter there's been a lot of stuff going on about how difficult it is to run the etherium node that a lot of people are relying on services like in fira to provide this data so wanted to show you a little bit with that so this tweet was just from yesterday from one of the deaths from the parody team talking about what's the fastest way to get a full node connected to the etherium network right now it takes up here the warp sink no the approximately 90 minutes and and then that node is able to be online and act as a fully verifying aetherium though that's that's pretty good in terms of usability if if you said hey new user I have this great new application I'd like you to try out in 90 minutes you'll be able to try it is that still enough for somebody maybe not right this used to be pretty fast it used to be like three minutes and so what are you saying here with the state being massive the size of the state tree being massive is has been a problem for a while and will continue to be a problem until it gets addressed and so we'll get into it we see some people working on the in the ecosystem to try to address this a couple of other tweets I whenever I feel like kind of worrying and stressing out I just kind of browse Twitter to see what people are saying about trying to keep their nodes in sync and you'll run into stuff like this somebody running so like if you look at like this tweet from Jonathan Otto on Amazon some of these running an m5 large ac4 8x large an i-32 X large those are all going to be like $100 or more a month running on the Amazon and and the sync times in terms of number of blocks are pretty low this other one on the left is from a gentleman named Andre who we work on the project called VIP ned he was doing some benchmarking and and was looking at how long it takes to sync the blockchain and it's about six a little over six hours almost seven hours to be able to get to get fast sync Ned right and so these are very technical people these are people that understand service and and they're trying to deploy these clients to get connected to a network and you know here's some other people that are a little more frustrated than saying you know this bloody thing is impossible to keep synced or you know it's taking up 250 gigs of space on my macbook laptop right and there's there's a lot of fun out there and I really have a lot of respect for the client development teams for addressing that stuff right because there's a lot of people saying the the state tree of aetherium is over a terabyte and that's not true sorry the blockchain size is over a terabyte and that's not true the state may be the but the block chain is not there's there's a really tiny link here I'm gonna tweet these slides later so that you can actually use them yourselves you can read this blog post from a free is a great explanation of exactly what's the difference between the blockchain size and the state in general you can look at these statistics of roughly how long it takes to sync a fully verifying node with without the work saying functionality on parity and with the fast sync mode on go aetherium and it's several days three days on on yet and a week on parity the client teams we always see are working on optimizations to this I feel like it's something where they will appreciate help from the community so if if this is a problem that you guys are interested that's kind of what what this talk is about trying to raise awareness of this problem so more people can chip in there's there's a lot going on already in client development outside of the state tree optimizations the other thing is that we need to adapt to the actual users needs so there was this tweet you know that was in response to people that are fighting about this saying you don't need an archive node you don't need all of the archival states to be able to interact with adapt which is true depending on the depth right it's saying that a full archive node does not make the network any more secure and that's true if if all you're going to do is look up your transaction count estimate your gas price and then send the transaction you can get away with a light client and you don't actually need a fully verifying node but that's this comment here was showing this is some of these things I want to look up a balance on a contract at a certain block and for something like that depending on how your client is synced you you may not be able to access that information so we need to look it and this is one thing that a lot of people rely on in fear f4 is we were building something that's going to be looking up token balances somebody wants to look at the historical information of their transactions and they they don't have the ability to do that on their device and so can we're building this using and furious to be able to support that yeast case so so one of the solutions that were that we've been following is a fork of Goa theorem called turbo Jeff it's being developed by developer enable XE akhundov he got a grant from the etherium foundation to focus on optimizing the the tree storage there's a lot of different things that he's doing in terms of his approach there I linked to the blog post here because it's too much to go into in this talk but we really like what he's doing with that and we're trying to help fund his work and help support by collaborating on testing and development in the future so that we can try to make it so that what people are trying to use archive nodes for that currently requires over a terabyte of space can actually be done with with much less and we're hoping that the solutions that Alexi is working on here can also be applied to other client implementations the other side of that is like clients right some people using like clients other people aren't in general I think it's a two-pronged approach to simplifying access to aetherium we need to push like client capabilities and make sure that like clients are capable of doing the things that people want to deal with them as they're exploring these depths and if we have a lot of people using these light clients we need to make sure that people are able to run the light client servers that they're connected to and that's also a problem sorry I wouldn't say it's also a problem because there's a limited amount of resources right I think by default certain client implementations default to you either not serving light clients or serving a very small amount of light clients and that previous slide that I showed showing the number of aetherium nodes that are out there right now it's about 14 to 15,000 according to you ether nodes and if you figure there's you know if each one of those was serving 10 clients and every single one of those nodes was healthy you're not even at half a million light clients that you can serve and metha mask alone already has a million installations so if we wanted to port that existing user base over it to a light client tomorrow would would we be able to support it with the network be able to support it without incentives for people to service that traffic right and so this VIP node project that in fear is partnering with andrei petrov on is is something that's looking at can somebody reserve a slot on on a white client server and have dedicated access through that and there's other models that we've looked at for this but in general how can how can we make it easier for people to run this like client servers and incentivize them to do it this one so it's a dirty little necessary and not-so-secret thing that's going on in the ecosystem it's off chain indexing and friendlier api's when when I'm talking about looking up ERC 20 you know transfer events and contract events and Balance lookups in transaction history if you're running your own node and you're trying to query that it still isn't as fast as a traditional database lookup would be if this was in a relational database just because of the trade-offs that are made because of the RLP encoded format of how things are story than the tree of the client databases and so what people have done is they've sort of gone back to a traditional model of taking that data decoding at putting it in traditional data stories and indexing and caching it's it's necessary for some things because a lot of people are complaining about the performance of an application why is this application says slow I'd rather just use something else or it might even just be you know the amount of data that people want to look at is it requires different types of solutions and I've listed some here the the gnarly project if you're an ETL was something that was just in the news recently with how to deploy it on Google Cloud the loom network doing showing how they did a different sort of architecture pattern to make the delegate call site a lot more snappy and performing and then we're working on some indexing solutions with a project called eath ql that's also within consensus that's building like a graph QL query API on top of aetherium nodes and to make those types of queries quick and snappy requires some some indexing so it's something that a lot of people are doing right now because retrieving data is it's not as efficient as people would like it to be so these are some of the yeast cases that people have for indexing balanced lookups account transaction history looking at historical gas analytics to be able to you know build a user interface that says this is probably what you should put in as your transaction fee if you want this to get mind smart contract events like I said or they're just trying to improve performance the state of the p2p network is something else so talking about the discovery protocol you know it starts out centralized right we're all a client we immediately connect to the boot nodes the boot nerds tell us about the other nodes that are out there on the network it's it's something that all peer to peer networks do and it's not something that a lot of people have been looking at lately in terms of like what's the state of the health of our peer-to-peer network of dev p2p and so looking at it you know these are some questions that that we want to ask about the peer-to-peer traffic how reliable are our beta nodes what's what are the clients that are out there you know what's the breakdown of the clients right now we we trust ether in there as a source of information but this kind of information is really valuable and useful for for a lot of people and being able to gather that information yourselves and verify it is is really important so how many nodes were running three months ago right pending transactions currently right now I think there's like 80,000 pending transactions on main net and I used to be able to look up you know in April how many pending transactions were on there but the the only source of information of that that I'm aware of is is ether scan so and they only allow you to go back like a week and this is really important stuff I feel like in terms of we're building a revolutionary peer-to-peer networking system that maybe 10 15 20 years down the road people want to analyze and and sure there's all of that data on chain but besides the data that's on chain it's on chain day there's only half of the story what's what's the story of the rest of the peer-to-peer network and so we want to we're neglecting to monitor and track and record this information and I feel like it does matter this is something that people will be interested in and people can use to inform designs of either protocols or applications and we're working on an open-source crawler to be able to gather this information and record it maybe will apply for a grant so that we can actually archive and store this data like if you've ever used something like the web archive you can see how valuable having an archive of that type of information a snapshot of a network at a certain time is is useful so we definitely want this to be a community effort so if you're interested in collaborating on it please please reach out to us this is a screenshot that I took of current creep of concept that we built it's it's very either in there similar to ether notes this is something that's backed by a manga database that's look going out there getting all of this information about the clients the health of the clients what block they're currently aware that how many peers they have things like that and then storing it here so that we can access this to look at it you know a couple months from now the other things that we found is that you know there's a lot of noise on the bootstrap nodes there's a lot of people that fort aetherium maybe to make their own chain a private chain just doing their research implementing their own client and and it's just spamming the dev p2p Network it's it's uncertain I didn't have a chance to look at all of the client implementations to see how easily they or how well they're filtering out that noise but they're there's different layers of the peer-to-peer connection and the handshake and depending on where they might be filtering that out this could be having a detrimental effect on people's abilities to keep their clients in sync so the other thing that I saw was there's a lot of outdated client versions there's you know maybe some people that have a digitalocean droplet or a server somewhere that they deployed you know ago with the Orion client or a parody client on a year ago and then they just you know left it running and they're like okay I'll use at another time and so these clients are still out there connected to this network but it's to me it feels like leaving an old Windows machine up there that's not actually updating and getting all the latest security patches right it's maybe it's not actually propagating information well or it missed the Byzantium fork and so now it's just a useless peer that's connected there was supposed to be reputation built into the dev p2p protocol but it's uncertain which clients are fully implement or how clients are actually implementing the reputation tracking of when they're going to drop a certain bad peer and and kind of prune they're appearing list lastly I wanted to talk about the user expectations of a peer-to-peer network this is kind of the flow is someone interacts with adapt they send a transaction they get a receipt they look up the transaction on ether scan is the transaction there yes gray it has it been mined yes great but that's usually not what happens normally it hasn't been mine they're like weird maybe I should send it again please don't do that unless you understand how the gas market works because it actually contributes to this pending transaction pool bloat that we have the other thing is they'll just report an issue to you and fira or they'll go into the NGO aetherium get or some other like core developer channel and say like here's my transaction hash like what's wrong like to be fair to fine find those resources and try to ask for help is pretty good but that's it's it's a lack of education that's available for the community right they need to understand this isn't like venmo or square cash or paypal where you sent a transaction you got a receipt and it's immediately verifiable we need to build interfaces and documentation that's educating users on the fact that this is a peer-to-peer network where information will traverse it at a different rate and a variable rate this is a dashboard that we have showing you know current pending transactions in the pool and if some of these submits a transaction through and fira they can click on that and actually see like this is the amount of times that we've rebroadcast it out to the network here on the left with the send attempts this is something that we've tried to do to try to inform users on the fact that just because you sent us the transaction doesn't mean it's going to show up and either scan right away lastly 'if gas station is something else that relies on the pending transaction pool if people are using this to try to calculate what gas price they need to use in their next transaction you can't just look at the most recent 10 blocks or 50 blocks you need to look at the real-time analytics of the pending transaction pool and so that's that's sort of what each gas station does in their architecture as they enable that pending transaction pool API and they use that to make these analytics so something else to keep in mind so in general were we're interested in working on people oh sorry working with people working with people that are interested in solving these infrastructure layer problems right improve the health of the peer-to-peer network storage optimization client optimizations if you're working on a new client that's always really cool we'd be interested in seeing what your approaches to these different clients and we'd be happy to help you guys test so that's it please reach out to us Thanks [Applause]
Automatic transcript — names and jargon may be misspelled.