Skip to content
Snippets Groups Projects

dangerousfreedom - more Seraphis development

2 unresolved threads

TLDR

Hello, I would like your help to develop more features for Seraphis like the audit framework and a simple CLI wallet.

What and Why ?

I will try to address the following issues:

  1. Create the necessary functions and explanation for the audit framework in Seraphis, i.e., proofs of ownership, unspentness, tx in, tx out (InProof,UnspentProof,SpendProof, OutProof) and update the legacy protocol if necessary. The framework consists basically of two tasks: 1) Creation of the necessary theoretical material (very much as explained in chapter 8 of Zero To Monero 2 but for Seraphis. 2) Creation of the C++ code to perform these transaction-related proofs. I will focus initially on providing the same functionalities that we have now on the current wallets (reserve_proof,spend_proof and tx_proof).

  2. Help developing a wallet for Seraphis. My goal is to be able to create the necessary functions to open a wallet, perform a CLI 'transfer address amount' that would create a transaction in the Seraphis/Jamtis standards, close the wallet, re-open a new wallet where the transferred funds are, 'scan the blockchain' and transfer the funds back to the original wallet. I will closely work with koe, rbrunner and jberman to better elaborate the tasks and get feedbacks or follow-ups whenever possible. Initially, the simplest wallet would open/save/close a file, keep track of the transactions inputs and outputs, perform a transfer in the Seraphis standards and prepare everything for the serialization and storage in the blockchain. These are the minimum features I will implement. More about it here.

Who

  • I created the website www.moneroinflation.com where you can find some information to improve your odds of winning a debate about the inflation issue in Monero.
  • I have spotted a fungibility issue (Monero allows the storage of non-canonical points which harms the fungibility of transactions).
  • I have spotted a malleability issue (Monero has wrong signatures - signatures that don't match the data stored in the blockchain according to the canonical standards, which came from a wrong operation of a function when certain conditions are not met).
  • AFAIK I was the first to make an implementation of the core functions of Monero in another language and (try to) scan the whole blockchain with them.

I propose to work for 40 EUR per hour, 25h per week, for 18 weeks. Which makes 120 XMR considering 150 EUR/XMR.

If everything goes well, I believe we could have a basic PoC CLI wallet by the end of January/23 and enough achievements to move to testnet.

Edited by Dangerous Freedom

Merge request reports

Merged by luigi1111luigi1111 2 years ago (Sep 28, 2022 9:50pm UTC)

Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • It would be a good idea to approach MRL members / the people you're helping, for endorsement of your work / this proposal (to reduce any possible waiting time)

    Edited by plowsof
    • *also the title of "more Seraphis development" , would make it seem as though you've been developing Seraphis already? seems too ambiguous , and your wording makes me feel as though you are an integral part of Seraphis development and i must donate to you.

    • 'More' in the sense that it will be built on the top of that. I have not done anything for Seraphis up to now. If it is a donation, of course you don't need to feel obliged to donate to anything.

    • Please register or sign in to reply
  • Contributor

    Create the necessary functions and explanation for the audit framework in Seraphis, i.e., proofs of ownership, unspentness, tx in, tx out (InProof,UnspentProof,SpendProof, OutProof) and update the legacy protocol if necessary .

    Currently no research has been done into Seraphis audit proofs. Since audit proofs are part of the expected wallet API, it is important to get Seraphis audit proofs figured out before trying to put Seraphis into production.

    Help developing a wallet for Seraphis. My goal is to be able to create the necessary functions to open a wallet, perform a CLI 'transfer address amount' that would create a transaction in the Seraphis/Jamtis standards, close the wallet, re-open a new wallet where the transferred funds are, 'scan the blockchain' and transfer the funds back to the original wallet.

    Seraphis needs a lot of work to reach mainnet, this seems like it will get us closer to that goal.

  • Meeting to discuss CCS Merge list this Saturday (Time not set in stone) https://github.com/monero-project/meta/issues/737

  • @dangerousfreedom, @jberman and I formed a dev group of 3 with the goal of building the Seraphis core wallet for the Monero codebase, the replacement of wallet2 for Seraphis. If this proposal gets merged and then gets funded, we will have some serious manpower available to work towards that goal in earnest.

    So not surprising I give my thumbs up to this proposal :)

  • Dangerous Freedom changed the description

    changed the description

  • @dangerousfreedom's work on the inflation checker was a clear demonstration of their ability to work with Monero's cryptography and identify irregularities. I think a critical, competent eye digging through Seraphis is a +1 for Monero. I also second @koe's comments on the actual work proposed as part of the CCS.

  • luigi1111 mentioned in commit 10d3a70f

    mentioned in commit 10d3a70f

  • merged

  • I would like to give a report about this CCS but first I would like to thank koe, rbrunner, jberman, rucknium and everyone participating in the wallet efforts.

    • Regarding the knowledge_proofs: I believe I have done a bit more as initially thought. Seraphis offer the possibility to provide more fragmented proofs which may be useful for some use-cases that I'm not fully aware of. All the functionalities of the legacy protocol (reserve_proof,spend_proof and tx_proof(In/Out proofs)) have their similar functions for Seraphis. A proposal for an unspent_proof scheme was also described and implemented (though more unit_tests are needed). In summary the new proofs are: enote_ownership_proof, enote_amount_proof, enote_sent_proof, address_ownership_proof, address_index_proof, enote_key_image_proof, tx_funded_proof, enote_unspent_proof, reserve_proof. The implementation can be found here and a pdf with the description of the proofs here.

    • Regarding the wallet work: I believe that I achieved what I wanted to initially but since we did not have a structured work group back then for organizing the wallet efforts, it was poorly done looking at it now. My contributions were modest like getting an optimized base32 one-file encoder/decoder with unit_tests, translating into C++ tevador's base32 checksum algorithms with unit_tests, creating a prototype to load/save a seraphis wallet (using the skeleton of wallet2), making a transaction and updating the balance using the mock seraphis functions and providing a scheme to store/load different wallet tiers. Most of these codes might not be in the 'final' wallet but hopefully they generated fruitful discussions and will help us (definitely me) towards the next milestones. Initially I didn't know how far we were from having the most basic wallet to go into testnet. Now I have a much clearer idea of the work packages and challenges we have ahead. So I would say that this code ends this proposed task and it opens many questions for the next tasks that I would like to investigate. Like: how can we optimize the modularity of the wallet functions (instead of having big files like wallet2.* and simplewallet.* how can we break it down) ? Is the cryptonote (cn_slow_hash) hashing still appropriate for hashing the passwords? How the structure of the different wallet tiers (master, view-balance, payment_validator, payment_scanning, address_generator) should be organized? Finally and specially, how to properly store the transaction history and integrate the knowledge proofs on them?

    I thank you all for your comments and support.

  • Dangerous Freedom mentioned in merge request !377 (merged)

    mentioned in merge request !377 (merged)

  • Dangerous Freedom mentioned in merge request !409 (merged)

    mentioned in merge request !409 (merged)

  • Dangerous Freedom mentioned in merge request !442 (merged)

    mentioned in merge request !442 (merged)

Please register or sign in to reply
Loading