yamabiiko full-time work on Cuprate (3 months)
What
This proposal will be for 3 months of dev work on Cuprate, mainly focusing on ZMQ Pub/Sub and documentation.
Design
Boog900 already started a design proposal, currently we will just target Pub/Sub and not ZMQ RPC due to lack of users.
Message types, filtering and the subscriber struct will be defined in the cuprate-zmq-types
crate. This will be needed to track the number of subscribers of a contexts + events.
The Pub/Sub server will handle spawning the XPUB/PAIR
sockets, listening inbound connections and handle (un)subscriptions. Communication with other Cuprate components (i.e notification sending) will be handled by the NotifierService
. Both will be defined in cuprate-zmq-pubsub
.
Documentation
monerod's ZMQ is largely undocumented, and this CSS includes documenting its behavior and our implementation's design in Cuprate's architecture book.
I will also write ZMQ user docs for Monero, as it currently lacks those, unlike with RPC: this will consist in documentation for monerod
's wiki and a new ZMQ section in monero-site/resources/developer-guides
I also plan to write and review documentation for other Cuprate's components in addition to actively participating in Cuprate's discussions, PR reviews, etc.
Who
I'm yamabiiko and this is my first CCS. Previously I contributed to COMIT's atomic swaps.
I've been following Cuprate's development closely in the past few months, looking to contribute to something I firmly believe will greatly improve Monero for everyone, and this CCS will give me the opportunity to do so.
I already have some familiarity with both Cuprate's and monerod's codebases, having worked on starting the design for its RPC interface and previously researched Dandelion++
Milestones
- ZMQ interface, documentation, testing
- NotifierService + ZMQ user docs
- Pub/Sub Server + ZMQ architecture docs + other work
Funding
I ask for 50 USD/hour for 40 hours a week for three months totalling (40 * 4.35 * 3) 522 hours and at price $150/XMR this gives 174 XMR.
If I end up finishing the last milestone earlier, the rest of the hours will be devoted to other tasks for Cuprate and they will be chosen based on what will be best at the time.