Skip to content

Blocking issues in upgrading Polkadot SDK dependencies to stable2412 #1584

@conr2d

Description

@conr2d

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions