Skip to content
This repository has been archived by the owner on Mar 24, 2023. It is now read-only.

Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof #67

Closed
musalbas opened this issue Sep 10, 2020 · 1 comment · Fixed by #129
Labels
bug Something isn't working

Comments

@musalbas
Copy link
Member

musalbas commented Sep 10, 2020

A Merkle proof is a proof for the statement "a key x has value y for the tree with root z". It doesn't make sense for the statement being proven to be a part of the proof, because the prover could always generate a valid proof if they get to pick the statement. Furthermore, the verifier may already know what the statement being proven is, so including it as part of the proof may be redundant. At minimum, they should already know what the root of the tree is.

See: https://github.com/lazyledger/smt/pull/5/files#r460376202

@musalbas musalbas added the bug Something isn't working label Sep 10, 2020
@adlerjohn adlerjohn added this to the Pre-implementation draft milestone Sep 10, 2020
@musalbas musalbas changed the title Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Sep 10, 2020
@musalbas musalbas changed the title Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Sep 10, 2020
@musalbas musalbas changed the title Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Sep 10, 2020
@musalbas musalbas changed the title Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Sep 10, 2020
@musalbas musalbas changed the title Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof. Proofs shouldn't include the Merkle root or the value being proven, as this is part of the statement being proven, not the proof Sep 10, 2020
@liamsi
Copy link
Member

liamsi commented Sep 10, 2020

Also, independent from including leaf and root, it is unclear what the current Namespace Merkle Tree Proofs are supposed to prove:
https://github.com/lazyledger/lazyledger-specs/blob/master/specs/data_structures.md#namespace-merkle-tree-proofs

Do they correspond to a single leaf inclusion proof? (seems like it as there is a single index/key of a leaf).

My understanding is that we need to kind of proofs:

  • whole namespace (range) proofs
  • single leaf proofs

Both can be implemented as range proofs.

Edit: there already is an issue for NMT (range) proofs: #48

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants