Replies: 6 comments
-
Currently Tendermint and Cosmos go codecs are being implemented in a single repo, we could split this into two: go-codec-dagtendermint and go-codec-dagcosmos |
Beta Was this translation helpful? Give feedback.
-
Project board for tracking this work: https://github.com/orgs/vulcanize/projects/9 |
Beta Was this translation helpful? Give feedback.
-
This issue is of particular interest: vulcanize/go-codec-dagcosmos#20 Tendermint introduces some Merkle data structures that are unprecedented in IPLD and not handled by the current specification/conventions, which will likely require us to introduce a new kind of multihash types. |
Beta Was this translation helpful? Give feedback.
-
The spec PR has been moved to the ipld/ipld repo: ipld/ipld#111 |
Beta Was this translation helpful? Give feedback.
-
Codecs have been tentatively completed for most of the proposed supported types: https://github.com/vulcanize/go-codec-dagcosmos. The remaining issues which are still under consideration are how (and if) to further decode the arbitrary protobuf types stored in (or referenced from) state commitment and how precisely to handle decoding of the header field and part set trees. |
Beta Was this translation helpful? Give feedback.
-
This is the primarily remaining issue, from the Cosmos perspective: vulcanize/go-codec-dagcosmos#23 I will open a comprehensive proposal for how to handle this in the coming days. |
Beta Was this translation helpful? Give feedback.
-
We've recently opened a PR for the IPLD Schemas for Tendermint and Cosmos. Additionally, ongoing work is being done in this repository on the Go implementation of the schema types and their ipld.Node marshallers and unmarshallers. Opening this to discussion/feedback to help ensure the data structures in these schemas are a comprehensive representation of the Tendermint+Cosmos dag.
Since Tendermint headers and blocks are indirectly content-hash referenced by a root hash of a Merkle tree containing the separate header fields or block parts (respectively) as the leaf values these objects are decoded into sub-dags rather than single IPLD nodes within the Tendermint+Cosmos dag.
The multicodec types, and associated marshallers/unmarshallers, that we propose to create are:
Header
Block
LightBlock
Proposal
Params
Evidence
EvidenceTree
TxTree (Tx just uses Raw codec)
Commit (CommitSig)
CommitTree
Result (ResponseDeliverTx)
ResultTree
Validator (SimpleValidator)
ValidatorTree
IAVL
SMT
In this approach we are not providing additional typing to the values stored in the IAVL or referenced from the SMT (we are doing option 1 of this comment).Beta Was this translation helpful? Give feedback.
All reactions