Skip to content

Boog900 full time work on Cuprate (3 months)

Boog 900 requested to merge Boog9001/ccs-proposals:boog_cuprate into master

This proposal is to continue my work on Cuprate.

Who

I am Boog900, you can see my last CCS here.

What

Cuprate is very close to having an alpha binary ready. During my last CCS I created a test binary with the components we currently have to test a full sync, a full sync with this binary wasn't achieved due to a few issues discovered, which have since been fixed, however timings up to the height (~2,300,000) we did reach are promising for Cuprate's performance.

This proposal will be for 3 months work on Cuprate while continuing coordination of the Cuprate project and also being an active maintainer for monero-rs.

My main plan is to work towards what is needed to achieve a working alpha binary that can sync, stay synchronized, handle reorgs and participate in transaction propagation.

This will include:

Blockchain service

The blockchain service is what will keep the blockchain's state, handle incoming blocks, decide when to re-org, etc. It will use the consensus and database services created in previous CCS proposals (!405 (merged) & !422 (merged)).

Tx Pool

The transactions in the txpool will be stored in a separate database from where the blockchain is stored, using the same database abstraction. I will work on the txpool tables and the service that will handle txpool requests from other parts of Cuprate.

Hinto, as apart of their CCS, has already began work here. Although Hinto's CCS includes a small note about completing the persistent transaction pool: The persistent transaction pool will be finished within this CCS, I will be taking over from where hinto has left off as the exact transactions pool tables are yet to be decided and the transaction pool service is heavily tied in to other areas I will be working on.

Peer Protocol Request Handler

The peer protocol request handler is what is given to cuprate-p2p, it is used to handle requests for blocks/transactions and other chain data. In our test binary I created a mock request handler that just doesn't respond to requests, this lead to pretty unstable connections, with the other components here though I will be able to create a working request handler.

Other Tasks

There are other smaller things that need to be worked on for Cuprate to be ready for an alpha binary, mainly bug fixes and leftover TODOs.

Milestones

Unlike my previous CCS proposals, I am basing milestones on hours worked instead of completed work.

There are a few reasons for this. The exact work needed is likely to change as we get closer to an alpha binary, for example, bugs that need fixing may come up. It also brings the proposal closer to the average full-time developer proposal.

Although doing milestones based on time requires more trust, we are doing weekly Cuprate meetings where I am, and will be reporting progress.

Funding

I am asking for $55/hr for 50 hrs/week for 3 months at $166/XMR. This gives 215 XMR.

This is a raise over my last CCS ($45 -> $55), I believe this is justified given my past work.

Merge request reports