返回项目展示
截图 1
截图 2

项目描述

# Payclaw > Agent-native payment system on Monad — 让 AI Agent 在用户设定的安全边界内自主完成链上 USDC 支付。 **Monad Blitz 杭州 · Agentic Payment** --- ## 是什么 AgentPay 让 AI Agent 通过 MCP 工具发起链上支付,经由链下 Policy Engine 和链上 Session Key 双重约束执行。每笔支付: - **可追溯** — SQLite 审计日志 + 链上 `tx_hash` 锚点 - **可拦截** — Telegram 人机协同审批(超过阈值自动触发) - **可撤销** — 一笔链上交易立即停掉 Session Key - **x402 原生** — 遇到付费 API 的 402 响应自动完成支付并重试 --- ## 目录结构 ``` monad_agent_payment/ ├── contracts/ # Foundry 合约项目 │ ├── src/ │ │ ├── AgentVault.sol # 私有金库:资产托管 + Session Key 权限 + 受限执行 │ │ └── VaultFactory.sol # 工厂合约:一键为用户部署独立金库 │ ├── test/ │ │ └── AgentVault.t.sol # 15 个测试用例(签名验证 / 额度 / 权限) │ └── script/ │ └── Deploy.s.sol # 部署脚本:Factory + Vault ├── mcp-server/ # MCP Control Center(核心交付物) │ └── src/ │ ├── index.ts # 6 个 MCP 工具入口 │ ├── tools.ts # 工具 schema 定义 │ ├── glue.ts # x402 胶水:拦截 402 → 自动支付 → 重试 │ └── kernel/ # 链下核心逻辑(内嵌) │ ├── session-key.ts # Session Key 生成 / 本地存储 / 链上签名 │ ├── policy-engine.ts # Policy 校验(额度 / 白名单 / 黑名单) │ ├── audit.ts # SQLite 审计日志 │ ├── approval.ts # Telegram / Mock 审批路由 │ └── types.ts # 共享类型 ├── demo/ # Demo 用付费 API(3 个端点,返回 402) ├── frontend/ # H5 Action Center(部署金库 / 授权 Session Key)[WIP] └── docs/ ``` --- ## 业务流程 ``` 用户说"调研 $MONAD" │ ▼ MCP research_token │── 请求付费 API │── 收到 402(含价格 + 收款地址) │── Policy Check → Telegram 审批(如超阈值) │── Session Key 签名 → AgentVault.execute() │── Monad 链验签 + 转账 USDC └── 携带 tx_hash 重试 API → 返回数据 │ ▼ Agent 回答:"调研完成,已自动支付 0.50 USDC 审计费。" ``` --- ## MCP 工具列表 | 工具 | 作用 | |---|---| | `init_session` | 生成 Session Key,返回公钥地址供链上注册 | | `request_permission` | 任务开始前声明预算和允许收款方 | | `request_payment` | 直接发起 USDC 支付(含 Policy 校验 + 链上执行) | | `research_token` | 调研代币,自动处理 x402 付费 API 全流程 | | `check_budget` | 查询今日 / 本周剩余额度 | | `list_payments` | 查询支付历史 | --- ## 快速开始 ### 1. 安装依赖 ```bash pnpm install ``` ### 2. 配置环境变量 ```bash cp .env.example .env # 填入:MONAD_RPC_URL / OWNER_PRIVATE_KEY / USDC_ADDRESS # 可选:TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID(启用人工审批) ``` ### 3. 部署合约 ```bash cd contracts forge build forge test # 16 个测试全部通过后再部署 # 部署到 Monad testnet(必须加 --legacy) forge script script/Deploy.s.sol \ --rpc-url $MONAD_RPC_URL \ --broadcast --legacy ``` 部署完成后将 `VaultFactory` 地址填入 `.env`: ```bash VAULT_FACTORY_ADDRESS=0x... VAULT_ADDRESS=0x... # 你自己的 AgentVault 地址 ``` ### 4. 初始化 Session Key 在 Claude Code / Cline 等 AI Agent 中调用: ``` init_session ``` 将返回的公钥地址注册到你的 AgentVault: ```solidity vault.registerSession( "0x<session_key_address>", 5_000_000, // 5 USDC / tx 20_000_000, // 20 USDC / day 2592000 // 30 days ) ``` ### 5. 启动服务 ```bash # Mock 付费 API(Demo 用) pnpm --filter @agentpay/mock-x402 dev # MCP Server pnpm --filter @agentpay/mcp-server dev # 合约测试 cd contracts && forge test -vv ``` --- ## 架构 | 层 | 组件 | 职责 | |---|---|---| | 合约层 | `VaultFactory` + `AgentVault` | 一户一仓;Session Key 权限隔离;链上执行 | | Kernel | Policy Engine + Session Key | 链下策略校验;ECDSA 签名 | | MCP Server | 6 个工具 + x402 glue | Agent 接口;x402 协议支持 | | 前端 | React + wagmi | 金库部署 / Session Key 授权 | --- ## 安全边界 - **私钥不出进程**:Session Key 私钥加密存储在 `~/.agentpay/session.key`(mode 0600) - **双重限额**:单笔上限 + 每日上限,在合约层强制执行 - **Session 有效期**:过期自动失效,无需链上交互 - **紧急停止**:`revokeSession()` 一笔交易立即生效 - **签名绑定合约**:签名包含 `chainId` + `vault address`,防止跨链/跨合约重放 --- ## License MIT

团队成员

PAY4Fun

NNicole Chen
队长

元数据

创建者Nicole Chen
创建时间2026年4月12日
状态已归档
项目 ID#245