Skip to content
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

Override conversion rate in estimate-message-fee RPC #1189

Merged
merged 2 commits into from
Dec 17, 2021

Conversation

svyatonik
Copy link
Contributor

related #1138

This PR, if accepted would require changes in P<>K integration branch + our UI (cc @hbulgarini). So, probably, should be reviewed later. The general idea is that message submitter may know that actual conversion rate has been updated in real world && he'll use this updated rate when computing message fee. There are couple of caveats, though:

  1. now all our lanes are paid and are assumed to be served by rational relayers, so it mean that even if actual conversion rate is now lesser than stored, the submitter still has to pay fee, computed with larger rate. Otherwise, send-message tx will fail. So fee should be computed as max(estimate_without_fee_overrride(), estimate_with_fee_override());
  2. given (1), in regular configurations, this is only useful if conversion-rate-update mechanism (either automatic or manual) is lagging (see Conversion rate between RLT <> MLAU must be updated before starting messages generation #1138 for example). That's because relayer also looks at actual conversion rate. So in theory in scenarios where we assume all actors are honest (both senders and relayers), we may ignore on-chain conversion rate at all. But that's not the best idea.

This PR only adds an additional argument to RPC methods. If it'll be accepted, I'll change all our relayer subcommands to use real conversion rate when messages are submitted.

@svyatonik svyatonik added B-Substrate <> Substrate P-Message Delivery PR-breaksrelay A PR that is going to break existing relayers. I.e. some Runtime changes render old relayers unusabl labels Oct 20, 2021
let conversion_rate = bridged_to_this_conversion_rate_override
.map(|r| r.to_float() as u32)
.unwrap_or(BRIDGED_CHAIN_TO_THIS_CHAIN_BALANCE_RATE);
ThisChainBalance(bridged_balance.0 * conversion_rate)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
ThisChainBalance(bridged_balance.0 * conversion_rate)
ThisChainBalance(bridged_balance.0.saturating_mul(conversion_rate))

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's just a test, so it should be fine :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, sorry! didn't notice it's a test code.

@svyatonik svyatonik merged commit 50ffb5d into master Dec 17, 2021
@svyatonik svyatonik deleted the estimate-fee-rate-override branch December 17, 2021 13:54
acatangiu added a commit that referenced this pull request Dec 23, 2021
* Add `AtLeast32BitUnsigned` for MessageLance::SourceChainBalance (#1207)

* Fix UI deployment. (#1211)

* Remove unused PoA<>Substrate bridge (#1210)

* Decouple the PoA bridge code from Rialto
* Remove Rialto PoA bridge code
* Remove relays/bin-ethereum code
* Remove relays/client-ethereum code
* Remove modules/ethereum code
* Remove modules/ethereum-contract-builtin code
* Remove PoA bridge documentation
* Remove primitives/ethereum-poa code
* Decouple Rialto from currency-exchange
* Fix building with runtime-benchmarks
* Fix should_encode_bridge_send_message_call test
    Because we removed some runtime modules/pallets, the
    substrate2substrate bridge pallet has a different index within
    the runtime so its calls have a different encoding.
    Update the test to use the new encoding.
* Update readme - no more PoA bridge
* Remove deployments/bridges/poa-rialto
    Also removes:
    - deployments/networks/eth-poa.yml
    - deployments/networks/OpenEthereum.Dockerfile
* Remove deployments/dev/poa-config
* Update deployments readme - no more PoA bridge
* Remove eth-related scripts
    Deletes:
    - deployments/networks/eth-poa.yml
    - scripts/run-openethereum-node.sh
* Remove poa-relay from gitlab-ci
* Dockerfiles to use substrate-relay as default
* Remove modules/currency-exchange code
* Remove primitives/currency-exchange code

Signed-off-by: acatangiu <[email protected]>

* Remove unused `relays/headers` (#1216)

* Decouple `relays/client-substrate` from `headers_relay`
* Remove `blocks_in_state` from `SyncLoopMetrics`
    This metric was only relevant for PoA <> Substrate bridge.
* Move `sync_loop_metrics.rs` to `relays/finality`
* Remove unused `SyncLoopMetrics::update()`
* Hook up SyncLoopMetrics to finality_loop
* Delete now unused `relays/headers`

Signed-off-by: acatangiu <[email protected]>

* remove abandoned exchange relay (#1217)

* Unify metric names (#1209)

* unify metric names

* refactor standalone metrics

* headers sync metrics

* post-merge fix

* fix compilation

* fmt

* fix dashboards

* fix local dashboards

* update Rococo/Wococo runtime version

* remove commented code

* fixed grumbles

* fmt

* fixed widget names

* Add CODEOWNERS file (#1219)

* fixed set_operational in GRANDPA pallet (#1226)

* Add mut support (#1232)

* update dependencies (#1229)

* Integrate BEEFY with Rialto & Millau runtimes (#1227)

* Add Beefy pallet to Rialto runtime

* Add Beefy gadget to Rialto node

* Add MMR pallet to Rialto runtime

* Add Beefy pallet to Millau runtime

* Add Beefy gadget to Millau node

* Add MMR pallet to Millau runtime

* Add pallet_beefy_mmr to Millau runtime

* Add pallet_beefy_mmr to Rialto runtime

* Implement MMR and BEEFY APIs in Rialto

* fix unit tests

- should_encode_bridge_send_message_call() tests for new
  runtime encoding resulted from newly added pallets.
- runtime size_of::<Call>() slightly increased from newly
  added pallets.

* fix grumbles

* tighten clippy allowances

* fix more grumbles

* Add MMR RPC to Rialto and Millau nodes

Also implement MmrApi in Millau runtime.

* rialto: use upstream polkadot_client::RuntimeApiCollection

* Fix storage parameter name computation (#1238)

* fixed storage_parameter_key

* added test for storage_parameter_key

* Enable Beefy debug logs in test deployment (#1237)

Signed-off-by: Adrian Catangiu <[email protected]>

* Enable offchain indexing for Rialto/Millau nodes (#1239)

* Enable off-chain indexing for Rialto & Millau nodes

* cargo fmt --all

* cargo +nightly fmt --all

* fmt is weird.

* Update Rococo/Wococo version + prepare relay for Rococo<>Wococo bridge (#1241)

* update Rococo version + create relayers fund account

* start finality relay guards when complex relay is started

* Refactor finality relay helpers (#1220)

* refactor finality relay helper definitions

* add missing doc

* removed commented code

* fmt

* disable rustfmt for macro

* move best_finalized method const to relay chain def

* Expose prometheus BEEFY metrics and add them to grafana dashboard (#1242)

* deployments: expose node metrics

Signed-off-by: acatangiu <[email protected]>

* deployments: add beefy grafana dashboard

Signed-off-by: acatangiu <[email protected]>

* deployments: add beefy alarms

Signed-off-by: acatangiu <[email protected]>

* Fix transactions mortality (#1196)

* added lost stall timeout fix

* use best_block.parent() to start mortal tx era

* fmt

* Revert "revert messages transactions mortality"

This reverts commit 7777635.

* post-merge build fix (#1243)

* Refactor message relay helpers (#1234)

* refactor message relay helpers

* single standalone_metrics function

* fixed tests

* clippy + fmt

* removed commented code

* add calls tracing

* fix spelling

* cargo fmt

* -commented code

* fix build again

* post-merge build fix

* clippy + fmt

* Use same endowed accounts set on dev/local chains (#1244)

* use same accounts set on dev/local chains

* run altruistic relayers in local demo scripts

* runtimes: fix call_size() test (#1245)

Signed-off-by: acatangiu <[email protected]>

* Bump relay version to 1.0.0 (#1249)

* Add missing RPC APIs to rialto parachain node (#1250)

* add missing RPC APIs to rialto parachain node

* spellcheck

* decrease startup sleep to 5s for relays and to 120s for generators + remove curl (#1251)

* pin bridges-ci image (#1256)

* Change submit transaction spec_version and transaction_version query from chain (#1248)

* The `spec_version` and `transaction_version` query from chain

* fix compile

* Lint

* Custom spec_version and transaction_version

* runtime version params struct opt

* runtime version cli

* cli params

* Add missing types defined

* fix compile

* debug cli

* clippy

* clippy

* Query spec_version and transaction_version same times

* Fix vars

* Wrap option

* Wrap option

* Try fix ci

* Change follow suggestions

* remporary use pinned bridges-ci image in Dockerfile (#1258)

* move storage keys computation to primitivs (#1254)

* override conversion rate in estimate-message-fee RPC (#1189)

* read latest_generated_nonce directly from storage (#1260)

* bump rococo version (#1263)

Co-authored-by: fewensa <[email protected]>
Co-authored-by: Tomasz Drwięga <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Sergejs Kostjucenko <[email protected]>
Co-authored-by: Antonio Dropulic <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
svyatonik added a commit that referenced this pull request Dec 27, 2021
svyatonik added a commit that referenced this pull request Mar 2, 2022
svyatonik added a commit that referenced this pull request Mar 2, 2022
svyatonik added a commit that referenced this pull request Mar 21, 2022
* Fix mandatory headers scanning in on-demand relay (#1306)

* more logging in on-demand headerss

* remove `maximal_headers_difference` concept from on-demand-relay

* another leftover from previous on-demand version

* removed extra log

* fmt

* increase relay balance guard limits for Polkadot<>Kusama bridge (#1308)

* fix benchmarks before using it in Polkadot/Kusama/Rococo runtimes (#1309)

* Endow relayer account at target chain in message benchmarks (#1310)

* endow relayer account at target chain in message benchmarks

* pick another line

* expose fee multiplier metrics in messages relay (#1312)

* Fix issues from cargo deny (#1311)

* update libp2p-core (RUSTSEC-2022-0009)

* update thread_local (RUSTSEC-2022-0006)

* time 0.2 -> time 0.3

* ignore RUSTSEC-2021-0130

* proper migration to time 0.3

* fix clippy?

* Revert "fix clippy?"

This reverts commit 53bc289.

* Add some tests to check integrity of chain constants + bridge configuration (#1316)

* add some tests to check integrity of chain constants + bridge configuration

* try to use named parameters where possible

* Encode and estimate Rococo/Wococo/Kusama/Polkadot messages (#1322)

* encode and estimate Rococo/Wococo/Kusama/Polkadot messages

* allow send-message for non-bundled chains

* weight -> dispatch-weight

* fmt

* fix spelling

* impl Decode for SignedExtensions (otherwise transaction resubmitter panicks) (#1325)

* use mortal transactions in transaction resubmitter (#1326)

* Using-same-fork metric for finality and complex relay (#1327)

* using_same_fork metric in finality relay

* support `using_different_forks` in messages relay

* added dashboards and alerts

* lockfile

* fix typo in alert expression (#1329)

* removed extra *_RUNTIME_VERSION consts from relay code (#1330)

* Reinitialize bridge relay subcommand (#1331)

* reinitialize bridge subcommand

* PolkadotToKusama in reinit-bridge

* fix clippy issues (#1332)

* Revert "Revert "override conversion rate in estimate-message-fee RPC (#1189)" (#1275)" (#1333)

This reverts commit ed7def6.

* Override conversion rate when computing message fee (#1261)

* override conversion rate when message is sent

* spelling + fmt

* add --conversion-rate-override cli option

* try to read conversion rate from cmd output

* fix output

* fmt

* fi typo in generator script (#1334)

* override conversion rate in tokens swap generator (#1335)

* fix conversion rate override in token swap (#1336)

* synchronize relay cli changes and token swap generator script (#1337)

* fixed mess with conversion rates (#1338)

* fix generator scripts to be consistent with updatedrelay output (#1339)

* Increase rate from metric when estimating fee (#1340)

* ignore errors when dumping logs and container is missing

* fixed typo

* print correct payload length

* increase conversion rate a bit when estimating fee (to avoid message rejects when rate update tx is active)

* fmt

* fix conversion rate metric in dashboards (#1341)

* get rid of '[No Data] Messages from Millau to Rialto are not being delivered' warnings (#1342)

* use DecodeLimit when decoding incoming calls (#1344)

* update regex to 1.5.5 (#1345)

* edition = "2021" (#1346)

* Mortal conversion rate updater transactions (#1257)

* merge all similar update_conversion_rate functions

* stall timeout in conversion rate update loop

* fmt

* fix

* added alerts for relay balances (#1347)

* replace From<>InboundLaneApi with direct storage reads (#1348)

* added no_stack_overflow_when_decoding_nested_call_during_dispatch test (#1349)

* ignore more "increase" alerts that are sometimes signalling NoData at startup (#1351)

* Support dedicated lanes for pallets (#962)

* pass call origin to the message verifier

* is_outbound_lane_enabled -> is_message_accepted

* trait SenderOrigin

* only accept messages from token swap pallet to token swap lane

* tests for edge cases of pay_delivery_and_dispatch_fee

* fixed origin verification

* fmt

* fix benchmarks compilation

* fix TODO with None account and non-zero message fee (already covered by tests)

* revert cargo fmt changes temporarily

* Update Substrate/Polkadot/Cumulus references (#1353)

* cumulus: 4e95228
polkadot: 975e780ae0d988dc033f400ba822d14b326ee5b9
substrate: 89fcb3e4f62d221d4e161a437768e77d6265889e

* fix refs

* sync changes from paritytech/polkadot#3828

* sync changes from paritytech/polkadot#4387

* sync changes from paritytech/polkadot#3940

* sync with changes from paritytech/polkadot#4493

* sync with changes from paritytech/polkadot#4958

* sync with changes from paritytech/polkadot#3889

* sync with changes from paritytech/polkadot#5033

* sync with changes from paritytech/polkadot#5065

* compilation fixes

* fixed prometheus endpoint startup (it now requires to be spawned within tokio context)

* update chain versions (#1358)

* update parity-scale-codec to 3.1.2 (#1359)

* fix parse_transaction on Rialto+Millau (#1360)
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Mar 27, 2024
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Mar 27, 2024
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Mar 27, 2024
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Apr 8, 2024
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Apr 8, 2024
serban300 pushed a commit to serban300/parity-bridges-common that referenced this pull request Apr 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
P-Message Delivery PR-breaksrelay A PR that is going to break existing relayers. I.e. some Runtime changes render old relayers unusabl
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants