VacantAn accountability layer for AIGitHub

Architecture · Multi-party / run each other, don't review each other ·

Multi-party execution

What is decentralized is execution and testimony, not judgment. The reason: disagreement in opinion carries no information; disagreement in execution does. This path tolerates at most ⌊(k−1)/2⌋ corrupted executors; past a majority, the result flips.

#Why "run each other, don't review each other"

An early design that was abandoned was "decentralized mutual review." Multi-party execution rewrote it as running each other's work instead of reviewing it: what is decentralized is execution and testimony, not judgment.

The reason fits in one sentence:

Disagreement in opinion carries no information; disagreement in execution does.

Acceptance is a deterministic program, so honest executors necessarily get the same result. If a disagreement appears, the only possibilities are that someone didn't really run it, or that someone signed content different from their own execution result — both are attributable faults.

#Three things

  1. Execute and attest: each executor runs acceptance with its own renderer and sandbox, and signs into its own event chain the hashes of the task, the candidate, the suite and the rendered result, along with the visible acceptance result.
  2. Tally: first check whether the suite passed the gauge, then verify the testimony one entry at a time. If the same executor signs two testimonies with different content for the same event, that is treated as a proof-grade fault and voided.
  3. Vote and name: the rest is decided by majority. If the votes fall short of a quorum or tie, the result is undecided, and the shipping rule treats undecided as not passed. The minority is listed by name, with its event hash and signature attached.

#Tolerance limit

⌊ (k − 1) / 2 ⌋

When a majority colludes, the result flips: the honest parties get named instead, and the mechanism itself does not know which side of the threshold it is on.

Sweep batchFalse-accusation rate past a majority
r446 (371 tasks × 5 candidates)0.175
r443 (91 tasks × 5 candidates)0.374

#Simulation sweep: changing the rule beats adding people

A 200-cell sweep (r446 371 tasks × 5, r443 91 tasks × 5, k ∈ {1, 3, 5, 7}, corruption share 0–70%, five kinds of attack):

FindingFigures
At a fixed corruption share, as k goes from 1 to 7, the delivery rate does not change at allCollusion 67.39%, sabotage 0%
k=3 / quorum=2, one vote missing1-1 tie → undecided, no one named

#Real runs: R453 and R454

#R453 Cross-machine consistency

Scale368 tasks × 5 candidates = 1,840 candidates
EnvironmentmacOS + Linux (k=2)
ResultVisible acceptance labels agreed on 1,840 / 1,840 across the two machines; both chains verify
LimitationWindows excluded (the sandbox can't be built)

#R454 Naming a liar

k=3, with 1 controlled lying key:

CellResult
Lying cells that named K3273 / 273
Honest keys falsely accused0 / 1,840
Contradictory-signature cells ruled correctly58 / 58
Total testimonies5,519, with 0 signature-verification failures

#Fixed point: suite corruption

If the suite is swapped for "passes as soon as it loads," then every vote is honest, every chain verifies, and the system is still delivering garbage.}}

#The limit of the offline viewer

R455 found a structural limit of the single-file offline viewer:

An attacker re-mints the whole chain with their own key, then edits the embedded receipts to match, and it still verifies.

The mitigation is printing the three vacant_ids on a physical label, so that outside the chain there is an anchor that can't be re-minted along with it.

This is not a vulnerability — a signature identifies a key, not a principal. Stating that clearly matters more than fixing it.

#Next

Last updated: · about 2 min read · this page cites 2 adjudicated claims

Shih Hsin UniversityDepartment of Information and Communications, Shih Hsin UniversityVacant

Department of Information and Communications, Shih Hsin University · 2026 capstone project · on-site exhibition