By writing this, I sit in the London office and I think about how to give you a good overview of the work we have done to secure the protocols of Ethereum, customers and the P2P network. As you may remember, I joined the Ethereum team at the end of last year to manage the security audit. As spring has passed and summer has arrived and that several audits end, it is now a good time for me to share some results of the machine room inspection of the global computer. 😉
This is clear, as much as customer delivery is a development process of developed products, it is an exciting but very complex research effort. The latter is the reason why even the best planned development calendar is likely to change, because we discover more about our problem of problem.
The security audit began at the end of last year with the development of a general strategy to guarantee maximum security for Ethereum. As you know, we have a safety process focusing on security rather than scheduled development process. In this spirit, we have set up an audit approach on several levels made up of:
- Analysis of new protocols and algorithms by established blockchain researchers and specialized software security companies
- Bouting audit of protocols and implemented by an expert in expert security expert in world class (Go followed by C ++ and a basic audit for the educational customer Python), as well as by
- THE Bug bonus program.
The analyzes of new protocols and algorithms have covered subjects such as the safety of:
- Gas economy
- Proof of proof of newly designed work of work as well as
- The economic incentive of mining nodes.
The audit component “from the crowd” started around Christmas with our Bug Bounty program. We had put aside an amount of 11 figures to reward the people who found buses in our code. We have seen very high quality submissions To our Bug Bounty program and the hunters received corresponding awards. The Bug Bounty program is still in progress and we need additional bids to use the allocated budget …
The first major security audit (covering the gas economy and the POW puzzle) by the security consultation, the slightest authority was launched in January and continued until the end of winter. We are very happy that we have agreed with most of our external auditors that these audit reports will be accessible to the public once the audit work and the fixing of the results are completed. So, with this blog post, we are delighted to present the slightest authority audit report and accompanying blog. In addition, the report contains useful recommendations for ðApp developers to ensure the secure design and deployment of contracts. We expect to publish other reports as they become available.
We also hired another software security company at the start of the year to provide audit coverage on the implementation of the GO. Given the increased security that comes with several customers and, as Gav mentioned in its previous post, we have also decided to give the Python and the C ++ Audit a light safety audit from early July. The C ++ code will receive a complete audit just after – Our goal with this approach is to ensure several audited customers available as soon as possible during the publication process.
We launched this most encompassing audit for the Go Customer, alias “Audit from start to finish”, in February with a one -week workshop that would be followed by weeks of regular recording calls and weekly audit reports. The audit was integrated into a complete process of monitoring and fixing bugs, managed and carefully Monitoring on GitHub by Gustav with Christoph and Dimitry coding the corresponding required tests.
As its name suggests, the end -to -end audit was brought to cover “everything” (from networking to the Ethereum virtual machine to the synchronization layer to the POW) so that at least one listener has checked the different central layers of Ethereum. One of the consultants recently summed up the fairly succinct situation: “to be honest, Ethereum test needs are more complex than anything I have previously looked at”. As Gav reported in his Last blog articleDue to the important changes in the networking and synchronization strategy, we have finally decided to order additional audit work for GO – that we are about to finish this week. The kick -off of C ++ audits from start to finish and Python base takes place now.
The audit work with subsequent tests for fixing buckets and regression as well as the related refactoring and overhaul (the networking and synchronization layer) constitute the majority of the work that occupies the developers at the moment. Similarly, fixing the results, the overhaul and the regression tests are the reason for the delay in delivery. In addition, the Olympic test phase has taught us a lot about resilience in various scenarios, such as slow connections, bad peers, strange peers and obsolete peers. The biggest challenge to date has been to fight and recover from forks. We have learned a lot of recovery attempts in terms of processes required when it comes to processing this type of scenarios and incidents.
It may not be surprising that the various audits represent a significant expenditure – and we think that money that could not be better invested.
As we get closer to release, security and reliability are increasingly important in our minds, in particular given the handful of critical problems found in the Olympic test version. We are very grateful to the enthusiasm and in -depth work that all the listeners have done so far. Their work helped us refine the specifications of yellow paper and eliminate ambiguity and solve several subtle problems, and they helped to identify a certain number of implementation bugs.