mimblewimble / grin

Minimal implementation of the Mimblewimble protocol.
https://grin.mw/
Apache License 2.0
5.04k stars 992 forks source link

Remove Merkle Proof Generation from Foreign API `get_outputs` #3792

Closed yeastplume closed 3 weeks ago

yeastplume commented 3 weeks ago

As evidenced by #3791, Merkle proof generation is an experimental feature that currently isn't being used but also has the potential to grind nodes to a halt, as a request for a proof for an early output requires the chain to rewind to that position. This is an obvious problem for archival nodes, but also an issue on non-archival nodes due to the ability to request the genesis coinbase output and force a rewind of the entire chain.

This functionality had been turned off for the get_block function, but for some reason remained within the get_outputs function.

https://github.com/mimblewimble/grin/pull/3487

Note there's no known use for these Merkle proofs as present (PIBD uses a form of them, but has its own code for proof generation and never requires a rewind due to it only operating on tree states at the horizon). This PR modifies the foreign API call to ignore the include_merkle_proof field in the get_outputs foreign api, while leaving the parameter in place to avoid breaking existing installations. Instructions to turn it back on are embedded.

Once merged into master, will cherry-pick to 5.3.x branch and rebuild.