Hi again!

Readings: Zero-Knowledge & Beacon Chain

I wrote the last update while I was taking a week of holiday. During that time, I read a little bit about both zero-knowledge proof (and in particular SNARKs) and continued that reading afterwards. I wrote a Twitter thread with some links, if you're interested.

I also read about the beacon chain, the first piece of Ethereum's migration to Proof of Stake. I haven't really seen a good technical write-up on it, and so I turned to the specification. It is rather dry, but fortunately there are some annotated versions:

I highly recommend reading the Ben Edgington version first, as it is the most introductory treatment. Vitalik's version focus on giving the rationale on various advanced design considerations and constants. Danny Ryan's version sits somewhere on the middle, but its strength is in being much shorter (it doesn't annotate the entire spec), focusing on the most relevant parts to give a slightly higher-level overview.

Coding

I've soldiered on nanoeth, implementing the modified Merkle Patricia trees. I'm currently implementing Merkle proofs.

My next step will be to (finally!) implement Verkle trees. The EIP draft changed quite a lot recently, and the new approach is to use "bulletproofs" (Pedersen commitments) instead of KZG commitments as previously planned. There is no battle-tested bulletproof library for Java, but as luck has it, the prototype released with the initial bulletproof paper is in Java, so I'm hoping to be able to adapt it. If you're new to Verkle trees, the recent PEEPanEIP episode with Dankrad Feist explains a lot.

I also want to go about more seriously learning Solidity & smart contracts in general, because ending my apprenticeship without having written a single smart contract would just be plain silly.