alloy-rs / core

High-performance, well-tested & documented core libraries for Ethereum, in Rust
https://alloy.rs
Apache License 2.0
763 stars 137 forks source link

refactor: remove `Signature` generic #719

Closed klkvr closed 1 week ago

klkvr commented 2 weeks ago

Motivation

Currently it is impossible to construct an invalid signature, because k256 feature requires it to contain a valid k256::Signature. This makes it impossible to decode and store invalid signatures.

For example, we require this in reth to keep deposit transaction signatures: https://github.com/paradigmxyz/reth/blob/42dc5eea1685385b835edd03029640609f4c4ab4/crates/primitives/src/transaction/signature.rs#L200

Solution

Remove generic from Signature. Instead, we now convert signature into k256::Signature during recovery.

PR Checklist