You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We recently released [email protected], introducing a new feature: storage.watchEntries.
This feature uses the JSON-RPC spec for storage with the closestDescendantMerkleValue type. This provides the Merkle value for a partial key, allowing us to avoid re-requesting the entire list of entries on every block. Instead, it can compare the Merkle value (essentially a hash of all the nodes below that storage entry in the Merkle tree), and recompute the entries only if it changes.
Currently, Chopsticks' chainHead_v1_storage supports value and descendantValues but doesn't support closestDescendantMerkleValue yet.
I attempted to start implementing this, but I couldn't find any reference to the merkle tree data structure of the chain. I'm interested in contributing to this feature, but I would appreciate some guidance, or if it would need too big of a refactor.
Any pointers or suggestions on how to approach this would be greatly appreciated.
The text was updated successfully, but these errors were encountered:
Presumably smoldot implements this RPC so we should be able to reuse its implementation. We should check smoldot's implementation to see the tree details. However, because Chopsticks isn't actually using merkle tree to store the states, the implementation won't be efficient.
I'm just thinking out loud, but in case it might makes thing substantially easier - polkadot-api doesn't need the actual "correct" merkle value, it just needs the property that it has to change if any of the nodes below have changed.
It wouldn't be spec-compliant, but if chopsticks only has diffs per block, maybe it could make it easier to increment an id.
If it's still complex, or if it still has to go through all the storage entries under that key, then maybe it's better to go the spec-compliant route of calculating the actual hash.
We recently released [email protected], introducing a new feature:
storage.watchEntries
.This feature uses the JSON-RPC spec for storage with the
closestDescendantMerkleValue
type. This provides the Merkle value for a partial key, allowing us to avoid re-requesting the entire list of entries on every block. Instead, it can compare the Merkle value (essentially a hash of all the nodes below that storage entry in the Merkle tree), and recompute the entries only if it changes.Currently, Chopsticks'
chainHead_v1_storage
supportsvalue
anddescendantValues
but doesn't supportclosestDescendantMerkleValue
yet.I attempted to start implementing this, but I couldn't find any reference to the merkle tree data structure of the chain. I'm interested in contributing to this feature, but I would appreciate some guidance, or if it would need too big of a refactor.
Any pointers or suggestions on how to approach this would be greatly appreciated.
The text was updated successfully, but these errors were encountered: