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.
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 | 0xdD32b18f974E954930BFD06860a5790Ba50C29D4 |
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.