Public ledger
Don't trust us. Check us.
Every processed polling-unit tally is written to an append-only ledger. Each entry has a SHA-256 fingerprint of its content and of the photos behind it, a timestamp, and an IPFS content ID. Copies live on GitHub and on IPFS, so an entry can't be quietly changed.
Current entries
Loading…
Entry format
{
"id": "pu:NG-LA:IKEJA:05:012", // state : LGA : ward : unit
"election": "ng-2027-federal",
"race": "president",
"consensus": { "status": "high", "share": 0.9, "reports": 10 },
"tally": { "PARTY_A": 0, "PARTY_B": 0 },
"official": { "source": "IReV", "tally": { … }, "fetchedAt": "…" },
"discrepancy": { "match": true, "diffs": [] },
"evidence": [{ "sha256": "…", "cid": "bafy…" }],
"prev": "sha256 of previous entry", // hash chain
"hash": "sha256 of this entry",
"recordedAt": "2027-01-16T19:42:10Z"
}
Each entry includes the hash of the one before it. Changing any past entry breaks every hash after it, and anyone can detect that.
Confidence rules
- High: at least 85% of independent reports agree on every party's count, from at least 3 reporters.
- Medium: at least 60% agree, from at least 2 reporters.
- Low: reports disagree or are tied. These are never presented as a result.
The rules are code, not opinion: consensus.js, with tests.