1 October 2021
Completed 0 of 1 milestones
Hi all, after some encouragement I decided to request funding for my ongoing work on Seraphis. Specifically, funding for future work on the Seraphis C++ proof-of-concept that I have been developing since the second week of September.
My goal is for this code to be 95% production-ready. It is appropriate to get large pieces of code funded if they have a strong potential to be merged into the master branch.
Seraphis is a next-gen transaction protocol abstraction, which means it defines various high-level rules for a concrete transaction protocol. RingCT can be thought of as the current tx protocol abstraction, even though the RingCT paper specified concrete proving structures directly without abstraction.
The main innovation of Seraphis (and Lelantus-Spark, a very similar protocol developed independently) is using only simple commitments-to-zero for showing that a transaction input (an output being spent) exists in the ledger. This allows proofs about key images to be independent of membership proofs, which means one-time addresses and key images can be creatively designed. In particular, it is possible to avoid one of the main drawbacks of Triptych, namely a key image construction that makes multisig much more complicated.
Seraphis has other potential benefits over RingCT and Triptych (depending on concrete design choices):
The main costs of Seraphis compared to Triptych are:
Scope: I am working on a core component library for Seraphis, which includes proof structures, transaction structure and validation, core transaction building pieces (both normal and multisig transactions), unit tests, performance tests. The scope is similar to the
ringct/ subdirectory. I currently do not plan to touch the
Building a new transaction-builder component library is a good opportunity to both re-imagine how to architect component versioning (i.e. instead of spaghetti conditionals, which are rampant in some parts of the codebase after 13 hard forks), and to add various things from my wishlist.
Ultimately, I want to include the following in my PoC (found in the MRL and Monero GitHub Issues linked below):
tx_supplementtakes some stuff out of the
The PoC currently has:
My immediate plans for the PoC include:
Once performance tests are complete, I will take a break of 1-4 weeks to finish the Seraphis paper. Then, after making various design decisions to narrow down the optimal tx protocol and address scheme (based on discussion in the Monero community - primarily IRC channels #monero-dev and #monero-research-lab), I want to add the following to the PoC (I will probably make a new branch for this, and cut out all the extra stuff from performance testing).
If it takes me fewer than 240hrs, then I will allocate the extra hours toward whatever future Monero work I end up doing (or pass the left-over funds into the general fund if necessary).
If I require more time, and the community supports it, then I may make another proposal to extend the hours.
To be paid: 100% (92.6 XMR)