Ethereum Client Developers Conference Retrospective
A large part of what makes possible "magic internet money" occurs deep down where most people will never see it - in the actual clients capable of connecting to a network like Ethereum and retrieving the data about your favourite kitty, or broadcasting a transaction to pay out your latest bounty or prediction.
It's the people who build clients (like Geth or Parity or cpp-ethereum) and write tests who are left with the most of the responsibility about what changes to implement in production. As much as some may suggest that Vitalik "controls" Ethereum, the reality is very different. The often-quoted DAO was actually a prime example of this: developers provided both fork and non-fork options and the majority of the community chose the fork through a command line option.
Difficult decisions require good developers, and developers - like all people - are made better when provided with face-to-face fora to discuss the technical challenges of, for instance, developing clients as we transition to both sharding and Proof of Stake. This sort of gathering naturally goes along with presentations about eWASM, STARKS, TurboGeth, Ultra Light Clients and all the other things you don't have time to follow (a hallmark of successful decentralized and open source projects).
There are some complicated questions to answer when approaching these topics. Getting people who are domain experts together into the same room for two consecutive days is the best way we know to advance the conversation usefully and reach some kind of rough consensus about how to implement at least some of the required changes.
We owe a huge vote of thanks to everyone who attended and contributed and we look forward to making this a regular and productive occurrence for the people building out the infrastructure which enables all the other kinds of magic that make up Ethereum.
Day 1
Avihu Levy kicked us off with an overview of STARKs - which are Scalable, Transparent, ARguments of Knowledge. His presentation even included two use cases. Vitalik has also written a 3 part series about these particular constructions on his blog.
Elad Nachmias presented some of the work which makes up Swarm PoC 3, recently merged into Geth and including some really great updates. More details are available from the Swarm Conference itself.
Dmitry Khoklov then presented a new approach to testing. Testing currently uses cpp-ethereum, and he wants to move both test generation and execution into a separate test framework, so that every client could potentially be its own test generator. Exciting stuff!
Eugene Danilenko and Boris Petrov got things going again after the break with an overview of Status' work on the Ultra Light Client (ULC) and how Status plans to use it on resource-restricted devices going forward.
Vitalk and Justin Drake then closed off the day with a long-form discussion about sharding, the "beacon chain", aggregate signatures and various other ideas that it might be good to acquaint yourself with. The finer details remain a work in progress here, but it's worth at least introducing yourself to both the issues and opportunities Vitalik and the Foundation have themselves identified.
Day 2
Alexey Akhunov got the day started with a bang, presenting the latest work he has been doing on TurboGeth and optimising Ethereum clients in general. Alexey is the recipient of an ETH Grant for his work, and has some really useful insights into optimisation. He's also written about his experiences extensively here.
Jacques Wagener, another Status contributor, talked to us about Vyper and their recent beta release. Vyper is a python-like language that targets the EVM and it makes some very different tradeoffs to Solidity, particularly when it comes to security. Vitalik is a big fan.
Alex Beregszaszi, and seven others, then did a 2 hour, interactive session around their work on eWASM. This project grows out of Web Assembly (a.k.a. WASM), and is an attempt to make WASM 100% compatible with the EVM. It ought to be possible to write eWASm contracts which can interact fully with EVM contracts - though there are a lot of options for extensibility enabled too.
Phil Daian, an independent security researcher, ran another interactive round table on threat modelling and ways to think more broadly and effectively about security, consensus, availability and other guarantees we should consider when building future versions of the protocol.
Vitalik and Justin then hosted another open session on further design considerations for Ethereum 2.0, diving deep into large-order polynomials and Lagrangian interpolation. Obscure mathematics aside, what is clear is that everyone acknowledges the need for scaling solutions, and there are some recent academic developments that seem very promising - particularly STARKs and BLS signatures.
Danny Ryan ended the second day with a roundtable discussion focussed on some of the social impacts that the move from Ethereum 1.0 to 2.0 might have.
. . .
The Ethereum Foundation ran Day 3 of the conference, which was purely focussed on sharding. You can find all the notes and videos from that gathering here.
All in all, it was a fantastically stimulating conference, so we hope that the videos of each session we have now posted will give you some insight into both the ideas - and the quality of discussion - that we were privileged to hear in Berlin last month.
We look forward to many more similar events, focussed on understanding deeply and then actually building the infrastructure, clients, and tools we all need to make the most of a better web.