JAR: Join-Accumulate Refine

13.4. Disputes and Judgments🔗

Any validator can raise a dispute about a work report by submitting a verdict. Verdicts carry judgments (valid/invalid) signed by individual validators. If a report is judged bad, its guarantors may be penalized (culprits) and the report is removed from the available set.

🔗def
Jar.updateJudgments [JarVariant] (psi : JudgmentsState) (d : DisputesExtrinsic) : JudgmentsState
Jar.updateJudgments [JarVariant] (psi : JudgmentsState) (d : DisputesExtrinsic) : JudgmentsState

ψ' : Updated judgment state from disputes extrinsic. GP §10. Processes verdicts, culprits, and faults.

Reports judged as bad are cleared from the pending pool:

🔗def
Jar.reportsPostJudgment [JarVariant] (rho : Array (Option PendingReport)) (badReports : Array Hash) : Array (Option PendingReport)
Jar.reportsPostJudgment [JarVariant] (rho : Array (Option PendingReport)) (badReports : Array Hash) : Array (Option PendingReport)

ρ† : Clear reports which have been judged bad. GP eq (115–120).

Offending validators (guarantors of bad reports) have their keys zeroed, effectively ejecting them from the active set:

🔗def
Jar.filterOffenders (keys : Array ValidatorKey) (offenders : Array Ed25519PublicKey) : Array ValidatorKey
Jar.filterOffenders (keys : Array ValidatorKey) (offenders : Array Ed25519PublicKey) : Array ValidatorKey

Filter out offending validators by zeroing their keys. GP eq (115–128).