Q4 Roundup

Posted by Ethereum Team on January 2, 2018

Ethereum has grown very rapidly in the last few months. Transaction volume on the blockchain has more than doubled, surpassing 10 transactions per second for days at a time. The number of new accounts created per day passed 100,000, and the number of nodes has increased despite rising system requirements. As attention and interest in the blockchain space as a whole continues to hit new highs, we are entering a new phase in the industry’s growth: the phase where we are finally going from experiments and tests to real, live applications.

We are now focusing on improving the code editor, improving Remixd (which is now hardly usable for huge folders) and polishing the themes.

We continue to work try our best to update remix.ethereum.org each month and for each important bug fix. As Remix is under heavy development, there are always new features coming in, so feel free to contribute feedback and code.

Solidity

We are working on an optimizer for our new intermediate language IULIA. The first goal is to turn the extremely modular code of the new ABI coder into efficient code. Of course all inline assembly and also the main code generator will benefit from this work in the end. In contrast to the old optimizer, which basically soaked in bytecode into an internal representation and then re-generated the code from scratch, the new optimizer is composed of manysmallandverysimpleindividual stages that directly operate on the IULIA AST and thus are easily verifiable for correctness.

The second large area of work is the SMT checker component. It is now able to correctly follow branching and joining control flow and also takes conditions into account. Experimental loop unrolling is the next stage.

Apart from that, we are making many tinychanges to the compiler and language and fixing the remaining issues that were identified in the recently completed compiler audit.

I would like to thank the many voluntary external contributors for their hard work (individual attributions are made on the release page, as always)!

Security

We are continuing the efforts to fuzz-test the EVM, and we are also applying fuzz testing to other areas of the Ethereum platform such as the geth networking stack and the solidity pipeline where we are seeing if it can be used for quality assurance of some new IULIA components.

We are creating a new signer to enable more advanced use cases where account management is decoupled from the network node. The idea is to have a what-you-see-is-what-you-sign experience, where the sensitive components can be executed in a separate VM, or on a separate computer or a mobile phone.

There has been quite a lot of activity on the bounty-front, particularly targeting Mist, and we’d like to remind all usersurge you not to use the Mist browser on untrusted networks or untrusted websites.

Also, EthereumJ is finally being added to the group of clients which undergo Hive-testing, and EthereumJS is being added to the group of clients supporting the common shared json output so that it can play along with the others in the Evmlab tools.

Python Ecosystem

We have completed migrating the repositories for most of the python libraries to the Ethereum Foundation github. Many of these libraries were renamed in the process to conform to a single naming convention. If you use any of the following libraries, you should update your dependencies.

ethereum-utils renamed to eth-utils

ethereum-abi-utils renamed to eth-abi

ethereum-keys renamed to eth-keys

ethereum-keyfile renamed to eth-keyfile

ethereum-tester renamed to eth-tester

In addition, most of the python tooling will now issue deprecation warnings when run using python 2. Support for python 2 will be removed in the first quarter of 2018. Please upgrade to python 3 if you haven’t already.

Ethereum-Tester

The eth-tester python library has gotten a few upgrades and improvements. This library is still in a pre-release beta.

New pyethereum>=2.1.0,<2.2.0 backend

Updated py-evm backend for latest byzantium rules.

Various bug fixes.

Web3.py

Web3.py lets your python code interact with an Ethereum node. Version 4 was released, as Beta, including these changes:

The 1.0 branch is evolving with the help of a lot of community contributions. Even though it is still in beta, many developers already use 1.0 for their projects and the response so far has been overwhelmingly positive. In the next weeks, the web3-accounts package will be audited as it can be used for generating keys and signing messages and transactions.

eWASM (Ethereum WebAssembly)

Progress continues on ewasm-kernel and evm2wasm, which form a prototype VM and transpiler written in JS. Progress also continues on Hera, a VM written in C++ that is compatible with the EVM-C API. We are working to transpile the EVM state tests into an eWASM test suite which can be used for testing Hera. The near-term goal is to build a “Geth+Hera” client and use it to launch an eWASM testnet.

The EVM-C interface is progressing. An experimental branch of go-ethereum exists where geth is powered by EVMJIT virtual machine through EVM-C API. You can find a running node of type “Geth+EVMJIT” on https://ethstats.net from time to time.

EVMJIT is also Byzantium ready. We are working on upgrading LLVM from 3.9 to 5.0 (thanks @dmakarov). There is someI also hope for finally using ORC JIT API instead of MCJIT.

One of our projects is PSS, a messaging system built on top of Swarm. The features planned for PoC3 are mostly done, and PSS is already used as the backend of the prototype chat application of Mainframe.

PSS uses the routing network of Swarm to deliver messages between nodes. It already implements the following features: encryption (optionally with ephemeral keys generated by the handshake module), luminosity control (full, partial or no disclosure of addresses of communicating nodes), RPC api and flood prevention. We still have a few tasks to do, mostly stress testing and benchmarking and we also have to merge back the code to go-ethereum master.

We are also working on the swap, swear and swindle incentivization system. We have a basic implementation of swindle, swap and chequebook in the Swarm code, and the other parts are described in the in-progress paper. Our goal is to finalize the paper and start to implement the incentive layer.

In our network testing and simulation project, we implemented a framework to create and run a simulation network of devp2p nodes. For the simulation we implemented node adapters which create a test environment for the nodes to run in ( in-process, executable and docker adapters). We also created a 3d visualization app to display the network structure and behavior.

We also started promising collaborative efforts with Wolk (to develop a database layer on top of Swarm), Livepeer (to implement live video streaming using Swarm) and Status (to implement light swarm nodes for mobile).

Whisper

Version 6 of Whisper has started., Wwe hope to be done by the end of February. v6 offers nodes more control over the network load, explores the use of libp2p in the go codebase, and improves compatibility with the Parity version of whisper.