SmartBudgetEnglish | 中文基于 Monad 的 Agent 原生安全支付系统。AI Agent 可在用户定义的安全边界内自主执行链上支付 —— 会话密钥、支出上限、代币/收款方白名单、策略引擎、防篡改审计链。快速安装git clone https://github.com/Onyx-AI-Lab/monad2026.git && cd monad2026 && bash install.sh自动构建、启动后端,并将 MCP 服务注册到 Claude Code 和 Codex。架构AI Agent (Claude Code / Codex / Manus)
│ MCP 协议 (SSE)
▼
┌─────────────────────────────────────┐
│ Rust 服务 (smartbudget-server) │
│ ├─ /api/* HTTP REST API (:3001) │
│ └─ /mcp/* MCP SSE 服务 (:3002) │
│ └─ PostgreSQL │
│ 策略 / 会话密钥 / 审计日志 │
└──────────┬──────────────────────────┘
│ alloy / JSON-RPC
▼
Monad 测试网 (chainId: 10143)
└─ SmartBudget.sol (智能合约)
Next.js 前端 (:3000)
├─ 读取 /api/* (Rust 后端)
└─ 通过 wagmi 写入 (用户钱包)功能特性去中心化用户自行部署合约,资产自持非托管架构:Agent 仅持有有时间限制的会话密钥会话密钥私钥使用 AES-256-GCM 加密存储,从不以明文保存用户可随时撤销 Agent 权限开源 (MIT),无平台锁定跨平台:macOS / Linux / Docker安全配置单笔支付上限 (maxPerTx)每日预算限额 (maxDailySpend) —— 链上 + 链下跨密钥累计追踪每周预算限额 (maxWeeklySpend) —— 链下按 ISO 周跨密钥累计追踪代币白名单 —— 限制可使用的 ERC-20 代币收款方白名单 —— 限制支付目标地址基于分类的策略引擎 —— 允许/禁止的支付类别人工审批阈值 —— 超过配置金额的支付需要人工确认紧急暂停 —— Owner 或 Guardian 可立即冻结所有支付Guardian 恢复 —— 二级管理员可紧急解冻和发起所有权转移Agent 原生MCP 工具覆盖完整 Agent 工作流(查询、创建、支付、审计)会话密钥支持可配置过期时间 (duration_hours)每笔支付携带 reason + category 字段用于上下文追踪agent_id 隔离 —— 每个 Agent 拥有独立的会话密钥、策略和预算支付路径自动切换 —— ERC-20 支付失败后自动使用原生 MON 重试 (auto_fallback: true)x402 机器支付协议 —— 端到端购买按次付费的 API 资源一键安装到 Claude Code、Codex 等 Agent 平台可审计与可解释链上事件:PaymentExecuted、NativePaymentExecuted、SessionKeyCreated、SessionKeyRevoked链下审计日志:结构化收据,包含 Agent ID、策略命中、风险等级、时间戳SHA-256 哈希链 —— 防篡改的仅追加审计日志支持按会话密钥、收款方、代币、Agent ID 过滤每条记录包含:触发者、任务上下文、收款方、支付原因、命中策略、是否人工确认、最终结果恢复与权限管理Guardian 机制用于紧急恢复所有权转移 24 小时时间锁,支持取消会话密钥即时撤销密钥轮换:撤销旧密钥 → 创建新密钥每个 Agent 独立策略隔离 (agent_policy 表)通过 duration_hours 区分长期 Agent 与临时 Agent技术栈层级技术智能合约Solidity 0.8.28 + OpenZeppelin + Foundry (18 个测试)后端Rust + Axum + rmcp + alloy + sqlx (PostgreSQL)前端Next.js 16 + React 19 + Tailwind 4 + RainbowKit + wagmi区块链Monad 测试网 (chainId: 10143)加密AES-256-GCM (会话密钥加密)、SHA-256 (审计哈希链)环境要求Rust >= 1.75Node.js >= 18PostgreSQLFoundry (forge, cast)快速开始1. 准备数据库createdb smartbudget或使用 Docker:docker run -d --name pg -p 5432:5432 -e POSTGRES_DB=smartbudget -e POSTGRES_HOST_AUTH_METHOD=trust postgres:162. 配置环境变量cd server
cat > .env << 'EOF'
DATABASE_URL=postgresql://localhost/smartbudget
KEY_ENCRYPTION_KEY=$(openssl rand -hex 32)
VAULT_ADDRESS=0xcE196a0c9969C5B2620B91b0c2136Bca2738C059
AGENTVAULT_RPC_URL=https://testnet-rpc.monad.xyz
# 写操作需要(创建/撤销会话密钥、执行支付):
# OWNER_PRIVATE_KEY=0x...
RUST_LOG=smartbudget_server=info
EOF3. 启动后端cd server && cargo run --release启动后提供:HTTP API:http://localhost:3001/api/MCP SSE:http://localhost:3002/mcp/sse数据库迁移在启动时自动执行。4. 启动前端cd web && npm install && npm run dev浏览器打开 http://localhost:3000。5. 将 MCP 连接到 AI AgentClaude Code:claude mcp add --transport http smartbudget http://localhost:3002/mcp/sseCodex:codex mcp add smartbudget --url http://localhost:3002/mcp/sseAPI 端点HTTP REST API (端口 3001)端点方法说明/api/vaultGET金库信息(Owner、余额、状态、密钥数量)/api/balanceGET金库 MON 或 ERC-20 余额/api/session-keysGET所有会话密钥及状态/api/paymentsGET链上支付历史/api/policyGET/PUT读取或更新支付策略/api/healthGET健康检查/api/x402/infoGETx402 机器支付定价信息/api/x402/premium-dataGET按次付费的高级数据端点MCP 工具 (端口 3002)工具说明get_vault_info查询金库地址、Owner、余额、暂停状态get_balance查询原生 MON 或 ERC-20 余额list_session_keys列出所有会话密钥及状态get_session_key_info查询单个会话密钥详情create_session_key创建带支出限额和白名单的会话密钥revoke_session_key链上撤销会话密钥execute_payment执行支付并进行策略检查(支持 auto_fallback)get_payment_history获取链上支付事件get_policy读取支付策略配置get_audit_log按条件查询审计日志get_payment_receipt按交易哈希查询支付收据get_x402_info获取 x402 机器支付定价buy_x402_resource端到端购买按次付费的 API 资源智能合约地址:0xcE196a0c9969C5B2620B91b0c2136Bca2738C059网络:Monad 测试网 (chainId: 10143)浏览器:https://testnet.monadscan.com/address/0xcE196a0c9969C5B2620B91b0c2136Bca2738C059测试:18 个全部通过 (forge test -v)部署自己的合约cd contracts
forge build
forge test -v
PRIVATE_KEY=0x... OWNER_ADDRESS=0x... \
forge script script/Deploy.s.sol:DeployScript \
--rpc-url https://testnet-rpc.monad.xyz \
--broadcast数据库表结构表名用途session_keys加密存储的会话密钥私钥(按 Agent 隔离)policy全局支付策略(单行)agent_policy每个 Agent 的策略覆盖audit_log仅追加的支付审计日志(含哈希链)agent_daily_spend每个 Agent 的跨密钥每日支出追踪agent_weekly_spend每个 Agent 的跨密钥每周支出追踪(ISO 周)环境变量变量必填默认值说明DATABASE_URL是—PostgreSQL 连接字符串KEY_ENCRYPTION_KEY是—32 字节 hex AES-256 密钥,用于会话密钥加密OWNER_PRIVATE_KEY否—金库 Owner 私钥(写操作需要)VAULT_ADDRESS否0x593Be...已部署的 SmartBudget 合约地址AGENTVAULT_RPC_URL否https://testnet-rpc.monad.xyzMonad RPC 端点PORT否3001HTTP API 端口MCP_PORT否3002MCP SSE 端口RUST_LOG否—日志级别过滤开源协议MIT