-
Notifications
You must be signed in to change notification settings - Fork 86
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
feat: Polkadot v1.7.2 migrations #1849
Conversation
weight.saturating_accrue(T::DbWeight::get().reads_writes(1, 1)); | ||
|
||
Some(NewHolds::truncate_from(vec![id_amount])) | ||
} else { |
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 Self::account_can_be_migrated(&who, &transfer_allowlist_accounts)
is false, then if the old Hold storage still has an entry, that means that we need to migrate it with pallet_restricted_tokens::HoldReason::NativeIndex.into()
because it means that someone used that pallet to hold something thought that pallet.
Or am I wrong in my assumption?
The flow will be:
- if hold in balances and account in allowlist
- then:
pallet_transfer_allowlist::HoldReason::TransferAllowance.into()
- then:
- else if hold in balances
- then:
pallet_restricted_tokens::HoldReason::NativeIndex.into()
- then:
- else
- then:
None
- then:
Still scared about how can we know that an account that has been used by transfer allowance has not also be used by restricted_tokens 🤔
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 Self::account_can_be_migrated(&who, &transfer_allowlist_accounts)
is false, then if the old Hold storage still has an entry, that means that we need to migrate it withpallet_restricted_tokens::HoldReason::NativeIndex.into()
because it means that someone used that pallet to hold something thought that pallet.Or am I wrong in my assumption?
We have three code paths which use Currency::hold
in our codebase:
pallet-rewards
when depositing stakepallet-transfer-allowlist
when adding a transfer filterpallet-orderbook
when placing or updating an order.
All three codepaths use the RestrictedTokens
as their Currency
trait which provides two implementations for hold
: One for native currency (i.e. fungible which falls back to the impl of pallet-balances
) and one for non-native assets (i.e. fungibles which falls back to the impl of orml-tokens
). The crucial part is that the orml-tokens
implementation of hold
has not made use of the RuntimeHoldReason
(it does not even have storage for that) such that we only need to migrate the Holds
storage of pallet-balances
.
The flow will be:
- if hold in balances and account in allowlist
- then:
pallet_transfer_allowlist::HoldReason::TransferAllowance.into()
- else if hold in balances
- then:
pallet_restricted_tokens::HoldReason::NativeIndex.into()
- else
- then:
None
Now coming back to the three codepaths which make use of hold
API: Both pallet-rewards
and pallet-orderbook
only hold fungibles because staking currency is not native and we can assume no CFG <-> *
orders to exist until we execute the RU. So there can only be a single reason why there exists an entry in pallet_balances::Holds
storage which points back to the transfer allowlist. There cannot be any other stored holds.
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.
Thanks for your reasoning!
Just one thing. Root can call the extrinsic restricted_tokens::set_balance()
(not sure if this already happened), modifying the hold amount in the account for CFG
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.
I guess we never use orderbook
to create an order with CFG
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.
Thanks for your reasoning!
Just one thing. Root can call the extrinsic
restricted_tokens::set_balance()
(not sure if this already happened), modifying the hold amount in the account for CFG
Luckily, set_balance
is rather a dev tool than something which is used in production. Ironically, we have used it once on Centrifuge Chain to recover a lost wallet from an early Gnosis backer (-> Gov forum) but did not set any holds there. Again, I have checked all storage on all our chains to ensure this migration works. Before we propose the RU, I will redo that step.
Assuming the worst case of some unexpected hold to spawn in between RU proposal and execution, which is not tied to transfer allowlist, then we can fix this afterwards. The user will just not be able to remove the hold until then.
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.
LGTM! I think we have all these cases tied!
* set dependency versions * upgrade libs/* * upgrade pallet-anchors * upgrade pallet-fees * upgrade pallet-bridge * migrate simple pallets * migrate pallet-order-book * migrated collator-allowlist & swaps * upgrade rewards * upgraded pallet-mux * upgrade transfer-allowlist * fix hold reason in restricted tokens * simplify set_balance removing the holding part * upgrade restricted-xtokens * upgrade some pallets * upgrade pallet-ethereum-transaction * upgrade pallet-loans * upgrade pool-system * upgrade pool-fees * upgrade pool-registry * upgrade liquidity-pools stuffs * avoid duplicated polkadot-sdk repos * minor fixes * upgraded runtime-common * CfgLocation to RestrictedTransferLocation * restricted tokens with NativeIndex for native fungibles * rename dependency * upgraded development-runtime * fix partially benchmarks * fix benchmarks * overpass xcmp-queue integrity tests * minor coments * upgrade altair & centrifuge * remove some benchmarking pallets that are not needed * fix runtime upgrades * upgrade integration-test proc * upgrade integration-tests framework * upgraded all tests except liquidity pools * 99% upgraded liquidity-pools tests * fix lookup * cargo fmt * taplo fmt * using nightly cargo in CI * restore set_balance as it was * allow nightly support in CI * use restricted_tokens again to fetch from investement portfolio * Install rust-src for docs * fix tests * remove unused restricted tokens * fix block rewards * fix WrongWitness for some tests in IT * fix liquidity-pools * minor fixes * fix clippy * remove unneeded tests * feat: Update client to Polkadot v1.7.2 (#1844) * wip: update client * chore: update crate versions * chore: update anchor rpc api * chore: remove rewards, pools rpc * chore: compile with development runtime * fix: client for all runtimes * fix: build spec * feat: update relay docker images * fix: apply deprecation of export genesis state to scripts * fmt: taplo * refactor: use xcm v4 sugar * fix: revert tmp change in local para run * refactor: simplify xcm v4 locations in chain spec * cargo fmt * fix clippy * feat: Polkadot v1.7.2 migrations (#1849) * feat: add hold reason migration * feat: centrifuge migrations * feat: altair migrations * feat: dev + demo migrations * fix: clippy * fix: build * fmt: fix using nightly * last William iteration review * increase passed blocks * use rococo instead of polkadot-test-runtime * fix tests * remove line * dirty fix to fix Hrmp test issue * use default weights for treasury --------- Co-authored-by: William Freudenberger <w.freude@icloud.com>
* set dependency versions * upgrade libs/* * upgrade pallet-anchors * upgrade pallet-fees * upgrade pallet-bridge * migrate simple pallets * migrate pallet-order-book * migrated collator-allowlist & swaps * upgrade rewards * upgraded pallet-mux * upgrade transfer-allowlist * fix hold reason in restricted tokens * simplify set_balance removing the holding part * upgrade restricted-xtokens * upgrade some pallets * upgrade pallet-ethereum-transaction * upgrade pallet-loans * upgrade pool-system * upgrade pool-fees * upgrade pool-registry * upgrade liquidity-pools stuffs * avoid duplicated polkadot-sdk repos * minor fixes * upgraded runtime-common * CfgLocation to RestrictedTransferLocation * restricted tokens with NativeIndex for native fungibles * rename dependency * upgraded development-runtime * fix partially benchmarks * fix benchmarks * overpass xcmp-queue integrity tests * minor coments * upgrade altair & centrifuge * remove some benchmarking pallets that are not needed * fix runtime upgrades * upgrade integration-test proc * upgrade integration-tests framework * upgraded all tests except liquidity pools * 99% upgraded liquidity-pools tests * fix lookup * cargo fmt * taplo fmt * using nightly cargo in CI * restore set_balance as it was * allow nightly support in CI * use restricted_tokens again to fetch from investement portfolio * Install rust-src for docs * fix tests * remove unused restricted tokens * fix block rewards * fix WrongWitness for some tests in IT * fix liquidity-pools * minor fixes * fix clippy * remove unneeded tests * feat: Update client to Polkadot v1.7.2 (#1844) * wip: update client * chore: update crate versions * chore: update anchor rpc api * chore: remove rewards, pools rpc * chore: compile with development runtime * fix: client for all runtimes * fix: build spec * feat: update relay docker images * fix: apply deprecation of export genesis state to scripts * fmt: taplo * refactor: use xcm v4 sugar * fix: revert tmp change in local para run * refactor: simplify xcm v4 locations in chain spec * cargo fmt * fix clippy * feat: Polkadot v1.7.2 migrations (#1849) * feat: add hold reason migration * feat: centrifuge migrations * feat: altair migrations * feat: dev + demo migrations * fix: clippy * fix: build * fmt: fix using nightly * last William iteration review * increase passed blocks * use rococo instead of polkadot-test-runtime * fix tests * remove line * dirty fix to fix Hrmp test issue * use default weights for treasury * remove getrandom unused dep * upgrade to last polkadot-sdk version * feat: `CheckMetadataHash` extension * fix it (#1866) * fmt: taplo * refactor: signed ext order * fix: signed ext order for ITs * IT: more support for router tests (#1885) * move routers to its own module * remove outdated markers * for all runtimes * remove previous tests * minor fixes * v0.11.2 rc * panic if event is not found in the expected blocks (#1880) * fix: ci * remove generic module (#1887) * revert check metadata hash disable * fix: disable metadata hash check for integration tests --------- Co-authored-by: lemunozm <lemunozm@gmail.com>
* Switch to full wasm execution * feat: use correct encoded size. * fix: lint * refactor: reduce dev session duration from 6h to 2min * chore: update centrifuge weights * chore: update dev weights * chore: update altair weights * chore: update frame_system weights * fmt * fix: re-enable frame_system benches * chore: bump spec version * fmt: revert using latest nightly * v0.11.3-rc1: revert checkmetadata ext * feat: `CheckMetadataHash` extension (#1865) * set dependency versions * upgrade libs/* * upgrade pallet-anchors * upgrade pallet-fees * upgrade pallet-bridge * migrate simple pallets * migrate pallet-order-book * migrated collator-allowlist & swaps * upgrade rewards * upgraded pallet-mux * upgrade transfer-allowlist * fix hold reason in restricted tokens * simplify set_balance removing the holding part * upgrade restricted-xtokens * upgrade some pallets * upgrade pallet-ethereum-transaction * upgrade pallet-loans * upgrade pool-system * upgrade pool-fees * upgrade pool-registry * upgrade liquidity-pools stuffs * avoid duplicated polkadot-sdk repos * minor fixes * upgraded runtime-common * CfgLocation to RestrictedTransferLocation * restricted tokens with NativeIndex for native fungibles * rename dependency * upgraded development-runtime * fix partially benchmarks * fix benchmarks * overpass xcmp-queue integrity tests * minor coments * upgrade altair & centrifuge * remove some benchmarking pallets that are not needed * fix runtime upgrades * upgrade integration-test proc * upgrade integration-tests framework * upgraded all tests except liquidity pools * 99% upgraded liquidity-pools tests * fix lookup * cargo fmt * taplo fmt * using nightly cargo in CI * restore set_balance as it was * allow nightly support in CI * use restricted_tokens again to fetch from investement portfolio * Install rust-src for docs * fix tests * remove unused restricted tokens * fix block rewards * fix WrongWitness for some tests in IT * fix liquidity-pools * minor fixes * fix clippy * remove unneeded tests * feat: Update client to Polkadot v1.7.2 (#1844) * wip: update client * chore: update crate versions * chore: update anchor rpc api * chore: remove rewards, pools rpc * chore: compile with development runtime * fix: client for all runtimes * fix: build spec * feat: update relay docker images * fix: apply deprecation of export genesis state to scripts * fmt: taplo * refactor: use xcm v4 sugar * fix: revert tmp change in local para run * refactor: simplify xcm v4 locations in chain spec * cargo fmt * fix clippy * feat: Polkadot v1.7.2 migrations (#1849) * feat: add hold reason migration * feat: centrifuge migrations * feat: altair migrations * feat: dev + demo migrations * fix: clippy * fix: build * fmt: fix using nightly * last William iteration review * increase passed blocks * use rococo instead of polkadot-test-runtime * fix tests * remove line * dirty fix to fix Hrmp test issue * use default weights for treasury * remove getrandom unused dep * upgrade to last polkadot-sdk version * feat: `CheckMetadataHash` extension * fix it (#1866) * fmt: taplo * refactor: signed ext order * fix: signed ext order for ITs * IT: more support for router tests (#1885) * move routers to its own module * remove outdated markers * for all runtimes * remove previous tests * minor fixes * v0.11.2 rc * panic if event is not found in the expected blocks (#1880) * fix: ci * remove generic module (#1887) * revert check metadata hash disable * fix: disable metadata hash check for integration tests --------- Co-authored-by: lemunozm <lemunozm@gmail.com> --------- Co-authored-by: Bastian Köcher <info@kchr.de> Co-authored-by: Frederik Gartenmeister <mustermeiszer@posteo.de> Co-authored-by: lemunozm <lemunozm@gmail.com>
fix: adapt passthrough router fix: docs and hash chore: rm unused test Release v0.11.3 (#1886) * Switch to full wasm execution * feat: use correct encoded size. * fix: lint * refactor: reduce dev session duration from 6h to 2min * chore: update centrifuge weights * chore: update dev weights * chore: update altair weights * chore: update frame_system weights * fmt * fix: re-enable frame_system benches * chore: bump spec version * fmt: revert using latest nightly * v0.11.3-rc1: revert checkmetadata ext * feat: `CheckMetadataHash` extension (#1865) * set dependency versions * upgrade libs/* * upgrade pallet-anchors * upgrade pallet-fees * upgrade pallet-bridge * migrate simple pallets * migrate pallet-order-book * migrated collator-allowlist & swaps * upgrade rewards * upgraded pallet-mux * upgrade transfer-allowlist * fix hold reason in restricted tokens * simplify set_balance removing the holding part * upgrade restricted-xtokens * upgrade some pallets * upgrade pallet-ethereum-transaction * upgrade pallet-loans * upgrade pool-system * upgrade pool-fees * upgrade pool-registry * upgrade liquidity-pools stuffs * avoid duplicated polkadot-sdk repos * minor fixes * upgraded runtime-common * CfgLocation to RestrictedTransferLocation * restricted tokens with NativeIndex for native fungibles * rename dependency * upgraded development-runtime * fix partially benchmarks * fix benchmarks * overpass xcmp-queue integrity tests * minor coments * upgrade altair & centrifuge * remove some benchmarking pallets that are not needed * fix runtime upgrades * upgrade integration-test proc * upgrade integration-tests framework * upgraded all tests except liquidity pools * 99% upgraded liquidity-pools tests * fix lookup * cargo fmt * taplo fmt * using nightly cargo in CI * restore set_balance as it was * allow nightly support in CI * use restricted_tokens again to fetch from investement portfolio * Install rust-src for docs * fix tests * remove unused restricted tokens * fix block rewards * fix WrongWitness for some tests in IT * fix liquidity-pools * minor fixes * fix clippy * remove unneeded tests * feat: Update client to Polkadot v1.7.2 (#1844) * wip: update client * chore: update crate versions * chore: update anchor rpc api * chore: remove rewards, pools rpc * chore: compile with development runtime * fix: client for all runtimes * fix: build spec * feat: update relay docker images * fix: apply deprecation of export genesis state to scripts * fmt: taplo * refactor: use xcm v4 sugar * fix: revert tmp change in local para run * refactor: simplify xcm v4 locations in chain spec * cargo fmt * fix clippy * feat: Polkadot v1.7.2 migrations (#1849) * feat: add hold reason migration * feat: centrifuge migrations * feat: altair migrations * feat: dev + demo migrations * fix: clippy * fix: build * fmt: fix using nightly * last William iteration review * increase passed blocks * use rococo instead of polkadot-test-runtime * fix tests * remove line * dirty fix to fix Hrmp test issue * use default weights for treasury * remove getrandom unused dep * upgrade to last polkadot-sdk version * feat: `CheckMetadataHash` extension * fix it (#1866) * fmt: taplo * refactor: signed ext order * fix: signed ext order for ITs * IT: more support for router tests (#1885) * move routers to its own module * remove outdated markers * for all runtimes * remove previous tests * minor fixes * v0.11.2 rc * panic if event is not found in the expected blocks (#1880) * fix: ci * remove generic module (#1887) * revert check metadata hash disable * fix: disable metadata hash check for integration tests --------- Co-authored-by: lemunozm <lemunozm@gmail.com> --------- Co-authored-by: Bastian Köcher <info@kchr.de> Co-authored-by: Frederik Gartenmeister <mustermeiszer@posteo.de> Co-authored-by: lemunozm <lemunozm@gmail.com> Refactor: Decoupling routers from gateway (#1891) * decoupling routers from gateway. Use Vec<u8> * gateway adapted * fix imports * move test msg to cfg-traits * fix imports feat: Open Gov for Development and Altair Runtimes (#1828) * chore: add OpenGov pallets to root toml * feat: add OpenGov tracks to runtime common * feat: add technical committee migration tc: fix clippy * refactor: move origins from primitives to common common: fix typo common: fix test after HalfOfCouncil refactor * feat: add OpenGov to Development fix: complete Development OpenGov development: finalize opengov development: add proxy calls development: overwrite missing origins dev: fix treasury spender dev: remove crowdloan pallets dev: taplo fmt * feat: add OpenGov to Altair fix: complete Altair OpenGov fix: add missing technical fellowship weights Altair altair: finalize opengov altair: rename track tests altair: gather imports altair: remove crowdloan pallets altair: taplo fmt * feat: add OpenGov to Centrifuge chain fix: centrifuge toml chore: minor centrifuge chain improvements refactor: Centrifuge OpenGov centrifuge: finalize opengov centrifuge: fix cargo tml cfg: fix clippy test * Revert "feat: add OpenGov to Centrifuge chain" This reverts commit 4d78c10. * fix: clippy * tests: fix CouncilCollective import path * fix: technical committee migrations * altair: configure tc migration (incomplete) * dev: configure tc migration * chore: cleanup altair dep diff * chore: remove unused getrandom crate from runtimes * chore: add missing Altair TC members * refactor: move to_ppm and to_percent to utils * Merge remote-tracking branch 'origin/main' into feat/open-gov-2 * fix: issues after rebasing * fmt * fix: imports * feat: v0.12.0 for altair RU Altair: release v0.12.0 (#1896) * fix: altair chain spec * chore: update gov2 weights * chore: update dev OpenGov weights * fix: weight declaration Fix RustDocs deployment & codecov patch checks (#1870) * Fix deploy docs * Make patch checks also informational (not fail) LP Message with custom data format for serialization/deserialization (#1889) * test compiling * fix Domain serialization * fix issues * some reorganizations * using bincode 2 with non-std support * use custom trait * tests passing for lp * remove ENCODED_MSG constant * fix runtimes compilation * cargo fmt & taplo fmt * cargo clippy * minor change * add custom serializer passing all tests * no_std support * minor renames * cargo fmt * cargo clippy * minor comment change * cargo fmt extra Succeed when patch codecov fails (#1900) Liquidity pools: Add UTs to for `update_token_price()` (#1890) * add token price UTs * update IT * fix tests compilation remove some unused code investment-related (#1902) Release v0.13.0 (#1898) * chore: update deps to enable metadata hash check * chore: update srtool + add on-chain-release-build opts * chore: bump spec versions + cleanup migrations * fmt: taplo * ci: fix srtool fmt * ci: apply proper CLI * attempt2 to enable on-chain-release-build * change srtool build for chevdor/strool-actions action * desperate attempts to get it working * override workdir * Try to set permissions wide open before running docker * add RUST_BACKTRACE * revert to our GHA manual process & add enhancements * fix package name * Output information about srtool * Revert "desperate attempts to get it working" This reverts commit a882fd9. * fix: some scripts * fix bad colon on echo command * Fix missing colon and remove docker publish release * upload wasm to release * fix issue with gchr tags * more semicolon issues * unique name for delete untagged * fix delete_untagged * move delete_untagged under workflows * move delete untagged to manual runs * review bash syntax for wasm build * recover cache and limit sanity check build time --------- Co-authored-by: Guillermo Perez <gpmayorga@users.noreply.github.com> cargo update (#1904) add uts (#1905) IT: Support `#ignore = reason` for `test_runtimes` macro (#1908) * support #ignore = reason for test_runtimes macro * fix clippy ci: disable checks for drafts (#1913) LP: Unitary testing for add_currency (#1912) * port add-currency tests into uts * remove LiquidityPoolsWrappedToken struct * remove unused code * fix compilation issues * fix clippy * fix clippy feat: adatpt to latest version LP: Unitary testing for all pending extrinsics (#1916) * allow and disallow currency tests * schedule_upgrade cancel_upgrade and update_tranche_token_metadata Feat: Adapt proxy settings (#1922) * feat: adapt proxy settings * fix: match pattern Small CI improvements (#1924) LP: Unitary testing for inbound messages (#1927) * tests inbound messages * some cleanings * some adjustements fix: array size fix: clippy + fmt fix: update blake hash fix: compilation Refactor: Transform `TrancheCurrency` type in a tuple (#1926) * remove TrancheCurrency type * fix benchmarks * fix clippy fix: std import KeccakHasher
Description
Note
One decoding error is left in the logs but this does not require a migration and will be fixed just by upgrading to the newer Polkadot SDK version. It was an oversight from the frame team and should have bumped the
ParachainSystem
storage version as well as required a migration. Check this conversation for more info.Try runtime logs
Centrifuge Chain
Dev
Demo
Altair
Checklist: