---
# System prepended metadata

title: Development update 5

---

# Development update 5

This is my fifth developoment update for the Ethereum CDAP programme.

## Previous Work

I had previously implemented [message call](https://github.com/ethereum/execution-specs/pull/280), [opcodes call and callcode](https://github.com/ethereum/execution-specs/pull/316)
and the [self destruct opcode](https://github.com/ethereum/execution-specs/pull/317). None of the pull requests for these implementations were merged. These have finally been reviewed and merged.

## Task

Last week I implemented the following in [execution-specs](https://github.com/ethereum/execution-specs/):

- Added support for the interpreter to process precompiled contracts.
- Implemented precompiled contracts `ECRECOVER`, `SHA256`, `RIPEMD160` and `IDENTITY` as defind in the frontier version of the yellow paper.
- Made the inerpreter handle exceptions gracefully encountered during bytecode execution.
- Implemented rolling back of state to a previous snapshot if the execution results in an error.


## Challenges

There was a bug in the storage root calculations because of which some tests for precompiles were failing. Tracking down this bug was quite challenging. I had initially implemented a fix for this in my PR but a better [fix](https://github.com/ethereum/execution-specs/pull/325) was implemented by [@ultratwo](https://github.com/ultratwo). 

## Code

All of the tasks mentioned above have been implemented in this [PR](https://github.com/ethereum/execution-specs/pull/328).


## What's Next?

The [execution-specs](https://github.com/ethereum/execution-specs/) repo now has a fully functional implementation of the frontier version of the yellow paper. However, the test coverage is very low at the moment. My focus will be to get all the tests passing from the [tests repo](https://github.com/ethereum/tests) and fix all the bugs that will be encountered while doing so.
