Skip to content

SSZ Query Language Meta Tracking Issue #15587

@syjn99

Description

@syjn99

Must have

Items are sorted by chronological order.

Implement the SSZ-QL engine.

  • Initialize the encoding/ssz/query package with the following features. Mostly migrating from my previous PoC work.
    • Basic path parser (e.g., .data.target.root)
    • Define sszInfo struct that contains all necessary information about the corresponding SSZ type.
    • Precalculate the given Go struct, only supporting fixed-size types.
    • Calculate offset and length in bytes to read in marshalled (= serialized) SSZ object.
    • Unmarshal (= deserialize) a requested value.
  • Support multi-dimensional parsing for tags.
  • Implement various-sized types.
    • Implement List.
  • Implement Bitlist and Bitvector
  • Add more features on the path parser (e.g., access the n-th element in List/Vector).

Expose SSZ-QL as a new endpoint.

  • Add endpoint (/prysm/v1/beacon/states/{state_id}/query) without proof generation.
  • Add endpoint (/prysm/v1/beacon/blocks/{block_id}/query) without proof generation.
  • Integrate Merkle Proofs feature. Related issue: Merkle proofs of everything #15344
  • Benchmark the SSZ-QL engine (and Optimize it if it shows the worst performance.).

Nice to have

There is no specific sort order here.

Fixes

TBD

Other

TBD

References

Specification

Write-ups

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions