* Limit number of elements loaded from the stagnant key
This will likely be required if we enable stagnant prunning as currently database has way
too many entries to be prunned in a single iteration
* Fmt run
* Slightly improve logging
* Some more debug nits
* Fmt pass
* Add stagnant prunning delay
* Enable stagnant check worker
* Implement stagnant pruning without stagnant checks
* Update node/core/chain-selection/src/tree.rs
Co-authored-by: Andronik <write@reusable.software>
* Apply suggestions from code review
Co-authored-by: Andronik <write@reusable.software>
Co-authored-by: Andronik <write@reusable.software>
* pallet-mmr: fix some typos
* pallet-mmr: make the MMR resilient to chain forks
* pallet-mmr: get hash for block that added node
* beefy-mmr: add debug logging
* add explanatory comment
* account for block offset of pallet activation
* add support for finding all nodes added by leaf
* minor improvements
* add helper to return all nodes added to mmr with a leaf append
* simplify leaf_node_index_to_leaf_index
summing the (shifted) differences in peak positions adds up to the (shifted) final position, so
don't need to fold over positions.
* dead fish: this also doesn't work
The idea was to keep a rolling window of `(parent_hash, pos)` leaf
entries in the offchain db, with the window matching the one
that provides `block_num -> block_hash` mappings in `frame_system`.
Once a leaf exits the window it would be "canonicalized" by switching
its offchain db key from `(parent_hash, pos)` to simple `pos`.
This doesn't work however because there's no way to get leaf contents
from offchain db while in runtime context.. so no way to get+clear+set
leaf to change its key in offchain db.
Ideas:
1. move the "canonicalization" logic to offchain worker
2. enhance IndexingApi with "offchain::move(old_key, new_key)"
This is weird, but correct, deterministic and safe AFAICT, so
it could be exposed to runtime.
* simplify rightmost_leaf_node_index_from_pos
* minor fix
* move leaf canonicalization to offchain worker
* move storage related code to storage.rs
* on offchain reads use canonic key for old leaves
* fix offchain worker write using canon key
* fix pallet-mmr tests
* add documentation and fix logging
* add offchain mmr canonicalization test
* test canon + generate + verify
* fix pallet-beefy-mmr tests
* implement review suggestions
* improve test
* pallet-mmr: add offchain pruning of forks
* pallet-mmr: improve offchain pruning
Instead of keeping pruning map as single blob in offchain db,
keep individual parent-hash lists with block-num identifier as part
of the offchain key.
Signed-off-by: acatangiu <adrian@parity.io>
* pallet-mmr: improve MMRStore<OffchainStorage>::get()
Do the math and retrieve node using correct (canon or non-canon)
offchain db key, instead of blindly looking in both canon and non-canon
offchain db locations for each node.
Still fallback on looking at both if for any reason it's not where
expected.
Signed-off-by: acatangiu <adrian@parity.io>
* pallet-mmr: storage: improve logs
* fix tests: correctly persist overlay
runtime indexing API works on overlay, whereas offchain context
bypasses overlay, so for loops > canon-window, canon would fail.
* pallet-mmr: fix numeric typo in test
* add comment around LeafData requirements
Signed-off-by: acatangiu <adrian@parity.io>
Co-authored-by: Robert Hambrock <roberthambrock@gmail.com>
* Fixed the bug with transfer value.
* Apply suggestions from code review
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
* Moved check into `initial_transfer`
* Fmt
Co-authored-by: Alexander Theißen <alex.theissen@me.com>
* Limit number of elements loaded from the stagnant key
This will likely be required if we enable stagnant prunning as currently database has way
too many entries to be prunned in a single iteration
* Fmt run
* Slightly improve logging
* Some more debug nits
* Fmt pass
* zombienet: try to fix parachains upgrade test
* try a different collator image
* Revert "try a different collator image"
This reverts commit c83b2929f5a703be0979b4429ab01808408b074d.
* try setting cumulusBased
* fix zombienet upgrade test
* change image
* update command for test
* update zombienet image
* bump zombienet version
* bump zn version
* Revert "try setting cumulusBased"
This reverts commit 0312fa0a7a19065e097b186a08757938abd7c130.
* Revert "update command for test"
This reverts commit 81707e30188a1838e952d66deedaecbff6cb2971.
* Revert "change image"
This reverts commit 43a4f4a6a0286f5bf6698a44b82de835a723b531.
* zombienet: change validator image to a PR branch
Co-authored-by: Javier Viola <javier@parity.io>
* Prevend unsoundness in environments with broken `madvise(MADV_DONTNEED)`
* Add the `std` feature to `rustix` dependency
Apparently not having this breaks compilation on non-nightly toolchains.
* Autodetect the page size when checking whether `madvise` works
* Only make sure that the madvice check doesn't return `Err`
* Democracy.fast_track not allowed with zero voting period
* revert static parameter alter line
* ensure voting period greater zero
* update doc for fast_track
* unit test: instant fast track to the next block referendum is backed
* fix typos in comments
* Refactoring opts out
* Implement info command
fix#5560
* remove useless change
* Remove unnecessary brackets
* Fix and add tests
* Promote the uri flag to global
* Ignore lint identity ops
* Reverse adding #[allow(identity_op)]
* Add cli test for the info command
* Add licende headers and fix some grumbles
* Add retrieval of the linked version and make the json output optional
* Fix tests
* Keep it generic and renamed builtin into linked
* Rebase master
* Add runtimes compatibility information
* Silence erroneous warning about unsafe
* Fix spellcheck
* Update utils/staking-miner/src/runtime_versions.rs
Co-authored-by: Niklas Adolfsson <niklasadolfsson1@gmail.com>