check SPV proof inner nodes not to be valid transactions #4436
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This attempts to implement protection against the attack recently described on the mailing list.
Before merging, I would like to measure the performance impact with a relatively large wallet on mainnet.
So far, I could only measure on testnet, but blocks are mostly empty there, so merkle proofs are short.
On testnet, I synced a wallet (A) that has ~350 txns.
Irrespective of this PR, the sync took ~10 seconds.
Without the patch, the verifier spent about
19 ms
altogether inhash_merkle_root
.With the patch, the verifier spent about
66 ms
altogether inhash_merkle_root
.On testnet, I synced a wallet (B) that has ~10.9k txns.
The sync took ~3.5 minutes. (with the patch, it was about 4 seconds longer, but that is within error probably; I only measured this once)
Without the patch, the verifier spent about
733 ms
altogether inhash_merkle_root
.With the patch, the verifier spent about
2014 ms
altogether inhash_merkle_root
.