Context
PR #1529 changes DKG share handling so a ciphernode no longer encrypts and sends its own DKG share to itself. This should reduce redundant ZkShareEncryption work from n * n * L * 2-style behavior to the intended n * (n - 1) * L * 2 behavior, assuming the rest of the DKG flow correctly treats the node's own share as local material.
Discussion around the PR raised two related concerns:
- The implementation and theoretical protocol flow should match as closely as possible, especially around which shares are encrypted, which shares are local, and how C4 / aggregation consumes those shares.
- Benchmark results from the branch currently do not appear to make sense, and the new parameter set still needs to be applied before relying on the numbers.
Problem
We need to verify that the skipped-self-share implementation is correct end-to-end and that the resulting benchmark metrics are meaningful.
In particular, the new flow should make it explicit that each node:
- encrypts and sends shares only for the other
n - 1 parties;
- keeps its own share locally instead of round-tripping it through encryption/decryption;
- still provides C4 / DKG aggregation with the full set of
n shares, consisting of n - 1 decrypted remote shares plus the local self share;
- preserves the expected proof indexing, witness layout, and validation semantics after moving from dense to sparse recipient encryption;
- does not accidentally weaken the intended binding between party identity, DKG material, proofs, and commitments.
There is also a related protocol-description issue for the paper: the written/theoretical flow should not claim stronger checks than the implementation actually performs. For example, current discussion suggests that off-chain signatures cover signed proof payloads, while the on-chain aggregator submission verifies a combined proof rather than per-party signatures over every commitment. We should confirm the exact implementation behavior before describing it.
Tasks
Expected outcome
The PR should either:
- land with benchmarks and documentation that clearly show the optimized skipped-self-share flow is correct; or
- identify the remaining implementation/protocol gaps that need to be fixed before relying on the optimization or describing it in the paper.
Related
Context
PR #1529 changes DKG share handling so a ciphernode no longer encrypts and sends its own DKG share to itself. This should reduce redundant
ZkShareEncryptionwork fromn * n * L * 2-style behavior to the intendedn * (n - 1) * L * 2behavior, assuming the rest of the DKG flow correctly treats the node's own share as local material.Discussion around the PR raised two related concerns:
Problem
We need to verify that the skipped-self-share implementation is correct end-to-end and that the resulting benchmark metrics are meaningful.
In particular, the new flow should make it explicit that each node:
n - 1parties;nshares, consisting ofn - 1decrypted remote shares plus the local self share;There is also a related protocol-description issue for the paper: the written/theoretical flow should not claim stronger checks than the implementation actually performs. For example, current discussion suggests that off-chain signatures cover signed proof payloads, while the on-chain aggregator submission verifies a combined proof rather than per-party signatures over every commitment. We should confirm the exact implementation behavior before describing it.
Tasks
n - 1decrypted remote shares plus the node's local share.ZkShareEncryption/ C3a / C3b.n = 5if feasible.Expected outcome
The PR should either:
Related