# Argument-0003: Retention at Rank 1

|                 |                                                                                             |
| --------------- | ------------------------------------------------------------------------------------------- |
| **Report Date** | 2025-04-16                                                                                  |
| **Submitted by**| Timothy Wu                                                                                  |


## Member details

- Matrix username: @timwu20:matrix.org
- Polkadot address: 1RaxuqWvyd6sdAEiansxmtget47PVcsSR38d9V2uPzKu2vo
- Current rank: 1
- Date of initial induction: Seeding
- Date of last report: 2024-10-19
- Area(s) of Expertise/Interest: Alternative client, Consensus protocols, WASM, SCALE, Trie, Storage, JAM


## Reporting period

- Start date: 2024-10-17
- End date: 2025-03-01


## Argument

As technical lead of the Gossamer project I am comitted to delivering an alternative validator node written in Go for the Polkadot ecosystem.  I have continued working on the integration of our version of `TrieDB` into the Gossamer codebase, which has resulted in us trying to create a Substrate like `Client` type that incorporates `TrieDB` through it's own dependencies.

I started worked on recreating the `StateDb` type first found in `sc_state_db` by first implementing the pruning maintenance in [PR #3956](https://github.com/ChainSafe/gossamer/pull/3956), and implementing the non-canonical overlays in [PR #3951](https://github.com/ChainSafe/gossamer/pull/3951).  The work in these two PRs were used to create our own `StateDB` componenent in [PR #3967](https://github.com/ChainSafe/gossamer/pull/3967).

After that I moved onto another dependency of the `Client` which is the `BlockchainDb` type found in the `sc_client_db` crate.  This type is the persisted database for block headers and the [PR #4015](https://github.com/ChainSafe/gossamer/pull/4015) also introduces a number of primitives that are Substrate compatible.

Further work was required to our `TrieDB` component to support the iteration use cases that would be needed by the future work related to the `Client`, as well as introducing a memory backed version of `HashDB`.  This work can be found in [PR #4315](https://github.com/ChainSafe/gossamer/pull/4315).

We ended up creating our own version of `TrieBackend` from `sp_state_machine` in [PR #4318](https://github.com/ChainSafe/gossamer/pull/4318) which utilizes `TrieDB` now backed by `HashDB`. In substrate the `TrieBackend` is utlized by `sc_client_db::Backend` which is the chief dependency of the Substrate `Client`.  

The work to incorporate `TrieBackend` and `BlockchainDB` into our version of `sc_client_db::Backend` can be found in [PR #4405](https://github.com/ChainSafe/gossamer/pull/4405).  We also introduced a public `api.Backend` interface which is analagous to `sc_client_api::Backend`.  


## Voting record
*Provide your voting record in relation to required thresholds for your rank.* 

|  Ranks | Activity thresholds | Agreement thresholds | Member's voting activities | Comments |
|---|---|---|---|---|
|I  |90%   |N/A   |   | There were no voting opportunities for my rank during this period. |
|II |80%   |N/A   |   |  |
|III|70%   |100%  |   |  |
|IV |60%   |90%   |   |  |
|V  |50%   |80%   |   |  |
|VI |40%   |70%   |   |  |


## Misc

- [ ] Question(s): 

- [ ] Concern(s): 

- [ ] Comment(s): 
