On Medium, I posted some blogs about verifying Ethereum contracts or proving PoS slashing conditions correct. These efforts are easily bloggable, but nowadays I was not performing this kind of magic. Today I write about the other things I do for Ethereum.

The biggest thing I’m working on is the planned Metropolis protocol changes. Over half of my time is now spent on Metropolis. On the Yellow Paper, I’m trying to specify the changes in nine pull-requests. And then, I peek into the implementations like cpp-ethereum, go-ethereum and Parity. I look at cpp-ethereum first because I belong to the C++ team, and cpp-ethereum produces the test suites (Dimitry Khokhlov and Martin Holst Swende are putting enormous efforts creating test cases).

The process starts by looking at the EIP text (like this) specifying the changes. Sometimes I feel ambiguous and say that. Then I pick relevant pages of the Yellow Paper and write the new version, on a page of a notebook. Without doing pen-and-paper first, I cannot type LaTeX. For me, thinking and typing LaTeX are two separate steps. That’s not just me. I’ve read somewhere that the creator of TeX first writes on paper and then goes to Emacs. The difference is that Donald Knuth is a careful person and I am not. Even after the two steps, I make terrible mistakes (that’s one thing I learned doing PhD). I file a pull-request for the Yellow Paper repository. I’ve been visiting the author of the Yellow Paper for review-and-merge sessions. This process started only this year, but helped a lot already.

I also look at the same changes implemented in different clients. After writing the changes on paper and typing them into LaTeX, I tend to remember certain details. So, I sometimes find problems and comment on PRs, or shout on a Gitter channel, or go to core dev meetings and ask questions. The choice depends on my confidence on which side is correct. When I know, I tend to poke the side that I believe should change. When I don’t know, I ask at the round table.

After the Metropolis, the next biggest thing is the EVM for theorem provers. Until early spring, I believed I was going to implement some reasoning layer for Ethereum contracts. That went half-way. And then, a contributor extended the EVM model so that it can execute the state tests, not only the VM tests. The new test suite discovered bugs in the EVM model, so I was fixing them. This wasvery nice. Two weeks ago, I learned that the test suite was obsolete and instead I need to use one of newer test suites. So, I need to parse and execute these new formats. That’s where I am, and I am sort-of procrastinating by writing this piece.

I guess this gave some vague impression of what kind of work I’m doing. If you want to follow more closely, I keep some bullet points every day.