Thanks to all the developers and team leads who contributed to sections of their projects.
In the last month and a half, the Ethereum network has experienced rapid growth in usage, to the point that it now processes as many transactions per second as Bitcoin. To accommodate the increased load, which on some occasions reached full network capacity for hours, the community met independently and the miners voted in favor. increase gas limit to 6.7 million. We at the Foundation have been rapidly devoting additional resources to increasing the efficiency of the network, along with planning for longer-term changes that will greatly increase the scalability of the network.
Research
The pyethereum client has undergone a substantial revamp and version 2.0 has been released. Watch https://pypi.python.org/pypi?:action=display&name=ethereum&version=2.0.4 to download; on Ubuntu you can also do “sudo pip install ethereum”. Additionally, we have implemented experimental versions of:
metropolis trials
The Metropolis trials are moving quickly. We are actively seeking additional help to finish testing. Watch:
We have started a major cross-customer benchmarking effort to identify the places that most need performance improvement. See some preliminary results for creating opcode banks in geth here: https://gist.github.com/holiman/7b157e4074707f6ba3196d46ad3745af
Ethereum Developer Core Meetings #15-#19 were held. Meeting notes and audio/video can be found here: https://github.com/ethereum/pm/tree/master/All%20Core%20Devs%20Meetings
fog team
In May-June, the Mist team had a team meeting: for a week the team had face to face face to face, some members for the first time, where we sat down together to share details about the projects we were working on and to talk about the current codebase and future roadmap. While we have a long list of features we are working on, we found that most of the issues reported on github were related to two main issues: slow syncing and leaking account private keys/passwords. We outlined features we could implement to help prevent user errors and other related issues, including more options for node switching (including Infura support) and better options for account management (including HD wallets and mnemonic seeds, but with a twist).
- Many of those new issues require some changes to the way the signing process is done to make Mist more independent from Geth, which is being worked on as an independent signer.
- We’ve also done some research on refactoring parts of the Mist codebase to make it more modular and easier to maintain.
- Victor Maia presented some research on how to make applications load faster and more reliable and we are currently testing some of these concepts as pieces of the main codebase and/or as an alternative web-based product.
- Progress has been made on ENS integration: We’ve added ENS support to our address component, which means that any of the apps we’ve built on Meteor (wallet and ens registration app) will accept a name in any field where it would normally I would expect an ethereum address. We are also working on creating a web component for generic input types for ethereum addresses, so that any web application developer can use an ENS-compliant input field, checksum, and ethereum identifiers. With swarm now using the main network registrar, it also means that Mist will accept ENS addresses in the URL as soon as the swarm branch is merged.
- The Swarm integration has been tested and is much more stable than it was a few weeks ago. We predict that it will finally be ready for release soon.
web3.js
Web3.js is working fine. The new whisper API was recently added to the old 0.xx and new version 1.0.0. Whisper v5 is currently only available on geth and needs to be started using –shh. We are currently adding swarm.js and finishing up the JavaScript account management. If all goes well, there will be an alpha release soon.
You can already try the new web3.js 1.0 here: https://github.com/ethereum/web3.js/tree/1.0aand read the new documents at http://web3js.readthedocs.io/en/1.0/
Security
We have received several bounty submissions for vulnerabilities in EthereumJS, Solidity, and Cpp-ethereum. Watch the classification for current statistics.
We now have pyethereum on board in the cross-client black box consensus testing on Hive, which continually performs over 10,000 tests on each client. Watch http://hivetests.ethereum.org. As a lightweight alternative to Hive, we also started a project to fuzz test directly on virtual machines, starting with Geth, Parity, and Python. Along the same lines, we have also established an automated system AFLSolidity-based fuzzing.
In preparation for Metropolis, a benchmarking suite for Geth EVM was implemented to ensure that gas prices for new opcodes and pre-builds are within reasonable limits, so as not to constitute DoS vectors at a later point.
EMV 1.5
The “EVM 1.5” proposals are now draft EIPs for “Subroutines and Static Jumps for EVM #615” and “SIMD Operations for EVM #616”. Discussion and criticism are welcome on the https://github.com/ethereum/EIPs/issues/615 Y https://github.com/ethereum/EIPs/issues/616 conversations
EthereumJS
The ethereumJS team continues looking for community partners to help the Ethereum Javascript client achieve compatibility with Metropolis. A video tutorial”Introduction to basic development with Ethereumjs-vm” has been released.
thin client
New algorithms have been designed and implemented to improve record search performance in the next version of the LES protocol. Promising R&D work has been done to achieve fast and reliable initial synchronization without hardcoded checkpoints. We have worked hard to finalize the topic discovery protocol, which helps clients find suitable LES servers, as it is currently a weak point in the experimental thin client service.
remix
The main feature of Remix in the last month is the alpha release of Remixd: https://github.com/ethereum/remixd
Formal Verification
Progress on the eth-isabelle project was mainly due to external contributions. In particular, the better split logic tactics, which were contributed externally, allow for much shorter tests on Ethereum contracts.
- Better Separation Logic Tactics (contributed)
- Coq build fixed and added in continuous integration
- Removal of unmaintained files and `Annotation` structure no longer needed (PR pending)
- Running blockchain tests (ongoing; looking for ecdsa recovery implementation in OCaml).
Bamboo
- The compiler is generating bytecode for all initial examples.
- Syntax refinement following community feedback
- End-to-end compiler testing (ongoing)
Solidity
The Solidity project has been quite active in recent months, although most of the updates are still not directly visible on the user side. We saw a lot more engagement from the community and now have volunteers regularly contributing to both core code and documentation, including translation, mostly in Spanish.
We added a function that allows export of the full abstract syntax tree with all kinds of annotations, which makes it much easier to write tools that would otherwise need a custom parser. The next feature will also be re-import this data after possible modifications, which would allow for things like mutation testing.
We extend the assembly language online with structured elements (for, switch and functions) and deprecated manual jumps. This new inline assembly language will become a new intermediate language (along with the type information), making Solidity more transparent in its compilation, more efficient (we will be able to add much more sophisticated optimization routines), and more portable ( may already be compiled in EVM, EVM1.5 and some eWASM). we are currently rewriting the ABI encoder in this intermediate language that will include nested dynamic objects and structures.
Finally, we are adding a automatic assertion and overflow checker at compile time which will also have an SMT solver for the most complicated cases. Oh, and of course, we’ve worked on tons of bug fixes and smaller features.
Swarm
The swarm team onboarded new members and held an in-person Swarm Summit in Berlin in June 2017. The week-long event brought together members of the Ethereum team, community contributors, and special guests representing projects and companies interested in swarm. More than twenty talks and tutorial sessions were recorded. The edited videos will be posted on the Swarm Summit website soon. Our public alpha testing saw a great response from the community which allowed us to gather more information about the potential needs of the user base and what typical usage patterns might be. High node turnover requires an explicit distinction between nodes that can and cannot commit to being available for a longer period of time to provide sufficient storage and bandwidth resources for the network. To support uncompromised nodes and mobile clients, Swarm will offer several lightweight modes of operation.
We’ve developed a set of sample applications that highlight the architectural and implementation quirks of Swarm-hosted distributed web applications that stray far from the traditional client-server model. In particular, the building blocks of a distributed functional equivalent of Dropbox are being developed, such as a web interface that provides a file system view of swarmed volumes, ENS integration, Mist integration, FUSE mounting of swarmed volumes, and privacy. protections
We added a new protocol, pss (whispered bzz) that enables messaging between nodes with deterministic routing based on the kademlia swarm relay network topology. The protocol uses whisper envelopes and offers udp-like protocol communication between nodes that are not directly connected.
In addition, we have developed a network simulation and testing framework in which we can model and compare a wide range of scenarios arising from the interaction of a potentially large number of nodes. This framework includes scripting and visualization capabilities.
In cooperation with the Remix team, the implementation of a fully distributed integrated contract development environment is underway.
The next major release, POC 0.3, is scheduled for release in Metropolis and will include obfuscation support for plausible deniabilitya rewrite of peer-to-peer accounting for bandwidth incentivization, among other things.