83b59c557c
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. |
||
---|---|---|
.. | ||
rules | ||
src | ||
Cargo.toml | ||
README.md |
Consensus Rules
This folder contains 2 crates: monero-consensus
(rules) and cuprate-consensus
. monero-consensus
contains the raw-rules
and is built to be a more flexible library which requires the user to give the correct data and do minimal calculations, cuprate-consensus
on the other hand contains multiple tower::Services that handle tx/ block verification as a whole with a context
service that
keeps track of blockchain state. cuprate-consensus
uses monero-consensus
internally.
If you are looking to use monero consensus rules it's recommended you try to integrate cuprate-consensus
and fall back to
monero-consensus
if you need more flexibility.
scan_chain
cuprate-consensus
contains a binary,scan_chain
, which uses multiple RPC connections to scan the blockchain and verify it against the
consensus rules. It keeps track of minimal data and uses the RPC connection to get blocks/transactions/outputs.
scan_chain
was not built for wide usage, so you may find issues, if you do, open an issue in Cuprates issue tracker and or join our matrix
room for help. scan_chain
has only been verified on x86_64-unknown-linux-gnu
.
scan_chain
will take at least a day for stagenet and testnet and 6 for mainnet but expect it to be longer. If you are just looking to verify
previous transactions it may be worth using monerod
with --fast-block-sync 0
this will probably be faster to complete and you will have a
usable node at the end!
How to run
First you will need to install Rust/Cargo: https://www.rust-lang.org/tools/install
Next you need to clone Cuprates git repo, enter the root of Cuprate, then run:
cargo run --bin scan_chain -r
If you want to pass in options you need to add --
then the option(s), so to list the options do:
cargo run --bin scan_chain -r -- --help