I know it’s been a while. But these days are pretty busy.
I’m writing this from a Starbucks sitting behind the Great Firewall in Shanghai, a place I can occasionally peek into. I have been in Asia with Marek for the past few weeks, mainly for meetups, workshops and technical conferences. During this time, we have seen the launch, struggle, and survival of the Olympic Testnet. This is a very clear sign that multi-client systems will be far superior to our current monoculture. We have seen the start of a second external Go audit, primarily to identify regressions and provide feedback and criticism on aspects that have changed in the meantime, such as Go’s network layer and synchronization strategy. We’ve seen Mix and Solidity continue to evolve and mature. Through ongoing development and advancements in our API, we’ve seen all our clients become cleaner, faster, and more resilient.
exchange
We have continued to work with the exchange and now both Marek and Konstantin are providing significant technical support to help the exchange’s coders understand the broad differences between using standard cryptocurrency APIs and Ethereum’s smart contract-based approach. To provide better support and maximize adoption, we designed and introduced a middleware JSON RPC proxy that allows a much friendlier interface to Ethereum for exchanges.
C++
On the C++ side, we introduced PV61, a new version of the Ethereum network protocol (backwards compatible so as not to disrupt Go’s Frontier release schedule) that provides ultra-fast parallel hash chain downloads and much higher resiliency against dirty hash chain attacks. . Arkadiy is supporting the code for C++ in hopes of adapting it to Go before Homestead.
Meanwhile, Solidity has come a long way. Solidity can now structurally predict gas usage, optimize storage access and code size very well, and support internal function calls using dynamic types, along with other overall features. Liana continues hacking into that codebase with Christian.
Under the guidance of Aeron and Jutta, with Avsa providing visual design insight and Yann hacks, Mix is seeing significant UX improvements and refactoring, with the general goal being to become a very usable yet powerful IDE for contract development. ÐYou can now deploy your app to the network in a simple three-step process, and the state/blockchain management layer is much improved, providing a single-pane-of-glass view that lets you easily see all transactions, calls, and logs and propagate transactions between them. do. Refreshing the chain is easy.
Alex continues to work on the lower level network layers and is now assisted by Vlad. We had a summit in Zug three weeks ago where we laid out plans for the libp2p networking layer and how the Whisper and Ethereum protocols fit into it. As Whisper’s first full-time developer, Vlad will continue to hack libp2p and Whisper to make the protocol more resilient to various Ethereum networking attacks, while continuing research and development on p2p asynchronous non-endpoint-specific signaling protocols.
Based in Warsaw, Pawel continued to work on the JIT EVM and EVM libraries, helping to optimize stack usage and fix stack depth issues found in Mac OS X. In the meantime, Vladimir continues his testing work and Marian net statistics page It has recently proven its usefulness in several ways. Those who have been experimenting with mining setups on the Olympic testnet will probably recognize the work of Lefteris, who took over the Ethash implementation and updated, refactored, and generally supported Tim Hughes’ OpenCL implementation. Special thanks to each member of the community who helped in some way with the development of this code. You know who you are. (-: Christoph is currently working on test coverage for the core classes and is helping resolve various issues in the core.
In addition to collaborating with the Mix team, Arkadiy and Marek, I coded new C++ wallet/secret store code (improved format and compatibility with Go and Python) and optimized the core (fetch time for at least one gas). Heavy blocks were recently measured to be 10x faster than Python and 3x faster than Go), bug fixes across the core, implementation of a new ‘ethvm’ binary for running EVM in standalone mode and ‘ethkey’ binary implementation for wallet management, and Most recently, I coded a much better interactive console interface, similar to Go’s Javascript console. We also hope to get a much better blockchain download diagnostic display coming soon from AlethZero.
thanks
An internal audit of the C++ code base has begun. Christoph is working on testing all core classes and Arkadiy is helping with some core optimizations. The SecretStore and Wallet classes have already been audited by Christian, which gives us confidence that our C++ clients are reasonably secure with their private key management. C++ external audit begins in 3 weeks.
It became clear to us that neither external nor internal audits are panaceas, as our testnet failed substantially due to issues with one of our three clients, including one that survived two audit procedures. We will do our best to provide you with the best software and will continue our audit program, but please be clear. It’s not magical that a Go client has gone through an audit process. We’re aiming to have all clients through at least a basic audit process in the Homestead release, and we don’t see any reason to use the Go client over another client (C++ or Python) at this stage, and even for the majority of our users. frontier. No customer is covered. In fact, there is an argument to be made that a small number of clients are smaller targets and therefore less likely to be attacked.
after
We continue to prepare for the launch of Frontier. Although we are not yet sure of the exact launch date, we are increasingly pleased with the resilience of the Olympic testnet. As the Olympic testnet failures continue, these adversities have prompted reflection on how these issues can be mitigated in the future. The depth and duration of consensus failure can be roughly categorized into two issues. First, there was a bug in the Go codebase that allowed invalid blocks (in this case, blocks with invalid proof-of-work). now); Second, network upgrades have been a huge problem as miners continue to mine on ‘bad’ chains and it takes a long time to upgrade nodes to allow them to mine on the correct chain. Essentially, the first was a forensic problem and the second was an organizational problem.
To ensure that this is neither too deep nor too broad in the future, I have designed two new protocols. bad chain canary and Bad Block Reporting API. Bad Chain Canary is a simple contract. It is controlled by a single key (maybe several) and sits quietly until its owner prods it. I will be one of those owners. Vitalik and Jeff are the other two and there is probably a fourth, Christoph. A stab will give you a pair of block hash and block number. This pair represents the most recent block in the bad chain. If the contract matches the chain you think it is, it has a “bad chain” status. This allows Ethereum core developers to inform anyone running a client on a bad chain (i.e. a chain that does not follow the Yellow Paper due to a bug) that this is the case. The client’s default (easily overridden) is not to mine on such chains (since doing so would be a waste of energy), but to inform users that they should upgrade as soon as possible.
The Bad Block Reporting API is a simple JSON RPC that allows multiple nodes to run in ‘watch’ mode. In this mode, when a bad block is discovered, it automatically compiles a standardized report of what went wrong, including expected transaction receipts, VM traces, proof-of-work, and block error information. This report is then immediately sent to the ÐΞV servers, which can run an early warning system, alerting the core developers if the release czar (Taylor) deems it necessary. Through the use of standardization and simple formats, the JSON comparison engine is designed to be easy to code, allowing you to quickly diagnose where your consensus issues lie.
One of the future tasks will be to combine the two so that JSON-RPC can also manage canary information reporting. In this case, the user can set up a sentinel server to send an email whenever a contract reports that mining has stopped. Alternatively, you will need to upgrade your node to continue mining.
base
Finally, the Ethereum Foundation’s three board members (Vitalik with three votes, followed by Taylor and Mihai with one vote each) will soon convene for, in Vitalik’s words, “a kind of great baton ceremony.” As ÐΞV’s indomitable COO, Kelley has led the way in seeking proven candidates from a variety of disciplines who can add real value to the foundation in terms of fundraising and driving adoption. In this regard, we sincerely thank her for all her hard work.