Modular Chains Beget Modular Clients | Justin Florentine - Besu
Ethereum Denver·Thu, Oct 9, 2025, 12:00 AM
Ethereum execution clients are becoming more and more configurable and extensible every day. As Ethereum diversifies into app-specific chains, L2s, sidechains, parachains etc, execution clients have begun to expose more and more of their functionality for extension by developers. 🚀 Get Ready for ETHDenver 2025! 🚀 We're already hard at work preparing for next year's biggest Web3 event! Keep your eyes peeled for more info on ETHDenver 2025—it’s going to be epic! 🌟
Transcript
[Music] good morning ethereum my name is Justin Florentine you may know me online as RoboCop's gone Matt I work for consensus software and I am a Dev on the Basu team I've been an ethereum cord Dev for about four years now uh since the London upgrade uh this talk is going to be a little bit of ethereum a little bit of software engineering and hopefully a lot of activism uh we are going to talk about extending execution clients so real quick show hands how many people have tried to make a plugin for an ethereum client okay all right anything that extends an ethereum client would count all right now how many of you have tried but failed well that's good all right now how many of you have an idea for an extension to ethereum but don't know where to start okay well if you have any friends that do tell them to check this talk out okay so we're going to go through a brief history um hopefully this will be redundant for many of you uh this should look very familiar we talk about this all the time this is the blockchain chain scaling trilemma this is the clearest illustration of ethereum's technical values so where we are constrained by the legs of that triangle we value decentralization and security over scalability so scaling challenges in ethereum shouldn't be a surprise okay um about 2021 oneish uh we are led to the rollup Centric road map in light of that iron triangle that I just displayed uh around this time rollups were hitting main net and the thought in the dev Community was okay well ethereum can't scale uh maybe we can just punt on it and make it somebody else's problem right so the idea is that ethereum loans the decentralization and scalability I'm sorry and security rather of the L1 to an L2 and then the L2 can focus on scaling all right we think of this as modular right this is why we started talking about the modular road map and it's because one leg of this triangle was actually replaceable right you could swap it out for something else and you'd still retain all of the value that the other aspects of the system are giving you okay um the tldr here is free stuff okay a good example of this I don't know if it's good but it's an example of this uh this is why we have an onslaught of meme coins all right because now you don't need to spin up miners like you did with Dogecoin right now for the price of gas to deploy your contract you get a hundred billion doll of Economic Security for free okay I am so so sorry but that's the problem now so so that was 2021 uh in 2022 we have another example of modularity we have the merge right do people recognize this who here likes pandas all right all right Panda heads good so when we did the merge we abstracted out consensus and created a way for the execution clients to be driven by another module all right the consensus client all consensus clients drive an execution client through the engine API all right this is a common Universal definition of the consensus concern in ethereum so on mainnet we are now on proof of stake and proof of stake drives the engine API now mainnet is not the only evm Network and other networks may vary their means of consensus so for instance eth classic is still out there they still use proof of work folks like to run private chains private chains can use different types of proof of authority all right ibft qbf click etc etc the engine API now can be broadly useful to multiple types of consensus so two examples of modularity and two examples of how the road map for ethereum is pushing client architectures towards more and more modularity so let's see what that looks like this is a software diagram this is gu okay boxes lines folks should have seen things like this before here's another one this is Basu this is the one that I work on all right more boxes more lines uh this is Aragon Aragon takes a slightly different approach uh each of their uh subm modules here are uh totally decomposable they can run on different hosts and they communicate with each other with a well- defined API so it's a different approach very cool though um and again we still have mod modularity uh this is W all right re is written in Rust rest modularity comes from the libraries that they provide and each of these libraries is independent can be reused can be pulled out can be run on its own all right so again modularity similar subdomains different expression of the modularity okay so I asked the nether mine team I said Hey guys does anything like this diagram exist for nethermind this is the Bas Su diagram and Lucas one of my colleagues said the diagram is generic enough that we could just label it nethermind and it would be quite accurate so I thought that was funny and in hindsight it's also a really interesting point right shouldn't all ethereum clients look the same from a logical semantic perspective and yeah he's right they they should all look the same these are design constraints dictated by the protocol and so this is the price that you pay for consensus right all of these clients all do the same thing they do ethereum and they do it really the same like cryptographically provable the same all right they each have the same problems ethereum is peer-to-peer they all have to have a discovery Network they also have a network module right ethereum accept inputs from users in the forms of transactions which have to propagate across the network and all the clients have to retain those transactions so they can propose them so everybody has a transaction pool right ethereum is a big old State machine so it has a evm everybody has an evm you have to be able to execute it and calculate your state route and they all have some sort of RPC layer in so folks can actually interact with it you need to have a Dap You need to have a wallet something like that how do you get the thing that you want to do that being the transaction into the network we have RPC Stacks that do that and everybody has one so all clients have these components and they are just sitting there waiting for you to use them so I'm going to beg the question for a moment if you will humor me uh but Justin you say this modularity is is basic good software practice right any competent software project should have this um which is great for your own develop velers it makes their job a lot easier but how can I use it how can anyone Leverage The modularity that we are building into our clients so let's go a little bit deeper into a specific client again I'm a Basu Dev I'm going to talk a lot about Basu um but other clients have made decisions in their architectures that are analogous to the ones that I'm going to uh explain so pluggable consensus algorith excuse me pluggable consensus engin now we didn't have this at first we had support for proof of work uh click ibft qbf but that logic was kind of spread out a little all over the place and as we worked on the merge we began to consolidate it and since the ethereum road map had given us the engine API we were able to abstract it out the engine API is already being used used by other forms of consensus not just main net proof of stake so if a rollup can do it you can do it too now the ebm this one is very modular right this is so modular it can actually run outside of Basu evm execution tracing is pluggable uh we're W we're adding pluggable op codes into the evm and these architectural choices are driven pretty directly by the needs of rollups but now that this has been done you can leverage it as well all right transaction pools now uh shortly after the merge there was a class of denial of service attacks that had been discovered Bas who was susceptible to it uh we created a new implementation of our transaction pool we called it the layered transaction pool and it was able to protect us from those attacks uh the prior pool was just too easy to pollute now while the new implementation was more robust it also suffered a performance hit and not all of our users are running on Main net in a less hostile environment like a private Network where you're using proof of authority this attack is not really relevant and so those users shouldn't have to take a performance hit so we made them swappable users can swap from the sequential pool to the layer pool um we also added the ability to plug transaction validation in and transaction selection and we now have transaction bundling as a plugin so our implementation of the mempool is very very pluggable and now you can access it as well so rewind a second I was begging the question the question I begged was how can you leverage it and what I want you to take away from this slide is that clients are all in a sort of intermediate state of modularity and that state is negotiable team developers are willing to make changes that will allow people to use their clients for different things if you don't have access to a thing you want to hack on reach out to your team all right we are adding more and more versatility to our clients to help promote client diversity at the rollup level and the use cases are valuable input so you're probably tired of looking at this diagram at this point but one more time ethereum clients moving down the modular blockchain road map they are getting more modular themselves and as a result you can change a ton of things so what can you imagine well if you take an execution client and swap out the consensus layer uh for example our friends at Linea are working on staked qbf to decentralize their sequencing and that drives the execution layer through the engine API let's say you want to provide your own evm execution tracing maybe you want to count the number of lines that it takes maybe you want to provide your own transaction selection and block building with those four components there you can build a ZK rollup and Linea is doing this today you can keep going with this after playing with it you might find out that you'd like to swap out the transaction pool or maybe the storage representation uh maybe even have custom op codes that you want to throw in there this is what Linea is doing right now they started with a fork of Basu and then in collaboration with us we took their needs and we satisfied them through the plugin API and now they have everything that they need to run a ZK rollup they can run their L2 on both G and Basu and there's no reason any other rollup couldn't do this with any other client we can have client diversity at the L2 and all without needing to really maintain a full Fork of the client so you're all here because you are participating in etherum go build a Plugin or a module or a library or an execution extension there will be a way client devs can help you find that all clients have modularity so Story Time gather around come to the campfire once upon a time there was an ethereum user and the user had a problem the user wanted to be able to see the results of multiple contract calls all within the same block the user had balances of different erc20 tokens and they wanted to be able to test out trading strategies but there was no way to get an ethereum client to do that so the problem turned into an idea and a new RPC called eth multic call and okay that's an idea that's nice but action is nicer and so the user took it upon thems to create a plugin that executed the multicol and the plugin was good and the Developers were glad and they were so glad that the plugin got promoted into the client and the developer's time was saved all right the feature became tangible and then when other users and devs saw how it worked that feature spread out from nethermind first to G and then to ref and to today there is a proposal to standardize the method called eth simulate now that proposal reflects all of the learnings from implementing the feature in different clients all right so again I work on Basu Basu doesn't have this we don't have an e simulate implementation we would love to it's really good but just like everybody else in the world we're busy right everybody's busy but you can help you can write a plugin and implement it just like the hero in our story did you can make ethereum go faster and so I'm kind of asking you all to learn from this hero all right the next great concept that's discussed in all core devs might come from a solo Staker an L2 developer or a dab Dev and modular clients speed up the vetting process having a plugin that already does the thing you're proposing makes it far more likely it's going to be included it's like it's like having a a fast forward button on a technical debate right let's just skip to the part where we try it out so go make a plugin tell your client team what you need from the trans Action Pool to make some weird Mev Searcher or use an execution extension so you never miss another terrible meme coin drop you have the power to run your own rollup all right thanks for your time I have been Justin Florentine from the Basu team I'll see you on the internet don't go anywhere up next is Gary schy from the bayu team he's got a barn burner of a presentation he's going to show us [Music]
Automatic transcript — names and jargon may be misspelled.