mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 12:11:02 +00:00
pre-checking: Reject failed PVFs (#6492)
* pre-checking: Reject failed PVFs * paras: immediately reject any PVF that cannot reach a supermajority * Make the `quorum` reject condition a bit more clear semantically * Add comment * Update implementer's guide * Update a link Not related to the rest of the PR, but I randomly noticed and fixed this. * Update runtime/parachains/src/paras/tests.rs Co-authored-by: s0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com> * Remove unneeded loop * Log PVF retries using `info!` * Change retry logs to `warn!` and add preparation failure log * Log PVF execution failure * Clarify why we reject failed PVFs * Fix PVF reject runtime benchmarks Co-authored-by: s0me0ne-unkn0wn <48632512+s0me0ne-unkn0wn@users.noreply.github.com>
This commit is contained in:
@@ -1249,15 +1249,24 @@ fn pvf_check_upgrade_reject() {
|
||||
Paras::schedule_code_upgrade(a, new_code.clone(), RELAY_PARENT, &Configuration::config());
|
||||
check_code_is_stored(&new_code);
|
||||
|
||||
// Supermajority of validators vote against `new_code`. PVF should be rejected.
|
||||
IntoIterator::into_iter([0, 1, 2, 3])
|
||||
.map(|i| PvfCheckStatement {
|
||||
accept: false,
|
||||
subject: new_code.hash(),
|
||||
session_index: EXPECTED_SESSION,
|
||||
validator_index: i.into(),
|
||||
})
|
||||
.for_each(sign_and_include_pvf_check_statement);
|
||||
// 1/3 of validators vote against `new_code`. PVF should not be rejected yet.
|
||||
sign_and_include_pvf_check_statement(PvfCheckStatement {
|
||||
accept: false,
|
||||
subject: new_code.hash(),
|
||||
session_index: EXPECTED_SESSION,
|
||||
validator_index: 0.into(),
|
||||
});
|
||||
|
||||
// Verify that the new code is not yet discarded.
|
||||
check_code_is_stored(&new_code);
|
||||
|
||||
// >1/3 of validators vote against `new_code`. PVF should be rejected.
|
||||
sign_and_include_pvf_check_statement(PvfCheckStatement {
|
||||
accept: false,
|
||||
subject: new_code.hash(),
|
||||
session_index: EXPECTED_SESSION,
|
||||
validator_index: 1.into(),
|
||||
});
|
||||
|
||||
// Verify that the new code is discarded.
|
||||
check_code_is_not_stored(&new_code);
|
||||
|
||||
Reference in New Issue
Block a user