This repository has been archived by the owner on Nov 15, 2023. It is now read-only.
Fix the surplus weight calculation of the Transact
XCM instruction
#7620
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
Transact
XCM instruction determines a surplus weight. This surplus weight is meant to be execution weight that has been estimated too high and whose according fee has already been spent from the holding account (through a previousBuyExecution
instruction) and that should be refunded later (throughrefund_surplus
).The
Transact
instruction deals with three different weights:require_weight_at_most
parameter of theTransact
instruction. TheConfig::Weigher
parameter of the Polkadot relay chain uses this value as a basis for calculating the upfront weight and the previously executedBuyExecution
instruction determines its fee based on this weight (this comment even states that this is assumed for all chains).weight
)actual_weight
.Currently the weight surplus is defines as
weight.saturating_sub(actual_weight)
, but given the above definitions it should clearly berequire_weight_at_most.saturating_sub(actual_weight)
.