Skip to content
Snippets Groups Projects

j-berman full-time 3 months (part 5)

Merged Justin Berman requested to merge j-berman/ccs-proposals:j-berman-5 into master

What

Work full-time 3 months on:

  • Continuing Seraphis wallet library work.
    • My next task is to complete an async wallet scanner implementation using the Seraphis wallet lib that points to monerod.
      • I have a working implementation that can be tested as described here.
      • When I point this async scanner on my local machine to a remote monerod instance @selsta spun up, I observe a ~40% speed-up in scanning over the current wallet2 scanner.
      • The bulk of the remaining work to get it to PR-ready includes:
        • Explore replacing the existing epee http client lib with a widely used http client lib like libcurl. This avoids needing to rewrite the epee http client lib to safely handle concurrent network requests.
        • Code cleaning/factoring.
        • Unit tests.
    • Once I complete the async scanner, I plan to collaborate with @dangerousfreedom @rbrunner7 and the no-wallet-left-behind working group to work on whatever is next highest priority to get the Seraphis wallet lib ready for production.
  • Integrating full chain membership proofs into the Seraphis library (and therefore demonstrate how to integrate them into the core Monero repo). The goal is to construct and verify Seraphis transactions using full chain membership proofs, including a suite of unit tests and benchmarks.
    • In my view, before Monero could actually consider accepting a PR for full chain membership proofs, there is a large amount of work still needed to prove its security and to land on a ready-for-production design. That work is currently proceeding in parallel. I would personally like to proceed with the above implementation work to maximize certainty that the Seraphis upgrade path is compatible with reasonably efficient full chain membership proofs.
  • Miscellaneous Monero work, debug issues, review PR's.

Who

j-berman on github / jberman on matrix

Past CCS's:

Proposal

216 XMR

480 hours, 0.16 XMR/hr + $48/hr, $166/XMR from coingecko

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
  • Yes please.

  • Contributor

    No-brainer, I don't see any downsides of this proposal for obvious reasons and the shitload of great work being done in the past by Justin.

  • Luke Parker mentioned in merge request !403 (merged)

    mentioned in merge request !403 (merged)

  • luigi1111 mentioned in commit 4a5c93dc

    mentioned in commit 4a5c93dc

  • merged

  • Author Contributor

    Update 1

    Hours worked: ~250

    After a solid review from @rbrunner7 on my wallet background sync PR triggered further discussion on the feature, I ended up making significant changes to the PR which ended up dominating my time. I implemented the core changes discussed and submitted them for review yesterday.

    I also moved forwards with the async scanner in the Seraphis wallet lib as explained below.

    I expect continuing work on background sync will take up a slice of my time going forward, but I still expect I will be able to continue making progress on the Seraphis wallet lib async scanner, and make initial progress on full chain membership proof integration before my CCS is complete.

    Background Sync

    Following discussion with @rbrunner7, @valldrac and @sgp, I made significant changes to the background sync PR in order to support devs who want to offer optional auto-background sync without a user needing to manually open their wallet first. With this option, a user's system could have perpetual access to the user's view key and not spend key. Mobile wallets for example could keep a separate randomly generated password stored in the device's secure key store, which can be used to auto-background sync without loading the spend key into memory at any time.

    Before this change, the feature did not enable users to grant their system perpetual access to just the user's view key and not spend key, and required the user to open their wallet first (and load their spend key into memory) before background sync could trigger (wiping the spend key from memory at that point). This method of background syncing is still supported (require user open their wallet first -> background sync when user goes inactive); wallet devs have also indicated interest in this form of syncing (@r4v3r23 and @tobtoht here).

    See the PR description for a more detailed explanation of how it works.

    Seraphis wallet lib Async Scanner

    Full chain membership proofs

    Nothing significant to report on this end from me yet.

    Edited by Justin Berman
  • Author Contributor

    Update 2

    Hours worked: 342

    • Completed all TODO's for the overhaul to the background sync PR to the core monero repo.
    • Got an initial setup working to call @kayabaNerve 's full chain membership proof code written in Rust from a Monero repo C++ performance test.
      • Source: https://github.com/j-berman/monero/commit/722f266edd75e3ad521b01a9b6b92dae72c1ffa9
      • To test: clone this repo at this commit, run make, then run the test_curve_trees performance test (<build dir>/tests/performance_tests/performance_tests --filter "test_curve_trees").
      • I used the CXX crate to call Rust code from C++ for its flexibility (it can also be used to pass C++ code into Rust), and for the author's argument that it is safer than the alternative (cbindgen/bindgen) since CXX offers stronger static analysis guarantees at build time (source).
      • Still TODO: construct a fcmp in a tx using the Seraphis wallet lib.
    • Submitted PR for a utility to convert legacy tx's outputs into Seraphis wallet lib compatible enotes.
  • plowsoff mentioned in merge request !385 (merged)

    mentioned in merge request !385 (merged)

  • Author Contributor

    Update 3

    Hours worked: 500+

Please register or sign in to reply
Loading