Commit graph

255 commits

Author SHA1 Message Date
hinto.janai
f7be3e127a
add BinaryString 2024-06-19 18:29:34 -04:00
hinto-janai
15a80be526
Update rpc/types/Cargo.toml
Co-authored-by: Boog900 <boog900@tutanota.com>
2024-06-19 17:59:08 -04:00
hinto.janai
4830a26180
add TODO for strum 2024-06-19 17:57:11 -04:00
hinto.janai
87e99da0eb
add Status::Other(String) 2024-06-17 14:50:52 -04:00
hinto.janai
d72c96ab9c
Merge branch 'main' into rpc-types
Some checks failed
Audit / audit (push) Has been cancelled
Deny / audit (push) Has been cancelled
2024-06-17 14:38:02 -04:00
hinto.janai
f69b830f89
macro docs, fixes 2024-06-16 21:06:54 -04:00
hinto.janai
5cf2c875d7
specify commit in macro, add () type aliases
Some checks are pending
Audit / audit (push) Waiting to run
Deny / audit (push) Waiting to run
2024-06-16 16:45:10 -04:00
hinto.janai
07ae4f6bd2
fix modules 2024-06-16 16:23:32 -04:00
hinto.janai
1c12d6d2cf
monero-rpc-types -> cuprate-rpc-types 2024-06-16 15:59:25 -04:00
jomuel
c837f2f48e
Fast sync part 2 (#156)
Some checks failed
Audit / audit (push) Has been cancelled
CI / fmt (push) Has been cancelled
CI / typo (push) Has been cancelled
CI / ci (macos-latest, stable, bash) (push) Has been cancelled
CI / ci (ubuntu-latest, stable, bash) (push) Has been cancelled
CI / ci (windows-latest, stable-x86_64-pc-windows-gnu, msys2 {0}) (push) Has been cancelled
Deny / audit (push) Has been cancelled
* boilerplate

* Cargo.lock

* Stub of block validation

* Block validation (diff by @dllud)

* Cargo.lock

* Complete implementation of block validation request

* Apply suggestions from code review

Co-authored-by: Boog900 <boog900@tutanota.com>

* More suggestions

* Update consensus/fast-sync/src/fast_sync.rs

* Update consensus/fast-sync/src/fast_sync.rs

---------

Co-authored-by: Boog900 <boog900@tutanota.com>
2024-06-14 23:00:18 +01:00
hinto-janai
f07d08942f
contributing: add & format sections (#150)
* update contributing

* formatting

* add documentation section and user-book

* add crate names section

* formatting

* add `A-help-wanted` label

* add monerod binary note
2024-06-14 22:35:15 +01:00
hinto-janai
1bc05366b0
docs: update README.md & SECURITY.md (#143)
Some checks failed
CI / fmt (push) Has been cancelled
CI / typo (push) Has been cancelled
CI / ci (macos-latest, stable, bash) (push) Has been cancelled
CI / ci (ubuntu-latest, stable, bash) (push) Has been cancelled
CI / ci (windows-latest, stable-x86_64-pc-windows-gnu, msys2 {0}) (push) Has been cancelled
* reduce cuprate banner size

* update readme

* update `SECURITY.md

* formatting

* readme: add todo

* update license section

* add user book, current about

* formatting

* formatting
2024-06-14 18:33:43 +01:00
hinto-janai
86c01ab95a
contributing: add crate naming rules (#144)
* contributing.md: add crate naming rules

* Update CONTRIBUTING.md

Co-authored-by: SyntheticBird <118022351+SyntheticBird45@users.noreply.github.com>

* edit contributing for https://github.com/Cuprate/cuprate/pull/144#discussion_r1638344193

* `monero-wire` -> `wire/`, `cuprate-monero-wire` -> `cuprate-wire`

---------

Co-authored-by: SyntheticBird <118022351+SyntheticBird45@users.noreply.github.com>
2024-06-14 18:30:53 +01:00
acd5380256
Fix clippy & Cargo update (#161)
Some checks failed
CI / fmt (push) Waiting to run
CI / typo (push) Waiting to run
CI / ci (macos-latest, stable, bash) (push) Waiting to run
CI / ci (ubuntu-latest, stable, bash) (push) Waiting to run
CI / ci (windows-latest, stable-x86_64-pc-windows-gnu, msys2 {0}) (push) Waiting to run
Audit / audit (push) Has been cancelled
Deny / audit (push) Has been cancelled
* fix clippy

* run cargo update

* fix cargo deny

* remove duplicate `#[test]`
2024-06-13 19:08:34 +01:00
hinto-janai
25b5b63349
ci: update actions/cache -> v4 (#158) 2024-06-13 16:37:26 +01:00
hinto.janai
81aad9641f
docs 2024-06-12 16:16:09 -04:00
hinto-janai
a3e34c3ba8
rpc: implement json-rpc crate (#148)
* rpc: add `json-rpc` from https://github.com/Cuprate/cuprate/pull/43

Maintains all the changes made in that branch

* workspace: add `rpc/json-rpc`

* json-rpc: fix cargo.toml

* add todo

* satisfy clippy

* `method/params` -> `body` switch, adjust input types

* add test helpers, test tagged enums and flatten structs

* fix id type `None` <-> `Some(Id::Null)` difference

* lib.rs: add docs

* impl `Version`

* impl `Id`

* impl `Request`

* impl `Response`

* impl `ErrorCode`

* impl `ErrorObject`

* fixes

* add monero jsonrpc tests

* response: add id test

* add display docs to `ErrorObject`

* remove `#[inline]`

* add id null test

* cleanup

* code: clarify Monero's error code usage in docs

* id: fix macro indentation

* readme: fix `Response` -> `Request`

* request: add `lowercase` test

* tests: formatting, more string tests

* readme: add `Serialization changes`

* code: ugly `match` -> `if`

* response: manual deserialization impl

- lowercase keys only
- enforce either `result/error` but not both

* remove unneeded clone bounds

* readme: add implementation comparison tests

* request/response: more tests

* readme: formatting, assert error messages are expected

* request: add unknown field test

* request/response: add unknown field and unicode test
2024-06-12 02:12:31 +01:00
hinto.janai
865ff304c5
macro changes, add few more types 2024-06-11 21:07:59 -04:00
hinto.janai
661e3d0ac8
Merge branch 'main' into rpc-types 2024-06-11 20:33:45 -04:00
jomuel
663c852b13
Fast sync (WIP) (#155)
* Fast sync (work in progress)

* Cargo.lock

* Add missing hashes file

* clippy warnings

* Stub of database tool to create the fast sync hashes

* Command line arg for target height, error handling

* Cargo.lock

* fmt and unused imports

* fmt

* Add license information to consensus/fast-sync/Cargo.toml

Co-authored-by: Boog900 <boog900@tutanota.com>

* Order imports in consensus/fast-sync/src/create.rs

Co-authored-by: Boog900 <boog900@tutanota.com>

* beautify hex generation function & fmt

* Reorder imports consensus/fast-sync/src/fast_sync.rs
2024-06-09 14:24:44 +01:00
hinto-janai
e0736d1807
books: add user-book template (#154)
* add user-book

* add `A-book-user` to labeler
2024-06-07 22:04:27 +01:00
0e5555d4d4
Consensus: block batch prepper (#151)
* add block batch prepper

* Apply suggestions from code review

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

* review comments

* review comments

* fix doc

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-06-07 21:23:48 +01:00
07f61bdb9c
Consensus: fix panic in batch verifier (#152)
* fix panic in batch verifier

* docs

* review comments

* Update consensus/rules/src/batch_verifier.rs

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-06-07 13:34:53 +01:00
hinto-janai
6df67bb9d3
rpc: add initial crates (#146)
* add `rpc/` crates

* rpc: fix `monero-rpc-server` -> `monero-rpc-types`

* rpc: add skeleton `rpc/json-rpc`

* remove `cuprate-rpc-server`, add `json-rpc`
2024-06-05 15:35:08 +01:00
0622237d19
Consensus: use cuprate-types types (#145)
* move consensus database to /types

* fix `storage` builds

* unify `VerifiedBlockInformation`

* fix docs

* change `Database` trait wording

* order imports

* service -> blockchain

* Apply suggestions from code review

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

* fix typo

* fix key_images_spent

* add back todo

* fix tests

* service -> blockchain 2

* update docs

* update docs 2

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-06-04 18:19:35 +01:00
b510739701
P2P: Network init (#130)
* 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

* fix doc

* 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

* Apply suggestions from code review

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

* Update p2p/monero-p2p/src/services.rs

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

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
2024-06-04 18:19:25 +01:00
hinto.janai
8c24f13e8c
lib.rs: create re-export macro 2024-06-03 21:20:36 -04:00
hinto.janai
a4ad660daa
add GetHeight 2024-06-03 20:26:34 -04:00
hinto.janai
af70416736
document struct generation macro 2024-06-03 17:42:43 -04:00
hinto.janai
972bdfbec6
add strum, add misc module 2024-06-03 17:42:24 -04:00
hinto.janai
b41b7dd557
fix macro generation, doc test 2024-06-03 16:32:26 -04:00
hinto.janai
9fa5d24e3a
add base files, deps 2024-06-02 20:12:03 -04:00
hinto.janai
009abe0959
lib.rs: add lints 2024-06-02 19:36:35 -04:00
hinto.janai
83d57abcec
rpc: add monero-rpc-types 2024-06-02 19:29:02 -04:00
889e15738b
Cleanup & Document consensus (#65)
* change monero-consensus to cuprate-consensus-rules

* document the context service

* remove the mutex on blockchain context

* comment the context caches

* add back tokio

* document block checks

* typo

* keep tha amount of outputs with a certain amount in the output cache

* typo

* nuke cross-block batch verification

* remove RPC scanner

* change how contextual data is got.

* fmt & clippy fixes

* typo

* cargo update

* restore Cargo.lock

* add a verify tx test.
+ fixes an issue with verifying signatures after BPs

* clippy

* remove bad test

* add mores tests and fix a couple bugs

* typos

* move tests and add some more

* typo

* remove scan_chain docs

* fix check for duplicate txs when duplicates are not sequential

* add a proptest for dup txs

* cache tx verification state

* doc updates + move `Vec` to `Arc<[]>`

* clippy

* misc changes

* Apply suggestions from code review

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
Co-authored-by: SyntheticBird <118022351+SyntheticBird45@users.noreply.github.com>

* fix fmt

* review changes

---------

Co-authored-by: hinto-janai <hinto.janai@protonmail.com>
Co-authored-by: SyntheticBird <118022351+SyntheticBird45@users.noreply.github.com>
2024-05-31 01:52:12 +01:00
hinto-janai
d21160868c
books: add skeleton and docs (#141)
* update `books/`

* update CONTRIBUTING.md

* .gitignore: ignore built books

* add dummy `books/architecture/`

* remove some changes from CONTRIBUTING.md

out of scope, will be in another PR

* add docs/books to LICENSE

* formatting
2024-05-30 01:19:46 +01:00
hinto-janai
c50d9642be
storage: create Cargo.toml for {database, cuprate-txpool} (#140) 2024-05-29 20:00:29 +01:00
hinto-janai
d052fbedf1
repo: add issue templates (#137)
* add issue templates

* add `question.md`

* fix bug.md

* fix feature.md

* bug.md: fix spacing
2024-05-29 18:34:32 +01:00
hinto-janai
4876e159e7
repo: add skeleton directories, fix labels (#139)
* `database/` -> `storage/`, create skeleton `storage/` crates

* add skeleton root directories

* books: add skeleton

* ci: fix labeler.yml

* fix CONTRIBUTING.md

* fix workspace Cargo.toml

* fix `storage/`

* rename helper fs fn, `cuprate_database` -> `cuprate_blockchain`

* fix Cargo.toml

* cuprate-blockchain: revert find-and-replace

Since it has to be ported to the book anyway, there's not much
reason to update this and create review diffs.

* labeler.yml: remove `A-docs` from `books/` changes

Although books are documentation,
the `A-books` label already exists for this
2024-05-29 02:18:30 +01:00
hinto-janai
45656fe653
repo: adopt rust-lang label system (#136)
* contributing: add `Keeping track of issues and PRs` section

* add `labeler.yml`

* more labels

* update labels

* update `.github/labeler.yml`

* update `CONTRIBUTING.md`

* doc `.github` files

* wording fix

* add `A-dependency`
2024-05-27 00:57:21 +01:00
hinto-janai
59a49b93ab
repo: update license (#134)
* add MIT license

* update LICENSE.md

* net: remove license files

* fix LICENSE-MIT formatting

use github formatting
2024-05-27 00:39:32 +01:00
hinto-janai
1e857416c9
database/helper: define statics within functions (#135) 2024-05-24 02:16:39 +01:00
e8b20e6115
P2P: async buffer (#109)
* impl async buffer

* clippy

* review comments
2024-05-24 02:15:49 +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
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
hinto-janai
38ede35468
database: more README docs (#126)
* tables: change order

* readme: add `Schema`

* readme: use type aliases

* readme: add `10. Known issues and tradeoffs`

* !!

* readme: add `The service` section

* readme: fill `Known issues and tradeoffs` section

* readme: fixes

* readme: fixes

* readme: review fixes
2024-05-15 16:58:18 +01:00
hinto-janai
d0ac94a813
ci: downgrade to gcc 13.2 for windows (#127) 2024-05-14 19:41:39 +01:00
SyntheticBird
31ce89412a
Removing old_database/ (#100)
remove old db
2024-05-09 21:06:33 +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