Over the last month and a half we’ve seen vigorous research and development underway on all aspects of the Ethereum roadmap, and progress is quickly starting to translate into real results that can be run and verified within an Ethereum client.
In Metropolis:
- Agendas for core development meetings 15 and 16 here: https://github.com/ethereum/pm/issues/13 Y https://github.com/ethereum/pm/issues/14
- List of accepted EIP here: https://github.com/ethereum/EIPs/blob/master/README.md (mostly agree, though we’re still going back and forth on details like gas costs)
- Most of the EIPs have been implemented in C++ and Python and are being implemented in other clients; tests are being actively written and added here https://github.com/ethereum/tests/tree/develop/GeneralStateTests (see the various branches for different tests)
- Customers who have not implemented GeneralStateTests could provide a docker image for Hive testing (contact Martin Swende). All GeneralStateTests are being converted to BlockChainTests and run on Hive.
- A release date has yet to be finalized; the general consensus is to wait until all tests pass on major clients before establishing one. Due to the rapid increases in block difficulty, the Ice Age continues to lag; The current forecast, assuming no further increases (possibly a very pessimistic estimate), is that block times will not exceed 20 seconds until July 12 and will not exceed 30 seconds until September 12.
The Ethereum blockchain has reached several new all-time highs:
- Difficulty (450TH) and hash rate (28.5J)
- transactions per day (187115, or ~2.16 per second)
- Gas usage per day has yet to reach the all-time high from June 18, when the blockchain received heavy spam as part of the DAO attack and various counter-attacks, but is coming close with a maximum of 11 months of 10,700 million per day. That’s 1991878 gas per block, or ~45% full blocks for the day (reminder: gas limits are dynamically adjustingso congestion with rapidly increasing fares is not likely). uncle rate on that day it was only ~7.4%.
In various side projects:
- ENS has been deployed, and auctions are in progress.
- Whisper is getting a proper API, which is aligned with our general RPC, the API should be ready soon and a working version of Whisper will be released.
- Swarm has made a number of significant enhancements, including (i) support for directory upload and download via the http interface, (ii) full FUSE support, (iii) a new pss protocol for node-to-node messaging , (iv) replacement of the shard hash with a Merkle tree hash to enable more efficient data inclusion tests. Progress towards POC3 is going full steam ahead.
Pyethereum development has accelerated rapidly:
- Jan Xie and his team successfully synced a pyethapp node with the most recent block on the mainnet.
- Several bugs in the implementation have been fixed, and the client is now passing all state tests and most of the blockchain tests prior to Metropolis. Work to find the remaining issues is ongoing.
- Most of Metropolis’s EIPs have been implemented, including the four new precompiled.
- The test module has been revamped to be completely based on the String module, and a new and more convenient interface has been added, including features such as creating stateful tests.
Casper’s research is now in the process of fine-tuning incentives for vitality and implementing logic within pyethereum. This includes:
Other research stuff:
geth development:
- Removed minimum artificial gas limit of 20 shannon from transaction pool, allowing Geth nodes to accept and transmit transactions with arbitrary prices. This should help enable a real gas market.
- Identified a sync regression for HDD users, resulting in a heavy rewrite of fast sync codemaking it much more robust and stable.
- Identified and fixed some EVM bottlenecksmaking complex contracts run up to 60% faster, resulting in up to 95% fewer memory allocations.
- Polish the thin client and its mobile fixings In collaboration with Condition, wallet and others. Preliminary proof of concept done for thin client event recoveries.
- Working on a new filtering mechanismwith very promising results, reducing the time required to filter the entire blockchain for contract events from minutes to seconds.
- Investigate a new mining strategy, which should move transaction processing for miners completely parallel to mining, thus reducing transaction inclusion overhead to 0. This should allow miners to reduce fees without transactions affecting probability to find blocks and/or have them included.
- Slowly adding minor polishes to Puppeth, Clique and Rinkeby, like a stepped faucet for Ether withdrawals, configurable gas dynamics for private network miners and automatic ENS integration.
- Truesec AB has performed an external security audit. No critical issues found.
Development in C++:
- monitoring node achieved full synchronization with main network
- Metropolis EIP they are almost complete
- work in quick sync and snapshot synchronization has started
- The Testeth tool has a new –statediff option to get debug information on a particular test case, as well as a new GeneralStateTests test format (improvement on old state tests) (4074)
Remix:
- almost finished a new static analysis module that can catch re-entry errors (contributed externally by “soad003”) (508)
- added a folder view to show open files inside folders: files imported via, for example, import “github.com/ethereum/solidity/std/StandardToken.sol”; they are now visible in the folder view (449)
- the debugger can now display assignments (498)
- Tabs reorganized to provide a better overview (496)
Solidity:
- we launch the unified standard json interface to interact with the compiler (1639)
- Added “interface contract” feature (1688)
- added a few more security checks: invalid statements, and more unused unary variables (2139, 2152, 2199)
- additional work on the new intermediate language, including web assembly and EVM1.5 backends (2129 and much more)
- work almost finished on the export and especially also on the import of the AST (this will allow mutation testing and many other extensions) (1810 and others)
Fog:
- Decouple network handling and hardcoded nodes specific to geth, allow arbitrary nodes and networks defined by local or remote clientBinaries.json
- Refactoring of the configuration backend in preparation for a configuration UI
- Added macOS and Windows code signing, preparing the automatic updater based on github/swarm
- Many of the audit findings will be incorporated into future releases.
The changes to the provider will make Mist and other projects like MetaMask and status.im more future-proof, as developers don’t need to rely on high-level libraries that don’t change over time. There will be some announcements about the new provider.. The discussion about that is going on in https://github.com/ethereum/interfaces/issues/16
Web3.js:
- We are currently adding generation and signing with private keys directly into web3.js. So you can easily create wallets and sign messages in your dapps. You can find the current experimental papers here: http://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html
- The next steps will be to add @maiavictor’s swarm library and the new whisper API and the new web3.js should be ready for the community to try.