Multiple signatures are consolidated into a single Attestation in a space-efficient
manner using a BitVec to succinctly express which validators have attested.
Maximum number of DA segments that a Work Package can require as imports. This is twice the
maximum number of imports because each import may require a proof segment.
Address of a peer, including UDP port number. Convertible to/from SocketAddr. The reason we
don’t just use SocketAddr is that SocketAddr values cannot be directly SCALE
encoded/decoded; PeerAddr values can be.
Identity of a network peer. This is just an Ed25519 public key. The corresponding secret key is
used to sign connection handshakes (the TLS protocol is used).
Maximum total output blobs which can be in a Work Report. The maximum encoded size of a Work
Report is this together with the portions which are constant or based on the (very limited)
number of Work Items.
The maximum number of segments whose justification can be included in a single segment-sized
proof-page. Basically just the highest power of 2 which when multiplied by 32 (the size of a
hash) leaves enough room from 4104 (the size of a segment) to fit a partial Merkle proof of
6 branches (6 * 32 = 192) plus the overhead for storing the actual number of hashes (should be
one byte for PROVEN_PER_SEGMENT < 128). It turns out that this is 2^6 = 64.
The maximum gas which may be used in a single block. At present this is just the product of
the maximum gas per work-report and the number of cores. In the future it should probably be
more to account for the possibility of always-accumulate services.
Maximum number of DA segments that a Work Package can require as imports. This is twice the
maximum number of imports because each import may require a proof segment.
Entries relative to epoch N[0]: epoch N entropy accumulator. Updated on each block with fresh entropy.
[i], for 1 ≤ i ≤ 3: accumulator snapshot at the begin of epoch N-i+1.
If N-i+1 < 0 then the corresponding entry is set to some fixed default value.