During the last month and a half, the Ethereum core development and research teams have been building upon the progress made in the last year, and with the specter of last year’s security issues now well behind us, work has begun in full force on implementing the Metropolis hard fork.
First, ongoing progress on the collaboration with the Zcash team and the implementation of zk-SNARKs:
- The full series of “zk-SNARK explainer” posts from myself is now finished, see https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649, https://medium.com/@VitalikButerin/exploring-elliptic-curve-pairings-c73c1864e627 and https://medium.com/@VitalikButerin/zk-snarks-under-the-hood-b33151a013f6
- An update on implementation from Christian Reitwiessner: https://blog.ethereum.org/2017/01/19/update-integrating-zcash-ethereum/
On the proof of stake front, myself and Vlad and others have continued to solidify the Casper specification and converge on a roadmap. A key focus of our work has been on a notion of “protocol armor”, which can turn many classes of traditional Byzantine-fault-tolerant consensus algorithms into “attributable-fault consensus algorithms”, where if there is a protocol failure then not only do you know that a large number of validators were faulty, but you also know whom to blame. The work has not yet been fully written out, though it will be further formalized and presented soon, and anyone interested is free to follow along at https://gitter.im/ethereum/casper-scaling-and-protocol-economics.
A post on parametrizing Casper was written here: https://medium.com/@VitalikButerin/parametrizing-casper-the-decentralization-finality-time-overhead-tradeoff-3f2011672735
We had two core dev meetings, and have approved the following EIPs for likely inclusion into Metropolis:
- http://github.com/ethereum/EIPs/issues/86 (abstraction)
- http://github.com/ethereum/EIPs/issues/100 (uncle mining incentive fix)
- https://github.com/ethereum/EIPs/issues/196 and https://github.com/ethereum/EIPs/issues/197 (elliptic curve pairings, the key ingredient for on-chain zk-SNARK verification)
- https://github.com/ethereum/EIPs/issues/198 (bigint modular exponentation, for use in RSA and various other big-number-based cryptographic algorithms)
- https://github.com/ethereum/EIPs/pull/206 (REVERT opcode, equivalent to the “throw” keyword in Solidity but without burning extra gas)
- https://github.com/ethereum/EIPs/pull/210 (blockhash refactoring, serving the triple duty of (i) simplifying consensus logic, (ii) allowing the BLOCKHASH opcode to refer much further back, and (iii) enabling much more efficient and secure light client initial-syncing protocols)
Additionally, there were a few changes to the EIP process itself: https://www.reddit.com/r/ethereum/comments/5rp8mr/update_to_eip_ethereum_improvement_proposal_system/
Work on Mist, Swarm, ENS and associated infrastructure is continuing at a rapid pace; Swarm is now at the stage where it can serve the wallet app, though the incentivization logic is not yet in place.
- Our new developer Victor Maia is working on Swarm integration in Mist; you can follow progress here: https://github.com/ethereum/mist/pull/1661
Work on programming languages is also moving forward:
- Solidity is adding a fully specified way to access the compiler input, settings and output: https://solidity.readthedocs.io/en/latest/using-the-compiler.html#compiler-input-and-output-json-description
- There are plans (not yet completed) to add an intermediate language to Solidity to help with understanding what the compiler does and auditing compiler output
- In the community, the fp-ethereum functional programming initiative got some attention
- Viper saw another round of improvements, including support for unit types (timestamp, timedelta, wei, wei per second, etc), bytearrays and more builtin functions: https://github.com/ethereum/viper/commits/master
Work on implementations is progressing:
- The cpp-ethereum project is experimenting with the performance of the EVM. Some results suggest that the EVM might be able to get up to a small linear factor close to “raw metal” with the more structured EVM 1.5 model.
- With its newest 1.5.9 release, Geth supports hardware wallets: https://github.com/ethereum/go-ethereum/releases/tag/v1.5.9
- Work on integrating the recent pyethereum changes into pyethapp is continuing: https://github.com/ethereum/pyethereum/commits/state_revamp_for_stable
We wish everyone a happy Valentine’s day!