-
Notifications
You must be signed in to change notification settings - Fork 544
Description
Version conflicts with primitive-types and Dependencies on ethereum/evm
Polkadot SDK now depends on primitive-types@0.13, but the latest published versions of ethereum and evm crates still depend on primitive-types@0.12. This results in incompatibilities for types like H256, U256, and others between Polkadot SDK and Frontier.
Currently, the only person with publishing rights for the ethereum crate is @sorpaas, but it seems that he is not actively engaged in its maintenance. IMHO, if @sorpaas consents, one of the Frontier maintainers should be added as a co-maintainer for the ethereum/evm crates. Alternatively, forking those crates could be considered as a viable option.
Given the long-term maintenance requirements of tracking changes to Ethereum hard forks, another approach to consider might be supporting revm together.
Extrinsic V5 and the future of SelfContainedCall
In Extrinsic V5, verifying signatures has be separated into a TransactionExtension (superseding SignedExtension), allowing the functionality previously handled by SelfContainedCall to be implemented as a TransactionExtension.
I investigated supporting backward compatibility regardless of removing wrapping types of (Checked|Unchecked)Extrinsic, but I couldn't find a straightforward way to invoke call.apply_self_contained() instead of call.dispatch(). As a result, separate extrinsic types would still be required.
However, for chains launching from scratch without the need to support existing extrinsics, adopting the V5 format from the beginning could allow TransactionExtension to handle functionality previously implemented via SelfContainedCall. While supporting SelfContainedCall may still be necessary, it should be considered for deprecation.