j-berman full-time development (3 months)
What
Work full-time 3 months on:
- Integrating full-chain-membership proofs into Monero under RingCT.
- As part of this CCS, I will submit PR's to the core Monero repository that do the following:
- Implements the tree in C++ described in section 6.1 (paper, reference commit)
- Implements the
grow
andtrim
algorithms (sections 6.1.1 and 6.1.2)
- Implements the
- Implements tree initialization with existing cryptonote outputs on boot (section 6.2.1)
- Implements growing the tree as the node syncs (section 6.2.2 and 6.2.3)
- Implements the transaction class containing FCMP's (part of sections 6.3 - 6.6)
- I will probably extend
cryptonote::transaction
to do this.
- I will probably extend
- Implements the tree in C++ described in section 6.1 (paper, reference commit)
- The following tasks from the rest of section 6 are necessary to complete the integration; I'm happy to divide and conquer if someone wants to work on this as well:
- Implement transaction construction with FCMP's (sections 6.3 - 6.6)
- A pre-requisite for this is implementing the transaction class above.
- Implement transaction verification (section 6.7)
- Implement RPC route to return a path for outputs (section 6.9)
- Implement unifying the distribution of {coinbase, pre-RCT, RCT} outputs and use it to select decoys paths (section 6.10)
- Implement changes for multisig (section 6.11)
- Implement transaction construction with FCMP's (sections 6.3 - 6.6)
- As part of this CCS, I will submit PR's to the core Monero repository that do the following:
- Continuing Seraphis wallet library work.
- My next task on this front is to bring the Serpahis lib async scanner into the current wallet API.
- To be clear, this is not implementing the Seraphis upgrade; it is bringing the Seraphis wallet library, which supports scanning today's blockchain, into the core Monero repository. This would speed up wallet scanning today, and is part of an effort to deprecate wallet2 and its technical debt, and replace it with the Seraphis lib (source).
- The async scanner is currently under review (source)
- In the latest round of benchmarks, I observed scanning speed-ups of 50-60% with a clearnet remote node, 40-45% with a tor node, 25-35% with a local node, all running the current chain (not Seraphis).
- To be usable in the wallet API today, the following still needs to be implemented (I'm also happy to divide and conquer here):
- My next task on this front is to bring the Serpahis lib async scanner into the current wallet API.
- Complete p2p SSL review (source).
- Misc. review, debugging, etc.
Who
j-berman on github / jberman on matrix / IRC
Past CCS's:
- https://ccs.getmonero.org/proposals/j-berman-3months-full-time-6.html
- https://ccs.getmonero.org/proposals/j-berman-3months-full-time-5.html
- https://ccs.getmonero.org/proposals/j-berman-3months-full-time-4.html
- https://ccs.getmonero.org/proposals/j-berman-3months-full-time-3.html
- https://ccs.getmonero.org/proposals/j-berman-3months-full-time-2.html
- https://ccs.getmonero.org/proposals/j-berman-3-months-full-time.html
Proposal
376 XMR
480 hours, 0.25 XMR/hr + $65/hr, $122/XMR from coingecko
I'm requesting a siginificant raise from my past CCS (0.16 XMR/hr -> 0.25 XMR/hr, $48/hr -> $65/hr) because I believe I have demonstrated improved performance, and believe the recent donations to CCS proposals demonstrate the community is capable of paying strong Monero contributors market / above-market rates. I believe paying market / above-market rates for strong contributors is a stronger strategy for Monero to attract and retain strong talent.
Merge request reports
Activity
Kayabanerve
jberman is also planning a CCS for the integration.
Id prefer FCMP, seraphis and existing codebase work be split into their own respective (3) ccs'.
re pay:
50+% increase in xmr
(0.16xmr/hr > 0.25xmr)
in addition to
35+% fiat increase
(48usd > 65usd/hr).
totals
New:
- 95usd/hr or 0.78xmr/hr
Old:
- 68usd/hr or 0.55xmr/hr
overall, a 41% pay increase per hour.
that's a mighty big raise..? Is the increase specific to to FCMP?
Despite the recent donations to general fund.. as a whole.. were not a well funded project. Whale donors won't be whales forever.
I'm not against the proposal, but i dont understand why the per hour rates jumped so significantly. If this was a lump sum, for delivery of a product, id understand the billing. Ie,
Integrate fcmp ___ xmr
.Hourly work is incredibly "trust" based. (i know "everyone" bills by hr.. but there is no way to verify any of it). Rates went from 800-1000xmr/yr > 1500xmr/yr - an incredible ramp up for what seems to be the same work.
july 2023 you asked for 48/hr total [24/hr + 0.08xmr/hr (24$)]
I figure $24 + 0.08 Monero [$24] per hour is a good price point for future CCS proposals as well.
soon after, that was increased to $48/hr + 0.16xmr/hr (~25hr)
Now we're at $65 + 0.25xmr/hr ($30)
tldr: i would request
- Please explain the rate creep
- FCMP integration is split into its own ccs, based on completed work and not hours.
- Seraphis split into its own ccs
- monero-project/monero its own ccs
july 2023 you asked for 48/hr total [24/hr + 0.08xmr/hr (24$)]
That was August 2021, my first CCS (not July 2023). This proposal is my 7th CCS.
Please explain the rate creep
Demonstrating improved performance on the job I believe is worth raises.
On the significant raise since last CCS:
According to this site, the average "web3 blockchain developer" is paid $140k USD per year (it says $180k for Apr 2024 at the bottom of the page; I see similar ranges around the web). My CCS proposal annualizes to $183k USD per year at the proposal's Monero price in USD. I believe I am an above average "blockchain developer" since I've discovered, patched, and reviewed a number of vulnerabilities in Monero, and improved core components of Monero.
In my opinion, developers working on Monero should be paid market rates or above-market rates. The recent donations demonstrate the Monero community is able to do so.
Monero has a talent acquisition and retention problem -- strong contributors ebb and flow from the project. Demonstrating that Monero can pay its contributors well, and smoothly, is demonstrating that the incentives are in place to attract and retain strong, consistent talent. I figure the CCS paying market / above-market rates is much more likely to help keep contributors who have left or slowed contributions to the project than hurt, considering the already strong, persistent, demonstrated interest in keeping Monero development efforts funded.
FCMP integration is split into its own ccs, based on completed work and not hours.
As part of this CCS, I'll explicitly guarantee completion of the
grow
andtrim
algorithms, initialization with existing cryptonote outputs, and growing the tree as the node syncs. I will also start on transaction construction (I'll implement the changes to the transaction class). I initially kept from guaranteeing more than what's in this CCS proposal in case other contributors come along and want to work on some of these tasks also. But fine with me to guarantee completed work here. Will update the CCS proposal for this.Seraphis split into its own ccs
monero-project/monero its own ccs
Not sure if this was clear: the work proposed in this CCS on the Seraphis wallet library is to bring the library (not the Seraphis protocol) into current wallets (into monero-project/monero today), in order to speed up current wallet syncing (my benchmarks scanning the chain today show a 50-60% speedup over clearnet, 40-45% over tor, and 25-35% with a local node). It's not implementing the Seraphis upgrade. So technically I would consider it monero-project/monero work too.
I don't want to split CCS's -- that sounds like unnecessary extra paperwork to me. I can guarantee completion of the above mentioned FCMP tasks in this CCS, and would also work on the other mentioned tasks as part of this CCS at the hourly rate given. My general priority will be FCMP's, but I also want to work on getting the Seraphis wallet lib to production.
New:
- 95usd/hr or 0.78xmr/hr
Old:
- 68usd/hr or 0.55xmr/hr
overall, a 41% pay increase per hour.
Worth highlighting: in USD terms, the old USD amount totaled to 75 USD/hr at Monero's price at that time, which means this CCS is a 27% increase from last CCS (75 USD/hr -> 95 USD/hr) in USD terms. Credit to @niocc for pointing this out.
The 68 USD/hr is if the prior rate request is priced in today's Monero USD price.
Edited by Justin BermanI agree with @ofrnxmr that the 376 XMR request for 3 months of work is way too much.
That amounts to 1500 XMR a year. In my opinion, this is extremely excessive, and should not be granted, but then again there was 900+ XMR granted to Luke Parker for some similar work.
The 24/hr pay you were previously working on is fair. If you were able to do it for 24/hr, I don't see a reason to triple your pay at a time when Monero's price is at an all time low, which will completely consume the cold wallet controlled by binaryfate.
Responded here.
Can we improve on meeting attendance?
MRL meetings 25% Attendance
- 07 Feb Not present
- 14 Feb Not present
- 21 Feb Not present
- 28 Feb Not present
- 6 Mar Not present
- 13 Mar Not present
- 20 Mar Not present
- 27 Mar Present
- 03 Apr Present
- 10 Apr Not present
- 17 Apr Present
- 24 Apr Not present
No Wallet Left Behind / Seraphis meetings 69% Attendance
As I mentioned in another comment, I believe the ask of 376 XMR for 3 months of work is extremely excessive and should not be granted, especially considering this developer used to work for 24/hr and has now decided to ask for more money "just because". This is ~1500 XMR a year. The Monero general fund isn't a cash cow, and we should be extremely careful with the funds we have there.
Edited by thelightningnetworkI believe the amount I'm requesting is fair and disagree with everything you've said.
and has now decided to ask for more money "just because"
I'm not asking "just because." I've worked on Monero full-time for close to 3 years and have demonstrated improved performance over that time. As part of this proposal, I'm going to be working on integrating full-chain membership proofs and speeding up wallet scanning by 50% (which I have demonstrated is possible, you can test it yourself). The former is addressing Monero's most significant privacy issue and the latter is improving Monero's most significant UX issue in my view.
I gave my reasoning above why I think Monero should pay strong contributors market / above-market rates which you've completely ignored here.
especially considering this developer used to work for 24/hr
At no point did I work for 24/hr. In my first CCS almost 3 years ago, I asked for 24 USD/hr + 0.08 XMR/hr, which was ~48 USD/hr at the time. I asked for a low amount. I would like to be paid what I consider a fair amount.
The 24/hr pay you were previously working on is fair
If you want to see weak talent in Monero, this is exactly how to get weak talent in Monero.
The Monero general fund isn't a cash cow
The Monero General Fund is not the same thing as the CCS fund. The CCS raises funds donated by the community on a case-by-case basis. The General Fund chooses to donate 1/3 the amount requested to some CCS proposals from time-to-time.
mentioned in commit ce1a8228
Update 1
190 hours
- Set up the fcmp tree in C++.
- Implemented the
grow
algorithm (includes initializing tree and extending an existing tree). - Set up tests.
- Started lmdb implementation.
- Constructing an initial tree and extending it is implemented; tests aren't complete yet.
- Started lmdb implementation.
- Current commit
- Implemented the
- Set up the fcmp tree in C++.
Update 2
350 hours
- Completed first pass of the
grow_tree
andtrim_tree
algorithms and tests, including the db implementation and tests.- Current commit
- It's not PR ready as is -- it still needs a solid cleanup pass and more testing.
- The remaining fcmp integration tasks are not as heavy as
grow_tree
andtrim_tree
, so this is a significant fcmp integration milestone.
- Submitted a PR to ensure when un-synced wallets call
scan_tx
, the response toscan_tx
is quick (does not affect GUI UX).
- Completed first pass of the
Update 3
545+ hours
Submitted a PR for the fcmp++ integration that includes:
- Rust FFI to call @kayabaNerve's fcmp-plus-plus Rust impl from the Monero C++
- Prepare locked outputs for insertion to the tree upon unlock
- The
grow_tree
algo - The
trim_tree
algo - LMDB changes
- Grow the tree as the node syncs
- Migrate cryptonote outputs into the tree on boot
- Transaction struct changes for fcmp++
Link: https://github.com/monero-project/monero/pull/9436
The PR includes all deliverables promised as part of this CCS.
I also forgot to include in my prior update, I submitted piecemeal PR's from the async scanner in order to prepare Monero daemons/wallet code and reduce the size and scope of the async scanner PR:
- Daemon RPC: /getblocks.bin return chain's top_block_hash in resp
- Daemon RPC: high_height_ok req boolean field /getblocks.bin
- Daemon RPC: add max_block_count field to /getblocks.bin
- wallet2: move wallet error on RPC resp handling to wallet_errors file (need to rebase)
- wallet2: move get_rpc_status func to RPC server definition file