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/
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)
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
- The work on ENS includes a name resolver, a registrar, a Javascript implementation library and a user-facing dapp. Support from major Ethereum wallets is coming soon.
- 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
- The Javascript-based development environment Remix added much more powerful debugging support
- 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