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.
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.
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 theget_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 theget_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.