mirror of
https://github.com/mimblewimble/grin.git
synced 2025-02-01 17:01:09 +03:00
A bit more doc on pruning and validation
This commit is contained in:
parent
1199ed2cc1
commit
bc171a4423
1 changed files with 35 additions and 0 deletions
|
@ -41,3 +41,38 @@ receiving or keeping all the data.
|
||||||
* When a new node joins the network, it may temporarily behave as a partially
|
* When a new node joins the network, it may temporarily behave as a partially
|
||||||
validating node to make it available for use faster, even if it ultimately becomes
|
validating node to make it available for use faster, even if it ultimately becomes
|
||||||
a fully validating node.
|
a fully validating node.
|
||||||
|
|
||||||
|
# Validation of Fully Pruned State
|
||||||
|
|
||||||
|
Pruning needs to remove as much data as possible while keeping all the
|
||||||
|
guarantees of a full MimbleWimble-style validation. This is necessary to keep
|
||||||
|
a pruning node state's sane, but also on first fast sync, where only the
|
||||||
|
minimum amount of data is sent to a new node.
|
||||||
|
|
||||||
|
The full validation of the chain state requires that:
|
||||||
|
|
||||||
|
* All kernel signatures verify against their public keys.
|
||||||
|
* The sum of all UTXO commitments, minus the supply is a valid public key (can
|
||||||
|
be used to sign the empty string).
|
||||||
|
* The sum of all kernel pubkeys equals the sum of all UTXO commitments, minus
|
||||||
|
the supply.
|
||||||
|
* The root hashes of the UTXO PMMR, the range proofs PMMR and the kernels MMR
|
||||||
|
match a block header with a valid Proof of Work chain.
|
||||||
|
* All range proofs are valid.
|
||||||
|
|
||||||
|
In addition, while not necessary to validate the full chain state, to be able
|
||||||
|
to accept and validate new blocks additional data is required:
|
||||||
|
|
||||||
|
* The output features and switch commitments, making the full output data
|
||||||
|
necessary for all UTXOs.
|
||||||
|
|
||||||
|
At minimum, this requires the following data:
|
||||||
|
|
||||||
|
* The block headers chain.
|
||||||
|
* All kernels, in order of inclusion in the chain. This also allows the
|
||||||
|
reconstruction of the kernel MMR.
|
||||||
|
* All unspent outputs.
|
||||||
|
* The UTXO MMR and the range proof MMR (to learn the hashes of pruned data).
|
||||||
|
|
||||||
|
Note that further pruning could be obtained by requiring the validation of
|
||||||
|
only a subset of the range proofs, chosen randomly by the validating node.
|
||||||
|
|
Loading…
Reference in a new issue