librustzcash icon indicating copy to clipboard operation
librustzcash copied to clipboard

DSL to trace non-linear wallet syncing on logs

Open pacu opened this issue 1 year ago • 0 comments

Feature Request

Define a Domain Specific Language that allows wallets to log non-linear wallet syncing for development purposes

Requirements:

Clients / wallets / backends can:

  • read/write a log that can be used to trace, reconstruct and benchmark non-linear syncing
  • logs can be written from many threads at once in one or multiple files that can be merged
  • log is expressed in terms of a DSL that can be parsed by a script and expressed in a human-friendly way.
  • different logs captured from different rounds of the same process can be diff'd and compared with ease to allow capturing improvements and regressions

DSL Should:

  • allow developers to express the non-linear sync elements, events and actions
  • allow developers to express the different metrics that are pertinent to the defined elements, events and actions along their respective transitions
  • allow developers produce human-readable but still machine parseable logs that can be transformed into other useful resources such as Graphics, reports, debug traces.
  • discourage developers to log sensitive data that the callers might handle in their internal state
  • discourage developers to turn this tool into yet-another-verbose-log that nobody can read
  • be wallet / client / backend agnostic. it should be possible to be used in SbS, DAG-Sync, WarpSync or BlazeSync provided those implementations log the relevant information.
  • Allow tracing the order of logged events in time and express any parallelism or concurrency at play.

pacu avatar Jan 22 '24 23:01 pacu