zkproofport-ai
proofport-ai
面向 ZKProofport 的智能体原生 ZK 证明基础设施。这是一个独立服务,可在 AWS Nitro Enclave 内生成并验证零知识证明,并提供端到端加密——服务器充当盲中继(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 │
└─────────────────────────────────────┘关键特性:
端到端加密 — X25519 ECDH + AES-256-GCM。在
nitro模式下,明文输入会被拒绝。盲中继 — Node.js 主机无法读取证明输入。只有 Enclave 可以解密。
x402 支付 — 单步流程:402 质询 → USDC 支付 → 证明生成。无需中间件。
硬件证明 — NSM 证明文档将 TEE 公钥绑定到 Enclave 度量(PCRs)。
目录结构
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
端到端加密 (盲中继)
证明输入在客户端和 Nitro Enclave 之间进行端到端加密。Node.js 服务器在不读取的情况下传递加密数据块。
协议: 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 将加密信封传递给 Enclave(盲中继)
Enclave 解密,生成证明,返回证明 + 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)安装 MCP 服务器以供本地 AI 智能体使用:
npm install @zkproofport-ai/mcp
npx zkproofport-mcp # Starts stdio MCP server指南系统
GET /api/v1/guide/:circuit 返回一份全面的 JSON 指南,供客户端 AI 智能体准备所有证明输入。包括:
带有代码示例的分步说明
常量(证明者密钥、合约地址、EAS 模式 UID)
公式(无效符计算、信号哈希、Merkle 树构建)
带有类型和描述的输入模式
EAS GraphQL 查询模板
电路使用别名:coinbase_kyc → coinbase_attestation,coinbase_country → coinbase_country_attestation,oidc_domain → oidc_domain_attestation。
A2A 协议
A2A v0.3 JSON-RPC 端点位于 POST /a2a:
方法 | 用途 |
| 提交证明任务 (阻塞) |
| 提交证明任务 (SSE 流式传输) |
| 查询任务状态 |
| 取消正在运行的任务 |
| 重新订阅任务事件 |
位于 /.well-known/agent.json 的智能体卡片提供 ERC-8004 链上身份和能力发现。
TEE 集成 (AWS Nitro Enclave)
模式 | 行为 |
| 标准 Linux,无 TEE,允许明文 |
| AWS Nitro Enclave,硬件证明,强制执行 E2E 加密 |
Enclave 运行 aws/enclave-server.ts (编译为 dist/aws/enclave-server.js),该程序执行带有 --oracle_hash keccak (Solidity 验证器兼容性所需) 的 bb prove。NSM 证明将证明哈希和 TEE 公钥绑定到 Enclave 度量 (PCR0/PCR1/PCR2)。
证明验证链: AWS Nitro 根 CA → 区域 → 区域性 → 实例 → 叶证书,使用 COSE ES384 签名验证。
支持的电路
Coinbase KYC (coinbase_attestation)
证明持有者已通过 Coinbase KYC 验证。
别名:
coinbase_kyc,coinbase_attestation公共输入: address, scope
无效符: 是 (隐私,防重放)
Coinbase 国家/地区 (coinbase_country_attestation)
证明持有者的 KYC 国家/地区与证明相符。
别名:
coinbase_country,coinbase_country_attestation公共输入: address, country, scope
无效符: 是 (隐私,防重放)
OIDC 域名 (oidc_domain_attestation)
通过 OIDC JWT 验证证明持有者拥有特定域名的电子邮件地址。
别名:
oidc_domain,oidc_domain_attestation输入类型: OIDC JWT (来自 Google 等的
id_token)公共输入: domain hash, scope
无效符: 是 (隐私,防重放)
合约地址
Base Sepolia (测试网)
合约 | 地址 |
KYC 验证器 |
|
国家/地区验证器 |
|
ERC-8004 身份 |
|
ERC-8004 声誉 |
|
Base Mainnet (生产环境)
合约 | 地址 |
ERC-8004 身份 |
|
ERC-8004 声誉 |
|
ERC-8004 智能体身份
智能体在启动时通过 ERC-8004 身份合约自动在链上注册。每次成功生成证明后,声誉分数都会增加。
环境变量
必需
变量 | 描述 |
| Redis 连接字符串 |
| Base 链 RPC 端点 |
| 用于证明验证的 RPC |
| 用于证明查询的 EAS GraphQL 端点 |
| 智能体钱包私钥 (64 位十六进制字符,无 0x) |
|
|
| 面向公众的服务 URL (用于智能体卡片) |
可选
变量 | 默认值 | 描述 |
|
| Express 服务器端口 |
|
| Node 环境 |
|
| Barretenberg CLI 路径 |
|
| Nargo CLI 路径 |
|
| 电路工件目录 |
| (GitHub 原始 URL) | 电路工件下载 URL |
|
|
|
| — | Nitro Enclave CID (当 |
|
| Nitro Enclave 端口 |
|
| 启用证明验证 |
| — | 运营商钱包 (启用支付时必需) |
|
| 每个证明的价格 (USD) |
| — | ERC-8004 身份合约 |
| — | ERC-8004 声誉合约 |
| — | 用于聊天的 Gemini API 密钥 |
| — | 用于聊天的 OpenAI API 密钥 |
| — | 用于追踪的 Phoenix OTLP 端点 |
|
| 智能体版本字符串 |
部署 (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-bridgeCloudWatch — 日志驱动
awslogs,保留 30 天GitHub Actions —
deploy-ai-aws.yml工作流 (非deploy.yml,那是 GCP 用的)
启动 / 停止
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 Web 测试 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