Run Your Own Ethereum Node in One Command: The BuidlGuidl Client - BuidlGuidl's Builder Bootcamp

BuidlGuidl's Builder Bootcamp at Devconnect Argentina 2025 · 18 Nov 2025 · 23:22

Spencer Faber of BuidlGuidl introduces the BuidlGuidl Client, a Node.js script that runs a personal, non-validating Ethereum node with a single command. The talk covers why client diversity matters, the roles of execution and consensus clients, the hardware needed (32GB of RAM and a 2TB NVMe SSD) and the difference between pruned and archive syncs. It ends with an opt-in way to share an RPC endpoint with a decentralized service for rewards, followed by Q&A, at BuidlGuidl's Builder Bootcamp during Devconnect Argentina 2025.

Speakers

Topics

From BuidlGuidl's Builder Bootcamp at Devconnect Argentina 2025, hosted by BuidlGuidl.

Transcript

Well, hello. Uh, I'm Spencer from Bill  Bidd. Uh I'm I'm going to be talking about something a little bit different  and uh it's a project we've been working on called the Bidd client which is a  super easy way to run your own node at home with one simple command. And fair  warning I'm scheduled for an hour but uh I have a feeling we're going to be getting  an early lunch. So don't hold that against me. So some basics on nodes. Why nodes? Why do we  care? Uh I essentially nodes are what's forming the backbone of the Ethereum system. That's  what allows us to do all this cool new tech.

Allows us to travel to all these places, call  it work. Um but essentially what a node is is it's a computer running a pair of specialized  software packages which are called execution and consensus clients. We'll get into that a  little bit more about that real soon here. Uh, and nodes are great because each contains  a full verified copy of the chain. So, it's trustless. You have it right with you. You  don't need to take anyone else's word for it. Uh, nodes are responsible for doing the computing.  Essentially, they're executing transactions and powering smart contract logic. And nodes  are also responsible for coordinating between themselves to ensure that the we have a good  chain integrity and that no one is in control.

So real basics about execution clients. These  are the programs that are essentially handling computation for the chain. Uh they're the ones  doing the the transactions and smart contracts. They're responsible for putting together  new blocks and applying state transitions. And this is the this is the software that's  basically managing Ethereum state the the balances, contracts, storage, logs, all sorts of  other cool stuff in the chain. And and for and for developers, uh they're the way that you can  interact with the chain. So you get that with a through a remote procedural call endpoint. And so  there's there's many execution clients out there.

uh some of them more popular ones including  GE, Nethermind, Ref, Basu and Aragon. And then the other half of the the paired software  package is called the consensus client. And this these clients are more they're more  responsible for handling the coordination um coordination both to the execution client  because the consensus client is communicating with the execution client to tell about blocks  state transit and train state transitions and then consensus clients are also communicating to other  nodes consensus clients to ensure that the that everyone is following ong the same chain. Um, and  optionally you can set up your consensus client if

you have, you know, 32 ETH laying around. This  is uh this is the way that you can uh stake 32 ETH and and earn rewards for performing validator  duties, which are basically creating block block proposals when your turns up and attesting  to other other validators block proposals. But for the nodes we're talking about here, uh I  guess you call that a validator client. Uh nodes that I'm interested in are are nonvalidating  clients. We'll get into that a little bit. They're great though because requires no pile  of ETH and you you still get you still get the benefit of of being a good ETH citizen and  contributing to the chain, contributing to to the integrity and also get your your own RPC endpoint  which is uh what a lot of us are interested in

and some of the the common consensus clients out  there Prism, Teu, Lighthouse, Nimbus and Grandine Uh so this brings us to the Bidd client which is  not the best name uh because technically this is not a not a client. It's not that fancy. Um it's  really a a Node.js project. It's a wrapper script for running a pair of clients and it makes  it a lot easier to install, configure, run, and monitor your own validating node. There's a a  small screenshot of the of this uh dashboard view you get when you're running your build go client  and uh I'll pull it up in a second here. But yeah, as far as installing, it's uh kind of took  inspiration from homebrew and it installs

with a oneline command which looks at your  dependencies, installs those that you need, pulls down the clients, spins everything up.  And one of the one of the kind of sticky points of setting up your own node is the startup  configurations for these nodes can be a little complex. Guides are a little bit over the place.  So when you're doing it for yourself, you sort of get into get into this thing where you're almost  guessing and checking. H looks like it's working, it's not. Go back, reync. Um so the build go  client comes with uh preconfigured um startup options for the for the consensus and execution  clients. Uh just a a few command line flags you

can put in for some common things you'd want to  change. But since it's since it's basically a wrapper that's running these two clients, uh it's  easy to get into the projects yourself and you can make any change to the options for the clients  that you'd want. Get as weird as you want. Um so somewhere I'll show you what the uh the client  actually looks like. Point out a few things. This is not synced on my computer, but we'll get  an idea what you're looking at. Um, so that's uh pretty nerdy built with blessed config  library and and the main things you're getting

are both logs of the clients as they're  running. There's pretty handy status box up here which will tell you if it's syncing, if  there's an error, if what the current block is, if if you turn your node off. It's got a it's  got a catch back up to the chain. It'll it'll show you that info. Um your number of peers  and some stats on on how your system's doing. So, I've already kind of been through this, but  uh benefits of running your own node. Yeah, you're

you're being a good citizen. You're improving the  chain resilience through sharing data with other clients. uh you get your you get your RPC endpoint  and there's there's many distributed RPC services that are out there uh including infura alchemy but  it's kind of cool to run your own node because you have direct access to the chain and I really don't  think those I really don't think those services are going to be doing anything nefarious but you  get your own trustless independent verification of the chain and direct access and if you're  making a lot of making a lot of requests.

Sometimes sometimes those those charges can  really can add up. And with your own known, you know, you're not worrying about a per request  fee or running into annoying rate limits. And it's got a few charts here showing it's fast. uh where  the the leftmost entry on the x-axis is uh is a BG client that I was running on my home network.  So just going through my router and ran a couple of different uh methods through just to show that  yeah when you got a local node it's it's quicker.

So some basic requirements for running the build  client. Uh it's it's built for Linux or Mac OS and for nodes uh they're not too CPU intensive.  So luckily pretty much any modern processor with made within the last few years with at least  four threads is going to get you by. uh some extra extra CPU power is uh helpful for syncing.  It might help you sync a little bit. It can get a little get a little spicy there, but after your  notes sunk up, it's uh it's it's no issue there.

Uh on the RAM, you want at least 32 gigs. Uh  we've had we did we did some testing with 16 and it worked for a while and then we'd get random  crashes. So, and RAM's chief. So, just get 32. The drive selection is a little bit more tricky  because these clients are doing a lot of read reads and writes. So, you really want you want to  be a little more picky on that. Um, you're going to want an MVME SSD with at least two terabytes.  Uh, talk a little bit more about that later. And you you'll want to make sure the drive  includes a DRAM cache which helps with speed uh quite a bit. And there's another kind of tricky  thing is there are different there are different

architecture levels per for different drives which  is basically saying there's there's different ways they're set up to that have to deal with the  the amount more or less the amount of data being stored on each in each flash uh chip. And so it  goes from quad level cell, you're you're storing four levels on on each uh on each location  and then you go down to triple multi is two, single one. And the quad level cell architectures  are going to be the most budget friendly. You'll see a lot of those out there, but uh you want to  stay away from those. uh the uh they're not so quick on reader writes and they tend to degrade  a lot faster and as you get down triple multi-

single the lower you get on the levels the more  expensive. So multi or single level architectures are probably going to be enterprise and kind of  out of reach. So the sweet spot's going to be a a triple. And and as far as your network, you're  going to want to make sure that your your data is not being metered because a sync node will use  more than 100 gig gigs a day and they're going to use more than that when they're syncing. And  so yeah, the drive selection is very critical and it can be confusing. Uh but we got some  links to third party to some thirdparty stuff on our client.biddgill.com biddgill.com and  there's this SSD selection guide which is a GitHub gist of of a number of users who have  reported how different drives work in nodes.

So that's a great way that's a great place to  go. I mean I've got burned before like reading reading specs online for some cheaper drives and  it uh turns out they lied and they didn't work. So, a a setup that's been pretty well tested for  us and we have a number of these going is we're using the used to be Intel. I think I think Intel  stopped making these, but we're using Asus Nux uh the 13 Pro version which are a little older.  I think they might be on 15 or so now. But yeah, we're using Knuck 13 Pros with with i5 processors.  So, nothing nothing too too spicy. Uh running

Abuntu on there. Uh just just kind of we've got 32  gigs of uh kind of run-of-the-mill laptop memory, which is working well. And a drive a drive they  kind of settle on is the the Acer Predator GM7000, which I was going to put prices up here, but  they're fluctuating so much and they're different for different regions of the world, but it's not  super expensive. Uh should say though that that that uh Predator drive there's there's one that  comes with a little kind of graphine heat sink sticker which fits perfectly in these nooks and  one that comes with a real like a beefy heat sink and I very much doubt that it's going to fit  in these tiny computers. So get the non-heats

version. And speaking of thermal management, these  these little computers come in uh little like a tall version, short version. I go again with a  tall version. They they do better with thermals. So I mentioned before that uh you  want at least a two terabyte drive. These clients do use quite a bit of space and the  developers thought thought about that and they have a they have a potential they have a potential  way to to save on drive space for syncs. And so I got some really basic cartoons here that are  supposed to be showing the chain where the the

genesis is on the right, the most recent blocks  on the left. And developers have have given you the option of doing what they call an archive sync  which uh you ba like very basically break down the chain into two main components. You could call  it call one component the state which is kind of the the big database which holds balances nonses  contract storage by code all sorts of other stuff and that's the that's the most storage intensive  part and then the the other half you could break it down to call it the history which is more like  block headers transactions receipts logs so on so if you got a big old you could do an archive sync  and these f these hold the entire state entire

history for the whole chain. So you're going to  end up with a large database. But the advantage is that some some methods that you're going to hit  the RPC with are dependent upon having the state. So all your RPC methods are going to work all the  way back through the chain. And if you want to try to save some space, which a lot of node runners  do, you can use what's called a prune sync, which basically you're you're keeping the full  history of the chain, but you're pruning the state after some number of blocks. And a little  confusing, prune syncs have different names depending on the execution client. Like some call  it a full sync, some call it snap. Uh it's not

really full because you don't have the whole whole  state, but whatever. Uh this way you get a smaller database if you're going to go with the brun sync.  Um but you're limited to certain RPC methods than if you're going back further if you're going back  further in time than you have this state for. And just to illustrate a little bit um  client database sizes that for the clients that we're using mid November 2025 uh a ref  pruned sync is going to cost you about 1.2 2 terabytes and that'll give you state for back  back to 10,064 blocks from the most current and on ref that pruned that that sync that sync point  is userdefined. So you can you can change that if

you'd like. Uh on the GU side a pruned prune sync  is going to cost you 1.4 terabytes. Um and on GU the peroon syncs the state is more limited. It's  available for the last 128 blocks. And then if you uh you're going with the big boys uh  a RE archive sync is going to be about 2.6 terabytes and a GU archive is is much  larger. I've seen different numbers. Um so I settled I said about 15. It's up there. I  haven't tried it myself so I cannot confirm.

So yeah, th those execution clients uh are  taking up quite a bit of disc space for sure. On the consensus client side, we're looking  at 100 to 200 gigabytes. So not nearly as bad. So I mentioned kind of showed a list of of the  clients earlier and it mentioned that there's a number to choose from and and that's very that's a  very good thing because client diversity is super important. We really don't want a majority of  clients to be using or a majority of nodes using the same clients because that creates a bottleneck  where a a problem in one client could compromise the chain. So there's a big push to get to get  more clients out there and get more nodes running at greater diversity. And kind of illustrate  where we're at, uh I pulled these charts from

client diversity.org or and uh figuring out  what what nodes are running what clients is not super straightforward. It's uh they even say  here not not 100% accurate. Um and even on the execution side they're they're saying they have  74% confirmed clients and they're kind of assuming the rest are death. But the way the client break  client breaks the client diversity breaks down right now is get the big player g and nethermind  are the big players on the execution side. Techu is dominating on cons consensus side which uh with  prism and lighthouse coming in second and third.

And right now the build go client is set up by  default to run ref on the execution side. And you have the secondary option of running it with GE,  which is the majority client, but it it's tried and true. It's the OG. And on the consensus side,  you have a choice between Prism and Lighthouse. Uh some of the basic BG client startup options. Um  flags to choose your your two clients. By default, the BG client will do a a prune sync, but if you  want to use an archive, slap that in there. Um, you have the option to set your your pure  discovery ports for both clients, which is

important. You want those to be accessible  to other nodes so that they can they can benefit benefit from that data, especially during  their syncs. You have an option to to change the directory. It's usually within the build client  directory itself. But if you want to run it on a secondary drive or something and do that and  handily there's an update flag which which is great because clients are constantly being updated  for improvements and forks. So if you have a build go client all you got to do is pull it pull from  the git repo and hit it with that update and it'll uninstall your old clients, install some new  ones. And then there is this owner flag. And this is for a little kind of like a a little mini  decentralized RPC service that's running based on

our build guild nodes. And we're using we're using  the the RPC from the these distributed nodes to power scaffold ETH apps. And anyone's anyone's  welcome to opt in to to help us out with with powering scaffold ETH. All you got to do is set a  set an owner flag and good to go. And in return, uh, people opted into the RPC, we'll get a an  ERC20 called build guild bread. It's, uh, you know, not worth anything, but it's kind of a super  super complex point system. U, but that option is there. Um, yeah. And as I plan, as I promised,  I'm way under time. So, take any questions,

how compatible. Well, first uh thanks for  the talk. How compatible is the build guild client with other technologies like OAL  or SSB? Uh I missed I missed the other technologies you said. Sorry. SSB and OLE for  DVT distributed validator technologies. Oh, uh I'm I'm not familiar with that.  I don't have a good answer for that, but I'll figure it out. Yeah,  thank you. Yeah, sorry. Anyone else?

No. Well, questions. I I think that's it. Get some lunch.