Is there an existing issue for this?
Describe the feature
Summary
We want pluggable signing schemes, starting with BLS12-381 alongside secp256k1. Add a config flag to pick the scheme at runtime. Update the validator manager contract so it accepts unbounded bytes pubkeys (no fixed-length secp checks).
Scope
- Add config option for signing scheme and wire it into node startup.
- Implement a BLS signing provider using the existing provider trait.
- Generalize public key handling across types and utils.
- Update
ValidatorManager.sol to take unbounded bytes keys and derive validator IDs from keccak256(publicKey).
- Update CLI/tools to parse, generate, and show BLS keys.
Changes Needed
Acceptance Criteria
- 48‑byte BLS pubkeys register + read fine in
ValidatorManager.sol.
- Node runs with
signing_scheme = "bls12381" and signs/verifies votes/proposals.
- secp256k1 remains default and still works.
- CLI/tools accept and output BLS keys without format errors.
Remark
- No BLS signature aggregation in this change. Just swap in BLS as a scheme. We can revisit aggregation later.
- BLS support unlocks succinct signatures, which could be useful in remote contexts (e.g. bridge flows).
Is there an existing issue for this?
Describe the feature
Summary
We want pluggable signing schemes, starting with BLS12-381 alongside secp256k1. Add a config flag to pick the scheme at runtime. Update the validator manager contract so it accepts unbounded
bytespubkeys (no fixed-length secp checks).Scope
ValidatorManager.solto take unboundedbyteskeys and derive validator IDs fromkeccak256(publicKey).Changes Needed
solidity/src/ValidatorManager.solmoves from secp256k1 structs/parsing to unboundedbytespublic keys + generic validation + address derivation from raw bytes.types/src/signing/.signing_schemeconfig incli/src/config.rsand select provider inapp/src/node.rs/app/src/state.rs.types/src/context.rs,types/src/validator_set.rs,utils/src/poa.rs,utils/src/genesis.rs,utils/src/validator_manager/types.rs, and CLI commands undercli/src/cmd/.Acceptance Criteria
ValidatorManager.sol.signing_scheme = "bls12381"and signs/verifies votes/proposals.Remark