Evidence voting and finalization
Evidence in V3 can accumulate support or reject votes and later be finalized. Voting records participation. Finalization applies a protocol decision rule to the tally. They are separate lifecycle steps.Tally structure
The current finalization function sets a supported, rejected or disputed result and separately marks
finalized = true. Applications should therefore trust the boolean for finalization rather than assuming enum value 5 is the only final state.
One vote per address
voteOnEvidence rejects a second vote from the same address for the same evidence item. It also rejects inactive evidence and evidence that has already been finalized.
Finalization rule
Current contract finalization is administrative and acceptsminimumSupport and minimumParticipation parameters. It requires the participation threshold, then marks evidence supported when support reaches the threshold and exceeds reject count. If rejects are greater than or equal to support, it marks rejected. Otherwise it marks disputed.
Because these threshold inputs are part of an admin operation, public applications should not invent a different finalization formula and call it protocol status.
Present counts, not just color
A label such as “Supported” is more informative when accompanied by its basis:Voting is not a scientific truth engine
A protocol vote can establish the result of the protocol’s evidence process. It cannot make an unsupported claim true merely because more addresses clicked support. Applications should pair voting state with the artifact itself, submitter provenance and content hash verification.Indexing votes
The contract emitsEvidenceVoted and EvidenceFinalized. An indexer can maintain current tallies from events, but should periodically reconcile with getEvidenceTally if correctness matters.
Store finalization transaction coordinates so an audit view can link the displayed result to the actual state transition.