---
# System prepended metadata

title: EPF Fourth Cohort - Week 4 update

---

## Update

This last week I worked on:

- adding bindings for the [*go-ethereum/p2p* library](https://pkg.go.dev/github.com/ethereum/go-ethereum/p2p), and examples using it from Elixir [#20](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/20)
- adding bindings to Rust's [*snap*](https://crates.io/crates/snap) crate, for Snappy frame decompression [#22](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/22) (for simplicity, the implementation requires reading the whole stream, but that will change in the future)
- using both bindings to implement some examples that send `GetMetadata` and `Ping` requests, and then decompress their responses
- writing an explanation of the Elixir <-> Golang interface [#24](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/24)
- some miscellaneous chores [#28](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/28) [#29](https://github.com/lambdaclass/lambda_ethereum_consensus/pull/29)

With this, we have covered two of the three P2P domains: discovery and req/resp, leaving only gossipsub left. Since we can message peers, and the main source of uncertainty on this part was solved (interfacing between Elixir and Go), we agreed it'll be better to add the spec-tests first, and build up on that. Because of that, I started work on integrating the [spec-tests](https://github.com/ethereum/consensus-spec-tests/tree/master) to our repo. This would allow us to more easily verify our implementations, the first of which will be SSZ encoding/decoding.

## Next steps

This week I plan to work on enabling execution of the SSZ related spec tests. After that, I'm going to help the rest of the team on SSZ implementation and testing.
