Witness is a GenLayer attestation protocol for source-backed claims, verification, challenge handling and reputation.
This repository is a public proof package: it includes the product UI, the deployed GenLayer Studionet contract source, deployment metadata, finalized smoke transactions, and test evidence. Local wallet secrets are not included.
The verification standard can only be changed by the protocol administrator. Sources, context and verification requests belong to the attester unless the administrator intervenes. Challenge and appeal resolution is permissioned, open reviews block finalization, and accepted outcomes update the attestation verdict and support/dispute scores before reputation is finalized. tests/test_v2_invariants.py covers permissions, replay-sensitive state transitions and reputation accounting.
A GenLayer attestation court. Users submit public claims with primary evidence; the contract scores sources, verifies claims with validator-agreed web/LLM reasoning, then supports challenge windows, appeals, finalization, archival, reputation and audit logs.
The frontend keeps the original product experience, while the contract adds a reviewable on-chain lifecycle: source records, GenLayer reasoning, challenge and appeal paths, indexed reads, and an audit trail that can be inspected after deployment.
| Area | Detail |
|---|---|
| Contract | contracts/witness_v2.py |
| Size | 38164 bytes |
| Network | GenLayer Studionet, chain id 61999 |
| Write methods | 15 |
| Read methods | 23 |
| GenLayer features | live web rendering, LLM execution, validator-comparative consensus |
| Deployment wallet | 0x34e718d6E0aCf961c40851d282E74B84f700b1Aa |
| Contract address | 0xA643644a3BeA834aa3080679DA0371bA8575BeF9 |
Architecture note:
Witness V2 (# v0.2.16), 38164 bytes, 15 write + 23 view. Objects: Attestation, Source, Context, Verification, Challenge, Appeal, Reputation + AuditEntry. Lifecycle SUBMITTED->VERIFYING->VERIFIED->CHALLENGE_WINDOW->APPEALED->FINALIZED->ARCHIVED. DynArray[str] stores + TreeMap status/attester/subject/attestation-source/context/verification/challenge/appeal/audit indexes + recent ids + clock. GenLayer nondet (web.render + exec_prompt inside eq_principle.prompt_comparative) for claim verification, challenge rulings and appeal rulings; strict JSON normalization, confidence/support/dispute bps, source credibility scoring, URL validation and prompt-injection guardrails. Backward-compatible attest/verify/get_attestation/get_attestation_count/confirmed_count keep the existing static app working.
Core smoke flow:
set_witness_standard
-> create_attestation
-> add_source_wiki
-> add_source_britannica
-> add_context
-> open_verification
-> verify
-> open_challenge_window
-> submit_challenge
-> resolve_challenge
-> submit_appeal
-> resolve_appeal
-> finalize_attestation
Test result:
Schema valid
15 smoke writes finalized
37/37
Static frontend bundled for standalone Vercel deployment
Witness ships as a standalone static app:
- wallet connection through the bundled browser client
- GenLayer reads through
genlayer-js - writes routed through the connected EVM wallet
- bundled
shared/client files keep the Vercel deployment self-contained - deployed contract address pinned in
app.jsanddeployment.json
From this repository folder:
python -m http.server 8080Open:
http://localhost:8080/
npx --yes vercel@latest --prod --yesThis public repository intentionally excludes local secrets:
- no private keys
- no vault files
- no
.envfiles - no
.vercelproject state - no local dashboard data
Public files include frontend code, contract source, deployment metadata, tests, and non-sensitive proof links.