During the previous month and a half, we observed robust and continuous research and development across all facets of the Ethereum roadmap, with advancements swiftly beginning to convert into tangible results that can be executed and validated within an Ethereum client.
Regarding Metropolis:
- Agendas for core development meetings 15 and 16 can be found here: https://github.com/ethereum/pm/issues/13 and https://github.com/ethereum/pm/issues/14
- The compilation of approved EIPs is available here: https://github.com/ethereum/EIPs/blob/master/README.md (generally agreed upon, although we are still discussing particulars like gas costs)
- The majority of the EIPs have been incorporated in C++ and Python and are being integrated into other clients; testing is being actively pursued and included here https://github.com/ethereum/tests/tree/develop/GeneralStateTests (refer to the various branches for different tests)
- Clients that have not executed GeneralStateTests could provide a docker image for Hive testing (contact Martin Swende). All GeneralStateTests are being transformed into BlockChainTests and executed on Hive.
- A release date has yet to be determined; the overall agreement is to await until all tests are successful on major clients before establishing one. Due to the rapid rises in block difficulty, the ice age keeps getting postponed; the current forecast, assuming no further increases (potentially a rather bleak estimate), suggests that block times will not surpass 20 seconds until July 12, and will not exceed 30 seconds until September 12.
The Ethereum blockchain has reached several new all-time peaks:
- Difficulty (450 TH) and hashrate (28.5 TH)
- Transactions per day (187115, or approximately 2.16 per second)
- Gas utilization per day has not yet reached the record high of June 18, when the blockchain experienced significant spam as part of the DAO attack and various counteractions, but is approaching it with an 11-month peak of 10.7 billion per day. That translates to 1991878 gas per block, or about 45% full blocks for the day (note: gas limits are dynamically adjusting, hence congestion with sharply rising fees is unlikely) . Uncle rate on that day was merely around 7.4%.
Concerning various side projects:
- ENS has been launched, and auctions are in progress.
- Whisper is being equipped with a proper API, aligned with our general RPC, and the API is expected to be ready shortly, with a functional version of whisper scheduled for release.
- Swarm has undergone several significant enhancements, including (i) enabling directory upload and download via the HTTP interface, (ii) full FUSE support, (iii) a new protocol called pss for node-to-node messaging, (iv) substituting the chunk hash with a Merkle tree hash to facilitate more efficient data inclusion proofs. Progress towards POC3 is advancing robustly.
Pyethereum development has gained momentum rapidly:
- Jan Xie and his team have successfully synchronized a pyethapp node with the latest block on the mainnet.
- Multiple bugs in the implementation have been addressed, and the client is currently passing all state tests and most pre-Metropolis blockchain tests. Efforts to identify the remaining issues are ongoing.
- The majority of Metropolis EIPs have been incorporated, including the four new precompiles.
- The tester module has been redesigned to be fully based on the Chain module, with a new and more user-friendly interface introduced, incorporating functionalities like creating state tests.
Casper research is currently engaged in fine-tuning the incentives for liveness, while embedding the logic within pyethereum. This involves:
Additional research items:
Geth development:
- Eliminated the artificial 20 shannon minimum gas limit from the transaction pool, allowing Geth nodes to accept and relay transactions with arbitrary pricing. This should facilitate the emergence of a genuine gas market.
- Detected a sync regression affecting HDD users, resulting in a substantial rewrite of fast sync code, enhancing its robustness and stability.
- Identified and resolved a few EVM bottlenecks, enabling complex contracts to execute up to 60% faster while performing up to 95% fewer memory allocations.
- Refining the light client and its mobile bindings in cooperation with Status, Walleth and others. Preliminary proof-of-concept for light client event retrievals completed.
- Developing a new filtering system, yielding very encouraging outcomes, trimming the duration needed to sift through the entire blockchain for contract events from minutes to mere seconds.
- Exploring a novel mining technique, which is aimed at executing transaction processing for miners completely in parallel with mining, thereby reducing the overhead associated with transaction inclusion to zero. This should enable miners to decrease fees without transactions affecting the chances of discovering blocks and/or having them included.
- Gradually implementing minor enhancements to Puppeth, Clique, and Rinkeby, such as a tiered faucet for Ether withdrawals, configurable gas dynamics for miners in private networks, and automatic ENS integration.
- An independent security audit has been conducted by Truesec AB, with no significant issues identified.
C++ development:
- the monitoring node has achieved complete synchronization with the mainnet
- metropolis EIPs are nearing completion
- Initiatives on fast sync and snapshot sync have commenced
- The Testeth tool has introduced a new option –statediff for debugging information on a specific test case as well as a new testing format GeneralStateTests (improvement of the previous statetests) [4074]
Remix:
- nearly completed a fresh static analysis module capable of identifying reentrancy vulnerabilities (externally contributed by “soad003”) [508]
- introduced a folder view to display open files within directories – files imported via e.g. import “github.com/ethereum/solidity/std/StandardToken.sol”; are now viewable in the folder view [449]
- the debugger can now visualize mappings [498]
- tabs have been reorganized to improve overall visibility [496]
Solidity:
- we have released a standardized JSON interface for interacting with the compiler [1639]
- added the “interface contract” functionality[1688]
- implemented additional safety checks: statements without effects, unary plus, and unused variables [2139, 2152, 2199]
- continued development on the new intermediate language incorporating web assembly and EVM1.5 backends [2129 and much more]
- almost concluded work on both exporting and particularly importing the AST (which will enable mutation testing and numerous other extensions) [1810 and others]
Mist:
- Decoupling geth-specific hardcoded node and network management, allowing for arbitrary nodes and networks defined by local or remote clientBinaries.json
- Refactoring the settings backend in preparation for a settings UI
- Integrated macOS and Windows Code-Signing, prepping for a github/swarm-based auto-updater
- Many of the findings from the audit will be integrated in upcoming releases
Modifications to the provider will render Mist and other projects like MetaMask and status.im more future-ready, as developers won’t need to rely on high-level libraries that might become obsolete over time. Several announcements regarding the new provider are forthcoming. Discussions on this are taking place at https://github.com/ethereum/interfaces/issues/16
Web3.js:
- We are currently integrating generation and signing with private keys directly into web3.js. This will allow you to effortlessly create wallets and sign messages within your dapps. You can access the latest experimental documentation here: http://web3js.readthedocs.io/en/1.0/web3-eth-accounts.html
- The forthcoming steps involve adding @maiavictor’s swarm library along with the new whisper API, and the revised web3.js should be ready for community testing.
