Skip to content

Repository files navigation

ShipCheck logo

ShipCheck

GenLayer-powered submission verification for hackathons, grants, and ecosystem programs.

Network Chain ID Status Contract

Contract Frontend SDK Tests Author


ShipCheck is a GenLayer Bradbury Intelligent Contract dApp for checking whether submitted projects are real, deployed, technically aligned, and supported by public evidence.

Instead of asking reviewers to manually jump between GitHub, a live app, contract proof, and scattered evidence links, ShipCheck creates a public verification case. GenLayer validators independently fetch the submitted evidence, inspect repository implementation files, render the deployed app, check contract proof, reason over the submission with an LLM, and finalize a structured verdict through consensus.

This is not a simple checklist app with an AI summary bolted on. The core value is the non-deterministic verification path: each validator can evaluate live public evidence that changes from project to project, while the finalized result is stored as an auditable on-chain record.

Live Demo

Surface Value
Web app https://shipcheck-gen.vercel.app
Network GenLayer Bradbury Testnet
Chain ID 4221
RPC https://rpc-bradbury.genlayer.com
Explorer https://explorer-bradbury.genlayer.com
Contract 0xdF7e884276edE0e7441024D6AC9D63f30eb79e05
Deploy tx 0x191612ff6370b0c3b45be8a6fb923a3aaa8deca2b0c0b329818752e1818cb8fd

The production app reads from and writes to the live Bradbury contract.

How It Works

submit_project
submitter  ----------------->  verification case
(repo + app + contract proof)       |
                                    v
                             add_evidence
                             optional public URLs
                                    |
                                    v
                             verify_case
                             GenLayer consensus
                                    |
          +-------------------------+-------------------------+
          |                         |                         |
          v                         v                         v
  repository scan            deployment render          contract proof
  README + package           live app text              address / proof page
  tree + source files        public UI state            deployed source check
          |                         |                         |
          +-------------------------+-------------------------+
                                    |
                                    v
                          validator reasoning
              gl.nondet.web + gl.nondet.exec_prompt
              each validator repeats evidence review
                                    |
                                    v
                              final verdict
              score + risk flags + evidence summary
              source coverage + public proof page

ShipCheck separates three evidence layers:

Layer What It Proves
Implementation evidence The repository contains actual contract/frontend source for the claimed project.
Deployment evidence The submitted app and contract target are publicly reachable.
Runtime evidence Specific transactions show users or reviewers interacted with the deployed contract.

Contract addresses are strong deployment proof, but transaction links are needed when a reviewer wants to prove live usage after deployment.

Verdict Model

Verdict Score Range Meaning
VERIFIED 85-100 Evidence strongly supports the submitted claim.
NEEDS_REVIEW 60-84 The project has meaningful evidence, but some gaps need human review.
HIGH_RISK 0-59 Material evidence is missing, contradictory, or weak.
INCONCLUSIVE 0 Available evidence was inspected but cannot support a reliable directional verdict.

The rubric totals 100 points:

Category Points
Originality 25
Working deployment 20
Required technology integration 25
Repository quality 15
Documentation clarity 10
Evidence consistency 5

Why This Needs GenLayer

ShipCheck depends on validator consensus over public evidence that cannot be reduced to a single deterministic on-chain value.

  1. Public evidence fetches: validators inspect GitHub metadata, repository trees, selected source files, deployed app text, contract proof pages, and optional evidence URLs.
  2. Semantic verification: the contract asks whether the evidence actually supports the project claim and sponsor requirements.
  3. Independent validator reasoning: the leader proposes a verdict, and validators repeat evidence collection and reasoning before agreeing.
  4. Bounded public proof: finalized cases store a score, verdict, risk flags, positive signals, inspected source inventory, and evidence summary.
  5. Retry-safe failure handling: unavailable sources, malformed model output, or contradiction with inspected evidence abort the attempt and leave the case PENDING for retry instead of writing a permanent verdict.

Architecture

+------------------------------------------------------------------+
| frontend/src                                                      |
| React + Vite + TypeScript reviewer workspace                      |
| Dashboard, submit flow, case detail, compare view, public proof    |
+-------------------------------+----------------------------------+
                                | genlayer-js read/write
                                v
+------------------------------------------------------------------+
| contracts/ShipCheckVerifier.py                                    |
| GenLayer Intelligent Contract                                     |
| Case registry, evidence fetch, LLM adjudication, consensus result |
+-------------------------------+----------------------------------+
                                | HTTPS public evidence
                                v
+------------------------------------------------------------------+
| GitHub, deployed apps, Bradbury explorer, proof pages              |
| README, package files, selected implementation files, tx evidence  |
+------------------------------------------------------------------+

Reviewer Workspace

ShipCheck includes the main surfaces a serious reviewer needs:

  • Reviewer Dashboard: queue filters, verdict badges, scores, risk flags, and direct project links.
  • Submit Project: public GitHub repo, deployed app URL, contract proof, sponsor requirements, and project claim.
  • Verification Case: score ring, score breakdown, evidence summary, positive signals, risk flags, and transaction lifecycle.
  • Evidence Inventory: inspected repo paths and GenLayer signals accepted with the finalized verdict.
  • Compare View: submitted claim and requirements beside gathered evidence and reasoning.
  • Public Proof Page: shareable final record for verified, risky, and inconclusive cases.

Repository

contracts
  ShipCheckVerifier.py
  GenLayer Intelligent Contract and direct contract tests

frontend/src
  React reviewer workspace, wallet flow, case views, proof pages,
  evidence coverage UI, GenLayer read/write integration

scripts
  genvm-lint and gltest wrappers used by npm scripts

tests/e2e
  Playwright smoke coverage for the live application shell

Evidence Guide

For the cleanest ShipCheck result, submit public evidence in this shape:

GitHub repository:
https://github.com/<owner>/<repo>

Deployed application:
https://your-project.vercel.app

Contract proof:
https://explorer-bradbury.genlayer.com/address/<contract_address>

Extra evidence:
https://explorer-bradbury.genlayer.com/tx/<deployment_tx_hash>
https://explorer-bradbury.genlayer.com/tx/<frontend_write_tx_hash>
https://explorer-bradbury.genlayer.com/tx/<verification_tx_hash>

Use Bradbury explorer links for Bradbury submissions. Studio import links are useful for StudioNet work, but they should not be mixed into a Bradbury evidence package unless the project is intentionally demonstrating both networks.

Run Locally

Requirements: Node.js 20+, npm 10+, Python 3.11+, genvm-lint, and gltest.

npm install
npm run dev

Local app:

http://localhost:5179

Create a root .env from .env.example:

VITE_GENLAYER_RPC_URL=https://rpc-bradbury.genlayer.com
VITE_GENLAYER_CONTRACT_ADDRESS=0xdF7e884276edE0e7441024D6AC9D63f30eb79e05
VITE_GENLAYER_EXPLORER_URL=https://explorer-bradbury.genlayer.com

Never put a private key in a VITE_* variable.

Deploy Contract

genlayer config set network=testnet-bradbury
genlayer deploy --contract contracts/ShipCheckVerifier.py --rpc https://rpc-bradbury.genlayer.com

After deploying a new contract, update:

VITE_GENLAYER_CONTRACT_ADDRESS=<new_bradbury_contract_address>

GenLayer contract state is immutable per deployed address, so a fresh deployment starts with an empty case list.

Deploy Frontend

vercel deploy --prod --yes --project shipcheck-gen

The production Vercel project stores these build variables:

VITE_GENLAYER_RPC_URL
VITE_GENLAYER_CONTRACT_ADDRESS
VITE_GENLAYER_EXPLORER_URL

Verify

npm run typecheck
npm run test
npm run build
npm run contract:lint
npm run contract:test
npm run test:e2e

Full local check:

npm run check

Security Notes

  • Public evidence URLs must use HTTPS.
  • Only the wallet that created a case may add evidence or irreversibly finalize it.
  • Transient source and reviewer failures leave cases pending and do not create verdict records.
  • Fetched web and repository content is treated as untrusted prompt data.
  • The contract rejects or downgrades model output that does not match the verdict schema.
  • The verifier records inspected source paths and evidence signals with finalized verdicts.
  • A contract address alone does not prove live usage; transaction links should be submitted as extra evidence.
  • .env, .env.local, Vercel metadata, build output, artifacts, and test output are git-ignored.

Author

Built by ycee for a GenLayer Bradbury testnet submission.

License

MIT.

About

Verifying hackathon and grant submissions with validator-led evidence review, onchain LLM reasoning, scorecards, risk flags, and public proof pages.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages