Add support for XCM delivery fees in all runtimes #2851
Closed
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.
What does it do?
This PR introduces XCM delivery fees to Moonbase, Moonriver and Moonbeam runtimes.
From now on, each XCM functionality that builds and send an XCM message, should account for these extra fees, which correspond to the cost of sending a message through the XCM protocol.
The full amount associated to delivery fees is paid by the account that executes the pallet/precompile call, and it's paid in the origin chain's native balance (DEV, MOVR or GLMR respectively).
Formula to compute delivery fees
To compute the final amount associated to delivery fees, we base on four elements:
DeliveryFeeFactor: constant stored insideParachainSystempallet (for UMP) orXcmpQueuepallet (for HRMP).BaseDeliveryFee: constant set in our runtimes.TransactionByteFee: constant set in our runtimes.XcmMsgBytes: length in bytes of the final XCM message to send.More context on: paritytech/polkadot-sdk#1234