Hey folks!

Since last time, I've been mostly up to three things:

  1. Building up nanoeth, focusing on representing, signing and verifying transactions
  2. Attending the EthCC[4] conference in Paris.
  3. Continue reading about Ethereum, this time with a focus on the ecosystem that lives on top of it, and its interaction with the core infrastructure (MEV!)

Signing & verifying transactions on 🔬 nanoeth

nanoeth (github) is my "toy client" that I'm using to gain a better understanding of the Ethereum infrastructure. It will probably never be a real client - I have no intention of implementing the networking layer for instance.

This time, I've implemented transaction representation and their signatures.

I actually started with the signature part, learning a lot of elliptic curve cryptography in the process. In particular I followed this really good introductory article series.

I expected the process of implementing signature to be pretty easy in a black-box kind of way, but I was actually surprised that the knowledge from the article really came in handy. I had to overcome a few more technical hurdles in how Ethereum uses these signatures, which I chronicled in this README file.

Representing transactions was also a bit more challenging than expected, though only slightly, owing to the fact there are 4 possible transaction formats (including two "typed transaction envelopes") which need to be parsed from / serialized to RLP.

Finally, testing proved to be another interesting part of the work. Besides verifying random transactions from etherscan, I imported the transaction tests from the ethereum/tests repository. To my amazement, it didn't really reveal many issues. In fact the only thing I found so far was that I failed to validate that some fields (such as the value transferred) did not exceed their maximum (32 bytes) size. However, I was a bit disappointed that the test case coverage is not very broad. For instance, there are no verification of typed transaction envelopes. It is my understanding that it might be tested as part of the block tests

EthCC[4]

EthCC was an amazing experience, both in learning and meeting a lot of smart, interesting, and kind people.

The most interesting talks I attended formed a pair:

I also didn't attend, but intend to watch "Demystifying Geth by Tracing the Path of a JSON-RPC method".

I heard of a lot of other interesting stuff, but it's a bit out of scope for this update.

Finally, I did have an interesting conversation with a gentleman working on cross-chain interoperability. I told me they were struggling in their understanding of the EVM, and that they could really use either an executable specification of it or a very simple to understand implementation. One of the issue he mentionned was that the yellow paper is not up to date with current status of the chain (it only targets the Istanbul hard fork). So that might be an another idea worth exploring in my internship. Though perhaps I should investigate the eth-1.0 repo EVM implementation first.