mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-07-14 20:15:44 +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:
@@ -190,16 +190,18 @@ async fn handle_pvf_check(
|
||||
PreCheckOutcome::Valid => Judgement::Valid,
|
||||
PreCheckOutcome::Invalid => Judgement::Invalid,
|
||||
PreCheckOutcome::Failed => {
|
||||
// Abstain.
|
||||
// Always vote against in case of failures. Voting against a PVF when encountering a
|
||||
// timeout (or an unlikely node-specific issue) can be considered safe, since
|
||||
// there is no slashing for being on the wrong side on a pre-check vote.
|
||||
//
|
||||
// Returning here will leave the PVF in the view dangling. Since it is there, no new
|
||||
// pre-checking request will be sent.
|
||||
// Also, by being more strict here, we can safely be more lenient during preparation and
|
||||
// avoid the risk of getting slashed there.
|
||||
gum::info!(
|
||||
target: LOG_TARGET,
|
||||
?validation_code_hash,
|
||||
"Pre-check failed, abstaining from voting",
|
||||
"Pre-check failed, voting against",
|
||||
);
|
||||
return
|
||||
Judgement::Invalid
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user