Maybe it is a little late, But we did have documented the monerod database at the time. You can find it on this repository: https://github.com/Cuprate/old_book/tree/main/src/monero/database
Hi, I support the merging of this CCS. hinto-janai has demonstrated strong competence and skills. Having another person work alongside Boog900 on this project will be beneficial in getting Cuprate up and running in the near future. For having worked on Cuprate and therefore monerod database myself, I can attest that the amount of work is tremendous for only one dev. And I've confidence into hinto-janai at giving himself to the task
Hi everyone, my name is uzern4m (subject to change)
I'm a Rust enthusiast, amateur security researcher and i've been introduced to monero for more than a year now.
The current monero node is written in C++. It is really well done, thanks to wonderful maintainers, proper/structured codebase and regular security audit made on updates. With these high-quality practices the node haven't suffered any critical security vulnerabilities (RCE/Information Disclosures) since then.
Paradoxically with the upward statement, the current trend tends towards abandonment of C++ in favor of language like Rust or Go. For example The Tor Project has been rewriting from scratch their binary in Rust, see Arti. It has been seen already in the monero ecosystem with software such as the COMIT BTC<>XMR Atomic swap, Tari and Serai DEX being written in Rust, ETH-XMR atomic swap implementation of noot being done in Go. Even outside with Ethereum, MobileCoin and ZCash nodes for example (no monero fellas i don't support these cryptocurrencies).
I think we should slowly but surely start exploring the possibility of developping a Rust-written Monero node in the future. That's why I'm proposing this CCS. The goal is to release a report on the different reasons for why we should and why we shouldn't write a Rust written node. In case we would want to, what issues may arise during developpement and what would be the best approach towards it. While also proposing new features/improvements over the current implementation.
For those who don't know what Rust is : Wikipedia , Official Site , Ecosystem , Reddit Community.
The primary reason for using Rust against other languages for a rewrite are quite simple:
It's my first CCS and I never talked with the monero community. I was just an observer. I've been developping in Rust small projects for 2 years now and put my energy into security research. I'm actively learning reverse-engineering. Recently some things happened in my life, in bad way as well as good way, and I've now extra times to put effort into. And I decided to help Monero. I believe that if we don't put effort into what we believe or love, we can't make it stand against time. It's called entropy and it even apply to the world of cryptocurrency. Hope you will support my CCS OwO.
I will work 5 hours per day during 10 days, 2~3 weeks. 15€ per hours. The Monero-EUR price is ~160€ (01/30/23)
(5 x 10 x 15)/160 ~ 5 XMR.
Hi, not in the same time zone so I'm might be a little late. Thanks for the issues that have been addressed. I'll take more time to adresse issues that you've raised. And I'll come back later with a more precise CCS proposal. I'm gonna close the merge request for now.
It's a noble cause, but a task like this with potentially large ramifications by someone without existing work on Monero seems problematic.
It's just that I'm still learning so I don't have relevant contributions for the Monero codebase, if you talk about commit as a form work on Monero.
There's also no clear milestones or definitions of done in the CCS. I think the this proposal needs more research.
How could I improve it ? Should I precise what will be in the report as the milestone ?
I am quite sceptical how far somebody can possibly get here who doesn't have very good or even excellent knowledge of the architecture and the scope of the Monero codebase. And I don't think you will be able to acquire that knowledge in the time frame you propose.
I'm actively familiarizing myself with the Monero codebase outside of this proposal. Not only because without it, this CCS would be nonsense. But also because I've a lot to learned from a software engineering point of view. If we take into account discussion & funding, I've still some times ahead of me to properly understand it.
Again, I would rather like to have somebody looking at this that already did not small, but big projects in Rust. Because this will be a big one, if we ever get it going. And because of that, will take long. And because of that, run into problems that otherwise would not occur, e.g. that the thing to migrate mutates while you migrate it.
I should be more precise. It's a high-level estimation on where things could go wrong. Obviously I can't predict what's going to happened. But, I can at least check components for architecture incompatibility (something written in C++ can't be rewritten 1:1 into Rust) and also effort needed about dependencies. For example, there wasn't a good (maintained) LMDB wrapper until 20 days ago when meilisearch decided to start an alpha stage. And there is still some work needed with ZeroMQ in Rust. These are issues that I will address into the report to give an estimation of where the development will struggle.
Ok i've just seen monero.observer. No i'm not @Boog900. I didn't even seen it's CCS Proposal.
Thanks you to specify, I don't think I have the presumption of being able to rewrite the codebase. A simple POC would be possible but it's not the matter of this CCS.
Someone Else (41f0ead2) at 30 Jan 22:15
Update preliminary-research-on-writing-a-new-monero-node-in-rust_UZ...
I must precise that English is not my native language
Someone Else (1a31172b) at 30 Jan 19:55
Update preliminary-research-on-writing-a-new-monero-node-in-rust_UZ...
Hi everyone, my name is uzern4m (subject to change)
I'm a Rust enthusiast, amateur security researcher and i've been introduced to monero for more than a year now.
The current monero node is written in C++. It is really well done, thanks to wonderful maintainers, proper/structured codebase and regular security audit made on updates. With these high-quality practices the node haven't suffered any critical security vulnerabilities (RCE/Information Disclosures) since then.
Paradoxically with the upward statement, the current trend tends towards abandonment of C++ in favor of language like Rust or Go. For example The Tor Project has been rewriting from scratch their binary in Rust, see Arti. It has been seen already in the monero ecosystem with software such as the COMIT BTC<>XMR Atomic swap, Tari and Serai DEX being written in Rust, ETH-XMR atomic swap implementation of noot being done in Go. Even outside with Ethereum, MobileCoin and ZCash nodes for example (no monero fellas i don't support these cryptocurrencies).
I think we should slowly but surely start exploring the possibility of developping a Rust-written Monero node in the future. That's why I'm proposing this CCS. The goal is to release a report on the different reasons for why we should and why we shouldn't write a Rust written node. In case we would want to, what issues may arise during developpement and what would be the best approach towards it. While also proposing new features/improvements over the current implementation.
For those who don't know what Rust is : Wikipedia , Official Site , Ecosystem , Reddit Community.
The primary reason for using Rust against other languages for a rewrite are quite simple:
It's my first CCS and I never talked with the monero community. I was just an observer. I've been developping in Rust small projects for 2 years now and put my energy into security research. I'm actively learning reverse-engineering. Recently some things happened in my life, in bad way as well as good way, and I've now extra times to put effort into. And I decided to help Monero. I believe that if we don't put effort into what we believe or love, we can't make it stand against time. It's called entropy and it even apply to the world of cryptocurrency. Hope you will support my CCS OwO.
I will work 5 hours per day during 10 days, 2~3 weeks. 15€ per hours. The Monero-EUR price is ~160€ (01/30/23)
(5 x 10 x 15)/160 ~ 5 XMR.
Someone Else (8fc4d98f) at 30 Jan 19:48
Update preliminary-research-on-writing-a-new-monero-node-in-rust_UZ...
Someone Else (b68b6760) at 30 Jan 19:45
upload the ccs proposal