# EPF5 Week7 This week try to implement a toy version of `trace_filter` API in geth, to begin with, I need to store the trace results into a database. For this purpose, I have choosen to use [Freezer](https://github.com/ethereum/go-ethereum/blob/b0f66e34ca2a4ea7ae23475224451c8c9a569826/core/rawdb/freezer.go#L84) as the persist db. Additionally I'm attempting to reuse the [eth/tracers/native/mux.go](https://github.com/ethereum/go-ethereum/tree/master/eth/tracers/native/mux.go) module to extract the trace results. However, I have encountered some limitations in doing so: 1. The [eth/traces](https://github.com/ethereum/go-ethereum/tree/master/eth/tracers) module is designed to handle transactions at the individual level, rather than at the block level. This poses a challenge for us since we need to handle traces at the block level. Upon further investigation, I realized that I could implement some logic in the filter’s module to overcome these limitations. Here is the proposed approach: 1. For each block, we will initialize a collector. 2. For each transaction in the block, we will collect the results emitted from the native/mux.go module and save them locally. 3. At the end of the block, we will marshal the collected data and write them into the freezer. This week, I will continue working on the tasks from the previous week and aim to complete the collecting and database write tasks.