Cuprate, an upcoming experimental, modern & secure monero node. Written in Rust
Find a file
Boog900 10aac8cbb2
P2P: Block downloader (#132)
* impl async buffer

* clippy

* p2p changes

* clippy

* a few more docs

* init cuprate-p2p

* remove some unrelated code and add some docs

* start documenting client_pool.rs

* add more docs

* typo

* fix docs

* use JoinSet in connection maintainer

* small changes

* add peer sync state svc

* add broadcast svc

* add more docs

* add some tests

* add a test

* fix merge

* add another test

* unify PeerDisconnectFut and add more docs

* start network init

* add an inbound connection server

* remove crate doc for now

* fix address book docs

* fix leak in client pool

* correct comment

* fix merge + add some docs

* review comments

* init block downloader

* fix doc

* initial chain search

* add chain_tracker

* move block downloader to struct

* spawn task whe getting blocks

* check for free peers and handle batch response

* add test bin

* working block downloader

* dynamic batch sizes

* dandelion_tower -> dandelion-tower

* fix async-buffer builds

* check if incoming peers are banned

* add interface methods

* update docs

* use a JoinSet for background network tasks

* dynamic batch size changes

* Keep a longer of queue of blocks to get

* more checks on incoming data

* fix merge

* fix imports

* add more docs

* add some limits on messages

* keep peers that dont have the current need data

* fix clippy

* fix .lock

* fix stopping the block downloader

* clean up API and add more docs

* tracing + bug fixes

* fix panic

* doc changes

* remove test_init

* remove spammy log

* fix previous merge

* add a test

* fix test

* remove test unwrap

* order imports correctly

* clean up test

* add a timeout

* fix tests

* review fixes

* make `BlockDownloader` pub

* make `initial_chain_search` pub

* make `block_downloader` private

* Apply suggestions from code review

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>

* split some sections into separate modules

* split chain requests

* sort imports

* check previous ID is correct

* fix typos

* Apply suggestions from code review

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-06-22 01:29:40 +01:00
.github repo: add Tracking Issue issue template (#182) 2024-06-20 23:27:09 +01:00
benches repo: add skeleton directories, fix labels (#139) 2024-05-29 02:18:30 +01:00
binaries repo: add skeleton directories, fix labels (#139) 2024-05-29 02:18:30 +01:00
books books: add user-book template (#154) 2024-06-07 22:04:27 +01:00
consensus Fast sync part 2 (#156) 2024-06-14 23:00:18 +01:00
cryptonight ci: fix windows/macos (#116) 2024-04-27 00:49:55 +01:00
helper repo: add skeleton directories, fix labels (#139) 2024-05-29 02:18:30 +01:00
misc [Misc] Updating SyntheticBird's GPG Key (#122) 2024-04-30 20:09:53 +01:00
net epee: make {read,write}_varint public, create write_{bytes,container} (#185) 2024-06-22 01:25:21 +01:00
p2p P2P: Block downloader (#132) 2024-06-22 01:29:40 +01:00
pruning P2P: Peer sync state svc (#128) 2024-05-22 01:56:39 +01:00
rpc Fix clippy & Cargo update (#161) 2024-06-13 19:08:34 +01:00
storage Consensus: use cuprate-types types (#145) 2024-06-04 18:19:35 +01:00
test-utils Consensus: use cuprate-types types (#145) 2024-06-04 18:19:35 +01:00
types Consensus: use cuprate-types types (#145) 2024-06-04 18:19:35 +01:00
zmq repo: add skeleton directories, fix labels (#139) 2024-05-29 02:18:30 +01:00
.gitignore books: add skeleton and docs (#141) 2024-05-30 01:19:46 +01:00
Cargo.lock P2P: Block downloader (#132) 2024-06-22 01:29:40 +01:00
Cargo.toml P2P: Block downloader (#132) 2024-06-22 01:29:40 +01:00
CONTRIBUTING.md contributing: add & format sections (#150) 2024-06-14 22:35:15 +01:00
deny.toml Fix clippy & Cargo update (#161) 2024-06-13 19:08:34 +01:00
LICENSE books: add skeleton and docs (#141) 2024-05-30 01:19:46 +01:00
LICENSE-AGPL License correction for github (#10) 2023-03-20 21:35:20 +01:00
LICENSE-MIT repo: update license (#134) 2024-05-27 00:39:32 +01:00
README.md docs: update README.md & SECURITY.md (#143) 2024-06-14 18:33:43 +01:00
SECURITY.md docs: update README.md & SECURITY.md (#143) 2024-06-14 18:33:43 +01:00
typos.toml database: impl service::{Request,Response} mappings (#101) 2024-04-16 23:05:38 +01:00

An alternative Monero node implementation.

(work-in-progress)

Matrix CI

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.

Documentation

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
Cuprate's protocol book Documents the Monero protocol
Cuprate's user book Practical user-guide for using cuprated

For crate (library) documentation, see the Documentation section in CONTRIBUTING.md.

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.