Creation of Python tools and educational material for checking and explaining the absence of money leakage (a.k.a. inflation) in Monero.
TLDR
Minimal Python tools and educational material for checking inflation in Monero. Check the initial scratch here. I would like your support to finish it :)
What and Why ?
I will try to address the following issues:
-
Provide solid information about inflation. This project is highly focused on building the minimum necessary tools in Python to prove that there is no money leakage (inflation) occurring or that has occurred. Therefore, the community is welcome to use the tools provided here and also make improvement suggestions on how to answer this question in the most decisive way.
-
Educational material. This work also intends to convey the message that Monero is as safe or more as Bitcoin (cryptographically speaking). Therefore some educational material is provided for the layman and for someone looking to understand the code. Convincing someone about something may require different levels of explanations. This work tries to address this issue.
-
Provide more transparency and ease the fear of users and investors. Nobody heavily invests into something that they do not understand. This work provides more transparency and education on how the blockchain works with the focus on the inflation issue. Therefore, users would feel safer by investing and using Monero.
-
Provide some implementations of the C++ code in Python. This work also intends to provide more tools in Python so users can have more independence from the C++ code in verifying the blockchain, which the great majority of people heavily relies on. If useful functions are implemented here, it could also help, in the future, other people to make different implementations of wallets and nodes in Python for example.
-
Overview of blockchain history focused on the inflation issue. Any successful project has to be able to tell its history in the most detailed way for the newcomers that did not live the events that happened in the past. Therefore, scanning the whole blockchain looking for leakages and providing some educational material with codes, some stats and insights is crucial not only for the new members but actually for anyone who wants to revisit the history.
Who
- I would like to stay anonymous for the moment. I believe that the goal of the CCS is to fund an idea instead of a person so if I do not do the job, the CCS can fund someone else to do it in the way it was proposed here.
- I have never contributed to Monero and I actually got on-board recently although I know its existence for some years.
- I started investigating after this post on reddit.
- I have a broad set of experiences like web design, Python coding, applied math and economics.
- I am highly motivated to work on this project as it is almost an existential question for me.
- I am pretty sure that I am capable of doing it following the proposed time schedule as I have been working in this project for the past two months already.
About the proposal
First, I would like to thank everyone in the MRL channel for pointing me some directions. I believe that basically what needs to be done is the creation of Python scripts and educational materials in order to: check the ring signatures, check the amounts involved, check the uniqueness of key images and check the emission curve.
These tasks have to be done for the Pre-RingCT era, MLSAG and CLSAG.
As I have already done a scratch for the Pre-RingCT (v1) era (it is not ready yet but I strongly recommend you to check out the temporary version to have an idea how the final product will look like), I still need to do improve the Pre-RingCT era and create the necessary material for the MLSAG and CLSAG. I also propose to create some educational material and scripts for Seraphis.
This work does not intend to end the discussion about inflation in Monero, it is quite the opposite, it looks for providing tools and educational material so people can have the same base for a serious and structured discussion about it. I do not expect to deliver the message that you should blindly trust in Monero but I expect to deliver a message which will raise the awareness on the inflation issue.
I will do my best to reply in a meaningful way the concerns of the community and I also will be constantly in touch with the developers and the ones that have much more knowledge than me (they have been really nice and kind so far) to explain the inflation issue in the best way.
Importance for the community
- Give some material and orientation for the ones looking to increase their understanding about the Monero blockchain with the focus on the inflation issue.
- Create Python functions (ring signature verifiers and others) to check the real data stored in the blockchain
- Give more transparency and explanation to the verification process of a transaction
- Reduce the fear of investors that do not understand how Monero can be transparent and at the same time private.
Milestones and payouts
First milestone: Codes, nice explanation and some stats about MLSAG / Date: End of May / Amount: 14.4 XMR
Second milestone: Codes, nice explanation and some stats about CLSAG / Date: End of June / Amount: 14.4 XMR
Third milestone: More codes and explanations (Seraphis), clean website, optimizations and corrections / Date: End of August / Amount: 14.4 XMR
I propose to work for 18 USD per hour, 30h per week, for 16 weeks. Which means 183016 = 8640 USD / 200 USD = 43.2 XMR Total: 43.2 XMR
I will also pay for the costs to host the website and buy a meaningful domain name for the project.
About deliveries
I will make all the content (codes, images, texts, ...) available and free to use, modify, share and do whatever you want. As soon as I finish some task, I will make them available.
Expiration Date
It would be nice if it get funded before 30.04.2022 so I can keep the expected timeline. Thank you very much in advance.
Merge request reports
Activity
I second Koe's words. I support this CCS proposal and I am grateful for dangerousfreedom's work thus far. Looking forward to future findings, or rather, improvements on his results for the broad benefit of us all.
Edited by rottenwheelmentioned in commit 4973b417
Hello everyone,
I would like to give you an update about my project.
What I have done so far:
- Created functions to check and generate MLSAG signatures in Python.
- Created functions to check and generate Borromean signatures in Python.
- Created some educational material to explain these concepts.
- Improved my point multiplication function. Now I'm using the PyNaCl library (LibSodium) which should be slower than the one used in the C++ code but should be about the same order of magnitude though.
- Improved my scanning algorithm by managing the process pools in Python (it is faster but it is far from being optimal)
- AFAIK nobody (up to now) created a tool to scan the whole blockchain to verify the ring signatures and rangeproofs independently from the C++ code. I have been doing it and so far I have scanned more than half of the blockchain and found some interesting things like this discussion about points outside the prime group (https://github.com/monero-project/monero/issues/8351).
- I HAVE NOT FOUND ANY BUG THAT COULD LEAD TO INFLATION UP TO NOW.
- Improved a bit the website, which is now available at moneroinflation.com , a domain which I bought using Monero ;)
What I will be doing next month:
- Continue scanning the blockchain for part of the MLSAG era (RCTTypeFull and RCTTypeSimple) as I havent finished yet.
- Start creating some codes and explanations about CLSAG and Bulletproofs
The website is still far from being good. For example, it doesnt work in mobiles now. I will improve it by the end of the CCS project as I will have a better understanding of the big picture on the issue 'inflation' so I would know better also how the website should look like.
Thank you very much for the support. It has been really amazing to work on this project and with this community.
Hello everyone,
I would like to provide my second report regarding this CCS.
What I have done this month:
- Created functions to check and generate CLSAG signatures in Python.
- Created functions to check and generate the Monero style Bulletproofs in Python.
- Created some educational material to explain these concepts.
- Scanned the blockchain for transactions type 1 and type 2 (up to blockheight 1686275).
- Improved a bit the website www.moneroinflation.com.
- Finished scanning for points outside the prime subgroup and updated the discussion that can be found here
- I HAVE NOT FOUND ANY BUG THAT COULD LEAD TO INFLATION.
What I will be doing for the next two months:
- Continue scanning the blockchain for all Bulletproofs txs as this is really a time taking operation.
- Improve the website. There are many things to fix (make it mobile friendly, review some equations, create more figures, etc). Now I have a good understanding about how Monero works under the hood. So, I will try to be more creative and better explain things.
- Improve the 'Boiling down a transaction' to make it more intuitive for people willing to check if the equation 'inputs = outputs + fee' balances.
- Improve the performance, comments and writing of the Python codes.
- Benchmark the C++ code with my Python functions using the LibSodium library.
Summary: I believe I have built the building blocks for all the functions needed to perform the CCS. Now I can check the key_images, ring signatures, rangeproofs and commitments for all the transactions in the blockchain independently from the C++ code. I have also created some educational content to explain and verify the code. Although everything works now, the performance and presentation could be improved. I will be working on it for the next months.
Thank you very much for the support. It has been a wild journey to work with all these concepts and I can definitely say that Monero is the best project with the best community :)
Hello, I would like to provide my third and last report regarding this CCS.
TLDR
Finished my CCS project as proposed and did not find any bug that could lead to inflation.
What I have done in the past months
- Finished writing all the main functions in Python to scan the blockchain focusing on the inflation issue (as proposed).
- Investigated a bit deeper the malleability issue spotted and scanned the Borromean signatures again to identify all the 'malleable' transactions and wrote this small report here.
- Although I did what I proposed myself to do (write some educational material and all the main functions in Python), I could not finish scanning the blockchain using my tools as it is way too slow. Therefore, I have also coded the Bulletproofs verification function in RUST (which will be useful for Serai - thank you kayabaNerve for the help) and started scanning the blockchain for the Bulletproofs era as the performance is now comparable to the C++ code.
- Fixed some mistakes in notations, improved some pages and wrote some more information (for example about inflation on the website www.moneroinflation.com
Personal comments about this project and Monero
- I really learned a lot in the past months by writing all the main crypto functions in Python (some in Rust too) and some educational material. I'm now familiar with the code and the development history of Monero.
- My only criticism is related to the choice of allowing non-canonical scalars and points to be stored in the blockchain. Although these fungibility and malleability issues are not really a security problem they will be annoying when other implementations of Monero appear, which is inevitable as the project grows.
- It is really incredible to see the commitment of the developers (koe, moneromooo, selsta, jberman, rbrunner, tevador, luigi, xmrack, gingeropoulos, mj, rucknium, etc) towards improving Monero. I'm really thankful for the resources and interactions we had in the past months.
- I did not find any shady thing or any taboo subject regarding the code or the core developers. People are really honest in explaining and discussing the strengths and limitations of the code. Really awesome.
What is next?
I still did not finish scanning the blockchain (as BP+ did not exist when I submitted the proposal) so I'm planning to create the tools to quickly finish scanning up to the present. Also, I feel like I have the necessary tools and skills to help in the development of Jamtis/Seraphis, therefore, I will write another CCS proposal soon to do it.
Thank you very much for your support! I usually take every comment/suggestion seriously so please do not hesitate to contact me if you wish ;)
I have tried everything that I can think of retro bowl, but nothing seems to help. I have even tried medication, but it doesn't seem to be working either.
Here you will find the latest Cisco 350-801 actual exam questions https://www.marks4sure.com/350-801-exam.html for free that stimulate a real Implementing Cisco Collaboration Core Technologies exam.
mentioned in merge request !377 (merged)
mentioned in merge request !409 (merged)
mentioned in merge request !442 (merged)