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 currently encode eth2 types to json when sending them over the wire as protobufs. JSON is more than 2x the bandwidth of SSZ. We should decrease our bandwidth requirements to improve the performance of large proposal wire payloads.
Smaller payloads result in less latency in low-throughput clusters, which result in quicker and more robust consensus which result in less missed duties and more rewards.
🛠️ Proposed solution
Approved design doc: link
Core team consensus on the proposed solution
This is a multi step process, affecting core. UnsignedDataSetToProto and core.UnsignedDataSetFromProto:
1: add support for unmarshalling SSZ encoded values in the proto (in addition to JSON)
2: release v0.16
3: switch to marshalling SSZ encoded protos
4: release v0.17
5: remove support for unmarshalling and marshalling JSON encoded protos.
⚠️⚠️⚠️
This affects backwards compatibility:
V0.17 is only compatible with v0.16
🧪 Tests
Tested by new automated unit/integration/smoke tests
Manually tested on core team/canary/test clusters
Manually tested on local compose simnet
The text was updated successfully, but these errors were encountered:
First step in migrating to SSZ encoding of eth2 objects in protobufs. Support unmarshalling of SSZ. This will reduce bandwidth usage by 2x.
Changes include:
- `testutil.NewEth2Fuzzer` that can generated valid fuzzed eth2 types.
- `core.Versioned*Block` ssz marshalling. This is a custom ssz marshaling pattern for types with a version and then one-of-many optional fields.
- `unmarshal` that supports both SSZ and JSON unmarshalling.
- `marshal` that will suppoter both SSZ and JSON marshalling once enabled (in v0.17).
category: feature
ticket: #2203
Enables SSZ encoding in protos by default. This decreases wire bandwitdh requirements.
> Note this breaks compatibility with v0.15 and earlier. So v0.17 will only be compatible with v0.16.
category: feature
ticket: #2203
🎯 Problem to be solved
We currently encode eth2 types to json when sending them over the wire as protobufs. JSON is more than 2x the bandwidth of SSZ. We should decrease our bandwidth requirements to improve the performance of large proposal wire payloads.
Smaller payloads result in less latency in low-throughput clusters, which result in quicker and more robust consensus which result in less missed duties and more rewards.
🛠️ Proposed solution
This is a multi step process, affecting
core. UnsignedDataSetToProto
andcore.UnsignedDataSetFromProto
:1: add support for unmarshalling SSZ encoded values in the proto (in addition to JSON)
2: release v0.16
3: switch to marshalling SSZ encoded protos
4: release v0.17
5: remove support for unmarshalling and marshalling JSON encoded protos.
🧪 Tests
The text was updated successfully, but these errors were encountered: