## 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.