Add jeffro256 full time dev 2025Q1
What
The last quarter I implemented the core cryptography for Carrot. I will note that preliminary performance tests put Carrot scanning at about 30% faster on CPU usage versus scanning today, mostly thanks to the use of the X25519 ECDH library mx25519. I also implemented pruned cryptonote::transaction
construction and scanning for Carrot. The FCMP++ integration and Carrot integration are finally meeting ends and are almost ready for hot path integration. This next quarter, I want to continue this work to get a testnet out ASAP.
To recap, here is a list of things I will attempt to work on this quarter, in rough order of execution:
- Integrate Carrot scanning/transaction construction into main wallet codepaths
- Provide support to existing hardware wallet manufacturors on how to securely support Carrot outputs
- Use benchmarkings and static analysis to inform MRL decisions on transaction weight discussions etc
- Begin soliciting Carrot core implementation audits
- Provide Rust implementation of Carrot for Serai/Cuprate
- Solicit help for multisig implementations of Carrot
- Help out with the FCMP++ integration wherever I can
Who
I have been contributing to the Monero core repository for over two years with a total of 84 merged commits to master thus far, with many open PRs. Over the last few months, I wrote up the Carrot specification, organized []auditing](https://github.com/cypherstack/carrot-audit), for which the community graciously funded, and began implementing it. Carrot will be the main supported addressing protocol post-FCMP++ if all goes according to plan. I also worked on the Seraphis migration project in 2023/2024.
Previous Proposals:
Payment
I propose to work for 3 months at a rate of 38 XMR per month.
Merge request reports
Activity
- Resolved by plowsoff
mentioned in commit fd814e9d
Milestone Update 1: January 2025
WIP branches
- https://github.com/jeffro256/monero/tree/carrot_core
- https://github.com/jeffro256/monero/tree/carrot_impl
- https://github.com/seraphis-migration/monero/tree/fcmp%2B%2B-stage
Monero Core PRs
- https://github.com/monero-project/monero/pull/9717
- https://github.com/monero-project/monero/pull/9718
- https://github.com/monero-project/monero/pull/9739
- https://github.com/monero-project/monero/pull/9740
- https://github.com/monero-project/monero/pull/9751
- https://github.com/monero-project/monero/pull/9760
- https://github.com/monero-project/monero/pull/9804
- https://github.com/monero-project/monero/pull/9805
Carrot/FCMP++ integration work
I created the
fcmp++-stage
development branch and have started to merge codepaths between Carrot and FCMP++. The biggest milestone here was creating FCMP++ spend authorization & linkability (SA/L) proofs on outputs created in Carrot transactions. You can see the testcases here: https://github.com/seraphis-migration/monero/blob/7dbc0e9f240f86b1dce55a3fff65534048356657/tests/unit_tests/carrot_impl.cpp#L534. Specifically for the SA/L proof creation, see this line: https://github.com/seraphis-migration/monero/blob/7dbc0e9f240f86b1dce55a3fff65534048356657/tests/unit_tests/carrot_impl.cpp#L670. Thecarrot_impl
branch also now contains almost full transaction generation code, from input selection, to fee carving, to proof generation, to transaction serialization.Review / debugging work
I spent a lot of time reviewing / debugging the upcoming release v0.18.4.0 build. I would like to post more details about this for transparency, but some of it involves vulnerability work, so I will hold off for now. I plan to publish reports about this eventually.
Milestone Update 2: February 2025
WIP branches
- https://github.com/jeffro256/monero/tree/carrot_core
- https://github.com/jeffro256/monero/tree/carrot_impl
- https://github.com/seraphis-migration/monero/tree/fcmp%2B%2B-stage
Monero Core PRs
- https://github.com/monero-project/monero/pull/9826
- https://github.com/monero-project/monero/pull/9827
- https://github.com/monero-project/monero/pull/9828
- https://github.com/monero-project/monero/pull/9832
- https://github.com/monero-project/monero/pull/9844
- https://github.com/monero-project/monero/pull/9845
- https://github.com/monero-project/monero/pull/9853
- https://github.com/monero-project/monero/pull/9854
- https://github.com/monero-project/monero/pull/9857
- https://github.com/monero-project/monero/pull/9860
- https://github.com/monero-project/monero/pull/9872
- https://github.com/monero-project/monero/pull/9876
Carrot/FCMP++ integration work
Since the last milestone update, two major goals have been met: A) writing/testing the end-to-end process of creating a Carrot transaction / constructing FCMP++ proofs / serializing / de-serializing / verifying consensus rules / scanning, and B) integrating the scanning code into
wallet2
and testing. @j-berman has already done wallet-side tree building, and I've wrote most of the code do do SA/L proofs for spending Carrot enotes, so really all there is to do before an alpha stagenet is to integrate the tx construction code intowallet2
.Edited by jeffro256Milestone Update 3: March 2025
WIP branches
- https://github.com/jeffro256/monero/tree/carrot_core
- https://github.com/jeffro256/monero/tree/carrot_impl
- https://github.com/seraphis-migration/monero/tree/fcmp%2B%2B-stage
Monero Core PRs
- https://github.com/monero-project/monero/pull/9879
- https://github.com/monero-project/monero/pull/9881
- https://github.com/monero-project/monero/pull/9883
- https://github.com/monero-project/monero/pull/9884
- https://github.com/monero-project/monero/pull/9899
Carrot/FCMP++ integration work
Since the last milestone update, transaction construction code has been integrated into
wallet2
and the CLI wallet: https://github.com/seraphis-migration/monero/pull/32. After modifying the hard fork table, you can now setup two regtest daemons, point them at each other, spin up wallets, mine Carrot coinbase txs, and transfer XMR on Carrot/FCMP++ txs with thetransfer
command. I welcome anyone to come test it out and provide feedback, it would be greatly appreciated. Sweep transactions will come soon, and then wallet RPC integration next. As was discussed in the MRL meeting last week, a preliminary stressnet will be available by May 21st, about one month from now.mentioned in merge request !578