mirror of
https://github.com/mimblewimble/grin.git
synced 2025-01-21 03:21:08 +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
|
||||
validating node to make it available for use faster, even if it ultimately becomes
|
||||
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