- Mar 03, 2025
-
-
Matteo Muraca authored
Description Part of #3326 As per title, `pallet::getter` usage has been removed from `pallet-nft-fractionalization`. --------- Co-authored-by:
Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
-
- Feb 28, 2025
-
-
Alexandru Vasile authored
This PR handles a case where we called the `poll_next` on an outbound substream notification to check if the stream is closed. It is entirely possible that the `poll_next` would return an `io::error`, for example end of file. This PR ensures that we make the distinction between unexpected incoming data, and error originated from `poll_next`. While at it, the bulk of the PR change propagates the PeerID from the network behavior, through the notification handler, to the notification outbound stream for logging purposes. cc @paritytech/networking Part of: https://github.com/paritytech/polkadot-sdk/issues/7722 --------- Signed-off-by:
Alexandru Vasile <alexandru.vasile@parity.io>
-
Alexander Theißen authored
Fixes https://github.com/paritytech/polkadot-sdk/issues/6723 ## Motivation Internal auditors recommended to not truncate Polkadot Addresses when deriving Ethereum addresses from it. Reasoning is that they are raw public keys where truncating could lead to collisions when weaknesses in those curves are discovered in the future. Additionally, some pallets generate account addresses in a way where only the suffix we were truncating contains any entropy. The changes in this PR act as a safe guard against those two points. ## Changes made We change the `to_address` function to first hash the AccountId32 and then use trailing 20 bytes as `AccountId20`. If the `AccountId32` ends with 12x 0xEE we keep our current behaviour of just truncating those trailing bytes. ## Security Discussion This will allow us to still recover the original `AccountId20` because those are constructed by just adding those 12 bytes. Please note that generating an ed25519 key pair where the trailing 12 bytes are 0xEE is theoretically possible as 96bits is not a huge search space. However, this cannot be used as an attack vector. It will merely allow this address to interact with `pallet_revive` without registering as the fallback account is the same as the actual address. The ultimate vanity address. In practice, this is not relevant since the 0xEE addresses are not valid public keys for sr25519 which is used almost everywhere. tl:dr: We keep truncating in case of an Ethereum address derived account id. This is safe as those are already derived via keccak. In every other case where we have to assume that the account id might be a public key. Therefore we first hash and then take the trailing bytes. ## Do we need a Migration for Westend No. We changed the name of the mapping. This means the runtime will not try to read the old data. Ethereum keys are unaffected by this change. We just advise people to re-register their AccountId32 in case they need to use it as it is a very small circle of users (just 3 addresses registered). This will not cause disturbance on Westend. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Serban Iorga authored
Related to https://github.com/paritytech/polkadot-sdk/issues/7360 This PR adds `DecodeWithMemTracking` as a trait bound for `Header`, `Block` and `TransactionExtension` and derives it for all the types that implement these traits in `polkadot-sdk`.
-
- Feb 27, 2025
-
-
Utkarsh Bhardwaj authored
# Description * This PR adds a new extrinsic `poke_deposit` to `pallet-multisig`. This extrinsic will be used to re-adjust the deposits made in the pallet to create a multisig operation after AHM. * Part of #5591 ## Review Notes * Added a new extrinsic `poke_deposit` in `pallet-multisig`. * Added a new event `DepositPoked` to be emitted upon a successful call of the extrinsic. * Although the immediate use of the extrinsic will be to give back some of the deposit after the AH-migration, the extrinsic is written such that it can work if the deposit decreases or increases (both). * The call to the extrinsic would be `free` if an actual adjustment is made to the deposit and `paid` otherwise. * Added tests to test all scenarios. ## TO-DOs * [x] Add Benchmark * [x] Run CI cmd bot to benchmark --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Giuseppe Re <giuseppe.re@parity.io>
-
Alexandru Vasile authored
This PR ensures compatibility in terms of expectations between the libp2p and litep2p network backends at the notification protocol level. The libp2p node is tested with the `Notification` behavior that contains the protocol controller, while litep2p is tested at the lowest level API (without substrate shim layers). ## Notification Behavior (I) Libp2p protocol controller will eagerly reopen a closed substream, even if it is the one that closed it: - When a node (libp2p or litep2p) closes the substream with **libp2p**, the **libp2p** controller will reopen the substream - When **libp2p** closes the substream with a node (either litep2p with no controller or libp2p), the **libp2p** controller will reopen the substream - However in this case, libp2p was the one closing the substream signaling it is no longer interested in communicating with the other side (II) Notifications are lost and not reported to the higher level in the following scenario: - T0: Node A opens a substream with Node B - T1: Node A closes the substream or the connection with Node B - T2: Node B sends a notification to Node A => *notification is lost* and never reported - T3: Node B detects the closed substream or connection ## Testing This PR effectively checks: - connectivity at the notification level - litep2p rejecting libp2p substream and keep-alive mechanism functionality - libp2p disconnecting libp2p and connection re-establishment (and all the other permutations) - idling of connections with active substreams and keep-alive mechanism is not enforced Prior work: - https://github.com/paritytech/polkadot-sdk/pull/7361 cc @paritytech/networking --------- Signed-off-by:
Alexandru Vasile <alexandru.vasile@parity.io> Co-authored-by:
Dmitry Markin <dmitry@markin.tech>
-
- Feb 26, 2025
-
-
Ankan authored
closes https://github.com/paritytech/polkadot-sdk/issues/5742 Need to be backported to stable2503 release. With the migration of staking accounts to [fungible currency](https://github.com/paritytech/polkadot-sdk/pull/5501), we can now allow pool users to stake directly and vice versa. This update introduces a configurable filter mechanism to determine which accounts can join a nomination pool. ## Example Usage ### 1. Allow any account to join a pool To permit all accounts to join a nomination pool, use the `Nothing` filter: ```rust impl pallet_nomination_pools::Config for Runtime { ... type Filter = Nothing; } ``` ### 2. Restrict direct stakers from joining a pool To prevent direct stakers from joining a nomination pool, use `pallet_staking::AllStakers`: ```rust impl pallet_nomination_pools::Config for Runtime { ... type Filter = pallet_staking::AllStakers<Runtime>; } ``` ### 3. Define a custom filter For more granular control, you can define a custom filter: ```rust struct MyCustomFilter<T: Config>(core::marker::PhantomData<T>); impl<T: Config> Contains<T::AccountId> for MyCustomFilter<T> { fn contains(account: &T::AccountId) -> bool { todo!("Implement custom logic. Return `false` to allow the account to join a pool.") } } ``` --------- Co-authored-by:
Bastian Köcher <info@kchr.de>
-
xermicus authored
This PR changes the behavior of delegate calls when the callee is not a contract account: Instead of returning a `CodeNotFound` error, this is allowed and the caller observes a successful call with empty output. The change makes for example the following contract behave the same as on EVM: ```Solidity contract DelegateCall { function delegateToLibrary() external returns (bool) { address testAddress = 0x0000000000000000000000000000000000000000; (bool success, ) = testAddress.delegatecall( abi.encodeWithSignature("test()") ); return success; } } ``` Closes https://github.com/paritytech/revive/issues/235 --------- Signed-off-by:
xermicus <cyrill@parity.io> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
PG Herveou authored
Add ECrecover 0x1 precompile and remove the unstable equivalent host function. - depend on https://github.com/paritytech/polkadot-sdk/pull/7676 --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
- Feb 25, 2025
-
-
Giuseppe Re authored
The runtime API implemented version is not explicitly shown in metadata, so here we add it to improve developer experience. We need to bump `frame-metadata` and `merkleized-metadata` to allow this new feature. This closes #7352 . _Refactor_: also changing all the occurrences of `ViewFunctionMethod` to just `ViewFunction` for metadata types. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
CrabGopher authored
# Description Seems like SubstrateWeights that used T::DBWeights was not public unlike the frame_system's Call weights. PR just made those weights public ## Integration Instead of using `()` impl which used RockDB weights, ExtensionWeights can be used to to use the provided DBWeights to System config
-
- Feb 24, 2025
-
-
PG Herveou authored
Fix tracing should wrap around the entire call stack execution --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
CrabGopher authored
`sc-cli` brings rocksdb dependency into frame-benchmarking-cli when used with `default-features = false`. This PR makes rocksdb deps optional that sc-cli brings in some of the crates. I think I covered all the crates that depend on sc-cli but please let me know if I missed any. Fixes: https://github.com/paritytech/polkadot-sdk/issues/3793
-
Raymond Cheung authored
# Description This PR introduces a lightweight log-capturing mechanism for XCM unit tests, simplifying debugging by enabling structured log assertions. It partially addresses #6119 and #6125, offering an optional way to verify logs in tests while remaining unobtrusive in normal execution. # Key Changes * [x] Introduces a log capture utility in `sp_tracing`. * [x] Adds XCM test examples demonstrating how and when to use log capturing. # Review Notes: * The log capture mechanism is opt-in and does not affect existing tests unless explicitly used. * The implementation is minimal and does not add complexity to existing test setups. * It provides a structured alternative to [`sp_tracing::init_for_tests()`](https://paritytech.github.io/polkadot-sdk/master/sp_tracing/fn.init_for_tests.html) for log verification in automated tests. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
seemantaggarwal authored
Adding chain-spec-builder as a subcommand into Polkadot omni node
-
paritytech-cmd-bot-polkadot-sdk[bot] authored
Auto-update of all weights for 2025-02-21-1740149841. Subweight results: - [now vs master](https://weights.tasty.limo/compare?repo=polkadot-sdk&threshold=5&path_pattern=.%2F**%2Fweights%2F**%2F*.rs%2C.%2F**%2Fweights.rs&method=asymptotic&ignore_errors=true&unit=time&old=master&new=update-weights-weekly-2025-02-21-1740149841) - [now vs polkadot-v1.15.6 (2025-01-16)](https://weights.tasty.limo/compare?repo=polkadot-sdk&threshold=5&path_pattern=.%2F**%2Fweights%2F**%2F*.rs%2C.%2F**%2Fweights.rs&method=asymptotic&ignore_errors=true&unit=time&old=polkadot-v1.15.6&new=update-weights-weekly-2025-02-21-1740149841) - [now vs polkadot-v1.16.2 (2024-11-14)](https://weights.tasty.limo/compare?repo=polkadot-sdk&threshold=5&path_pattern=.%2F**%2Fweights%2F**%2F*.rs%2C.%2F**%2Fweights.rs&method=asymptotic&ignore_errors=true&unit=time&old=polkadot-v1.16.2&new=update-weights-weekly-2025-02-21-1740149841) Co-authored-by:
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
- Feb 23, 2025
-
-
Davide Galassi authored
Essentially, this locks `bandersnatch_vrfs` to a specific branch of a repository I control. This is a temporary workaround to avoid issues like https://github.com/paritytech/polkadot-sdk/issues/7653 until https://github.com/paritytech/polkadot-sdk/pull/7669 is ready. Closes: https://github.com/paritytech/polkadot-sdk/issues/7653 @drskalman --------- Co-authored-by:
Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
-
- Feb 21, 2025
-
-
PG Herveou authored
Remove JS examples, they now belongs to the evm-test-suite repo --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
- Feb 20, 2025
-
-
Utkarsh Bhardwaj authored
# Description * This PR adds a new extrinsic `reconsider` to `pallet-indices`. This extrinsic will be used to re-adjust the deposits made in the pallet. * Part of #5591 ## Review Notes * Added a new extrinsic `reconsider` in `pallet-indices`. * Added a new event `DepositReconsidered` to be emitted upon a successful call of the extrinsic. * Although the immediate use of the extrinsic will be to give back some of the deposit after the AH-migration, the extrinsic is written such that it can work if the deposit decreases or increases (both). * The call to the extrinsic would be `free` if an actual adjustment is made to the deposit and `paid` otherwise. * Added tests to test all scenarios. * Added a benchmark to test the "worst case" (maximum compute) flow of the extrinsic which is when the deposit amount is updated to a new value. ## TO-DOs * [x] Run CI cmd bot to benchmark --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github...>
-
Alexandru Vasile authored
This PR updates litep2p to version 0.9.1. The yamux config is entirely removed to mirror the libp2p yamux upstream version. While at it, I had to bump indexmap and URL as well. ## [0.9.1] - 2025-01-19 This release enhances compatibility between litep2p and libp2p by using the latest Yamux upstream version. Additionally, it includes various improvements and fixes to boost the stability and performance of the WebSocket stream and the multistream-select protocol. ### Changed - yamux: Switch to upstream implementation while keeping the controller API ([#320](https://github.com/paritytech/litep2p/pull/320)) - req-resp: Replace SubstreamSet with FuturesStream ([#321](https://github.com/paritytech/litep2p/pull/321)) - cargo: Bring up to date multiple dependencies ([#324](https://github.com/paritytech/litep2p/pull/324)) - build(deps): bump hickory-proto from 0.24.1 to 0.24.3 ([#323](https://github.com/paritytech/litep2p/pull/323)) - build(...
-
PG Herveou authored
Various pallet-revive improvements - add check for precompiles addresses, So we can easily identify which one are being called and not supported yet - fixes debug_call for revert call If a call revert we still want to get the traces for that call, that matches geth behaviors, diff tests will be added to the test suite for this - fixes traces for staticcall The call type was not always being reported properly. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
Alexander Theißen authored
Ref https://github.com/paritytech/ci_cd/issues/1107 We mainly need that so that we can finally compile the `pallet_revive` fixtures on stable. I did my best to keep the commits focused on one thing to make review easier. All the changes are needed because rustc introduced more warnings or is more strict about existing ones. Most of the stuff could just be fixed and the commits should be pretty self explanatory. However, there are a few this that are notable: ## `non_local_definitions ` A lot of runtimes to write `impl` blocks inside functions. This makes sense to reduce the amount of conditional compilation. I guess I could have moved them into a module instead. But I think allowing it here makes sense to avoid the code churn. ## `unexpected_cfgs` The FRAME macros emit code that references various features like `std`, `runtime-benchmarks` or `try-runtime`. If a create that uses those macros does not have those features we get this warning. Those were mostly when defining a `mock` runtime. I opted for silencing the warning in this case rather than adding not needed features. For the benchmarking ui tests I opted for adding the `runtime-benchmark` feature to the `Cargo.toml`. ## Failing UI test I am bumping the `trybuild` version and regenerating the ui tests. The old version seems to be incompatible. This requires us to pass `deny_warnings` in `CARGO_ENCODED_RUSTFLAGS` as `RUSTFLAGS` is ignored in the new version. ## Removing toolchain file from the pallet revive fixtures This is no longer needed since the latest stable will compile them fine using the `RUSTC_BOOTSTRAP=1`. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Serban Iorga authored
Related to https://github.com/paritytech/polkadot-sdk/issues/7360
-
Francisco Aguirre authored
Pallet-revive's README has an outdated link for dispatchables documentation in its README. It was giving 404. Put the up-to-date one.
-
- Feb 19, 2025
-
-
Jonathan Brown authored
# Description #6929 requests more extrinsics for "managing the network's coretime allocations without needing to dabble with migration+runtime upgrade or set/kill storage patterns" This pull request implements the remove_assignment() extrinsic. ## Integration Downstream projects need to benchmark the weight for the remove_assignment() extrinsic. --------- Co-authored-by:
Jonathan Brown <jbrown@acuity.network> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Dónal Murray <donal.murray@parity.io>
-
Jonathan Brown authored
# Description #6929 requests more extrinsics for "managing the network's coretime allocations without needing to dabble with migration+runtime upgrade or set/kill storage patterns" This pull request implements the remove_lease() extrinsic. ## Integration Downstream projects need to benchmark the weight for the remove_lease() extrinsic. ## Review Notes Mentorship is requested to ensure this is implemented correctly. The lease is removed from state using the TaskId as a key. Is this sufficient. Does the extrinsic need to do anything else? --------- Co-authored-by:
Jonathan Brown <jbrown@acuity.network> Co-authored-by:
Bastian Köcher <git@kchr.de> Co-authored-by: command-bot <> Co-authored-by:
Dónal Murray <donalm@seadanda.dev> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Dónal Murray <donal.murray@parity.io>
-
Serban Iorga authored
Related to https://github.com/paritytech/polkadot-sdk/issues/7360 Derive `DecodeWithMemTracking` for the structures in the cumulus pallets and for the structures in the `polkadot-sdk` runtimes. The PR contains no functional changes and no manual implementation. Just deriving `DecodeWithMemTracking`.
-
Michal Kucharczyk authored
#### Overview This pull request refactors the transaction pool `graph` module by renaming components for better clarity. The `EventHandler` trait was introduced to enhance flexibility in handling transaction lifecycle events. Changes include renaming `graph::Listener` to `graph::EventDispatcher` and moving certain functionalities from `graph` to `view` module in order to decouple `graph` from `view`-related specifics. This PR does not introduce changes in the logic. #### Notes for Reviewers All the changes looks dense at first, but in fact following was done: - The `graph::Listener` was renamed to [`graph::EventDispatcher`](https://github.com/paritytech/polkadot-sdk/blob/515cb404/substrate/client/transaction-pool/src/graph/listener.rs#L74C12-L74C27), to better reflect its role in dispatching transaction-related events from `ValidatedPool`. The `EventDispatcher` now utilizes the `L: EventHandler` generic type to handl...
-
- Feb 18, 2025
-
-
Michal Kucharczyk authored
This PR adds implementation of `Ord, Eq, PartialOrd, PartialEq` traits for [`HashAndNumber` ](https://github.com/paritytech/polkadot-sdk/blob/6e645915 /substrate/primitives/blockchain/src/header_metadata.rs#L149-L154) struct. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Serban Iorga authored
Related to https://github.com/paritytech/polkadot-sdk/issues/7360 This PR implements `DecodeWithMemTracking` for the types in the frame pallets The PR is verbose, but it's very simple. `DecodeWithMemTracking` is simply derived for most of the types. There are only 3 exceptions which are isolated into 2 separate commits.
-
Xavier Lau authored
Add a new extrinsic `dispatch_as_fallible`. It's almost the same as [`Pallet::dispatch_as`] but forwards any error of the inner call. Closes #219. And add more unit tests to cover `dispatch_as` and `dispatch_as_fallible`. --- Polkadot address: 156HGo9setPcU2qhFMVWLkcmtCEGySLwNqa3DaEiYSWtte4Y --------- Signed-off-by:
Xavier Lau <x@acg.box> Co-authored-by:
Bastian Köcher <git@kchr.de> Co-authored-by:
Bastian Köcher <info@kchr.de> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
PG Herveou authored
Moving exec tests into a new file --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Alexander Theißen <alex.theissen@me.com>
-
Ankan authored
closes https://github.com/paritytech/polkadot-sdk/issues/6508. ## TODO - [x] Migrate storage `DisabledValidators` both in pallet-session and pallet-staking. - [ ] Test that disabled validator resets at era change. - [ ] Add always sorted try-runtime test for `DisabledValidators`. - [ ] More test coverage for the disabling logic. --------- Co-authored-by:
Gonçalo Pestana <g6pestana@gmail.com> Co-authored-by: command-bot <> Co-authored-by:
Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by:
Guillaume Thiolliere <gui.thiolliere@gmail.com> Co-authored-by:
kianenigma <kian@parity.io> Co-authored-by:
Giuseppe Re <giuseppe.re@parity.io> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Tsvetomir Dimitrov authored
Recreation of https://github.com/paritytech/polkadot-sdk/pull/7357 on top of master. The old PR messes up the git history too much so I am recreating it from scratch. This PR is work in progress. It's purpose is to commit initial structure of `pallet-staking-ah-client` and `pallet-staking-rc-client` to master. The changes will be polished by a follow up PRs which will be backported. Related issues: https://github.com/paritytech/polkadot-sdk/issues/6167 and https://github.com/paritytech/polkadot-sdk/issues/6166 This PR introduces the initial structure for `pallet-ah-client` and `pallet-rc-client`. These pallets will reside on the relay chain and AssetHub, respectively, and will manage the interaction between `pallet-session` on the relay chain and `pallet-staking` on AssetHub. Both pallets are experimental and not intended for production use. TODOs: - [ ] Probably handle https://github.com/paritytech/polkadot-sdk/issues/6344 here. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Ankan <10196091+Ank4n@users.noreply.github.com>
-
- Feb 17, 2025
-
-
Ankan authored
closes https://github.com/paritytech/polkadot-sdk/issues/3610. helps https://github.com/paritytech/polkadot-sdk/issues/6344, but need to migrate storage `Offences::Reports` before we can remove exposure dependency in RC pallets. replaces https://github.com/paritytech/polkadot-sdk/issues/6788. ## Context Slashing in staking is unbounded currently, which is a major blocker until staking can move to a parachain (AH). ### Current Slashing Process (Unbounded) 1. **Offence Reported** - Offences include multiple validators, each with potentially large exposure pages. - Slashes are **computed immediately** and scheduled for application after **28 eras**. 2. **Slash Applied** - All unapplied slashes are executed in **one block** at the start of the **28th era**. This is an **unbounded operation**. ### Proposed Slashing Process (Bounded) 1. **Offence Queueing** - Offences are **queued** after basic sanity checks. 2. **Paged Offence Processing (Computing Slash)** - Slashes are **computed one validator exposure page at a time**. - **Unapplied slashes** are stored in a **double map**: - **Key 1 (k1):** `EraIndex` - **Key 2 (k2):** `(Validator, SlashFraction, PageIndex)` — a unique identifier for each slash page 3. **Paged Slash Application** - Slashes are **applied one page at a time** across multiple blocks. - Slash application starts at the **27th era** (one era earlier than before) to ensure all slashes are applied **before stakers can unbond** (which starts from era 28 onwards). --- ## Worst-Case Block Calculation for Slash Application ### Polkadot: - **1 era = 24 hours**, **1 block = 6s** → **14,400 blocks/era** - On parachains (**12s blocks**) → **7,200 blocks/era** ### Kusama: - **1 era = 6 hours**, **1 block = 6s** → **3,600 blocks/era** - On parachains (**12s blocks**) → **1,800 blocks/era** ### Worst-Case Assumptions: - **Total stakers:** 40,000 nominators, 1000 validators. (Polkadot currently has ~23k nominators and 500 validators) - **Max slashed:** 50% so 20k nominators, 250 validators. - **Page size:** Validators with multiple page: (512 + 1)/2 = 256 , Validators with single page: 1 ### Calculation: There might be a more accurate way to calculate this worst-case number, and this estimate could be significantly higher than necessary, but it shouldn’t exceed this value. Blocks needed: 250 + 20k/256 = ~330 blocks. ## *Potential Improvement:* - Consider adding an **Offchain Worker (OCW)** task to further optimize slash application in future updates. - Dynamically batch unapplied slashes based on number of nominators in the page, or process until reserved weight limit is exhausted. ---- ## Summary of Changes ### Storage - **New:** - `OffenceQueue` *(StorageDoubleMap)* - **K1:** Era - **K2:** Offending validator account - **V:** `OffenceRecord` - `OffenceQueueEras` *(StorageValue)* - **V:** `BoundedVec<EraIndex, BoundingDuration>` - `ProcessingOffence` *(StorageValue)* - **V:** `(Era, offending validator account, OffenceRecord)` - **Changed:** - `UnappliedSlashes`: - **Old:** `StorageMap<K -> Era, V -> Vec<UnappliedSlash>>` - **New:** `StorageDoubleMap<K1 -> Era, K2 -> (validator_acc, perbill, page_index), V -> UnappliedSlash>` ### Events - **New:** - `SlashComputed { offence_era, slash_era, offender, page }` - `SlashCancelled { slash_era, slash_key, payout }` ### Error - **Changed:** - `InvalidSlashIndex` → Renamed to `InvalidSlashRecord` - **Removed:** - `NotSortedAndUnique` - **Added:** - `EraNotStarted` ### Call - **Changed:** - `cancel_deferred_slash(era, slash_indices: Vec<u32>)` → Now takes `Vec<(validator_acc, slash_fraction, page_index)>` - **New:** - `apply_slash(slash_era, slash_key: (validator_acc, slash_fraction, page_index))` ### Runtime Config - `FullIdentification` is now set to a unit type (`()`) / null identity, replacing the previous exposure type for all runtimes using `pallet_session::historical`. ## TODO - [x] Fixed broken `CancelDeferredSlashes`. - [x] Ensure on_offence called only with validator account for identification everywhere. - [ ] Ensure we never need to read full exposure. - [x] Tests for multi block processing and application of slash. - [x] Migrate UnappliedSlashes - [x] Bench (crude, needs proper bench as followup) - [x] on_offence() - [x] process_offence() - [x] apply_slash() ## Followups (tracker [link](https://github.com/paritytech/polkadot-sdk/issues/7596)) - [ ] OCW task to process offence + apply slashes. - [ ] Minimum time for governance to cancel deferred slash. - [ ] Allow root or staking admin to add a custom slash. - [ ] Test HistoricalSession proof works fine with eras before removing exposure as full identity. - [ ] Properly bench offence processing and slashing. - [ ] Handle Offences::Reports migration when removing validator exposure as identity. --------- Co-authored-by:
Gonçalo Pestana <g6pestana@gmail.com> Co-authored-by: command-bot <> Co-authored-by:
Kian Paimani <5588131+kianenigma@users.noreply.github.com> Co-authored-by:
Guillaume Thiolliere <gui.thiolliere@gmail.com> Co-authored-by:
kianenigma <kian@parity.io> Co-authored-by:
Giuseppe Re <giuseppe.re@parity.io> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Qiwei Yang authored
# Description resolve #6468 # Checklist * [x] My PR includes a detailed description as outlined in the "Description" and its two subsections above. * [x] My PR follows the [labeling requirements]( https://github.com/paritytech/polkadot-sdk/blob/master/docs/contributor/CONTRIBUTING.md#Process ) of this project (at minimum one label for `T` required) * External contributors: ask maintainers to put the right label on your PR. * [x] I have made corresponding changes to the documentation (if applicable) * [x] I have added tests that prove my fix is effective or that my feature works (if applicable) --------- Co-authored-by: command-bot <>
-
nprt authored
Implements the `web3_clientVersion` method. This is a common requirement for external Ethereum libraries when querying a client. Fixes paritytech/contract-issues#26. --------- Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
Alexandru Vasile authored
This PR modifies the libp2p networking-specific log targets for granular control (e.g., just enabling trace for req-resp). Previously, all logs were outputted to `sub-libp2p` target, flooding the log messages on busy validators. ### Changes - Discover: `sub-libp2p::discovery` - Notification/behaviour: `sub-libp2p::notification::behaviour` - Notification/handler: `sub-libp2p::notification::handler` - Notification/service: `sub-libp2p::notification::service` - Notification/upgrade: `sub-libp2p::notification::upgrade` - Request response: `sub-libp2p::request-response` cc @paritytech/networking --------- Signed-off-by:
Alexandru Vasile <alexandru.vasile@parity.io> Co-authored-by:
Dmitry Markin <dmitry@markin.tech>
-
Oliver Tale-Yazdi authored
Preparation for AHM and making stuff public. --------- Signed-off-by:
Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by:
Dónal Murray <donal.murray@parity.io>
-
Daniel Olano authored
Returning an iterator in `TracksInfo::tracks()` instead of a static slice allows for more flexible implementations of `TracksInfo` that can use the chain storage without compromising a lot on the performance/memory penalty if we were to return an owned `Vec` instead. --------- Co-authored-by:
Pablo Andrés Dorado Suárez <hola@pablodorado.com>
-