ccs-proposals/0xfffc-2024Q3.md

4.6 KiB

layout title author date amount milestones payouts
fr 0xfffc full-time C++ development (3 months, Sep, Oct, Nov, 2024) 0xfffc 14 Aug 2024 111
name funds done status
160 hours 37 unfinished
name funds done status
160 hours 37 unfinished
name funds done status
160 hours 37 unfinished
date amount
date amount
date amount

What

The bulk of my focus will be on opportunities related to performance improvement. To find out performance improvement opportunities a performance test suite is necessary for the Monero project. Here is a list of tasks I have on my todo list:

  • Dynamic BSS: The issue is dynamic BSS (block-sync-size) size. If BSS goes over a threshold, then we hit the packet limit size (100mb). I expect to hit the serialization limit (https://github.com/monero-project/monero/pull/9433) too at some point if we fix the packet size limit. This one hopefully will be solved by the time this CCS kicks in.

  • Bandwidth-Efficent Transaction Propagation Usage: Work on the @boog900 proposal ( https://github.com/monero-project/monero/issues/9334 ). And reduce the communication load between peers when syncing. The final goal is to merge a PR that uses this mechanism in Monero P2P subsystem.

  • OOM: Spend time on finding the root cause of OOM. Report to community and eventually submit PR fixing it.

  • Exclusive incoming ip: --exclusive-incoming-ip flag: (a) Require --add-exclusive-node to be set. (b) Be able to be set multiple times.

  • Cleanup the sleepwait: Remove this sleep_wait and change it to condition variable: cc73fe7116/src/daemon/daemon.cpp (L198)

  • Sync time estimation: When calculating how long it will take to finish the sync, is uses a number of blocks. Example: 200 blocks remaining, synced 20 blocks in 1 min = 10 mins remaining. It should use the size, instead of the block number.

  • Performance benchmarks. The performance benchmark test I am working on right now is stress testing Monerod under an intense load that tries to mimic a real-world heavy node. Right now it is in very early shape. The end goal is to mimic real-world wallet usage on the Monero daemon.

  • Completion of Read/Write Lock PR #9181. PR 9181 is a huge change to the core of the blockchain implementation of the Monero project. It requires a lot of careful analysis and testing. Task 1 and Task 2 are kind of depend on each other. I use benchmarking results from task 1 to test/improve/debug 9181. @jeffro256_ has implemented an important and sensitive part of the 9181 code and has improved the PR with his suggestions.

  • Seraphis wallet LMDB storage. Based on our discussion in the IRC #monero group, it seems porting the entire wallet2 storage to LMDB at this point is not a wise decision. Instead of that, we should start implementing the Seraphis wallet cache with LMDB. Once I am finished with Task 1 and 2, my next big goal is to start focusing on this task. The target of this task is to have Seraphis wallet only using LMDB as its cache/storage engine.

  • Static analysis. This task hasn't been finished from my previous CCS by the time I am submitting this CCS. I am hopeful I will finish it before the end of my previous CCS. But in case I am not able to finish it, this is one of the tasks I have on my todo list: "Analyze existing static analyzers (clangd-based analyzer, NASA/ikos, Facebook/infer, etc) and report to @selsta about the possibility of adding one of them as a workflow to our GitHub repository. Target will be running static analysis on submitted PR as workflow."

Who

I have been contributing to the Monero core repository for the past few months with a total of multiple (PRs) merged commits thus far. Some ongoing contributions:

  • Helped review multiple PRs.
  • Implemented Read/Write lock mechanism for core blockchain implementation. 9181.
  • Helped to review and fix multiple HackerOne reports with @selsta.

A special thanks to all community members who are always available to help me with technical questions.

Previous Proposals:

Funding

  • 37xmr/mth * 3 months = 111xmr

  • Schedule: 40hr/week * 12week

Freedom wins. 0xFFFC