Skip to content

0xfffc-2024Q2

0xFFFC requested to merge 0xFFFC0000/ccs-proposals:master into master
layout: fr
title: "0xFFFC full-time C++ development (3 months, May, June, July, 2024)"
author: 0xFFFC
date: 21 March 2024
amount: 90
milestones:
  - name: 160 hours
    funds: 30
    done:
    status:
  - name: 160 hours
    funds: 30
    done:
    status: unfinished
  - name: 160 hours
    funds: 30
    done:
    status: unfinished
payouts:
  - 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.

I have been experimenting with the idea of performance tests with Monero past few weeks ( perf script, small C++ code to benchmark monero, monero rpc test ). and I believe a RPC client that stress tests the daemon is the way to go. My intended goals first this CCS:

  • 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."

If all milestones are not claimed within 100 days of start of the CCS, then this CCS will automatically expire and remaining funds should return to GeneralFund Wallet.

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. Because I have been averaging over 40 hours a week, I have decided to change my CCS to full-time work. Some ongoing contributions:

  • Implemented Read/Write lock mechanism for core blockchain implementation. 9181.
  • Helped review multiple PRs.
  • 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

  • 30xmr/mth * 3 months = 90xmr
  • Schedule: 40hr/week * 12week

Freedom wins. 0xFFFC

Edited by 0xFFFC

Merge request reports