-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
Description
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.
- Basic path parser (e.g.,
- Support multi-dimensional parsing for tags.
- Implement various-sized types.
- Implement
List
.
- Implement
- Implement
Bitlist
andBitvector
- 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.
- Propose these new endpoints to ethereum/beacon-APIs.
- Parse
len()
forList
andBitlist
. - Implement more advanced features for V2.
- Determine to introduce a cache or not:
sszInfo
ofBeaconState
from the current fork. (Related discussion in Discord) - Use encoded bytes of
BeaconState
if it is in the DB. (Related write-up) - Support more SSZ data types like
Union
,ProgressiveList
. - Use SSZ fuzzer to test more crazier cases.
Fixes
TBD
Other
TBD
References
Specification
postStateQuery
&postBlockQuery
API Specification: This specification contains the very first version of SSZ-QL API, as well as our primary goal for the EPF6.- SSZ-QL: Full Specification: This specification contains the endgame of SSZ-QL, including advanced features for fine-grained queries.