## Introduction
My name is Tomás Grüner, and I joined the program with the objective of understanding the Consensus Layer of the protocol, and using that newfound knowledge on building a Consensus Client in the Elixir language.
## Update
### First week
I worked on broadly understanding the [consensus specs](https://github.com/ethereum/consensus-specs), up to the Capella fork. With special focus on the networking protocol (communication channels, serialization and compression methods), the consensus mechanism, the different beacon operations, and the information stored in a beacon chain block.
For this, useful resources were:
- [Upgrading Ethereum](https://eth2book.info/capella/) (especially the part about [consensus](https://eth2book.info/capella/part2/consensus/))
- [Phase 0 for Humans](https://notes.ethereum.org/@djrtwo/Bkn3zpwxB?type=view) (although it's mostly outdated)
### Second week
I started work on creating Elixir bindings for the **battle-tested** *go-libp2p* library. This will be achieved through Erlang's [NIF](https://www.erlang.org/doc/man/erl_nif.html), and Golang's [cgo](https://pkg.go.dev/cmd/cgo) feature. Through the week, I managed to implement a proof of concept with some dummy tests, along with the bindings for some functions of the library ([link](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/12)).
## Next steps
For the next week, I plan on learning about the functionality of libp2p, and work on some examples written in Go. After that, I'm going to rewrite those examples in Elixir, generating the necessary bindings.