Skip to content
Snippets Groups Projects

j-berman full-time development (3 months)

Merged Justin Berman requested to merge j-berman/ccs-proposals:j-berman-7 into master
3 unresolved threads

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 and trim algorithms (sections 6.1.1 and 6.1.2)
      • 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.
    • 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)
  • 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):
        • Pre-RCT index handling (needs source)
        • A mutable subaddress lookahead (source)
        • Pool scanning (source)
        • A clean way to save tx metadata (source)
  • Complete p2p SSL review (source).
  • Misc. review, debugging, etc.

Who

j-berman on github / jberman on matrix / IRC

Past CCS's:

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.

Edited by Justin Berman

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
    • 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

      1. Please explain the rate creep
      2. FCMP integration is split into its own ccs, based on completed work and not hours.
      3. Seraphis split into its own ccs
      4. monero-project/monero its own ccs
    • Author Contributor

      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 and trim 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 Berman
    • I 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.

    • Author Contributor

      Responded here.

    • Please register or sign in to reply
  • added 1 commit

    Compare with previous version

  • Justin Berman changed the description

    changed the description

    • 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 thelightningnetwork
    • Author Contributor

      I 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.

    • Please register or sign in to reply
  • While I do have concerns about "pay rate inflation" effects in the medium/long term, that's somewhat speculative and not a blocker for this proposal.

    This rate is a significant increase but not abnormal for the type of work.

    We want to be respectful of donors but also of devs.

  • luigi1111 mentioned in commit ce1a8228

    mentioned in commit ce1a8228

  • merged

  • Author Contributor

    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.
      • Current commit
  • Author Contributor

    Update 2

    350 hours

    • Completed first pass of the grow_tree and trim_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 and trim_tree, so this is a significant fcmp integration milestone.
    • Submitted a PR to ensure when un-synced wallets call scan_tx, the response to scan_tx is quick (does not affect GUI UX).
  • Author Contributor

    Update 3

    545+ hours

    Submitted a PR for the fcmp++ integration that includes:

    1. Rust FFI to call @kayabaNerve's fcmp-plus-plus Rust impl from the Monero C++
    2. Prepare locked outputs for insertion to the tree upon unlock
    3. The grow_tree algo
    4. The trim_tree algo
    5. LMDB changes
    6. Grow the tree as the node syncs
    7. Migrate cryptonote outputs into the tree on boot
    8. 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:

Please register or sign in to reply
Loading