Merge branch 'cuprate-arti' into 'master'

SyntheticBird Cuprate Arti integration and development (2 months)

See merge request monero-project/ccs-proposals!564
This commit is contained in:
SyntheticBird 2025-03-19 01:20:59 +00:00
commit b6674cfdd4

View File

@ -0,0 +1,88 @@
---
layout: fr
title: SyntheticBird Cuprate Arti integration and development (2 months)
author: SyntheticBird
date: March 9, 2025
amount: 52.5
milestones:
- name: April
funds: 50% (26 XMR)
done:
status: unfinished
- name: May and completion of Arti integration
funds: 50% (26.5 XMR)
done:
status: unfinished
payouts:
- date:
amount:
- date:
amount:
---
# Who
I am [SyntheticBird](https://github.com/SyntheticBird45), Cuprate contributor.
# What
Cuprate is currently in alpha version and a lot of features are planned on the roadmap up to beta phase. One of the features present on this roadmap, and that was [originally presented when announcing Cuprate](https://github.com/Cuprate/cuprate/blob/fc9b077d946fe8b7746c45ae8b299a87b2014cbf/readme.md?plain=1#L57), is native support for Tor network. This CCS proposal intend to fulfill this milestone.
I will work for an estimated 2 months, from April to end of May, on Cuprate with the goal of implementing native Tor support into `cuprated` through the `arti-client` crate and other miscellaneous improvements.
At the end of this CCS, testers will be able to:
- Bootstrap Tor network within Cuprate or use Tor system daemon.
- Use Tor for outbound clearnet connections.
- Natively connect to onion monero nodes.
- Generate an onion service for accepting inbound Tor connections.
# Tasks
The planned set of tasks to complete can be found at this Github gist: https://gist.github.com/SyntheticBird45/4c554d3c1e7ae6f8d237d7dd49c2d2f0
It is subject to change but overall the required work can be separated into 3 categories:
### 1. Alternative network integration into P2P components.
Currently, Some P2P components have limited support for alternative network rules. This will require modifying `AddressBook`, `Connector`, `HandshakeBuilder`, `cuprate-dandelion` crate and `cuprated`'s dandelion implementation, and others to be *anonymization-network-aware*. After this work, we will define a new `NetworkZone` called `Tor` to connect to onion monero nodes.
### 2. Implementation of Arti and Tor Daemon support
Implementing `arti-client` inside `cuprated` and `cuprate-p2p{-*}`. Configurations, initialization, bootstrapping and launching onion services if requested. System tor daemon will also be supported.
### 3. Documentation
Update [Architectural book](https://architecture.cuprate.org) and [User book](https://user.cuprate.org/)
# Additional work
In the event that all guaranteed items are completed before the 2 months, I will spend my remaining time assisting (Issues, PRs and Reviews) on whatever is agreed is highest priority, or working on the following items:
- Custom Allocator support (Performance improvements for Musl based linux distributions and potentially minor improvements on other OSs)
- SOCKS5 proxy support for p2p
- Fjall database integration
- Related documentation
# Milestones
### 1. First month
26 XMR
### 2. Second Month and completion of main tasks
26.5 XMR
# Licensing
All the works completed under this CCS will be delivered to the [`Cuprate/cuprate.git`](https://github.com/Cuprate/cuprate) github repository. This work will follow the current repository licensing:
- All work inside `/binaries` is licensed under `AGPL-3.0-only`.
- The rest of the root and crates are licensed under `MIT`.
For more information about the Cuprate github organization, please [visit the organization page](https://github.com/Cuprate)
# Funding
I will be working 30 hours per week during 8 weeks at 45\$/hr - 205\$/XMR.
30×8=240 | 240×45=10800 | 10800÷205=52.5
Total: 52.5 XMR