发布任务的重试边界

在去中心化 AI(Decentralized AI, DeAI)与 Web3 DApp 的结合项目中,不少实现仍停留在演示原型阶段。

Demo 的代码逻辑通常很直白:前端连接 MetaMask 钱包获取用户签名,后端用 Python 写个简单的 FastAPI 节点调用 centralized OpenAI 接口,最后把生成的文本哈希上链。

这类原型进入真实使用环境后,以下问题通常会暴露出来:

如果后端 API 挂了,整个 DApp 的 AI 功能立刻瘫痪;大模型吐出的数据未经过链上零知识证明(zkML)或可信执行环境(TEE)校验,任何人都可以伪造 AI 推理结果欺骗智能合约;用户每次交互都要弹窗签名三次,产品体验糟糕到了极点。

将去中心化 AI 从演示 MVP 发展为可稳定运行的 DApp 功能,需要解决三类工程问题。


DeAI 产品的分层架构设计

在真正的去中心化 AI 架构中,链上智能合约扮演的是结算、验证与治理角色,而高强度的 AI 矩阵运算与大模型推理则由链下去中心化算力网络承担。

1. 链下算力与链上可信校验的分离 (zkML / TEE)

智能合约的 Gas 开销决定了它绝无可能直接在链上运行几百亿参数的 Neural Network。我们必须把算力剥离到链下节点,但必须通过 zkML(零知识机器学习)TEE(可信执行环境) 输出推理证明(Proof),合约只负责在毫秒级内验证这个 Proof 的真伪。

2. 账户抽象(Account Abstraction - ERC-4337)

原型阶段让用户每调用一次 AI Agent 就手动点一次 MetaMask 确认,这种体验会把 95% 的普通用户劝退。生产级 DApp 必须接入 ERC-4337 账户抽象与 Session Keys(会话密钥),允许用户一次授权,在特定的额度与时间窗口内由 DApp 自动完成静默签名。

3. 去中心化存储与向量召回 (IPFS / Arweave)

AI 模型权重、RAG 向量索引以及历史 Prompt 必须分散保存在 IPFS 或 Arweave 上,避免单点 Server 宕机导致知识库丢失。


面向生产环境的 DeAI 任务签名分发与链上验证流程

下面是一段 Node.js / TypeScript 的实战代码。展示了如何利用 Web3 钱包签名验证用户身份,发起链下 AI 节点推理,并最终将可信证明提交给链上智能合约进行校验。

import { ethers } from 'ethers';

// 1. 定义链上验证合约的 ABI 规范
const DEAI_VERIFIER_ABI = [
  'function verifyAndExecute(bytes32 taskId, bytes calldata aiResult, bytes calldata proof) external returns (bool)',
  'event TaskCompleted(bytes32 indexed taskId, address indexed user, bool success)'
];

interface AIInferenceRequest {
  userId: string;
  prompt: string;
  userSignature: string;
  timestamp: number;
}

export class DecentralizedAIPipeline {
  private provider: ethers.JsonRpcProvider;
  private relayerWallet: ethers.Wallet;
  private verifierContract: ethers.Contract;

  constructor(rpcUrl: string, relayerPrivateKey: string, contractAddress: string) {
    this.provider = new ethers.JsonRpcProvider(rpcUrl);
    this.relayerWallet = new ethers.Wallet(relayerPrivateKey, this.provider);
    this.verifierContract = new ethers.Contract(contractAddress, DEAI_VERIFIER_ABI, this.relayerWallet);
  }

  /**
   * 校验用户 EIP-712 / EIP-191 签名,防止身份伪造与重放攻击
   */
  public verifyUserSignature(req: AIInferenceRequest): boolean {
    const message = `DeAI-Request::Prompt:${req.prompt}::Timestamp:${req.timestamp}`;
    const recoveredAddress = ethers.verifyMessage(message, req.userSignature);
    
    // 防重放攻击:请求时间戳不能超过 5 分钟
    const now = Math.floor(Date.now() / 1000);
    if (Math.abs(now - req.timestamp) > 300) {
      console.error('❌ 请求超时,可能遭遇重放攻击');
      return false;
    }

    return recoveredAddress.toLowerCase() === req.userId.toLowerCase();
  }

  /**
   * 触发链下去中心化 TEE / zkML 节点推理(模拟)
   */
  private async dispatchToComputeNode(prompt: string): Promise<{ resultData: string; zkProof: string }> {
    console.log('⚡ 正在将 Prompt 分发给链下 TEE / zkML 算力网络...');
    
    // 模拟去中心化节点处理并生成 ZK 证明
    return new Promise((resolve) => {
      setTimeout(() => {
        resolve({
          resultData: ethers.hexlify(ethers.toUtf8Bytes(`AI_Output_For:${prompt.slice(0, 10)}`)),
          zkProof: '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef', // 模拟 zkProof 字节流
        });
      }, 1200);
    });
  }

  /**
   * 核心 Pipeline:完成链下推理并提交链上合约验证
   */
  public async processDeAITask(req: AIInferenceRequest): Promise<string> {
    // 1. 签名校验
    if (!this.verifyUserSignature(req)) {
      throw new Error('User signature verification failed.');
    }

    // 2. 计算任务唯一哈希 ID
    const taskId = ethers.solidityPackedKeccak256(
      ['address', 'string', 'uint256'],
      [req.userId, req.prompt, req.timestamp]
    );

    // 3. 链下算力节点计算与 Proof 生成
    const { resultData, zkProof } = await this.dispatchToComputeNode(req.prompt);

    // 4. 提交给链上 Verifier 合约验证结果与 Proof
    console.log(`📡 正在将结果与 zkProof 提交至链上验证合约, TaskId: ${taskId}`);
    
    const tx = await this.verifierContract.verifyAndExecute(taskId, resultData, zkProof, {
      gasLimit: 300000,
    });

    console.log(`⏳ 交易已发送,等待链上打包 confirmation: ${tx.hash}`);
    const receipt = await tx.wait();
    
    return receipt.hash;
  }
}

攻克原型到生产演进的能力地图

将去中心化 AI 落地为可用功能,工程师与架构师需要补齐以下维度的能力矩阵:

# DeAI 工程师全栈能力地图

## Level 1: 原型与演示阶段 (Demo Stage)
- [x] 掌握基础 Web3 钱包连接 (Wagmi / ConnectKit)
- [x] 能够通过中心化 API (OpenAI / Claude) 吐出文本
- [x] 掌握基础 Solidity 合约写操作与 ERC-20 交互

## Level 2: 生产可用阶段 (Production Ready)
- [ ] 掌握 **ERC-4337 账户抽象与 Session Keys**,实现零弹窗体验
- [ ] 掌握 **zkML 证明框架 (如 EZKL / RISC Zero)** 的编译与验证逻辑
- [ ] 具备 **链下 Event 监听器与 Web3 Relay 防重放** 架构设计能力
- [ ] 掌握 **IPFS / Arweave 无状态存储与去中心化向量数据库 (Chroma/Pinecone)** 的融合

## Level 3: 架构演进阶段 (DeAI Architect)
- [ ] 能够设计加密经济学 Incentive 机制,防范算力节点作恶与 Sybil 攻击
- [ ] 掌握可信执行环境 (TEE Intel SGX / Phala) 隐私计算的硬件隔离机制

去中心化 AI 演进路径表

演进维度 Hackathon Demo 状态 生产级 DeAI DApp 终态 提升成效
交互体验 每次调用弹窗 2~3 次签名 基于 Session Key 实现后台无感静默签名 留存率提升 80% 以上
可信度 盲目相信中心化 Server 返回的 AI 结果 链上合约验证 zkProof 或 TEE 硬件签名 实现真正的加密学抗篡改
数据可用性 存储在本地 JSON 或中心化 AWS S3 去中心化 IPFS / Arweave 永久存储 彻底去除了单点宕机隐患

去中心化 AI 不是把大模型强行搬到链上,而是在可信验证、无感交互与分布式算力之间找到优雅的工程平衡点。把 Demo 里的伪逻辑替换为严谨的密码学验证,才是产品走向生产交付的核心标志。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐