Live data from Hacker News

Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

osf.io

11–20 of 23 posts

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#13
post #10

There is another method to support compact membership proofs and have history-independence. Ethereum uses a Patricia-Merkle tree structure to store its state snapshots. I'm not sure if it supports compact non-membership proofs though.

Author here.

There are certain implementations out there which support non-membership proofs but most of them use empty hashes to find the non-membership proofs and the underlying SMT is unordered.

The approach taken in the above paper is novel in the sense that the way in which values in SMT are inserted make it ordered and this property is exploited to find the non-membership proofs through a window based method. To prove a certain value Y doesn't exist in the tree, the closest two values X and Z which bound Y form the non-membership proof.

This method avoids using empty hashes and the repetitive computation which comes with it.

And Merkle Patricia Trie currently does not support Non-membership proofs.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#14
post #5

Serious question, can someone explain to me why these things are latex documents with a little bit of code?

It's a technical paper which describes the theory behind the data structure/algorithm containing proofs which people can verify independently.

I'll be releasing a project soon which incorporates the concepts mentioned in the framework.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#15
post #5

Serious question, can someone explain to me why these things are latex documents with a little bit of code?

CS papers mostly try to explain an idea or an experimental result, describe why it is important, how it relates to existing approaches, what situations it may be useful for, what the drawbacks are, how those might be addressed in future work, etc. Pretty much none of those things are code. When some algorithm, metric, etc. does need to be presented, it's important to make it as understandable as possible to the reade…

Thanks for explaining it better than I could have. The implementation is also in the works, it'll be released soon.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#16
post #7

This is interesting work, but the claims in section 5 need to be proved.

Perhaps you missed it, in Section 5 I've mentioned that the hash function SHA256 behaves as an ideal hash function, an assumption in cryptography called Random Oracle Model.

By virtue of this model, the proofs for Structure, Space and Max-Proof of SMT are implied.

I'm also working on an implementation for the concepts mentioned in the paper so the proofs can also be verified emperically.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#17
post #7

This is interesting work, but the claims in section 5 need to be proved.

Perhaps you missed it, in Section 5 I've mentioned that the hash function SHA256 behaves as an ideal hash function, an assumption in cryptography called Random Oracle Model. By virtue of this model, the proofs for Structure, Space and Max-Proof of SMT are implied. I'm also working on an implementation for the concepts mentioned in the paper so the proofs can also be verified emperically.

It's not the reader's job to fill in implied proofs. It's your job as the author to give them enough information to check your argument. In some cases "this follows from results A, B, C" is sufficient, but it's often not.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#19
This paper is difficult to follow. The pseudocode in particular contains errors. For example, the insert function looks at left.key and right.key without regard to whether left and right, respectively, are leaves and thus have keys. And insert calls itself recursively with the wrong number of arguments.

It seems to me that the interesting part of the paper is the claim of history independence. If I understand correctly, the basic idea is that, for a given set of keys and values, there exists only one possible tree. If that’s the intent, there should be a proof and probably a description of what the tree is for a given set of keys. If that’s not the intent, then a proof that the membership algorithm actually works is needed.

Re: Compact Sparse Merkle Trees – Efficient Non-Membership Proofs

#20
post #19

This paper is difficult to follow. The pseudocode in particular contains errors. For example, the insert function looks at left.key and right.key without regard to whether left and right, respectively, are leaves and thus have keys. And insert calls itself recursively with the wrong number of arguments. It seems to me that the interesting part of the paper is the claim of history independence. If I understand correct…

Author here, thanks for reading through the paper.

I think the confusion is because I wrote the pseudocode in a functional programming style so there are a few keywords being used which are causing confusion. ( Which i mentioned in the paper. )

The insert function uses the left.key and right.key to calculate the minimum distance for the key to be inserted. And there is a cond statement which will execute only of the conditions.

And the pseudocode I wrote was in a functional programming style so the arguments in both the functions are same, just the name of the last argument is different, i.e root and leaf as I wanted to imply pattern matching happens.

The interesting part of the paper is that it outlines a new way to create a Sparse merkle tree, which inherently becomes ordered due to the insertion algorithm used. This ordered property is exploited to find the non-membership proof in a new way which does not require empty hashes and is compact. History independence also follows from the insertion algorithm used.

I'll be releasing an implementation for this paper soon so the proofs can be checked empirically as well.

Post reply on HN