Cuprate, an upcoming experimental, modern & secure monero node. Written in Rust https://cuprate.org
Find a file
hinto-janai a3e34c3ba8
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
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
.github books: add user-book template (#154) 2024-06-07 22:04:27 +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 (WIP) (#155) 2024-06-09 14:24:44 +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 repo: update license (#134) 2024-05-27 00:39:32 +01:00
p2p P2P: Network init (#130) 2024-06-04 18:19:25 +01:00
pruning P2P: Peer sync state svc (#128) 2024-05-22 01:56:39 +01:00
rpc rpc: implement json-rpc crate (#148) 2024-06-12 02:12:31 +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 rpc: implement json-rpc crate (#148) 2024-06-12 02:12:31 +01:00
Cargo.toml Fast sync (WIP) (#155) 2024-06-09 14:24:44 +01:00
CONTRIBUTING.md books: add skeleton and docs (#141) 2024-05-30 01:19:46 +01:00
deny.toml CI: fix deny (#83) 2024-02-29 20:29:11 +00: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 add CI actions 2023-10-25 21:07:13 -04:00
SECURITY.md Inital Security Policy 2023-03-20 18:41:58 +01:00
typos.toml database: impl service::{Request,Response} mappings (#101) 2024-04-16 23:05:38 +01:00

Cuprate


An up and coming Rust Monero node.

Matrix CI

Cuprate will be an alternative Monero node written from the ground up in Rust. It will be able to independently validate Monero consensus rules providing a layer of security and redundancy for the Monero network.

Cuprate will help to protect the network from implementation bugs that could cause a variety of issues, plus because it's written in a memory safe language Cuprate will be less likely to suffer from memory safety issues compared to monerod.