Alert Source Discuss
⚠️ Draft Standards Track: ERC

ERC-7662: AI Agent NFTs

一个代表 AI 代理的 NFT 的规范。

Authors Greg Marlin (@marleymarl)
Created 2024-03-26
Discussion Link https://ethereum-magicians.org/t/erc-7662-ai-agent-nfts/19371
Requires EIP-721

摘要

本提案介绍了一个 AI 代理 NFT 的标准。当 AI 代理被创建和作为 NFT 交易时,将提示放入 token 元数据中没有意义,因此需要一个标准的自定义结构。将提示直接存储在链上也没有意义,因为它们可能非常大,因此本标准建议将它们存储为去中心化存储 URL。本标准还提出了两种选项,说明如何使这些数据对 NFT 的所有者保密,其中首选的实现选项是使用自定义合约参数加密数据以进行解密,该参数仅对 NFT 的所有者进行解密。

动机

AI 代理 NFT 的创建和交易非常契合,并为全新的链上市场提供了潜力。这需要通过自定义结构将一些自定义数据嵌入到 NFT 中,并且需要对其进行标准化,以便任何市场或 AI 代理管理产品(等等)知道如何创建和解析 AI 代理 NFT。本标准的目标是为 AI 领域的 NFT 提供新的实用程序,并通过 NFT 市场为 AI 代理提供新的流动性。如果被市场、基础设施和无代码提供商广泛采用,这将为不同领域的 AI 代理创建者、AI 代理消费者和 NFT 市场开辟一个新的市场和社区。

规范

本文档中的关键词“必须”、“不得”、“必需”、“应”、“不应”、“建议”、“不建议”、“可以”和“可选”应按照 RFC 2119 和 RFC 8174 中的描述进行解释。

所有符合 ERC-XXXX 的合约必须实现用于铸造和转移 NFT 的标准 ERC-721 功能,并且必须额外实现此标准的 Agent 接口

   
interface IERC7662 is IERC721 {

    function getAgentData(uint256 tokenId) external view returns (
        string memory name,
        string memory description,
        string memory model,
        string memory userPromptURI,
        string memory systemPromptURI,
        bool promptsEncrypted
    );

    event AgentUpdated(uint256 indexed tokenId);
}

并且必须实现 NFT Token ID 和其 Agent 信息之间的映射。

建议此映射是公开的,并且 User Prompt 和 System Prompt 的 URI 通过加密设为私有,解密逻辑设置为 NFT 的持有者,通过在加密期间设置的自定义合约参数,并且用于提供此加密的方法或平台应可作为 NFT 的数据属性检索,以便应促进这些 NFT 使用的平台可以设置一种可预测的方式来处理此解密,具体取决于所使用的平台或方法。

也可以创建一个实现,其中此映射设置为私有,并通过限制对 NFT 持有者访问的自定义函数进行访问。但是,这种方法会通过它们的 URL 公开提示,因此建议的方法是公共映射和 URL 上的加密。这也具有公开暴露 Agent 结构中的数据以验证名称、描述和模型以及 User Prompt 和 System Prompt 的加密 URI 是否存在的优点。

所有符合 ERC-XXXX 的合约必须实现一个用于铸造新 Agent token 的函数。此函数应:

  • 接受所有 Agent 属性(名称、描述、模型、userPromptURI、systemPromptURI 等)的参数
  • 将新 token 铸造给指定的接收者
  • 将提供的 Agent 属性与新铸造的 token 关联
  • 发出一个事件,表明新 Agent token 的创建

建议 ERC-XXXX 兼容合约提供加密用户提示和系统提示的功能。此功能应:

  • 仅允许 token 所有者加密提示
  • 使用加密版本更新 userPromptURI 和 systemPromptURI
  • 设置一个标志,指示提示已加密

建议实现以下事件:

event AgentCreated(string name, string description, string model, address recipient, uint256 tokenId)

当铸造新的 Agent token 时,应发出此事件,提供有关新创建的 Agent 的关键信息。

为了使动态变量在运行之前注入到 User Prompt 中,任何此类变量必须用 ${} 包围,例如 ${dynamicVariableName},以便它们可以被将启用注入的程序和系统(例如 Web 表单和自动化系统)正确识别和处理。

建议向 ERC-721 标准添加数据,以便 NFT 市场等可以轻松显示有关 AI 代理 NFT 的数据,即 Model,进而揭示用于代理的平台,例如,对于 gpt-4-0125-preview,为 OpenAI,对于 claude-3-opus-20240229,为 Anthropic。标准名称和描述可用于显示 Agent 名称和 Agent 描述。

理由

该标准提供了一种创建和解析 AI 代理 NFT 的统一方法。

此标准编纂了创建和使用 AI 代理 NFT 所需的名称、描述、模型、用户提示和系统提示参数。

将用户和系统提示存储在现有的 ERC-721 中没有实际意义,因为唯一可以放置的地方是在 token 元数据中,该元数据对任何人开放,无需拥有 NFT 即可访问提示。通过将提示存储在自定义 Agent 结构中并将对提示的访问限制为 NFT 的持有者。一种方法是通过自定义函数将对结构信息的访问限制为 NFT 的持有者,但是由于该选项仍然将提示 URI 公开给公众,从而公开了其中的数据,因此建议的方法是通过加密链上的提示并将 URL 的解密绑定到 NFT 的持有者,使用链上服务,使解密能够绑定到合约参数,例如 ownerOf(tokenId)。

向后兼容性

AI 代理 NFT 标准向标准 ERC-721 协议引入了额外的功能和数据,旨在满足使用 NFT 存储、交易和使用 AI 代理的实际要求。它被设计为与原始 ERC-721 标准完全向后兼容。所有现有的 ERC-721 函数(例如 transferFrom、approve 和 balanceOf)保留其原始功能和接口。我们的扩展不会修改这些核心行为,从而确保任何 ERC-721 兼容钱包或服务都可以与这些 token 交互而无需修改。

参考实现

这目前正在通过 DApp 界面在用于创建、管理和使用链上 AI 代理的产品中实现。在此实现中,加密平台用于加密提示,使用自定义 EVMContractParameters,仅对 NFT 的持有者进行解密,并使用去中心化存储网络来存储此加密数据的 URL。为了方便起见并使 DApp 处理更容易,一些参数已添加到 Agent,并且添加了 addEncryptedPrompts 函数,该函数可以在首次铸造 NFT 后添加加密的提示 URI(因为 NFT 的 tokenId 需要用于设置加密/解密条件)。

参考智能合约在 assets 文件夹中提供。

安全考虑

版权

版权和相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Greg Marlin (@marleymarl), "ERC-7662: AI Agent NFTs [DRAFT]," Ethereum Improvement Proposals, no. 7662, March 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7662.