zkproofport-ai
proofport-ai
ZKProofport向けのAIエージェントネイティブなZK証明インフラストラクチャ。AWS Nitro Enclave内でエンドツーエンド暗号化を使用してゼロ知識証明を生成・検証するスタンドアロンサービスです。サーバーはブラインドリレーとして機能し、証明の入力内容を一切閲覧しません。
アーキテクチャ
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ホストは証明の入力内容を読み取ることができません。エンクレーブのみが復号を行います。
x402決済 — シングルステップフロー:402チャレンジ → USDC決済 → 証明生成。ミドルウェアは不要です。
ハードウェア構成証明 — 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 stackDocker 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パターン)
TEEは起動時にX25519キーペアを生成し、公開鍵をNSM構成証明に紐付けます
クライアントは402レスポンスからTEE公開鍵を取得し、構成証明を検証します
クライアントはエフェメラルなX25519キーペアを生成し、ECDH共有秘密を計算し、SHA-256経由でAES鍵を導出します
クライアントはAES-256-GCMで入力を暗号化し、
{ ephemeralPublicKey, iv, ciphertext, authTag, keyId }を送信しますサーバーは暗号化されたエンベロープをvsock経由でエンクレーブに渡します(ブラインドリレー)
エンクレーブは復号し、証明を生成し、証明と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 }決済モード:
モード | ネットワーク | 効果 |
| なし | すべてのリクエストが無料 |
| Base Sepolia | USDC決済が必要 (テストネット) |
| Base Mainnet | USDC決済が必要 (本番環境) |
RESTエンドポイント
エンドポイント | メソッド | 目的 |
| GET | ヘルスチェック + TEEステータス + 決済モード |
| POST | x402シングルステップ証明生成 |
| GET | 動的証明生成ガイド (JSON) |
| POST | StreamableHTTP MCPエンドポイント |
| POST | A2A JSON-RPCエンドポイント |
| GET | OASFエージェントカード |
| GET | A2Aエージェントカード |
| GET | MCPディスカバリー |
| GET | Swagger UI |
| GET | OpenAPI仕様 |
MCPツール
/mcp (StreamableHTTP) またはローカルの @zkproofport-ai/mcp パッケージ (stdio) 経由で利用可能:
ツール | 目的 |
| オールインワン証明生成 (x402決済 + E2E暗号化自動検出) |
| オンチェーン証明検証 |
| 利用可能な回路の一覧表示 |
| 402チャレンジのリクエスト (ステップバイステップフロー) |
| x402 USDC決済の実行 (ステップバイステップフロー) |
| 証明入力の送信 (ステップバイステップフロー) |
| 回路入力の準備 (ステップバイステップフロー) |
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_kyc → coinbase_attestation, coinbase_country → coinbase_country_attestation, oidc_domain → oidc_domain_attestation。
A2Aプロトコル
POST /a2a で利用可能なA2A v0.3 JSON-RPCエンドポイント:
メソッド | 目的 |
| 証明タスクの送信 (ブロッキング) |
| 証明タスクの送信 (SSEストリーミング) |
| タスクステータスのクエリ |
| 実行中のタスクのキャンセル |
| タスクイベントへの再サブスクライブ |
/.well-known/agent.json のエージェントカードは、ERC-8004オンチェーンアイデンティティと機能のディスカバリーを提供します。
TEE統合 (AWS Nitro Enclave)
モード | 動作 |
| 標準Linux、TEEなし、プレーンテキスト許可 |
| 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 → リージョン → ゾーン → インスタンス → リーフ証明書 (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 |
|
Country Verifier |
|
ERC-8004 Identity |
|
ERC-8004 Reputation |
|
Base Mainnet (本番環境)
コントラクト | アドレス |
ERC-8004 Identity |
|
ERC-8004 Reputation |
|
ERC-8004エージェントアイデンティティ
エージェントは起動時にERC-8004 Identityコントラクトを介してオンチェーンで自動登録されます。評判スコアは、証明生成が成功するたびに増加します。
環境変数
必須
変数 | 説明 |
| Redis接続文字列 |
| BaseチェーンRPCエンドポイント |
| 証明検証用RPC |
| 認証クエリ用EAS GraphQLエンドポイント |
| エージェントウォレット秘密鍵 (64桁の16進数、0xなし) |
|
|
| 公開サービスURL (エージェントカード用) |
オプション
変数 | デフォルト | 説明 |
|
| Expressサーバーポート |
|
| ノード環境 |
|
| Barretenberg CLIパス |
|
| Nargo CLIパス |
|
| 回路アーティファクトディレクトリ |
| (GitHub raw URL) | 回路アーティファクトダウンロードURL |
|
|
|
| — | Nitro Enclave CID ( |
|
| Nitro Enclaveポート |
|
| 構成証明検証の有効化 |
| — | オペレーターウォレット (決済有効時に必須) |
|
| 証明あたりの価格 (USD) |
| — | ERC-8004 Identityコントラクト |
| — | ERC-8004 Reputationコントラクト |
| — | チャット用Gemini APIキー |
| — | チャット用OpenAI APIキー |
| — | トレース用Phoenix OTLPエンドポイント |
|
| エージェントバージョン文字列 |
デプロイ (AWS Nitro Enclave)
proofport-aiは、Nitro EnclaveをサポートするAWS EC2にデプロイされます。デプロイには、ダウンタイムゼロを実現するブルーグリーン・スロット切り替えを使用します。
ブルーグリーン・デプロイ
aws/deploy-blue-green.sh2つのスロット: ブルー (ポート 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-bridgeCloudWatch — ログドライバー
awslogs、30日間の保持期間GitHub Actions —
deploy-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 modeA2Aテスト (a2a-ui + Phoenix)
docker compose -f docker-compose.yml -f docker-compose.test.yml up --build -dサービス | URL | 目的 |
proofport-ai |
| エージェントサーバー |
a2a-ui |
| A2AウェブテストUI |
Phoenix |
| トレース可視化 |
バージョンロック
ツール | バージョン |
bb (Barretenberg) |
|
nargo |
|
ethers |
|
@modelcontextprotocol/sdk |
|
Node.js | 20 LTS |
ライセンス
Apache 2.0
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