Skip to content

Always use transaction extensions version 0 when working with v4 transactions, and find latest match when using v5 #1998

@jsdw

Description

@jsdw

v4 transactions should always be encoded or decoded using the transaciton extensions under version 0 in the metadata. Currently, they would use the latest available version (which is ok at the moment because there only exists one version anyway; 0).

This is more complicated than just setting which version we'll look at, because V4 and V5 transactions will differ in their behaviour.

  • V4 transactions should always use version 0
  • V5 transactions should tend to using the latest version, but really should look for the version that lines up with the configured transaction extensions for the chain, and use that.
    • In the event that there is a version change, but the transaction extension names remain identical (only the properties of one or more of them change), we would have a dilemma as to which version to select. Thus, perhaps we should allow the user to explicitly configure which version of extensions to try to use, falling back to a sane default (use the latest that matches?) otherwise. Names changing would be an issue though and so I would expect that this wouldn't happen, so we can probably just be clever and pick the latest matching set.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions