# **EPF5 Weeks 9-10 Update**
I'm becoming more comfortable working with CLI and Git. I forked and downloaded copies of [ethereum.org](https://github.com/ethereum/ethereum-org-website), [EPF](https://github.com/eth-protocol-fellows) and [Grandine](https://github.com/grandinetech/grandine) repos so I can also continue to get more comfortable working with my IDE (using Visual Studio Code). It does make things much easier!
I realize I watched the ETHGlobal Engineering Lead do this for me for ETHGlobal's repos when I worked there. It didn't make any sense to me back then but it certainly does now when I'm the one having to do it. Best way to learn something is to do it yourself right?
I previously mentioned that Grandine is not listed anywhere on ethereum.org. I submitted a PR to get it added across several pages:
- ~~[Nodes and clients](https://ethereum.org/en/developers/docs/nodes-and-clients)~~
- ~~[Client diversity](https://ethereum.org/en/developers/docs/nodes-and-clients/client-diversity/#consensus-clients)~~
- ~~[Ethereum Support](https://ethereum.org/en/community/support/#consensus-clients)~~
- ~~[Adding staking products or services](https://ethereum.org/en/contributing/adding-staking-products/#node-or-client-tooling)~~
- [Spin up your own Ethereum Node](https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/#running-a-consensus-client)
- [Ethereum Bug Bounty Program](https://ethereum.org/en/bug-bounty/#rules) Follow up with EF Security team on eligibility
- ~~[Ethereum Governance](https://ethereum.org/en/governance/#who-is-involved)~~
The PR for the struck through items is [here](https://github.com/ethereum/ethereum-org-website/pull/13677). The other two items will require a little more work that will be part of my tasks for the coming week.
**To Do's For This Coming Week:**
I began reading the [Lighthouse book](https://lighthouse-book.sigmaprime.io/intro.html) as I begin updating Grandine's book. I need to submit PRs for Grandine Installation documentation by today or tomorrow the latest.
I also need to finish setting up my Geth and Ligthouse clients. Once I finish this, the plan is to switch from Lighthouse to Grandine and then begin documenting how to switch between the other CL clients to Grandine since this documentation does not exist yet.
**Key events for the past few weeks:**
- Finished reading the book [Code](https://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319). This has been very helpful in giving me a very basic understanding of how a computer works. It's helped adjust the way my mind is thinking about code and the inner workings of it all.
- Listened to [ACDC Meeting #138](https://www.youtube.com/watch?v=lmzAUqsIbIE&ab_channel=Ethereum) and [ACDE Meeting #193](https://www.youtube.com/watch?v=vbh9C2_-TIc&ab_channel=Ethereum)
- Watched [Elixir Consensus Layer Clieint EPF4 Presentation](https://www.youtube.com/watch?v=q-A7thrJVAM&ab_channel=LambdaClass)
- Watched [ACDE #194](https://www.youtube.com/watch?v=tbxgYq8KmmM)
- Watched [ACDC #139](https://www.youtube.com/watch?v=o8p47gIt7Bs)
**Grandine Project Notes:**
- Windows and MacOS support - Grandine's developers mainly use Linux, so Grandine is tested only on Linux. However, there are many Windows and MacOS users that would benefit from better support;
- Get Boma_Naps for MacOS and Kamui that worked on Windows Support. I can add what I've done from MacOS perspective. Make sure as we go along that we are documenting roadblocks we face, send to me and I will include in documentation. Or we can all work on documentation?- Other - any other mutually agreed Grandine's area that can be improved.
- Documentation on their website to make it more welcoming for new users, similar to the Lighthouse Book. Ask Saulius what should be included, highest priority items first and start from there.
- E2E testing - improve Hive and Kurtosis test infrastructure;
- What does Prysm and other Consensus clients do? Start there and recreate that.
- Prepare your environment, update the system and install dependencies so it doesn't block you during the workshop.
- The workshop environment will be fresh Debian 12 instance but you can use any preferred distro. Process might be very similar on other unix based systems like Mac but you can always setup a VM to replicate the environment.
- Install basic utils we will need like curl, git, gpg, docker, compilers
- We will only run a client on testnet so the hardware requirements are minimal - the goal of the workshop is not to sync the tip of the chain but only demonstrate how the node works. Default client pair will be geth+lighthouse but if there is enough time we can demonstrate switching the pair.
- Choosing a client pair and environment
- Obtaining clients
- Downloading and verifying binary
- Compiling a client?
- Docker setup?
- Client pair setup
- Run EL+CL client on Holesky
- Running on Ephemery using custom genesis
- Switching CL or EL client
- Nimbus?
- Erigon?
- Using the client
- Accessing the RPC
- http, console, wallet
- Adding validators
- Additional exercise if there is time
- Systemd service
- Monitoring node
- Setup monitoring with Grafana dashboard which shows detailed information on various client parameters and functions
- Enable higher logs verbosity, read client debug logs to learn about its low level processes
- Connect to your node using a wallet, development tooling, web3.py or JS console
- Connect your node to the crawler and check what details it learns about it, discover new peers
- https://github.com/eth-educators/ethstaker-guides/blob/main/holesky-node.md
- https://notes.ethereum.org/@launchpad/node-faq-merge
- https://www.coincashew.com/coins/overview-eth/guide-or-how-to-setup-a-validator-on-eth2-mainnet/part-i-installation/monitoring-your-validator-with-grafana-and-prometheus
- Read [EPF Wiki SSZ Serialization section](https://epf.wiki/?#/wiki/CL/SSZ)
- Read [p2p-interface.md](https://github.com/ethereum/consensus-specs/blob/dev/specs/phase0/p2p-interface.md) - Not started
- Set up [docker](https://github.com/eth-educators/eth-docker/releases/tag/v2.9.1.0)
- Go through the [Grandine GitHub](https://github.com/grandinetech/grandine)
- Read through [Grandine Docs](https://docs.grandine.io/)
- Read through [Ethereum/builder-specs](https://github.com/ethereum/builder-specs)
- Read through [Consensus-specs](https://github.com/ethereum/consensus-specs)
- Read through [Beacon APIs](https://github.com/ethereum/beacon-APIs)
- Write first Pyspec program. Use [Pyspec Tutorial](https://github.com/ethereum/consensus-specs/blob/dev/tests/README.md)
- Read [Upgrading Ethereum 2.7-2.9 sections](https://eth2book.info/capella/part2/)
- Read [Upgrading Ethereum Part 3](https://eth2book.info/capella/part3/)
**Links I came across that could be helpful in the future**
- https://beaconcha.in/
- https://stakefromhome.com/
- https://etheralpha.org/
- https://x.com/ethereumonarm/status/1800436894418805198?utm_source=substack&utm_medium=email
- https://simpleserialize.com/ (thanks for sharing DanGoron!)
**Rust Resource**
- [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html)
- [Rustlings](https://github.com/rust-lang/rustlings/?tab=readme-ov-file)
- [Exercism for Rust](https://exercism.org/tracks/rust)
- [Learn Rust With Entirely Too Many Linked Lists](https://rust-unofficial.github.io/too-many-lists/index.html)