Abstract TCP methods under the Transport Trait. In workspace: - Added a new `cuprate-p2p-transport` crate that will later welcome complex or crate dependent transport implementations. (Arti for example.) In `cuprate-p2p-core`: - Implemented a new Transport trait that abstract methods to listen for or connect to other peers over a NetworkZone Z. - Reduced `NetworkZone` trait accordingly. - Added a new `BROADCAST_OWN_ADDR` to `NetworkZone` for anonymized networks. - Implemented `Tcp` transport for `ClearNet`. - Implemented `Dummy` transport for placeholder/testing purposes - Adapted definition of P2P components to the new `Transport` trait. - Changed original `InBoundStream` implementation to support two different but optional listeners (IPv4/IPv6) In `p2p-core/tests`: - Implemented `FragTcp` for fragmented message testing In `cuprated`: - Added `p2p.enable_inbound_v6` and `listen_on_v6` config field. - Added `From<&ClearNetConfig>` for `TransportConfig<ClearNet, Tcp>`. - Abstracted original `start_clearnet_p2p` to `start_zone_p2p` with a given `NetworkZone` and `Transport`. - Zone/NetworkInterface<Z> P2P initialization has been moved to `cuprated::p2p` in `initialize_zones_p2p` fn. - Defined `NetworkInterfaces` collection (useless at the moment).
Contents
About
Cuprate is an effort to create an alternative Monero node implementation in Rust.
It will be able to independently validate Monero consensus rules, providing a layer of security and redundancy for the Monero network.
Books
Cuprate is currently a work-in-progress; documentation will be changing/unfinished.
Cuprate maintains various documentation books:
| Book | Description |
|---|---|
| Cuprate's architecture book | Documents Cuprate's internal architecture & implementation |
| Monero's protocol book | Documents the Monero protocol |
| Cuprate's user book | Practical user-guide for using cuprated |
Crates
For a detailed list of all crates, see: https://architecture.cuprate.org/appendix/crates.html.
For crate (library) documentation, see: https://doc.cuprate.org. This site holds documentation for Cuprate's crates and all dependencies. All Cuprate crates start with cuprate_, for example: cuprate_database.
Contributing
See CONTRIBUTING.md.
Security
Cuprate has a responsible vulnerability disclosure policy, see SECURITY.md.
License
The binaries/ directory is licensed under AGPL-3.0, everything else is licensed under MIT.
See LICENSE for more details.