Skip to content
  • Vincent Geddes's avatar
    Add a linear fee multiplier (#127) (#3790) · 22d5b80d
    Vincent Geddes authored
    
    
    Bridging fees are calculated using a static ETH/DOT exchange rate that
    can deviate significantly from the real-world exchange rate. We
    therefore need to add a safety margin to the fee so that users almost
    aways cover the cost of relaying.
    
    # FAQ
    
    > Why introduce a `multiplier` parameter instead of configuring an
    exchange rate which already has a safety factor applied?
    
    When converting from ETH to DOT, we need to _divide_ the multiplier by
    the exchange rate, and to convert from DOT to ETH we need to _multiply_
    the multiplier by the exchange rate.
    
    > Other input parameters to the fee calculation can also deviate from
    real-world values. These include substrate weights, gas prices, and so
    on. Why does the multiplier introduced here not adjust those?
    
    A single scalar multiplier won't be able to accommodate the different
    volatilities efficiently. For example, gas prices are much more volatile
    than exchange rates, and substrate weights hardly ever change.
    
    So the pricing config relating to weights and gas prices should already
    have some appropriate safety margin pre-applied.
    
    # Detailed Changes:
    
    * Added `multiplier` field to `PricingParameters`
    * Outbound-queue fee is multiplied by `multiplier`
    * This `multiplier` is synced to the Ethereum side
    * Improved Runtime API for calculating outbound-queue fees. This API
    makes it much easier to for configure parts of the system in preparation
    for launch.
    * Improve and clarify code documentation
    
    Upstreamed from https://github.com/Snowfork/polkadot-sdk/pull/127
    
    ---------
    
    Co-authored-by: default avatarClara van Staden <[email protected]>
    Co-authored-by: default avatarAdrian Catangiu <[email protected]>
    22d5b80d