0xfffc-2024Q2
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
Merge request reports
Activity
PR 9181 (and other plumbing work) is needed but I would hope it isn't completed/merged in 3 months.
IMO introducing and using a new sync primitive is risky, especially considering the position it's being used in, so I think this effort should be given more time/funding so ample testing/documentation can be written/reviewed.
Add this clause:
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.
Edited by 0xFFFCmentioned in commit dbc8622a
This CCS started -with delay- on May 17th. Today marks the first milestone. I spend most of my time on performance reviews of different parts of the code base.
My misc PRs:
https://github.com/monero-project/monero/pull/9353
https://github.com/monero-project/monero/pull/9355
https://github.com/monero-project/monero/pull/9366
https://github.com/monero-project/monero/pull/9367
My misc reviews:
https://github.com/monero-project/monero/pull/9353
https://github.com/monero-project/monero/pull/9349
https://github.com/monero-project/monero/pull/9347
https://github.com/monero-project/monero/pull/9346
https://github.com/monero-project/monero/pull/9342
https://github.com/monero-project/monero/pull/9338
https://github.com/monero-project/monero/pull/9326
https://github.com/monero-project/monero/pull/9324
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 I would like to receive the payment on the same address on my GitHub page, which is: 82och6t9nFgiDvjXKK8VAAe8pRuAHookyjehcmG3Z5epfPf6EMvC1YaQwsqX3Ycrs2brKCbTcsherEkMWnCQgoWtS6vyKgt Thank you, Freedom wins! -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQRKV5fBBU0yo8ABx/FlD3wre9o4GQUCZdxZcAAKCRBlD3wre9o4 GaLrAQDJniUcuZmKlgxkdHZQ0Hf6pLcCcoTe8A3KuoYuY7X0lwEAgMpPAVvKr5XO 6PHLlchkhzpRFkJe2cjKZCYZ+sWm2gc= =61Ls -----END PGP SIGNATURE-----
Edited by 0xFFFCLast month I worked on multiple PR. The main one is causing the 3x start-up speed for the
monerod
(9376). Other general PRs like (9392) which is fixing unlimited storage usage bymonero-wallet-[rpc|cli]
log files.At the moment of submitting this report, the main PR I am working on is this one which speeds up the start-up even more. Although it is at the testing stage and needs a little bit more work.
In addition to the PRs, I am focusing on the Monero
stressnet
experiment and helping it to debugmonerod
and have better performance.-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 I would like to receive the payment on the same address on my GitHub page, which is: 8A6W6CvoM8i3Wr5GosNS4KTGbe3mFZSmJPCn6moju7E8NEhiL4WiP5QJTDd1eLGSbcCxzLs3PU2PL9H6XcGdBCQLDGdFe7W Thank you, Freedom wins! -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQRKV5fBBU0yo8ABx/FlD3wre9o4GQUCZpb4cwAKCRBlD3wre9o4 GQNAAQCfkVR0+Pm7QmIDYOyadm1ltowOVTWhWOXFm1dDiiSB0wD+OKUexPRic2UO eK0vMTh2QSBj/pAPGl78dyGqX8xqpQ0= =LMAz -----END PGP SIGNATURE-----