Commit graph

119 commits

Author SHA1 Message Date
Boog900
3270560711
add chain_tracker 2024-05-25 00:53:13 +01:00
e8b20e6115
P2P: async buffer (#109)
* impl async buffer

* clippy

* review comments
2024-05-24 02:15:49 +01:00
Boog900
596fed775a
initial chain search 2024-05-24 02:11:49 +01:00
Boog900
55c744512d
fix doc 2024-05-23 02:03:09 +01:00
Boog900
5a0d4a4e94
init block downloader 2024-05-23 01:34:08 +01:00
Boog900
3365af9af7
Merge branch 'async-buffer' into block-downloader 2024-05-22 22:28:17 +01:00
Boog900
e14ca2b846
review comments 2024-05-22 22:22:59 +01:00
Boog900
73041b9fe1
Merge branch 'main' into async-buffer 2024-05-22 22:03:28 +01:00
Boog900
20f9a063ea
fix merge + add some docs 2024-05-22 21:43:45 +01:00
Boog900
7f5e44f7b1
Merge branch 'main' into network-init 2024-05-22 01:59:47 +01:00
0158c6671a
P2P: Peer sync state svc (#128)
* 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 a test

* fix merge

* add another test

* unify PeerDisconnectFut and add more docs

* Apply suggestions from code review

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

* dif -> diff

* move comment

* Update pruning/src/lib.rs

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

* Apply suggestions from code review

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-05-22 01:56:39 +01:00
02cd963e57
P2P: Broadcast svc (#129)
* 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 broadcast svc

* add more docs

* add some tests

* Apply suggestions from code review

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

* review comments

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-05-21 23:19:52 +01:00
Boog900
7a22aa6500
correct comment 2024-05-20 18:48:30 +01:00
Boog900
79a14120d9
fix leak in client pool 2024-05-19 21:58:30 +01:00
Boog900
76c0ad33b0
fix address book docs 2024-05-19 19:05:06 +01:00
Boog900
f28321a7ec
remove crate doc for now 2024-05-19 18:50:10 +01:00
Boog900
2fd74dec14
add an inbound connection server 2024-05-19 18:35:07 +01:00
Boog900
f818b6a5ff
start network init 2024-05-19 01:00:01 +01:00
Boog900
8eaaac53ca
Merge branch 'broadcast-svc' into network-init 2024-05-18 18:38:39 +01:00
Boog900
191a1723a1
Merge branch 'main' into broadcast-svc 2024-05-18 14:01:16 +01:00
Boog900
41970d748a
unify PeerDisconnectFut and add more docs 2024-05-18 13:52:21 +01:00
Boog900
f4ef14ca18
add another test 2024-05-17 17:36:25 +01:00
Boog900
e1dfa3e605
fix merge 2024-05-17 15:23:51 +01:00
Boog900
065fa242d8
Merge branch 'main' into sync-states 2024-05-17 14:54:58 +01:00
c5fbbcc6e8
P2P Client Pool (#121)
* 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

* Apply suggestions from code review

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

* review changes

* Update p2p/cuprate-p2p/src/connection_maintainer.rs

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-05-17 14:52:51 +01:00
Boog900
b407377f52
add a test 2024-05-16 00:31:55 +01:00
Boog900
aedf87ec5b
add some tests 2024-05-15 17:15:39 +01:00
Boog900
df6d6ec187
add more docs 2024-05-15 16:30:46 +01:00
Boog900
7881013380
add broadcast svc 2024-05-15 01:47:44 +01:00
Boog900
020fd56673
add peer sync state svc 2024-05-15 01:33:05 +01:00
Boog900
6d3096eb03
small changes 2024-05-13 23:56:00 +01:00
Boog900
e59bb0a1f5
use JoinSet in connection maintainer 2024-05-13 23:39:36 +01:00
Boog900
37e7c29c48
fix docs 2024-05-07 01:18:29 +01:00
Boog900
1570844b0b
typo 2024-05-07 01:13:55 +01:00
Boog900
859d67d8b6
add more docs 2024-05-07 01:07:18 +01:00
Boog900
1b01336294
start documenting client_pool.rs 2024-05-06 02:22:30 +01:00
Boog900
63a3207316
Merge branch 'main' into peer-set2 2024-05-06 01:52:46 +01:00
75306babf8
dandelion++ lib (#111)
* init D++

* init D++ router

* working D++ router

* add test

* D++ tx pool

* add more txpool docs

* add a txpool builder

* add tracing

* add more docs

* fix doc

* reduce test epoch (windows CI fail)

* generate first state in config

Windows seems to not allows taking a big value from an instant

* extend tests

* clippy

* review comments + more docs

* Apply suggestions from code review

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

* update Cargo.lock

* rename txpool.rs -> pool.rs

* review comments

* Update p2p/dandelion/src/tests/router.rs

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

* Update p2p/dandelion/src/router.rs

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-05-05 20:22:41 +01:00
Boog900
4b471a947f
Merge branch 'main' into peer-set2 2024-05-03 17:16:36 +01:00
00c3692eac
P2p changes (#118)
* p2p changes

* clippy

* a few more docs

* review comments

* fix peer list bug
2024-05-02 22:58:22 +00:00
Boog900
4d61b100f5
remove some unrelated code and add some docs 2024-04-30 22:11:18 +01:00
Boog900
b9caee9335
init cuprate-p2p 2024-04-30 02:02:12 +01:00
Boog900
75a1db3fdc
a few more docs 2024-04-29 01:13:39 +01:00
Boog900
b4a2be2338
clippy 2024-04-26 21:17:47 +01:00
Boog900
1c72c0952f
p2p changes 2024-04-26 21:13:53 +01:00
Boog900
a8a87ca233
clippy 2024-04-16 22:08:08 +01:00
Boog900
aaa7a2903f
impl async buffer 2024-04-16 21:52:53 +01:00
93372fa4b5
P2P Address book & Handshake changes (#89)
* use tokio's delay queue for bans

* document handles

* remove peers from address book when retrieving

* ping inbound peers during handshakes

* support receiving pings during handshakes

* add peer to anchor before reducing whit list

* clippy

* comment handshakes

* typos

* sort `use`

* use `rand::prelude::*`

* review comments

* update macro
2024-03-20 20:58:12 +00:00
729b0fb0cf
Keep pruning seeds decompressed (#90)
* keep pruning seeds decompressed.

* add a function to check seeds for P2P network

* review comments

* add next_pruned_block tests

* fix docs
2024-03-15 22:11:27 +00:00
159c8a3b48
levin: fragmented messages (#84)
* levin: fix fragmented messages & use bitflags

* levin: add a method to fragment a message

* levin: add tests for fragmented messages and fix issues

* fix docs

* tests: don't include bytes length

* levin: add support for sending fragmented
/ dummy messages

* fmt

* add fragmented handshake tests.

* fix handshake detection when fragmented
and alt (non-monero) protocol info

* add tracing logs

* remove `already_built`, this was an old way I was thinking of sending raw buckets

* clippy

* clippy 2

* Update net/levin/src/message.rs

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

* review comments

* add timeout to tests

* Update net/levin/src/header.rs

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-03-05 01:29:57 +00:00
e560ecc2ee
Add a test for an inbound handshake from monerod (#75)
* monerod: set a random DB and remove dir when done

* add a test for an inbound monerod handshake

* don't fail if can't remove dir on windows

* Update test-utils/src/monerod.rs

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

* use `temp_dir`

* use `tempfile`

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-02-25 21:21:25 +00:00
cf0fcfb6c5
p2p: remove old code (#74) 2024-02-25 13:42:27 +00:00
475c8c5ac0
imporove Monerod spawn stability (#66)
* output monerod logs when a thread panics

* always spawn a monerod don't attempt to re-use

* set zmq port and `non-interactive`

* check monerod has started before test

* remove test panic

* review changes
2024-02-16 22:47:50 +00:00
hinto-janai
354ac9c2f6
Add typos + cargo doc CI (#32)
* ci: add separate `typo` job

* add `typos.toml` for false positives

* fix all typos

* ci: add `cargo doc` step

* fix doc errors

* contributing.md: update passing CI steps

* fix more typos, add exception to `cryptonight/`

* ci: move `cargo doc` step within `ci` job

It needs dependencies.

* ci: add https://github.com/Cuprate/cuprate/pull/63

* test-utils: fix typo

* ci: switch `rustup update` and switch order

* ci: only update rust on unix

* ci: set `RUSTDOCFLAGS` env earlier

* ci: only run `cargo doc` on linux

* ci: remove `bash` on `cargo doc`

* ci: remove `--all-targets`

We now have the target OS's in CI, no need to compile for each.

* contributing.md: update ci steps

* ci: add `--all-targets` back to clippy, build

* update contributing.md
2024-02-15 16:03:04 +00:00
hinto-janai
630faed263
ci: include macos + windows (#52)
* ci: install boost, include macos + windows

* cryptonight: fix `MSVC`

* cryptonight: use `flag_if_supported()`

* fix cryptonight builds

* update randomX

* fix rx builds

* add memwipe

* include memwipe.c in build

* spawn monerod in msys2 for windows

* fix last commit

* install dependencies before spawning monerod

* remove --detach

* try another way of spawning monerod

* add /I

* download and spawn monerod as a part of tests

* add download.rs

* extend time for monerod spawn

* move sleep and show monerod output

* fix clippy

* change stdin to pipped

* #[cfg(unix)] on bytes::Buf

* fix macos capitalisation

* remove tar.bz2 on macos expected dir

* remove zip on windows expected dir

* fix todo

* add docs

* fix a couple typos

---------

Co-authored-by: Boog900 <54e72d8a-345f-4599-bd90-c6b9bc7d0ec5@aleeas.com>
Co-authored-by: Boog900 <boog900@tutanota.com>
2024-02-12 13:39:15 +00:00
Boog900
83b59c557c
net: use epee_encoding instead of monero-epee-bin-serde
This gives us more control than what serde provides. This
PR also moves to use `Bytes` where possible to allow
zero-copy parsing of network messages.
2024-01-30 16:09:54 +00:00
Boog900
f894ff6f1b
p2p: add handshake timeouts 2024-01-22 18:18:15 +00:00
Boog900
ed598e374e
remove empty cuprate bin and common 2024-01-22 01:56:34 +00:00
Boog900
b20b6fdee1
remove primitive-types for crypto-bigint
we already have crypto-bigint in our tree
2024-01-21 15:18:25 +00:00
Boog900
b9334b6a90
clean up dependencies 2024-01-21 14:46:03 +00:00
Boog900
0cc2acc816
monero-p2p: tell client message was sent after sending message.
Otherwise, the message might not be sent
2024-01-13 15:56:22 +00:00
Boog900
a0b9280801
fix message requesting in Connection 2024-01-13 13:22:34 +00:00
Boog900
478a8c1545
return the Client after a handshake 2024-01-13 00:07:35 +00:00
Boog900
5e8221183e
re-write p2p handshaker 2024-01-12 00:02:25 +00:00
Boog900
e264a40feb
remove InstaFuture for Ready
Also renames some functions so it's clear as to what they do https://github.com/Cuprate/cuprate/pull/45#issuecomment-1859054439
2023-12-17 14:50:08 +00:00
Boog900
2c4cc1fb93
move address book to separate crate.
Also changes the address book to use the network zone trait
2023-12-08 15:03:01 +00:00
Boog900
34dd105a0c
make CI more strict 2023-12-03 00:29:12 +00:00
8557073c15
p2p changes (#38)
* start re-working p2p to work with change monero-wire

* start re-working p2p to work with change monero-wire

adds back some changes from #22

* change the peer module to use the new API + fix a couple bugs

* remove peer set for now

* add try_from/from conversion between `Message` and
`Request`/`Response`

* Allow specifying other parameters in levin-cuprate

* add new `LevinCommand` enum and clean up monero-wire message de/encoding

* fix issues with merge

* start splitting up p2p crate into smaller crates.

* add monerod action from serai to test network code

* remove tracing in tests
2023-11-30 18:09:05 +00:00
Boog900
a187d9a357
initial p2p code (#8)
* init

* save

* use macro to create the levin body enum

* add protocol docs and cargo fmt

* add response validation

* add client functionality to connection + fmt

* Add new cuprate-common crate
this crate will hold stuff needed across cuprate crates

+ init handshaker

* add stagenet & testnet hardforks + tests

+ cargo fmt

* split peer and protocol into separate crates
+ add sync state watcher

* finish initial sync states and add some tests

* save

* add initial address book

* cargo fmt

* save

* add pruning module to cuprate-common

* more address book updates
- added an address book client
- add some more address book requests
- add "NetZone"

* lots of changes

* cargo fmt

* combine p2p into one crate
they were all linked anyway

* cargo fmt

* turn the handshaker into a statemachine

* cargo fmt

* reduce the amt of copies when decoding

+ remove reliance on monero-rs

* update time_from_timestamp func

* cargo fmt
+ change qr code link
+ remove clippy.toml
2023-04-24 22:37:40 +01:00