Skip to main content
Glama

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 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

端到端加密 (盲中继)

证明输入在客户端和 Nitro Enclave 之间进行端到端加密。Node.js 服务器在不读取的情况下传递加密数据块。

协议: 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 将加密信封传递给 Enclave(盲中继)

  6. 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 }

支付模式:

模式

网络

效果

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)

安装 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_kyccoinbase_attestationcoinbase_countrycoinbase_country_attestationoidc_domainoidc_domain_attestation

A2A 协议

A2A v0.3 JSON-RPC 端点位于 POST /a2a

方法

用途

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 加密

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 验证器

0x0036B61dBFaB8f3CfEEF77dD5D45F7EFBFE2035c

国家/地区验证器

0xdEe363585926c3c28327Efd1eDd01cf4559738cf

ERC-8004 身份

0x8004A818BFB912233c491871b3d84c89A494BD9e

ERC-8004 声誉

0x8004B663056A597Dffe9eCcC1965A193B7388713

Base Mainnet (生产环境)

合约

地址

ERC-8004 身份

0x8004A169FB4a3325136EB29fA0ceB6D2e539a432

ERC-8004 声誉

0x8004BAa17C55a88189AE136b182e5fdA19dE9b63

ERC-8004 智能体身份

智能体在启动时通过 ERC-8004 身份合约自动在链上注册。每次成功生成证明后,声誉分数都会增加。

环境变量

必需

变量

描述

REDIS_URL

Redis 连接字符串

BASE_RPC_URL

Base 链 RPC 端点

CHAIN_RPC_URL

用于证明验证的 RPC

EAS_GRAPHQL_ENDPOINT

用于证明查询的 EAS GraphQL 端点

PROVER_PRIVATE_KEY

智能体钱包私钥 (64 位十六进制字符,无 0x)

PAYMENT_MODE

disabled / testnet / mainnet

A2A_BASE_URL

面向公众的服务 URL (用于智能体卡片)

可选

变量

默认值

描述

PORT

4002

Express 服务器端口

NODE_ENV

development

Node 环境

BB_PATH

bb

Barretenberg CLI 路径

NARGO_PATH

nargo

Nargo CLI 路径

CIRCUITS_DIR

/app/circuits

电路工件目录

CIRCUITS_REPO_URL

(GitHub 原始 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 身份合约

ERC8004_REPUTATION_ADDRESS

ERC-8004 声誉合约

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 工作流 (非 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 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 Web 测试 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