-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introduce a transaction extension version #99
Introduce a transaction extension version #99
Conversation
This RFC proposes to introduce a transaction extensions version. It is proposed to piggyback on [RFC84](paritytech/polkadot-sdk#2415) to not require a new extrinsic format version. With this RFC it will be possible to change the transaction extensions without breaking the extrinsic format of a chain and thus, staying backwards compatible.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If there is a new version, the client still has to support it, and the tx with old version and extension set is invalid for the runtime.
Thus the version only helps a client to prepare in advance for the new extension set.
I think the same can be achieved by a client with a chain's metadata, since it contains the list of extensions identifiers.
What am I missing?
No. The runtime would basically introduce code like this: match extension_version {
1 => (Ext1),
2 => (Ext1, Ext2),
} (highly simplified :P) Then the runtime can decode correctly using the correct set of extensions.
If you for example introduce a new transaction extension that the client doesn't know, it can not encode the correct transaction. |
@bkchr make sense to me. runtime basically will support at least a previous version for some time if there is no security concern. may be worth mentioning this in the RFC. |
…action extensions
@muharem added a sentence. Do you think this is enough or should I add more details? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. Just naming nits.
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
/rfc propose |
Hey @bkchr, here is a link you can use to create the referendum aiming to approve this RFC number 0099. Instructions
It is based on commit hash ed7f6784fd498648fd5ec51b55569f1661a47157. The proposed remark text is: |
/rfc propose |
Hey @bkchr, here is a link you can use to create the referendum aiming to approve this RFC number 0099. Instructions
It is based on commit hash 03fdf39991a1da18835fc3ae2cf4ce849d47e74b. The proposed remark text is: |
Voting for this referenda is ongoing. Vote for it here |
PR can be merged. Write the following command to trigger the bot
|
/rfc process 0x5cc6611824cd9f2da84db94f15d931476598834f0f073f0618c795f78ee815f8 |
The on-chain referendum has approved the RFC. |
Should this transaction extension version be part of the inherited implications, and also signed payload? EDIT: we shoud probably sign for a specific extension version. we can bring a new transaction extension in system for this. |
Good point. I don't think we should add an extra extension for this. The version should be part of the signature. While this actually raises the question on what we do for general transactions. |
I agree. It has to be part of the signing payload. |
This RFC proposes to introduce a transaction extensions version. It is proposed to piggyback on RFC84 to not require a new extrinsic format version. With this RFC it will be possible to change the transaction extensions without breaking the extrinsic format of a chain and thus, staying backwards compatible.