🧐 Motivation
The signatures the stateless presets verify are produced by EVM HSMs over a Keccak-256 digest. The contracts currently hash the signed payload with persistentHash, so the on-chain message never matches what the signer actually signed. Verification can only be correct once the message hash is Keccak.
📝 Details
Split out of #475, which combined the ECDSA and Keccak work. The signature-verification half is tracked in #826.
Scope:
- Switch the signed-message hash from
persistentHash to the keccak256 primitive in EcdsaSignerManager and the stateless presets.
- Align the message encoding and domain separation with what the EVM signing infrastructure produces, so an HSM signature validates without re-encoding on the client.
- Measure real per-circuit cost (
@circuitInfo k / rows) of keccak256 on the RC toolchain. Keccak sits on every gated circuit, so its row cost is load-bearing for the block budget.
Blocked on Midnight Foundation primitive delivery (Keccak GA). Blocks mainnet deployment of ShieldedMultiSigV2 and ShieldedMultiSigToken, and the corresponding audit scope.
🧐 Motivation
The signatures the stateless presets verify are produced by EVM HSMs over a Keccak-256 digest. The contracts currently hash the signed payload with
persistentHash, so the on-chain message never matches what the signer actually signed. Verification can only be correct once the message hash is Keccak.📝 Details
Split out of #475, which combined the ECDSA and Keccak work. The signature-verification half is tracked in #826.
Scope:
persistentHashto thekeccak256primitive inEcdsaSignerManagerand the stateless presets.@circuitInfok / rows) ofkeccak256on the RC toolchain. Keccak sits on every gated circuit, so its row cost is load-bearing for the block budget.Blocked on Midnight Foundation primitive delivery (Keccak GA). Blocks mainnet deployment of
ShieldedMultiSigV2andShieldedMultiSigToken, and the corresponding audit scope.