---
# System prepended metadata

title: 'Ethereum CDAP Development Update #3'

---

# Ethereum CDAP Development Update #3

Since last update, my work has been on completing the `PortalStorage` struct for Trin, a Rust implementation of a Portal Network client. 

## Progress

In the [last update](https://hackmd.io/@mikeferris/rkmPc4BzY), I specified a list of things that still needed to be done in order to be ready to for use. 
All of these have been completed:
    - `PortalStorage` now measures capacity in terms of how much Portal Network data is being stored, leaving the space actually used to store that data on disk as an implementation detail. This change was done by having another column for data size in the meta db (SQLite). 
    - Distance function is now configurable by passing a `DistanceFunction` enum to the `PortalStorageConfig`, which is then passed into the `PortalStorage` constructor. `DistanceFunction` values can be `DistanceFunction::Xor` or `DistanceFunction::State`. For the PortalStorage struct to support the State network, the `PortalStorage` still needs a SQLite statement that implements the state distance function. This is not implemented yet.
    
In addition to these updates, I updated the `PortalStorage` constructor to take a function as an argument that converts content keys to content IDs. This is done because each network (history, state, etc) have different specs for how to convert between a `content_key` and a `content_id`. 

## Next Steps

Next steps are to get this `PortalStorage` implementation reviewed and merged, and then help integrate it into the rest of the Trin client. 