Try   HackMD

Hi everyone

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
i'm Mohas here's the Week 0 of my development updates for the ethereum protocol fellowship cohort 4 !

Familiarization with the EPF program

I started by finding out how the epf work, by consulting the cohort 4 repo and previous cohort repos. I also joined the ethereum R&D discord server.

I'm interesseted about web3 security and i found the project idea proposed by Frederik very interesting .

Then I had questions about epf, so I attended the first call and got my questions answered.

I had a discussion with the mentor Frederik in order to have more information on the project idea he submitted and he sent me some useful resources.

My first researches on the topic

So I looked into the subject of a fuzzer, I wanted to evaluate and see how to proceed to make one.

Frederik already shared some existing ethereum fuzzer repos in the idea document, so I looked through the repos briefly.

The first thing I noticed is that fuzzers are mostly written in Go or Rust.

I don't know either language, so I didn't know which to choose at first so I did my research.

After some research and contact with fuzzing experts I opted for rust.

Why rust? The two languages are two very good options, they have the same advantages except that rust is more faster at runtime than Go and Go is easier to learn than rust .

Whatever happens even if rust is more difficult to learn (according to my research and the opinion of the experts who answered me) it's not a big problem because the learning of the language is only one part of the project.

I also had feedback on the choice of coding a fuzzer from scratch or contributing to an existing fuzzer. I've been told that contributing to an existing framework seems more doable than making one if you're not already a fuzzing expert. I haven't made my choice yet, but I have a preference for creating a fuzzer.

My first steps in the creation of the project

So after doing research, taking some feedback, fully understanding the program and choosing the programming language, I made myself a little roadmap and a non-definitive schedule that I will adapt as I go.

Here's my roadmap :

  • Learning rust & strengthen my knowledge of ethereum.

  • Learning fuzz techniques with rust, analyze existing fuzzer written in rust.

  • Write the specs of the fuzzer, search for what i will fuzz on ethereum.

  • Start writting the fuzzer

  • Checks the firts results, keep upgrading the fuzzer

While doing these steps, I will continually study the Ethereum protocol and network, fuzz techniques, and rust to gain a deep understanding of the project.

I already have some knowledge about ethereum, Frederik recommended me to do the secureum bootcamp. Something I've done before, but I decided to do it again. Regarding rust, no knowledge of rust but I have already learned many programming languages so it should be fine.

I have divided the learning tasks as follows for now :

I devote 9 hours a day to my research, divided into 3 sessions of 3 hours. The first session of the day is on rust, then on ethereum then the last on rust again. So basically I spend 6 hours a day learning rust and 3 hours learning more about ethereum. Sometimes I also do some extra reading in the evening.
Then, I will adapt my schedule as the project progresses.

So for these first days of research I spent my time studying rust and ethereum, here are the resources I used:

Rust ressources :

The rust book is a very well-known resource, I'm mainly on it when I study rust but sometimes if I have a concept that is not very clear, I try to use several different resources to understand better.

Ethereum ressources :

Lots of theoretical reading on ethereum, I had read these resources before but decided to revisit them to refresh my memory and get an in-depth knowledge of ethereum. I took the notes I had written earlier when I did secureum the first time and wrote some more.

Conclusion

That's all for my progress in week 0, I can't wait for the program to officially start, I will be present July 13 for the first EPF Office Hours call

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Many thanks to mentor Frederik for taking the time to discuss with me and to the organizers of the EPF for answering my questions

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

I can be reached on discord or on my twitter, if you have any questions about my research and my notes or if you want to share something with me

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →