去中心化 人工智能 产品架构与 去中心化应用 开发实践:第一版该做到什么程度
围绕去中心化 AI(Decentralized AI / DeAI)与 Web3 基础设施,已有不少把大语言模型、分布式算力网络(如 Akash、Bittensor)和智能合约结合的产品构想。
但在构建第一个最小可行产品(MVP)时,团队常会把去中心化的范围铺得过大:在第一版就尝试把模型权重切片上链、用零知识证明(ZK-ML)验证每次推理,或把前端和向量索引都放进 IPFS。这样的设计会拉长开发周期,也可能带来较高的 Gas 成本和明显的推理延迟。
DeAI DApp 的第一版应先验证代币/合约控制逻辑与 AI 推理结果消费能否协同工作。需要划清链上控制层与链下计算层的边界,用尽量小的架构跑通可用流程。
一、MVP 的范围:哪些上链,哪些留在链下?
设计首个版本时,可先按下面四部分划分链上与链下的职责:
- 链上层(On-Chain Ledger):仅保留鉴权、付费与凭证录入
- MVP 做到什么程度:仅将用户订阅付费(Pay-per-query)、AI 服务使用权 Token 质押以及 AI 响应结果的 cryptographic hash(加密哈希摘要)上链。
- 不要做什么:严禁尝试在 Solidity 智能合约内部直接调用大模型或存储庞大的上下文 Prompt。
- 算力与推理层(Off-Chain Inference):选用带可信梯度的混合节点
- MVP 做到什么程度:使用具有 API 签名的链下中心化 / 集中托管 Node(或 Akash 上的容器化节点)完成 LLM 推理,并由节点用私钥对推理结果和 Prompt Hash 进行 ECDSA 签名。
- 不要做什么:第一版无需强行引入完整的 ZK-ML(零知识机器学习)电路证明。当前 ZK-ML 生成证明的计算开销极大,对于 MVP 阶段而言过于昂贵且不现实。
- 存储层(Storage):结构化数据链下 Web3 存储
- MVP 做到什么程度:用户的对话历史与知识库文档嵌入(Embeddings)存储在去中心化存储(Arweave / IPFS)或带有加密解密控制的客户端 LocalStorage/IndexedDB 中。
- 前端 DApp 交互层:Web3 钱包连接与轻量验证
- MVP 做到什么程度:React DApp 通过 EIP-712 结构化签名向链下 AI 节点发起验证请求,获得带有节点签名的 AI 响应后,用户可自愿选择将签名凭证提交至链上存证。
二、 MVP 架构设计:链上付费/存证与链下 AI 节点协同
首个可用版本将昂贵的 AI 推理放在链下,链上只保留身份与交易结算等关键环节。
三、TypeScript 实现:带 EIP-712 签名校验的 DeAI 客户端
以下代码示范了如何在 React / Next.js 前端应用中,结合 ethers.js 实现基于 EIP-712 的轻量级去中心化 AI 身份鉴权与链下签名验证模块。
import { ethers } from "ethers"; // EIP-712 结构化数据 Type 定义 const EIP712_DOMAIN = { name: "Decentralized AI Gateway", version: "1.0.0", chainId: 1, // 以太坊主网或测试网 ChainID verifyingContract: "0x1111111111111111111111111111111111111111", // Paywall 合约地址 }; const AI_REQUEST_TYPE = { AIQuery: [ { name: "userAddress", type: "address" }, { name: "promptHash", type: "bytes32" }, { name: "nonce", type: "uint256" }, ], }; export interface DeAIResponse { answer: string; nodeAddress: string; signature: string; promptHash: string; } export class DecentralizedAIClient { private provider: ethers.BrowserProvider; private aiGatewayUrl: string; constructor(aiGatewayUrl: string) { if (!(window as any).ethereum) { throw new Error("未检测到 Web3 钱包,请安装 MetaMask"); } this.provider = new ethers.BrowserProvider((window as any).ethereum); this.aiGatewayUrl = aiGatewayUrl; } /** * 1. 签名用户 Prompt,构建防篡改请求 */ public async sendAuthenticatedQuery(prompt: string, nonce: number): Promise<DeAIResponse> { const signer = await this.provider.getSigner(); const userAddress = await signer.getAddress(); // 计算 Prompt 的 Keccak256 哈希 const promptHash = ethers.keccak256(ethers.toUtf8Bytes(prompt)); // 构造 EIP-712 签名数据 const message = { userAddress, promptHash, nonce, }; // 触发钱包弹窗,要求用户签名 (无需消耗 Gas) const userSignature = await signer.signTypedData( EIP712_DOMAIN, AI_REQUEST_TYPE, message ); console.log("[DeAI Client] 已生成 EIP-712 用户签名,准备向 AI 节点发送请求..."); // 2. 请求链下 AI 节点 Gateway const response = await fetch(`${this.aiGatewayUrl}/v1/query`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ prompt, userAddress, nonce, userSignature, }), }); if (!response.ok) { throw new Error(`AI 节点响应异常: ${response.statusText}`); } const data: DeAIResponse = await response.json(); // 3. 客户端验证 AI 节点返回的签名可信度 const isValidNode = this.verifyNodeSignature(data); if (!isValidNode) { throw new Error("安全警告: AI 节点返回的签名校验失败,响应可能已被中间人篡改!"); } return data; } /** * 客户端验证 AI 节点签名的有效性 (确保结果可追溯) */ private verifyNodeSignature(res: DeAIResponse): boolean { // 重新计算 (PromptHash + Answer) 的 Hash const combinedHash = ethers.solidityPackedKeccak256( ["bytes32", "string"], [res.promptHash, res.answer] ); // 从签名中恢复签名公钥/地址 const recoveredAddress = ethers.verifyMessage( ethers.getBytes(combinedHash), res.signature ); return recoveredAddress.toLowerCase() === res.nodeAddress.toLowerCase(); } }四、 推进首个可用版本(MVP)的落地路线图
为了防止去中心化 AI 项目在架构选型阶段拖延过久,技术团队应当按照以下三个关键里程碑分阶段推进:
里程碑一:跑通“Web3 身份 + 链下 AI 推理”闭环(第 1-2 周)
- 重点攻坚:放弃复杂的链上支付逻辑,使用免费的 EIP-712 签名鉴权代替传统的 API Key 登录。
- 验收标准:用户连接 MetaMask 钱包后,能够对 Prompt 进行签名并发起对话,客户端能成功校验 AI 节点的返回签名。
里程碑二:引入简单链上 Paywall 与代币门槛(第 3-4 周)
- 重点攻坚:在 EVM 测试网(如 Sepolia / Arbitrum Sepolia)部署简单的
Paywall.sol合约。 - 业务逻辑:用户在智能合约中质押少量的 Utility Token 或支付微量 ETH 获得 100 次 Query 配额,链下 AI 节点监听到链上 Event 后自动为用户解锁推理权限。
里程碑三:完善客户端轻量存证与 IPFS 历史导出(第 5 周)
- 重点攻坚:支持用户将重要的对话摘要(Prompt Hash + AI Answer Hash + Node Signature)一键上链存证,或者将加密对话记录导出存储至 IPFS。
- 成果:在不破坏用户体验的前提下,完成了“数据的可验性”与“链上存证”的核心 Web3 属性覆盖。
可以先验证链下 AI 签名与 Web3 鉴权,再引入链上 Paywall 结算,最后考虑扩展分布式存储。每一步是否进入下一阶段,应由实际成本、延迟和用户需求决定。