Commit f5c3b49
feat(core): wire up validatorapi Component subscribe/await/verify hooks
Adds the plumbing every subsequent submit/await handler needs without
implementing any of the unimplemented!() arms. Mirrors Charon's
core/validatorapi/validatorapi.go:196-256 (subscriber list + six
Register* hooks) plus :1352 (verifyPartialSig).
- New Component fields: subs, await_proposal_fn, await_agg_attestation_fn,
await_sync_contribution_fn, await_agg_sig_db_fn, duty_def_fn,
pub_key_by_att_fn. All Option<Arc<…>> so registration before the
Component is shared in an Arc, then read-only thereafter.
- subscribe() wraps the user closure with a set-clone step so each
subscriber receives its own ParSignedDataSet — matches Go's
Subscribe clone-before-fanout at validatorapi.go:249-256.
- register_* methods replace any prior registration, matching Go's
single-function input semantics.
- verify_partial_sig() honours insecure_test, looks up this node's
public share from pub_share_by_pubkey, then delegates to
pluto_eth2util::signing::verify. Unlike Go — which projects domain /
epoch / message-root through the core.Eth2SignedData interface — the
Rust hook takes those three values directly so we don't have to port
the Eth2SignedData trait in this plumbing PR; submit handlers in PRs
3-6 will derive the triple from their concrete signed-data wrapper.
Tests: subscribe fanout clones per subscriber; the six register hooks
all overwrite on re-register; unregistered hooks default to None;
verify_partial_sig accepts a real BLS signature, rejects a tampered
one, rejects an unknown DV pubkey, and short-circuits in insecure_test
mode.
Co-Authored-By: Bohdan Ohorodnii <35969035+varex83@users.noreply.github.com>1 parent 5da9093 commit f5c3b49
1 file changed
Lines changed: 608 additions & 3 deletions
0 commit comments