Skip to main content
Glama

proofport-ai

ZKProofport를 위한 에이전트 네이티브 ZK 증명 인프라입니다. AWS Nitro Enclave 내에서 종단간 암호화(E2E)를 통해 영지식 증명을 생성하고 검증하는 독립형 서비스입니다. 서버는 블라인드 릴레이(blind relay) 역할을 하며 증명 입력값을 절대 볼 수 없습니다.

아키텍처

Client (AI Agent / SDK)
  │
  │  1. POST /api/v1/prove  →  402 { nonce, price, teePublicKey }
  │  2. Sign EIP-3009 USDC payment
  │  3. Encrypt inputs with TEE X25519 public key (ECIES)
  │  4. POST /api/v1/prove + X-Payment-TX + X-Payment-Nonce + encrypted_payload
  │
  ▼
┌─────────────────────────────────────┐
│  Node.js Server (port 4002)        │
│  ─ Verify USDC payment on-chain    │
│  ─ Blind relay: pass encrypted     │
│    payload to enclave via vsock     │
│  ─ Return proof + TEE attestation  │
└────────────┬────────────────────────┘
             │ vsock
             ▼
┌─────────────────────────────────────┐
│  AWS Nitro Enclave                  │
│  ─ X25519 key pair (bound to NSM)  │
│  ─ Decrypt inputs (AES-256-GCM)    │
│  ─ bb prove (Barretenberg CLI)     │
│  ─ NSM attestation of proof hash   │
└─────────────────────────────────────┘

주요 특징:

  • E2E 암호화 — X25519 ECDH + AES-256-GCM. nitro 모드에서는 일반 텍스트 입력이 거부됩니다.

  • 블라인드 릴레이 — Node.js 호스트는 증명 입력값을 읽을 수 없습니다. 오직 인클레이브(enclave)만이 복호화합니다.

  • x402 결제 — 단일 단계 흐름: 402 챌린지 → USDC 결제 → 증명 생성. 미들웨어가 없습니다.

  • 하드웨어 증명(Attestation) — NSM 증명 문서는 TEE 공개 키를 인클레이브 측정값(PCR)에 바인딩합니다.

디렉토리 구조

proofport-ai/
├── src/
│   ├── index.ts                  # Express server entry (port 4002)
│   ├── logger.ts                 # Pino logger
│   ├── swagger.ts                # OpenAPI spec
│   ├── tracing.ts                # OpenTelemetry tracing
│   ├── a2a/
│   │   ├── agentCard.ts          # /.well-known/agent.json, agent-card.json
│   │   ├── proofportExecutor.ts  # A2A task executor
│   │   └── redisTaskStore.ts     # Redis-backed task persistence
│   ├── chat/
│   │   ├── geminiClient.ts       # Gemini API client
│   │   ├── llmProvider.ts        # LLM provider interface
│   │   ├── multiProvider.ts      # Multi-provider routing
│   │   └── openaiClient.ts       # OpenAI API client
│   ├── circuit/
│   │   └── artifactManager.ts    # Circuit artifact download/cache
│   ├── config/
│   │   ├── index.ts              # Environment config
│   │   ├── circuits.ts           # Circuit metadata
│   │   └── contracts.ts          # Deployed contract addresses
│   ├── identity/
│   │   ├── agentAuth.ts          # Agent JWT authentication
│   │   ├── autoRegister.ts       # ERC-8004 auto-registration
│   │   ├── register.ts           # Identity registration
│   │   └── reputation.ts         # Reputation management
│   ├── input/
│   │   ├── attestationFetcher.ts # EAS GraphQL attestation fetch
│   │   ├── inputBuilder.ts       # Circuit input construction
│   │   └── merkleTree.ts         # Merkle tree builder
│   ├── mcp/
│   │   ├── server.ts             # StreamableHTTP MCP server
│   │   └── stdio.ts              # stdio MCP server (local use)
│   ├── payment/
│   │   └── freeTier.ts           # Payment mode config
│   ├── proof/
│   │   ├── proofRoutes.ts        # x402 single-step proof API
│   │   ├── guideBuilder.ts       # Dynamic proof generation guide
│   │   ├── paymentVerifier.ts    # On-chain USDC payment verification
│   │   ├── sessionManager.ts     # Proof session/nonce management
│   │   └── types.ts
│   ├── prover/
│   │   ├── bbProver.ts           # bb CLI direct prover
│   │   ├── tomlBuilder.ts        # Prover.toml builder
│   │   └── verifier.ts           # On-chain verification (ethers v6)
│   ├── redis/
│   │   ├── client.ts             # Redis client
│   │   ├── cleanupWorker.ts      # Expired data cleanup
│   │   ├── constants.ts          # Redis key prefixes
│   │   ├── proofCache.ts         # Proof result caching
│   │   ├── proofResultStore.ts   # Proof result persistence
│   │   └── rateLimiter.ts        # Rate limiting
│   ├── skills/
│   │   ├── skillHandler.ts       # Skill routing
│   │   └── flowGuidance.ts       # Step-by-step flow guidance
│   ├── tee/
│   │   ├── index.ts              # TEE mode config
│   │   ├── attestation.ts        # NSM attestation validation (COSE Sign1)
│   │   ├── detect.ts             # TEE environment detection
│   │   ├── enclaveBuilder.ts     # Enclave image builder
│   │   ├── enclaveClient.ts      # Nitro Enclave vsock client
│   │   ├── encryption.ts         # AES-256-GCM encryption utilities
│   │   ├── teeKeyExchange.ts     # X25519 ECDH key exchange
│   │   └── validationSubmitter.ts # TEE validation on-chain
│   └── types/
│       └── index.ts
├── packages/
│   ├── sdk/                      # @zkproofport-ai/sdk (npm)
│   └── mcp/                      # @zkproofport-ai/mcp (npm)
├── aws/
│   ├── enclave-server.ts         # TypeScript TEE prover (Nitro Enclave)
│   ├── Dockerfile.enclave        # Enclave image
│   ├── deploy-blue-green.sh      # Zero-downtime deployment
│   ├── boot-active-slot.sh       # Systemd boot script
│   ├── stop-active-slot.sh       # Systemd stop script
│   ├── build-enclave.sh          # Enclave build helper
│   ├── ec2-setup.sh              # EC2 instance setup
│   ├── Caddyfile                 # Reverse proxy config
│   ├── docker-compose.aws.yml    # AWS Docker Compose
│   ├── vsock-bridge.py           # vsock-to-TCP bridge
│   └── systemd/                  # Systemd service files
├── sign-page/                    # Next.js signing page (WalletConnect)
├── tests/
│   ├── e2e/                      # Full E2E tests (REST, MCP, A2A, proof, verify)
│   ├── a2a/                      # A2A unit tests
│   ├── identity/                 # ERC-8004 identity tests
│   ├── integration/              # Integration tests
│   ├── payment/                  # Payment tests
│   ├── tee/                      # TEE tests
│   └── *.test.ts                 # Unit tests
├── docker-compose.yml            # Local dev: server + redis
├── docker-compose.test.yml       # Test stack: + a2a-ui + Phoenix
├── Dockerfile                    # Node.js server image
└── README.md

빠른 시작

npm (개발)

npm install
npm run dev          # Hot reload with tsx
npm run build        # Build TypeScript
npm start            # Production
npm test             # Run tests
npm run test:e2e     # E2E tests against Docker stack

Docker Compose (로컬)

docker compose up --build     # Start redis + server
docker compose down           # Stop
docker compose down -v        # Reset data
  • 포트 4002: Node.js 서버

  • 포트 6380 (호스트) → 6379 (컨테이너): Redis

E2E 암호화 (블라인드 릴레이)

증명 입력값은 클라이언트와 Nitro Enclave 간에 종단간 암호화됩니다. Node.js 서버는 암호화된 블롭(blob)을 읽지 않고 전달만 합니다.

프로토콜: X25519 ECDH + AES-256-GCM (ECIES 패턴)

  1. TEE는 시작 시 X25519 키 쌍을 생성하고 공개 키를 NSM 증명에 바인딩합니다.

  2. 클라이언트는 402 응답에서 TEE 공개 키를 가져와 증명을 검증합니다.

  3. 클라이언트는 일회용 X25519 키 쌍을 생성하고, ECDH 공유 비밀을 계산하며, SHA-256을 통해 AES 키를 도출합니다.

  4. 클라이언트는 AES-256-GCM으로 입력값을 암호화하고 { ephemeralPublicKey, iv, ciphertext, authTag, keyId }를 전송합니다.

  5. 서버는 vsock을 통해 암호화된 봉투를 인클레이브로 전달합니다(블라인드 릴레이).

  6. 인클레이브는 복호화 후 증명을 생성하고, 증명 + NSM 증명 문서를 반환합니다.

강제 사항: nitro 모드에서는 일반 텍스트 입력 시 PLAINTEXT_REJECTED 오류가 발생합니다.

x402 결제 흐름

미들웨어나 세션이 없는 단일 단계 원자적 흐름:

POST /api/v1/prove { circuit, inputs }
  ↓
402 { nonce, price, payTo, teePublicKey }
  ↓
Client signs EIP-3009 TransferWithAuthorization (USDC)
  ↓
POST /api/v1/prove { circuit, encrypted_payload }
  + X-Payment-TX: <txHash>
  + X-Payment-Nonce: <nonce>
  ↓
200 { proof, publicInputs, proofWithInputs, attestation, timing, verification }

결제 모드:

모드

네트워크

효과

disabled

없음

모든 요청 무료

testnet

Base Sepolia

USDC 결제 필요 (테스트넷)

mainnet

Base Mainnet

USDC 결제 필요 (프로덕션)

REST 엔드포인트

엔드포인트

메서드

목적

/health

GET

상태 확인 + TEE 상태 + 결제 모드

/api/v1/prove

POST

x402 단일 단계 증명 생성

/api/v1/guide/:circuit

GET

동적 증명 생성 가이드 (JSON)

/mcp

POST

StreamableHTTP MCP 엔드포인트

/a2a

POST

A2A JSON-RPC 엔드포인트

/.well-known/agent.json

GET

OASF 에이전트 카드

/agent-card.json

GET

A2A 에이전트 카드

/.well-known/mcp.json

GET

MCP 검색

/docs

GET

Swagger UI

/openapi.json

GET

OpenAPI 사양

MCP 도구

/mcp (StreamableHTTP) 또는 로컬 @zkproofport-ai/mcp 패키지(stdio)를 통해 사용 가능:

도구

목적

generate_proof

올인원 증명 생성 (x402 결제 + E2E 암호화 자동 감지)

verify_proof

온체인 증명 검증

get_supported_circuits

사용 가능한 회로 목록

request_challenge

402 챌린지 요청 (단계별 흐름)

make_payment

x402 USDC 결제 (단계별 흐름)

submit_proof

증명 입력값 제출 (단계별 흐름)

prepare_inputs

회로 입력값 준비 (단계별 흐름)

npm 패키지

@zkproofport-ai/sdk   — TypeScript SDK for proof generation (ethers v6)
@zkproofport-ai/mcp   — Local MCP server for AI agents (stdio transport)

로컬 AI 에이전트 사용을 위해 MCP 서버를 설치하세요:

npm install @zkproofport-ai/mcp
npx zkproofport-mcp    # Starts stdio MCP server

가이드 시스템

GET /api/v1/guide/:circuit은 클라이언트 AI 에이전트가 모든 증명 입력값을 준비할 수 있도록 포괄적인 JSON 가이드를 반환합니다. 포함 내용:

  • 코드 예제가 포함된 단계별 지침

  • 상수 (증명자 키, 컨트랙트 주소, EAS 스키마 UID)

  • 공식 (널리파이어 계산, 신호 해시, 머클 트리 구성)

  • 유형 및 설명이 포함된 입력 스키마

  • EAS GraphQL 쿼리 템플릿

회로는 별칭을 사용합니다: coinbase_kyccoinbase_attestation, coinbase_countrycoinbase_country_attestation, oidc_domainoidc_domain_attestation.

A2A 프로토콜

POST /a2a의 A2A v0.3 JSON-RPC 엔드포인트:

메서드

목적

message/send

증명 작업 제출 (차단)

message/stream

증명 작업 제출 (SSE 스트리밍)

tasks/get

작업 상태 쿼리

tasks/cancel

실행 중인 작업 취소

tasks/resubscribe

작업 이벤트 재구독

/.well-known/agent.json의 에이전트 카드는 ERC-8004 온체인 신원 및 기능 검색을 제공합니다.

TEE 통합 (AWS Nitro Enclave)

모드

동작

disabled

표준 Linux, TEE 없음, 일반 텍스트 허용

nitro

AWS Nitro Enclave, 하드웨어 증명, E2E 암호화 강제

인클레이브는 aws/enclave-server.ts(dist/aws/enclave-server.js로 컴파일됨)를 실행하며, 이는 --oracle_hash keccak(Solidity 검증기 호환성을 위해 필요) 옵션과 함께 bb prove를 실행합니다. NSM 증명은 증명 해시와 TEE 공개 키를 인클레이브 측정값(PCR0/PCR1/PCR2)에 바인딩합니다.

증명 검증 체인: AWS Nitro Root CA → Regional → Zonal → Instance → Leaf 인증서, COSE ES384 서명으로 검증됨.

지원되는 회로

Coinbase KYC (coinbase_attestation)

보유자가 Coinbase KYC 검증을 통과했음을 증명합니다.

  • 별칭: coinbase_kyc, coinbase_attestation

  • 공개 입력값: address, scope

  • 널리파이어: 예 (개인정보 보호, 재전송 방지)

Coinbase Country (coinbase_country_attestation)

보유자의 KYC 국가가 증명과 일치함을 증명합니다.

  • 별칭: coinbase_country, coinbase_country_attestation

  • 공개 입력값: address, country, scope

  • 널리파이어: 예 (개인정보 보호, 재전송 방지)

OIDC Domain (oidc_domain_attestation)

OIDC JWT 검증을 통해 보유자가 특정 도메인의 이메일 주소를 소유하고 있음을 증명합니다.

  • 별칭: oidc_domain, oidc_domain_attestation

  • 입력 유형: OIDC JWT (Google 등의 id_token)

  • 공개 입력값: domain hash, scope

  • 널리파이어: 예 (개인정보 보호, 재전송 방지)

컨트랙트 주소

Base Sepolia (테스트넷)

컨트랙트

주소

KYC Verifier

0x0036B61dBFaB8f3CfEEF77dD5D45F7EFBFE2035c

Country Verifier

0xdEe363585926c3c28327Efd1eDd01cf4559738cf

ERC-8004 Identity

0x8004A818BFB912233c491871b3d84c89A494BD9e

ERC-8004 Reputation

0x8004B663056A597Dffe9eCcC1965A193B7388713

Base Mainnet (프로덕션)

컨트랙트

주소

ERC-8004 Identity

0x8004A169FB4a3325136EB29fA0ceB6D2e539a432

ERC-8004 Reputation

0x8004BAa17C55a88189AE136b182e5fdA19dE9b63

ERC-8004 에이전트 신원

에이전트는 시작 시 ERC-8004 Identity 컨트랙트를 통해 온체인에 자동 등록됩니다. 평판 점수는 증명 생성 성공 시마다 증가합니다.

환경 변수

필수

변수

설명

REDIS_URL

Redis 연결 문자열

BASE_RPC_URL

Base 체인 RPC 엔드포인트

CHAIN_RPC_URL

증명 검증용 RPC

EAS_GRAPHQL_ENDPOINT

증명 쿼리를 위한 EAS GraphQL 엔드포인트

PROVER_PRIVATE_KEY

에이전트 지갑 개인 키 (64 16진수 문자, 0x 제외)

PAYMENT_MODE

disabled / testnet / mainnet

A2A_BASE_URL

공개 서비스 URL (에이전트 카드용)

선택 사항

변수

기본값

설명

PORT

4002

Express 서버 포트

NODE_ENV

development

노드 환경

BB_PATH

bb

Barretenberg CLI 경로

NARGO_PATH

nargo

Nargo CLI 경로

CIRCUITS_DIR

/app/circuits

회로 아티팩트 디렉토리

CIRCUITS_REPO_URL

(GitHub raw URL)

회로 아티팩트 다운로드 URL

TEE_MODE

disabled

disabled / nitro

ENCLAVE_CID

Nitro Enclave CID (TEE_MODE=nitro일 때 필수)

ENCLAVE_PORT

5000

Nitro Enclave 포트

TEE_ATTESTATION

false

증명 검증 활성화

PAYMENT_PAY_TO

운영자 지갑 (결제 활성화 시 필수)

PAYMENT_PROOF_PRICE

$0.10

증명당 가격 (USD)

ERC8004_IDENTITY_ADDRESS

ERC-8004 Identity 컨트랙트

ERC8004_REPUTATION_ADDRESS

ERC-8004 Reputation 컨트랙트

GEMINI_API_KEY

채팅용 Gemini API 키

OPENAI_API_KEY

채팅용 OpenAI API 키

PHOENIX_COLLECTOR_ENDPOINT

추적용 Phoenix OTLP 엔드포인트

AGENT_VERSION

1.0.0

에이전트 버전 문자열

배포 (AWS Nitro Enclave)

proofport-ai는 Nitro Enclave를 지원하는 AWS EC2에 배포됩니다. 배포는 무중단 서비스를 위해 블루-그린 슬롯 전환을 사용합니다.

블루-그린 배포

aws/deploy-blue-green.sh
  • 두 개의 슬롯: 블루(포트 4002/3200) 및 그린(포트 4003/3201)

  • /opt/proofport-ai/active-slot에서 활성 슬롯 추적

  • Caddy 리로드(재시작 아님)로 트래픽 전환

  • 전환 전 진행 중인 요청 처리(증명 생성 시 최대 660초)

  • 새 컨테이너 상태 확인 실패 시 자동 롤백

인프라

  • Caddy — HTTPS를 사용하는 리버스 프록시 (Cloudflare Full SSL)

  • systemd — 서비스: proofport-ai, proofport-ai-redis, proofport-ai-enclave, vsock-bridge

  • CloudWatch — 로그 드라이버 awslogs, 30일 보관

  • GitHub Actionsdeploy-ai-aws.yml 워크플로우 (GCP용인 deploy.yml 아님)

부팅 / 중지

aws/boot-active-slot.sh    # Start active slot containers
aws/stop-active-slot.sh    # Stop active slot containers

테스트

npm test                # Unit tests
npm run test:e2e        # E2E against Docker stack
npm run test:watch      # Watch mode

A2A 테스트 (a2a-ui + Phoenix)

docker compose -f docker-compose.yml -f docker-compose.test.yml up --build -d

서비스

URL

목적

proofport-ai

http://localhost:4002

에이전트 서버

a2a-ui

http://localhost:3001

A2A 웹 테스트 UI

Phoenix

http://localhost:6006

추적 시각화

버전 잠금

도구

버전

bb (Barretenberg)

v1.0.0-nightly.20250723

nargo

1.0.0-beta.8

ethers

^6.13.0

@modelcontextprotocol/sdk

^1.0.0

Node.js

20 LTS

라이선스

Apache 2.0

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - A tier

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zkproofport/proofport-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server