Skip to content

Conversation

@EclesioMeloJunior
Copy link
Member

Description

  • Creates Statistics Collector subsytem
  • Defines the subsystem messages
/// Messages sent to the Statistics Collector subsystem.
#[derive(Debug)]
pub enum StatisticsCollectorMessage {
	// Approval vote received
	ApprovalVoting(Hash, CandidateHash, (ValidatorIndex, DelayTranche)),

	// Candidate received enough approval and now is approved
	CandidateApproved(CandidateHash, Hash),

	// Set of candidates that has not shared votes in time
	ObservedNoShows(SessionIndex, Vec<ValidatorIndex>),

	// All relay block's candidates are approved, therefore relay block is approved
	RelayBlockApproved(Hash)
}
  • Updated approval-voting to send data to the statistics collector subsytem

Next Steps

  • Collect approval distribution metrics (upload & downloads)
    • Define subsystem messages
    • Update approval distribution to send messages
  • Publish prometheus metrics
  • Calculate approvals tallies

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ EclesioMeloJunior
❌ EgorPopelyaev
You have signed the CLA already but the status is still pending? Let us recheck it.

- Inject Authority Discovery to Availability Distribution
- When responding to a chunk request get the peer id and retrive its authority ids
- In the Collector store the session info which enable to get the validator index from authority ids
EclesioMeloJunior and others added 30 commits November 24, 2025 08:39
)

Only works for contract accounts, not precompiles.
This is needed so that test nodes like anvil can send transactions from
contract accounts, a widely-used feature in tests

Needed for paritytech/foundry-polkadot#423
…ytech#10396)

`ExecuteBlock` exposes the `execute_block` function that is used by
`validate_block` to execute a block. In case auf AuRa the block
execution includes the verification of the seal and the removal of the
seal. To verify the seal, the block executor needs to load the current
authority set. The problem is that when we have storage proof reclaim
enabled and the host function is used in `on_initialize` before
`pallet_aura_ext::on_initialize` (this is where we fetch the authority
set to ensure it appears in the proof) is called, it leads to
`validate_block` returning a different size and thus, breaking the
block. To solve this issue `ExecuteBlock` is now split into seal
verification and execution of the verified block. In `validate_block`
the seal verification is then run outside of the block execution, not
leading to the issues of reporting different proof sizes.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Kunert <[email protected]>
This PR fixes up termination by changing the behavior to:

- The free balance (without ed) should be send away right away to the
beneficiary and not be delayed like the contract deletion.
- The ed and storage deposit will be send away only when terminating but
to the origin (delayed).
- The scheduling of the terminate needs to be reverted if the scheduling
frame reverts.
- `SELFDESTRUCT` should be allowed inside the constructor. The issuing
contract will exist as account without code for the remainder of the
transaction.
- The `terminate` pre-compile should revert if delegate called or its
caller was delegate called. This is just my opinion but if we are
changing semantics we can might as well add some security. We are
increasing the attack surface by allowing the destruction of any
contract (not only created in the current tx).


## Other fixes
- Storage refunds should no longer use `BestEffort`. This is necessary
to fail refunds in case some other locks (due to participation in gov
for example) prevent sending them away. This is in anticipation of new
pre-compiles.
- Moved pre-compile interfaces to sol files and made them available to
fixtures
- Added some Solidity written tests to exercise error cases


## Further tests needed

Those should all be written in Solidity to test both backends at the
same time. No more Rust fixtures.

@0xRVE can you take those over as I am ooo.

- Test that checks that scheduled deletions do properly roll back if a
frame fails
- Test that value send to a contract after scheduling for deletion is
send to the beneficiary (different from Eth where this balance is lost)
- Add tests that use `SELFDESTRUCT` to `Terminate.sol`. Need
paritytech/devops#4508 but can be tested
locally with newest `resolc`.

---------

Signed-off-by: Alexandru Gheorghe <[email protected]>
Signed-off-by: Andrei Sandu <[email protected]>
Co-authored-by: 0xRVE <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
Co-authored-by: Alin Dima <[email protected]>
Co-authored-by: Bastian Köcher <[email protected]>
Co-authored-by: Kian Paimani <[email protected]>
Co-authored-by: Oliver Tale-Yazdi <[email protected]>
Co-authored-by: Marian Radu <[email protected]>
Co-authored-by: Karol Kokoszka <[email protected]>
Co-authored-by: Francisco Aguirre <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: girazoki <[email protected]>
Co-authored-by: Adrian Catangiu <[email protected]>
Co-authored-by: Lukasz Rubaszewski <[email protected]>
Co-authored-by: Paolo La Camera <[email protected]>
Co-authored-by: Andrei Eres <[email protected]>
Co-authored-by: Alexandru Gheorghe <[email protected]>
Co-authored-by: Egor_P <[email protected]>
Co-authored-by: Agustín Rodriguez <[email protected]>
Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: Andrei Sandu <[email protected]>
Co-authored-by: Thang X. Vu <[email protected]>
Co-authored-by: DenzelPenzel <[email protected]>
Co-authored-by: Javier Viola <[email protected]>
Co-authored-by: Alexander Cyon <[email protected]>
Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: Alexander Samusev <[email protected]>
Co-authored-by: Omar <[email protected]>
Co-authored-by: Guillaume Thiolliere <[email protected]>
Co-authored-by: BDevParity <[email protected]>
…o bytes (paritytech#10309)

fixes paritytech/contract-issues#216

When an EVM contract writes an all-zero 32-byte storage word, remove the
corresponding child‑trie entry so storage-deposit accounting sees
bytes/items removed and a refund can be applied.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: pgherveou <[email protected]>
…s attached (for crates only releases) (paritytech#10379)

This PR adjusts existing Publish Release Draft flows for the cases:
1. When we have a patch release without runtimes (only bins and docker
images)
2. When we have crates only release

For those two cases, the unnecessary information and artifacts won't be
attached

Closes: paritytech/release-engineering#275
…aritytech#10204)

Edit by @skunert (edited because original test said not to merge):

This adds a zombienet test that verifies that parachains running with a
relay parent offset will not build on relay parents that have a session
change in the descendant blocks.

The reason is that candidates that were build in a past session are
dropped on session boundary.

---------

Co-authored-by: Sebastian Kunert <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
# Description
According to assertion message and comment("at least"),
`T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE` should be changed
into `T::MaxDebugBufferLen::get() >= MIN_DEBUG_BUF_SIZE`
```rust
// Debug buffer should at least be large enough to accommodate a simple error message
const MIN_DEBUG_BUF_SIZE: u32 = 256;
assert!(
	T::MaxDebugBufferLen::get() > MIN_DEBUG_BUF_SIZE,
	"Debug buffer should have minimum size of {} (current setting is {})",
	MIN_DEBUG_BUF_SIZE,
	T::MaxDebugBufferLen::get(),
);
```
For this assertion, the assertion message indicates assertion will fail
when max_storage_size > storage_size_limit, which means it requires
max_storage_size <= storage_size_limit, but assertion predicate is
`max_storage_size < storage_size_limit`. Based on the code semantics,
assertion predicate should be changed into `max_storage_size <=
storage_size_limit`.
```rust
assert!(
	max_storage_size < storage_size_limit,
	"Maximal storage size {} exceeds the storage limit {}",
	max_storage_size,
	storage_size_limit
);
```

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR adds configurable control over PolkaVM logging in
`pallet-revive` to address performance degradation (details:
paritytech#8760 (comment))

- Upgrades PolkaVM to v0.30.0 which provides
`set_imperfect_logger_filtering_workaround()`
- Adds `pvm_logs` flag to `DebugSettings` to control PolkaVM interpreter
logging
- Disables PolkaVM logs by default (when `pvm_logs=false`), enabling
them only when explicitly configured
- Fixes performance issue where excessive PolkaVM logging was impacting
block proposal times

The logging can be re-enabled via debug settings when needed for
troubleshooting.

Additionally:
- PolkaVM has been bumped globally across whole codebase.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…0448)

When running two different `cargo` commands, they may both compile the
same wasm files. When the second `cargo` command produces the same wasm
files, we are now not gonna overwrite it. This has the advantage that we
can run the first command again without it trying to recompile the
project. Right now it would lead to the wasm files always getting
recreated, which is wasting a lot of time :)

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Sebastian Kunert <[email protected]>
When creating a block notifier allow setting a custom capacity

---------

Signed-off-by: Alexandru Cihodaru <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
The "staking-async" pallet has inherited the list of invulnerable
validators from the "staking" pallet, but these are no longer used. We
can therefore remove them, together with additional clean-up.

Closes
paritytech#10135 (comment)

---------

Signed-off-by: Andrei Trandafir <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…collations (paritytech#10446)

We pre-connect one slot in advance and we disconnect when our slot ends
even when we have pending collations which is wrong. This change fixes
this by keeping the connections open until the collation is requested or
relay parent expires.

---------

Signed-off-by: Andrei Sandu <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
)

Up until this point, when EDs of chains using nomination pools were
reduced, the subsequent reward account funds in exces could be claimed
by anyone, despite the fact that they had been typically provided at the
beginning by the pool owner. We therefore limit access to these funds
only to the pool owner and the (optional) root account when EDs get
reduced. The restriction does not apply to the increase in EDs, as these
imply that funds are transferred into the pool rather than out of it.

Fixes paritytech-secops/srlabs_findings#413

---------

Signed-off-by: Andrei Trandafir <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…ytech#10454)

Invulnerables are not automatically removed from the Invulnerables
storage when their solution is rejected.
Removal should occur only through governance, not automatically. 
An operational or network issue that leads to an incomplete submission
is much more likely than a bad faith action from an invulnerable.

Close paritytech-secops/srlabs_findings#602.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…0397)

# Description

This is a PR that updates the commit hash of the
revive-differential-tests framework and the compilation caches to a
version that includes fixes to certain tests that used hard-coded gas
values. The compilation caches required an update since this was a
change to the contract's code.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Torsten Stüber <[email protected]>
…#9947)

This pull request fundamentally changes how `Proposer` and
`BlockBuilder` are handling the proof recorder and extensions. Before
this pull request the proof recorder was initialized by the
`BlockBuilder` and the proposer statically enabled proof recording or
disabled it. With this pull request the proof recorder is passed from
the the caller down to the block builder. This also moves the
responsibility for extracting the final storage proof to the caller and
is not part of the block builder logic anymore. The extensions are now
also configurable by the caller and are not longer "guessed" by the
block builder.

This pull request also remvoes the `cumulus-client-proposer` crate as it
is not really required anymore.

---------

Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Iulian Barbu <[email protected]>
Co-authored-by: Michal Kucharczyk <[email protected]>
This PR introduces the try_state hook to pallet-assets to verify key
storage invariants.

closes part of paritytech#239

---------

Co-authored-by: Branislav Kontur <[email protected]>
Co-authored-by: cmd[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.