Skip to content

drewM33/ghostscore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘» GhostScore

Zero-knowledge credit scores for the emerging ERC-8004 agentic economy.

Built in ~24 hours at Ship Private. Ship Fast. β€” Unlink Γ— Monad Hackathon (NYC, 2026)

Demo Video Β· Live App


"GhostScore is a zero-knowledge credit score for the emerging ERC‑8004 agentic economy. Today, on-chain reputation systems force agents to choose between being trusted or being private. Every payment, every API call, every interaction is publicly traceable, and AI can deanonymize wallets for a few dollars. GhostScore fixes this. Agents pay for x402 endpoints through Unlink's shielded transfers, and every successful payment mints reputation on Monad. Providers gate sensitive APIs and coordination endpoints behind reputation tiers, and agents prove they qualify using zero-knowledge attestations β€” without revealing their address, score, or history."


Why GhostScore Is Better Than What Exists Today

Today, agents and wallets face a brutal tradeoff:

  • Be transparent and trusted β€” expose your public address, full history on-chain, and every API call you've ever made
  • Be private and invisible β€” use fresh wallets, mixers, or alts, but then no provider trusts you

Existing reputation systems:

  • Expose wallet addresses and full transaction histories
  • Are fragile to Sybil attacks and airdrop/governance farming
  • Were designed for humans, not high-frequency ERC‑8004 agents

GhostScore is strictly better because:

  • Agents earn on-chain reputation automatically through x402 micropayments
  • Reputation is tiered and programmable β€” Tier 0–3 gates real APIs and coordination endpoints
  • Proofs are zero-knowledge β€” agents can show "I'm Tier 2+" without revealing:
    • Their score
    • Their address
    • Their transaction history

Providers get trust. Agents keep privacy. Nobody does KYC.

Why This Wasn't Possible Before This Hackathon

This weekend gave us three new primitives that normally don't co-exist:

Primitive What It Enables
Unlink Production-ready shielded transfers on Monad, simple enough to wire into x402 payment flows in a weekend
Monad High-throughput parallel EVM with sub-second finality β€” reputation updates in real-time for agents calling endpoints dozens of times per minute
x402 HTTP-native, per-request micropayments β€” the missing glue between APIs, agents, and on-chain billing

Before this hackathon:

  • Private payments lived on separate privacy chains or clunky mixers β€” not where agents actually pay for APIs.
  • On-chain reputation meant doxxed wallets or fragile off-chain scoring.
  • x402 endpoints weren't yet wired into a privacy-preserving, on-chain reputation layer.

GhostScore is only possible because this hackathon put Unlink, Monad, and x402 in the same room. We're turning shielded payments into programmable, zero-knowledge reputation β€” in real time β€” for ERC‑8004 agents.

How Unlink Opens New Doors

Unlink is not a bolt-on privacy feature β€” it is the core primitive that makes GhostScore architecturally possible.

Every x402 micropayment between an agent and an API provider routes through Unlink's shielded transfer system on Monad. GhostScore's contracts verify that a valid payment occurred, but the public chain cannot see:

  • ❌ Which agent paid
  • ❌ Which endpoint they called
  • ❌ How much they paid

This unlocks two capabilities that literally did not exist before:

Private, Earned Reputation

Reputation points are backed by real paid activity, not self-claimed trust scores. Yet those payments are completely unlinkable on-chain. With normal ERC-20 transfers, the transaction graph deanonymizes you. With Unlink, it can't.

Compliant, Configurable Privacy

Providers can gate high-value endpoints behind "Tier 2+, shielded only." DAOs and infrastructure teams can enforce policies like "only coordinate with agents whose reputation was earned via shielded flows." This is privacy as an access primitive, not just a UX toggle.

"Unlink turns private payments into a signal instead of a liability β€” GhostScore harvests that signal to build zero-knowledge credit scores for agents."

How It Works

Agent calls paid API β†’ x402 micropayment triggers β†’ Payment routes through Unlink shielded pool
β†’ Reputation accrues on-chain β†’ Agent proves tier via ZK attestation β†’ No identity revealed
  1. AI agents discover API endpoints registered on-chain via the GhostScore marketplace.
  2. Agents pay per-request via x402 β€” the HTTP-native micropayment standard. No accounts, no API keys, no human approval.
  3. Every payment routes through Unlink's shielded transfer system, breaking the on-chain link between payer and payee.
  4. Reputation points accrue on-chain in the ReputationRegistry smart contract. Real, immutable, earned β€” not self-reported.
  5. Tiered access gates (Tier 0–3) control which endpoints agents can call, enforced by smart contracts on Monad.
  6. Zero-knowledge attestations let agents prove "I'm Tier 2+" without revealing their score, wallet address, or transaction history.

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Frontend (Next.js)                  β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  Wallet   β”‚  β”‚  Dashboard   β”‚  β”‚  API Marketplace  β”‚  β”‚
β”‚  β”‚  Connect  β”‚  β”‚  Score/Tier  β”‚  β”‚  5 Endpoints      β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ WebSocket + REST
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                Backend (Express + Socket.IO)              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚  x402     β”‚  β”‚  Score       β”‚  β”‚  ZK Attestation   β”‚  β”‚
β”‚  β”‚  Gateway  β”‚  β”‚  Engine      β”‚  β”‚  Generator        β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚               β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Monad (EVM)                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚ Reputation   β”‚  β”‚ Agent Identity β”‚  β”‚   USDC       β”‚  β”‚
β”‚  β”‚ Registry     β”‚  β”‚ Registry       β”‚  β”‚   Contract   β”‚  β”‚
β”‚  β”‚ (ERC-8004)   β”‚  β”‚ (ERC-8004)     β”‚  β”‚              β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                                β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  Unlink Shielded Pool                     β”‚
β”‚         Private settlement of all x402 payments           β”‚
β”‚         Sender, receiver, and amount concealed            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

API Endpoints

Endpoint Tier Price (USDC) Description
Market Data 1 0.001 Zero-knowledge relay for private transaction routing across L2 bridges
Agent Discovery (ERC-8004) 2 0.005 High-frequency oracle endpoint for real-time price feeds with MEV protection
Agent Coordination 3 0.01 Vault-secured coordination protocol for trusted multi-agent task execution
Shielded Transfer Relay 1 0.002 Execute a real shielded transfer through Unlink to any address
ZK Identity Attestation 2 0.008 On-chain score and tier verification with signed attestation

Demo Flow

  1. Connect wallet on the GhostScore dashboard
  2. Browse the API marketplace β€” 5 endpoints across 4 tiers
  3. Call a Tier 1 endpoint β€” x402 payment fires, reputation score increases in real-time via WebSocket
  4. Call the Shielded Transfer Relay β€” payment routes through Unlink, score updates
  5. Call ZK Identity Attestation β€” receive a signed proof of your tier without revealing your address
  6. Cross the Tier 2 threshold (50 points) β€” watch the ghost mascot power-up animation πŸ‘»βš‘
  7. Access higher-tier endpoints β€” previously locked APIs are now available

Tech Stack

Layer Technology
Frontend Next.js, TypeScript, Tailwind CSS
Backend Express, Socket.IO, ethers.js
Blockchain Monad (EVM), Solidity
Privacy Unlink SDK (shielded transfers)
Payments x402 (HTTP 402 Payment Required)
Agent Standard ERC-8004 (Identity + Reputation Registries)
Deployment Render

Market Context

Metric Value
Autonomous AI agent market (2030) $48.3B at 43.3% CAGR
AI wallet deanonymization cost <$4 per attempt, 90% accuracy
ZK proof market (2033) $7.59B
Agentic commerce (2030) $3–5T globally

Sources: Yahoo Finance, ETH Zurich/Anthropic, Grand View Research, McKinsey

Getting Started

Prerequisites

  • Node.js 18+
  • pnpm
  • MetaMask wallet with Monad testnet configured

Installation

git clone https://github.com/drewM33/ghostscore.git
cd ghostscore

# Install dependencies
pnpm install

# Set environment variables
cp .env.example .env
# Fill in: PRIVATE_KEY, RPC_URL, contract addresses

# Run the backend
cd server
pnpm dev

# Run the frontend (new terminal)
cd ..
pnpm dev

Environment Variables

PRIVATE_KEY=              # Server wallet private key
RPC_URL=                  # Monad RPC endpoint
USDC_ADDRESS=             # USDC contract on Monad
REPUTATION_REGISTRY=      # ReputationRegistry contract address
AGENT_IDENTITY_REGISTRY=  # AgentIdentityRegistry contract address

Team

Valiron β€” Drew Mailen | https://x.com/drew_mailen

Built solo in ~24 hours at Ship Private. Ship Fast. (NYC, Feb 27 – Mar 1, 2026)

License

MIT

About

Zero-knowledge credit score for the emerging 8004 agentic economy, built using Unlink

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors