cuprate-hinto-janai/consensus
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
..
rules consensus: add more difficulty tests 2024-01-22 18:17:34 +00:00
src net: use epee_encoding instead of monero-epee-bin-serde 2024-01-30 16:09:54 +00:00
Cargo.toml net: use epee_encoding instead of monero-epee-bin-serde 2024-01-30 16:09:54 +00:00
README.md add instruction on how to run scan_chain 2024-01-10 14:45:37 +00:00

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