* frame: GenesisBuild::build allowed in no_std
i`GenesisBuild::build` function will be required for no_std in no native
runtime world.
`GenesisBuild::build` macro generated function allows to build the runtime
GenesisConfig assembled from all pallets' GenesisConfigs.
* fixes
* GenesisBuild::build avaiable in no-std
- #[cfg(feature = "std")] is not longer added to GenesisBuild implementation.
* system: hash69 available for no-std
* elections-phragmen: panic message fixed for no_std
* frame::suport: doc updated
* test-runtime: default for GenesisConfig
* frame::test-pallet: serde/std added to std feature deps
* Cargo.toml: deps sorted
* Cargo.lock update
cargo update -p frame-support-test-pallet -p frame-support-test
* frame ui tests: cleanup
---------
Co-authored-by: parity-processbot <>
* Add pallet dex
* Fmt
* Add RPC endpoint
* Fix RPC
* Fix the build
* Some more fixes
* Add a method to topup pallet's account
* Add support for multi-currency into Uniques
* Fix the build
* Add [transactional] + setup() + fix balances
* Improve tests
* Fix price quotation
* Code clean up
* Validate swaps
* Fmt
* Update README
* add test
* mint LP assets in a different instance
* remove transactional as now the default
AssetsLocal renamed to Assets
* merge master
* Revert "Merge master"
* fix tests post merge.
* attempt to set create origin
* Internally allocate lp asset id.
* Simplify
* Bump to be in line
* additional bumps to make compile
* fix compile
* less bounds
* use fungible crates
* multiasset enum
* only allow native currency pairs
* added slippage tests
* transfer into separate method
(Also fee not set in 2 places now.)
Added test where lp and user are different users.
* Add benchmarks + weights
* Typos
* Clean up
* More tests,
split error into two because it wasn't clear which parameter.
renamed liquidity to lp_tokens_minted or lp_tokens_burned in events.
* tighten up naming
* Default, zero, square root traits not needed
Also let's not force people to be compact
* add keep-alive param
* add insufficient liquidity test
* Fix quote() to support u64
* Avoid recording balances twice
* cargo fmt
* Didn't mean to change error type
* temp
* Less
* Rework get_amount_in/get_amount_out
* Convert other places
* Rework the last piece
* Typo
* Fix benchmarks
* use hash trait
* Extract a native asset check into the runtime setting
* Don't set the metadata
* Remove spec file
* Enable multi-assets swaps by default
* Refactor conversion into u128
* Add path param to swap_token_for_exact_tokens
* Fix typo + a bit of refactoring
* Implement path param for swap_exact_tokens_for_tokens()
* Deref
* Minor fixes
* Add test with sensible scale values
* Use .windows()
* Fix benchmarks
* update docs
* Fix everything :)
* Chore
* Revert
* Chore
* prev way of creating sub accounts lead to collisions
* Update frame/dex/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Update frame/dex/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Chore
* Fmt fix on Uniques
* add call_index
bring code up to date with latest master
* revert readme changes
* add cr
* revert uniques changes
* reducing noise
* no need for deadline (#12990)
(there's generic transaction deadline functionality already)
* fix kitchen sink (#12991)
* fix kitchen sink
* Only the dex can mint lp_tokens
* add BenchmarkHelper for second instance (#12998)
* update mock to latest master
* less indirections (#13012)
* remove dex PR's custom RPC (#13050)
* As we have state_call we don't need a custom RPC
* fix docs
* no longer a need to upgrade rpc version (#13053)
* add CallbackHadle
* quote bugfix (#13191)
quote was giving same price in both directions as we were inverting needlessly.
* merging in dex specific changes due to pay by dex
* update lock file
* merging in kitchen sink changes
* Add get_reserves() api method
* Partial updating of the benchmarks
* Fix tests
* clippy
* Temp fix weights
* Fix benchmarks
* Add pool setup fee
* Money upfront
* Address some comments
* Use u128 in mock
* Fix benchmarks
* Change error message
* Update comments
* Change error names
* Implement PartialOrd for NativeOrAssetId
* add note
* Update errors
* More tests for assets sorting
* ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_dex
* Change the way we generate pool accounts
* Improve the liquidity removal method
* Extract MintMinLiquidity to config, rework all tests
* Add comments
* Validate provided amount
* Rename to asset-conversion
* Validate ED
* Improve handling the ED related errors
* typos
* Try to fix benchmarks
* Another try
* Another day, another try
* Fix benchmarks
* Expose fee related params
* Validate token's minimal amount the same way as ED
* fix typo
* Use longer path for swaps in benchmarks
* need to ref sp_std's vec.
* Remove From<u32> requirement when benchmarking
* impl BenchmarkHelper for ()
* only for runtime benchmarks
* MultiLocation: !MaybeDisplay
Looks like we might not need this bound from initial testing.
* Update frame/asset-conversion/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Update frame/asset-conversion/src/lib.rs
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
* Add documentation links
* add collision test
* Revert "[Enhancement] Throw an error when there are too many pallets (#13763)"
This reverts commit cc3152bc2f.
* [Enhancement] Throw an error when there are too many pallets (#13763)
* [Enhancement] Throw an error when there are too many pallets
* fix ui test
* fix PR comments
* Update frame/support/procedural/src/construct_runtime/mod.rs
Co-authored-by: Bastian Köcher <git@kchr.de>
* Update frame/support/procedural/src/construct_runtime/mod.rs
Co-authored-by: Bastian Köcher <git@kchr.de>
* ".git/.scripts/commands/fmt/fmt.sh"
---------
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: command-bot <>
* add benchmark helper
+ doc fix
* cargo fmt
* Fix adding liquidity to non-empty pool
* Fix compilation error
* Fix params ordering issue
* additional docs
* The swap path elements should be unique
* Fix account collision
* Validate all the pool in a swap path are unique
* Change the way we add liquidity to empty pools
* Improve docs
* remove unnessisary Display impl
* cargo fmt
* remove unused imports
* Make api consistent
* Chore
* Touch the pool account so it could hold the pair tokens
* Check the balance before touching the pool's account
* Introduce liquidity provision fee
* Touch the pool acc one more time
* Apply suggestions from code review
Co-authored-by: Sam Johnson <sam@durosoft.com>
* Update frame/asset-conversion/README.md
Co-authored-by: Sam Johnson <sam@durosoft.com>
* Use ContainsPair instead of the balance checker
* Remove old Currency trait
* Add liquidity withdrawal fee
* Update docs
* Use 0 withdrawal fee in mock
* Rename vars
* asset id not clone
* fix: shadow var was being used
* correct tests
* fix benches
* merge master
* neater
---------
Co-authored-by: Jegor Sidorenko <jegor@parity.io>
Co-authored-by: Jegor Sidorenko <5252494+jsidorenko@users.noreply.github.com>
Co-authored-by: parity-processbot <>
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: Sam Johnson <sam@durosoft.com>
* Improve handling of unset `StorageVersion`
When a user is forgetting to set the storage version in a pallet and calls
`current_storage_version` to compare it against the `on_chain_storage_version` it will now fail to
compile the code. Before the pallet macro just returned `StorageVersion::default()` for
`current_storage_version` leading to potential issues with migrations. Besides that it also checks
in `post_upgrade` that the pallet storage version was upgraded and thus, no migration was missed.
* Use correct `Cargo.lock`
* Fixes
* Fix test
* Update frame/support/test/tests/pallet.rs
* Ensure we don't set a storage version when the pallet is missing the attribute
* Fix merge conflict
* Update frame/support/procedural/src/pallet/expand/hooks.rs
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
* Update frame/support/procedural/src/pallet/expand/hooks.rs
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
* Fix compilation
* Do not run everything with `try-runtime`
* Fix test
* Apply suggestions from code review
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix `no-metadata-docs`
---------
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>
* Change copyright year to 2023 from 2022
* Fix incorrect update of copyright year
* Remove years from copy right header
* Fix remaining files
* Fix typo in a header and remove update-copyright.sh
* frame-support: Introduce `EnsureOriginOrHigherPrivilege`
This adds a new `EnsureOrigin` implementation that checks if a given origin matches or if the origin
is has a higher or equal origin matches or if the origin is has a higher or equal privilege.
* FMT
* traits for defensive min and defensive max
* defensive min and strict min with tests
* defensive max and strict max with tests
* include docs
* implement partial ord on defensive min and max
* Update frame/support/src/traits/misc.rs
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* wrap lines
* Fix traits
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Update frame/support/src/traits/misc.rs
* Update frame/support/src/traits/misc.rs
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: parity-processbot <>
* Introduce preimages module in traits
* Multisize Preimages
* Len not actually necessary
* Tweaks to the preimage API
* Fixes
* Get Scheduler building with new API
* Scheduler tests pass
* Bounded Scheduler 🎉
* Use Agenda holes and introduce IncompleteSince to avoid need to reschedule
* Tests pass with new weight system
* New benchmarks
* Add missing file
* Drop preimage when permenantly overeight
* Drop preimage when permenantly overeight
* Referenda uses latest preimage API
* Testing ok
* Adding tests
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* fmt
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Add preimage migration
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Docs
* Remove dbg
* Refactor Democracy
* Refactor Democracy
* Add final MEL
* Remove silly maps
* Fixes
* Minor refactor
* Formatting
* Fixes
* Fixes
* Fixes
* Update frame/preimage/src/lib.rs
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* Add migrations to Democracy
* WIP
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Resolve conflicts
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Revert "Resolve conflicts"
This reverts commit 734d66d69e54553471ffa54fa52e3e304dc8f106.
* Undo wrong resolves...
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* WIP
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Make compile
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* massage clippy
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More clippy
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* clippy annoyance
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* clippy annoyance
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix benchmarks
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* add missing file
* Test <Preimage as QueryPreimage>
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More tests
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Clippy harassment
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Add test
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* clippy
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fixup tests
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Remove old stuff
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* fmt
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Test <Scheduler as Anon> trait functions
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Update pallet-ui tests
Why is this needed? Should not be the case unless master is broken...
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More scheduler trait test
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More tests
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Apply review suggestion
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Beauty fixes
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Add Scheduler test migration_v3_to_v4_works
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Merge fixup
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Keep referenda benchmarks instantiatable
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Update weights
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use new scheduler weight functions
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use new democracy weight functions
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use weight compare functions
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Update pallet-ui tests
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More renaming…
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* More renaming…
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Add comment
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Implement OnRuntimeUpgrade for scheduler::v3_to_v4 migration
Put the migration into a proper `MigrateToV4` struct and implement
the OnRuntimeUpgrade hooks for it. Also move the test to use that
instead.
This should make it easier for adding it to Polkadot.
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Clippy
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Handle undecodable Agendas
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Remove trash
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix test
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use new OnRuntimeUpgrade functions
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* fix test
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix BoundedSlice::truncate_from
Co-authored-by: jakoblell
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix pre_upgrade hook return values
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Add more error logging
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Find too large preimages in the pre_upgrade hook
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Test that too large Calls in agendas are ignored
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Use new OnRuntimeUpgrade hooks
Why did the CI not catch this?!
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* works fine - just more logs
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix staking migration
Causing issues on Kusama...
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix UI tests
No idea why this is needed. This is actually undoing an earlier change.
Maybe the CI has different rustc versions!?
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Remove multisig's Calls (#12072)
* Remove multisig's Calls
* Multisig: Fix tests and re-introduce reserve logic (#12241)
* Fix tests and re-introduce reserve logic
* fix benches
* add todo
* remove irrelevant bench
* [Feature] Add a migration that drains and refunds stored calls (#12313)
* [Feature] Add a migration that drains and refunds stored calls
* migration fixes
* fixes
* address review comments
* consume the whole block weight
* fix assertions
* license header
* fix interface
Co-authored-by: parity-processbot <>
Co-authored-by: parity-processbot <>
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
* Fix test
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* Fix multisig benchmarks
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy
* ".git/.scripts/bench-bot.sh" pallet dev pallet_scheduler
* ".git/.scripts/bench-bot.sh" pallet dev pallet_preimage
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: parity-processbot <>
Co-authored-by: Roman Useinov <roman.useinov@gmail.com>
* initial setup
* add WhitelistedStorageKeys trait
* add (A, B) tuple implementation for whitelisted_storage_keys()
* fix formatting
* implement WhitelistedStorageKeys for all tuple combinations
* impl_for_tuples up to 128 for WhitelistedStorageKeys
* refactor to #[benchmarking(cached)]
* tweak error message and mark BlockNumber as cached
* add benchmarking(cached) to the other default types
* add docs for benchmarking(cached)
* properly parse storage type declaration
* make storage_alias structs public so we can use them in this macro
* use BTreeMap since TrackedStorageKey missing Ord outside of std
* make WhitelistedStorageKeys accessible
* basic detection of benchmarking(cached) 💥
* proper parsing of #[benchmarking(cached)] from pallet parse macro
* store presence of #[benchmarking(cached)] macro on StorageDef
* will be used for later expansion
* compiling blank impl for WhitelistedStorageKeys
* move impl to expand_pallet_struct
* use frame_support::sp_std::vec::Vec properly
* successfully compiling with storage info loaded into a variable 💥
* plausible implementation for whitelisted_storage_keys()
* depends on the assumption that storage_info.encode() can be loaded
into TrackedStorageKey::new(..)
* use Pallet::whitelisted_storage_keys() instead of hard-coded list
* AllPallets::whitelisted_storage_keys() properly working 💥
* collect storage names
* whitelisted_storage_keys() impl working 💥
* clean up
* fix compiler error
* just one compiler error
* fix doc compiler error
* use better import path
* fix comment
* whoops
* whoops again
* fix macro import issue
* cargo fmt
* mark example as ignore
* use keyword tokens instead of string parsing
* fix keyword-based parsing of benchmarking(cached)
* preliminary spec for check_whitelist()
* add additional test for benchmarking whitelist
* add TODO note
* remove irrelevant line from example
* use filter_map instead of filter and map
* simplify syntax
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
* clean up
* fix test
* fix tests
* use keyword parsing instead of string parsing
* use collect() instead of a for loop
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* fix compiler error
* clean up benchmarking(cached) marking code
* use cloned()
* refactor to not use panic! and remove need for pub types in storage_alias
* remove unneeded use
Co-authored-by: Bastian Köcher <info@kchr.de>
* remove unneeded visibility changes
* don't manually hard code hash for treasury account as hex
* proper Ord, PartialOrd, and Hash impls for TrackedStorageKey
* now based just on key, and available in no-std
* use BTreeSet instead of BTreeMap
* fix comments
* cargo fmt
* switch to pallet::whitelist and re-do it basti's way :D
* make PartialOrd for TrackedStorageKey consistent with Ord
* more correct implementation of hash-related traits for TrackedStorageKey
* fix integration test
* update TODO
* remove unused keyword
* remove more unused keywords
* use into_iter()
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
* Update frame/support/procedural/src/pallet/parse/mod.rs
Co-authored-by: Bastian Köcher <info@kchr.de>
* add docs for whitelisted
* fix comment
Co-authored-by: Keith Yeung <kungfukeith11@gmail.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Bastian Köcher <info@kchr.de>
* add missing version to dependencies
* Huh
* add features more
* more fixing
* last touches
* it all finally works
* remove some feature gates
* remove unused
* fix old macro
* make it work again
* fmt
* remove unused import
* ".git/.scripts/fmt.sh" 1
* Cleanup more
* fix and rename everything
* a few clippy fixes
* Add try-runtime feature
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* small fixes
* fmt
* Update bin/node-template/runtime/src/lib.rs
* fix build
* Update utils/frame/try-runtime/cli/src/lib.rs
Co-authored-by: David <dvdplm@gmail.com>
* Update utils/frame/try-runtime/cli/src/commands/execute_block.rs
Co-authored-by: David <dvdplm@gmail.com>
* address all review comments
* fix typos
* revert spec change
* last touches
* update docs
* fmt
* remove some debug_assertions
* fmt
Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: command-bot <>
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
Co-authored-by: David <dvdplm@gmail.com>
* Ranked Collective pallet
* Fixes
* benchmarks
* Weights
* Allow class voting in rank
Use bare ayes for calculating support.
Allow only promotion/demotion by one rank only.
Allow removal of member with rank zero only.
Use new Tally API
* Index by rank, still O(1).
* Custom vote weights
* Formatting
* Update frame/ranked-collective/src/lib.rs
* Broken :(
* origin guard; cleanup uses new API
* Formatting
* Promote/demote by rank
* Formatting
* Use new API
* Remove code in another PR
* Remove code in another PR
* Formatting
* Remove code in another PR
* Docs
* Docs
* Bump
* Fixes
* Formatting
* Fixes
* Create a dependency injection trait named Locker that can be implemented downstream to enable locking of an asset. Use case defined in RMRK substrate pallet PR76
* Formatting
* Change impl Locker function name to is_locked
* Remove unused import
* Add docstring header
* Remove impl_locker file and add Locker trait to frame_support::traits
* Expose Locker from frame_support::traits::misc
* Formatting
* Move to tokens folder
* Move to tokens folder
* Format and remove Locker from misc traits
* Punctuation
* Update frame/support/src/traits/tokens/misc.rs
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
Co-authored-by: Giles Cope <gilescope@gmail.com>
* Allow pallet errors to contain at most one field
* Update docs on pallet::error
* Reword documentation
* cargo fmt
* Introduce CompactPalletError trait and require #[pallet::error] fields to implement them
* cargo fmt
* Do not assume tuple variants
* Add CompactPalletError derive macro
* Check for error type compactness in construct_runtime
* cargo fmt
* Derive CompactPalletError instead of implementing it directly during macro expansion
* Implement CompactPalletError on OptionBool instead of Option<bool>
* Check for type idents instead of variant ident
* Add doc comments for ErrorCompactnessTest
* Add an trait implementation of ErrorCompactnessTest for ()
* Convert the error field of DispatchError to a 4-element byte array
* Add static check for pallet error size
* Rename to MAX_PALLET_ERROR_ENCODED_SIZE
* Remove ErrorCompactnessTest trait
* Remove check_compactness
* Return only the most significant byte when constructing a custom InvalidTransaction
* Rename CompactPalletError to PalletError
* Use counter to generate unique idents for assert macros
* Make declarative pallet macros compile with pallet error size checks
* Remove unused doc comment
* Try and fix build errors
* Fix build errors
* Add macro_use for some test modules
* Test fix
* Fix compilation errors
* Remove unneeded #[macro_use]
* Resolve import ambiguity
* Make path to pallet Error enum more specific
* Fix test expectation
* Disambiguate imports
* Fix test expectations
* Revert appending pallet module name to path
* Rename bags_list::list::Error to BagError
* Fixes
* Fixes
* Fixes
* Fix test expectations
* Fix test expectation
* Add more implementations for PalletError
* Lift the 1-field requirement for nested pallet errors
* Fix UI test expectation
* Remove PalletError impl for OptionBool
* Use saturating operations
* cargo fmt
* Delete obsolete test
* Fix test expectation
* Try and use assert macro in const context
* Pull out the pallet error size check macro
* Fix UI test for const assertion
* cargo fmt
* Apply clippy suggestion
* Fix doc comment
* Docs for create_tt_return_macro
* Ensure TryInto is imported in earlier Rust editions
* Apply suggestions from code review
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* Fix up comments and names
* Implement PalletError for Never
* cargo fmt
* Don't compile example code
* Bump API version for block builder
* Factor in codec attributes while derving PalletError
* Rename module and fix unit test
* Add missing attribute
* Check API version and convert ApplyExtrinsicResult accordingly
* Rename BagError to ListError
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* Use codec crate re-exported from frame support
* Add links to types mentioned in doc comments
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* cargo fmt
* cargo fmt
* Re-add attribute for hidden docs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
* add a blueprint of how defensive traits could look like
* add something for arithmetic as well
* add some use cases in different pallets
* some build fixing
* Some new stuff and examples
* Fix deadly bug
* add more doc.
* undo faulty change to assets pallet
* Update frame/support/src/traits/misc.rs
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* some review comments
* remove draft comment
* Fix ident test
* Fix proxy tests as well
* a few new ideas
* Fix build
* Fix doc
Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
* some improvements to bounded vec
* revert license tweak
* more tests
* fix
* Update frame/support/src/storage/bounded_vec.rs
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* add the same stuff for btree map and set as well
Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
* pallet-scheduler: Introduce `OriginPrivilegeCmp`
When a scheduled task should be canceled, the origin that tries to
cancel the task is compared to the origin the task should be executed
with. Before this pr this check only allowed that both origins are
equal. However, this is problematic as this means that for example a
council origin it needs to be have the same amount of yes votes to
cancel the scheduled task. While a council origin with more yes votes
should be able to cancel this task. This happened recently on Kusama and
lead to a failed cancelation of a scheduled task. With this pr the two
origins are compared and the cancelling origin needs to have greater or
equal privileges as the origin that scheduled the task. What a greater,
equal or less privilege is, can be configured in the runtime.
For simplicity, a `EqualPrivilegeOnly` implementation is provided that
only checks if two origins are equal. So, this mimics the old behaviour.
* FMT
* fix import
* Small optimizations
Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
* pallet-multisig: Improve opaque call handling
Before the opaque call was just a type redefinition of `Vec<u8>`. With metadata v14 that was
breaking external tools, as they stopped looking at the type name. To improve the situation the
`WrapperKeepOpaque` type is introduced that communicates to the outside the correct type info.
* Cleanup
* Fix benchmarks
* FMT
* Record pallet indices in CallMetadata
* Resurrect PalletVersion infrastructure and rename as CrateVersion
* cargo fmt
* Add missing runtime generics to pallet struct
* Fix path to instance
* Fix test
* Fix UI test expectations
* Fix UI test expectations
* Move crate_version function to PalletInfoAccess
* Update UI test expectations
* Add crate_name method to PalletInfo
* Convert path to module name instead of exposing crate name
* cargo fmt
* Keep the double colons when constructing the module name
* Remove unused import
* Update UI test expectations
* Update frame/support/src/traits/metadata.rs
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
* Update UI test expectations
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
* Integrating WrapperOpaque from PR #9738
* Adding storage_info to pallet im-online
Changing some `Vec` to `WeakBoundedVec`
Adding the following bounds:
* `MaxKeys
* `MaxPeerInHeartbeats`
* `MaxPeerDataEncodingSize`
to limit the size of `WeakBoundedVec`
* Fix syntax
* Need to clone keys
* Changes in formatting
* Move `PalletVersion` away from the crate version
Before this pr, `PalletVersion` was referring to the crate version that
hosted the pallet. This pr introduces a custom `package.metadata.frame`
section in the `Cargo.toml` that can contain a `pallet-version` key
value pair. While the value is expected to be a valid u16. If this
key/value pair isn't given, the version is set to 1.
It also changes the `PalletVersion` declaration. We now only have one
`u16` that represents the version. Not a major/minor/patch version. As
the old `PalletVersion` was starting with the `u16` major, decoding the
old values will work.
* Overhaul the entire implementation
- Drop PalletVersion
- Introduce StorageVersion
- StorageVersion needs to be set in the crate and set for the macros
- Added migration
* Fix migrations
* Review feedback
* Remove unneeded dep
* remove pub consts
* Brings back logging and implements `GetStorageVersion`
* Return weight from migration
* Fmt and remove unused import
* Update frame/support/src/dispatch.rs
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
* Update frame/support/src/traits/metadata.rs
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
Co-authored-by: Guillaume Thiolliere <gui.thiolliere@gmail.com>
* Run cargo fmt on the whole code base
* Second run
* Add CI check
* Fix compilation
* More unnecessary braces
* Handle weights
* Use --all
* Use correct attributes...
* Fix UI tests
* AHHHHHHHHH
* 🤦
* Docs
* Fix compilation
* 🤷
* Please stop
* 🤦 x 2
* More
* make rustfmt.toml consistent with polkadot
Co-authored-by: André Silva <andrerfosilva@gmail.com>