-
Notifications
You must be signed in to change notification settings - Fork 273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Generic Merkle Operators #136
Comments
Yes, this is very close to what I had in mind (and what I sketched in an earlier IBC paper). Much more generic (given those golang structs are translated to protobuf). The So, we have eg. And the We would need another type for leaf nodes that takes Key, Value as well-defined fields (so we know what is being proven) and then performs some ops on it. I don't have that function in mind, but probably could be formed with one other generic operator in addition to The main problem with this currently is that such a proof seems incompatible with the ProofOp as defined in the tendermint api. Unless we can figure a way to map your above constructs onto that, it will be a breaking change in tendermint and the rpc api. |
I think it is better to have
|
The Merkle proof operator is a generic proof format that can be implemented on any platform easily, without depending on specific libraries or language features. When a Merkle proof is needed to be wire encoded and verified on another machine, platform dependant parts can be converted into the generic merkle format.
We are now using
IAVLValueOp
,IAVLAbsentOp
which are wrappers on golang structRangeProof
, which cannot be easily decoded and verified on other machines(e.g. solidity).Turns out
IAVLValueOp
can be decomposed into few primitive operators, and I think the other proof types(absent and range) can be too.With them, we can define IAVL existence proof as the following:
Local test passing: mossid#1
The text was updated successfully, but these errors were encountered: