Arbiter is a GenLayer arbitration protocol for staked disputes, evidence review, rulings, challenges, appeals 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.
Ruling and payment remain separate contract actions. After rule records the winner, the submitted client displays a wallet-gated claim action only to that address and calls claim_winnings with the dispute id. It waits for the accepted receipt, refreshes the docket and removes the action once the pot is paid. tests/test_submitted_v2.py pins this exact client-to-contract path.
A GenLayer dispute-resolution court. Claimants and respondents each stake GEN, file arguments and evidence, GenLayer reviews the public source record, challenges and appeals refine the ruling, and the final rule/archive/reputation path remains compatible with the existing docket frontend.
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/arbiter_v2.py |
| Size | 55961 bytes |
| Network | GenLayer Studionet, chain id 61999 |
| Write methods | 36 |
| Read methods | 24 |
| GenLayer features | live web rendering, LLM execution, validator-comparative consensus |
| Deployment wallet | 0xb13a7433B52c6619Df3Ce6ff35C870b3d29D5C83 |
| Contract address | 0x7353435cE8B7fE0eCdBd59a048e1AC6234532154 |
Architecture note:
Arbiter V2 (# v0.2.16), 55961 bytes, 36 write + 24 view. Objects: Dispute/Claim, Stake, Obligation, Evidence, Review, Challenge, Appeal, Reputation/Profile + AuditEntry. Lifecycle OPEN->REVIEWING->REVIEWED->CHALLENGE_WINDOW->APPEALED->RESOLVED->ARCHIVED. GenLayer nondet (web.render + exec_prompt inside eq_principle.prompt_comparative) reviews both party arguments, public source evidence, challenges and appeals; strict JSON normalization, confidence/trigger bps, URL validation and prompt-injection guardrails. Backward-compatible open_dispute/join_dispute/rule/get_dispute/get_dispute_count keep the static arbitration app intact.
Core smoke flow:
set_claim_standard
-> open_dispute
-> add_obligation
-> add_evidence_docs
-> add_evidence_web
-> join_dispute
-> open_review
-> review
-> open_challenge_window
-> submit_challenge
-> resolve_challenge
-> submit_appeal
-> resolve_appeal
Test result:
Schema valid
20 smoke writes finalized
40/40
Static frontend bundled for standalone Vercel deployment
Arbiter 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.