feat: support 0x02 compounding withdrawal credentials (EIP-7251)#27
feat: support 0x02 compounding withdrawal credentials (EIP-7251)#27olegshmuelov merged 4 commits intomainfrom
Conversation
4470be8 to
874e4e5
Compare
|
Codex [High] Backward-incompatible credential format change can break mixed-version clients/operators The PR changes behavior from “accept raw address and wrap internally” to “must provide full 32-byte credentials” and enforces it in multiple paths. That is an API/protocol behavior break: existing callers still sending 20-byte values now fail hard. If rolling upgrades are expected, this can cause cross-version ceremony failures. At minimum this needs explicit migration/versioning handling (or a temporary compatibility path). @y0sher @olegshmuelov [Medium] Validation policy is inconsistent across message validators Init now validates withdrawal credentials at message-validation time, but ValidateReshareMessage and ValidateResignMessage do not. Invalid credentials in those flows are rejected later (during result building/verification), which is later than expected and gives inconsistent failure semantics across operations. @olegshmuelov this is a recommended fix |
dkg-spec is an internal library used only by ssv-dkg - we control both and release together. Additionally, ssv-dkg operators enforce a strict version check on every incoming message (see
This was a pre-existing gap, not something introduced by this PR - the validation didn't exist before. |
c6f668e
Summary
WithdrawalCredentials(prefix, addr)constructor replaces separate per-prefix functionsValidateWithdrawalCredentials()enforces 32-byte length and valid prefix (0x01/0x02)