Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ERC-725: 区块链身份标准

摘要

ERC-725 是一个为基于区块链的身份(或任何事物)建立的通用、可扩展的标准。它允许智能合约拥有一个去中心化的身份,并通过一个统一的接口来管理与之关联的数据和权限。这个标准主要分为两部分:ERC-725X (执行) 和 ERC-725Y (数据)。


1. 背景:为什么需要链上身份?

在以太坊上,EOA(外部拥有账户)和合约账户本身不包含任何元数据。一个地址 0x... 无法告诉我们它代表的是一个人、一个组织、一台设备还是一个 DApp。为了解决这个问题,我们需要一个标准化的方式来为账户附加信息和管理权限,这就是 ERC-725 的目标。

ERC-725 旨在为任何地址(无论是合约还是未来的账户抽象钱包)创建一个可编程的、自我主权的身份。


2. 核心概念

ERC-725 身份由两个核心部分组成,它们通常在同一个智能合约中实现。

ERC-725Y: 通用键值数据存储

ERC-725Y 提出了一种使用键值对来存储身份数据的标准。这使得身份信息变得非常灵活和可扩展。

  • 数据键 (Data Key):是一个 bytes32 值,用于标识一段特定的数据。为了避免冲突并实现互操作性,社区定义了一个通用标准 LSP2 (LUKSO Standard Proposal 2) 来规范如何生成这些键。例如,一个名为 UserProfile 的 JSON 对象的键可以被标准化地哈希为一个 bytes32 值。
  • 数据值 (Data Value):是与键关联的 bytes 数据。它可以是任何信息,例如个人资料、认证声明、其他资产的地址等。

通过 getData(bytes32 key)setData(bytes32 key, bytes value) 这两个核心函数,任何外部应用都可以以标准化的方式读取或写入(如果权限允许)一个身份的数据。

示例: 一个用户的身份合约可以存储以下信息:

  • keccak256("LSP3Profile") -> 0x... (指向一个包含个人资料 JSON 文件的 IPFS CID)
  • keccak256("LSP5ReceivedAssets[]") -> [0x..., 0x...] (该身份拥有的资产列表)

ERC-725X: 通用执行

ERC-725X 允许身份的所有者或授权的密钥,通过该身份合约执行任意操作。

  • execute(uint256 operationType, address target, uint256 value, bytes calldata):这是 ERC-725X 的核心函数。它允许身份合约与其他智能合约进行交互。
    • operationType: 定义了操作类型,如 CALL, CREATE, STATICCALL 等。
    • target: 目标合约地址。
    • value: 发送的 ETH 数量。
    • calldata: 要执行的函数调用数据。

这种设计将 “谁可以执行” (权限管理) 和 “可以执行什么” (具体操作) 分离开来。身份合约的所有者可以授予不同的密钥不同的权限,例如:

  • 一个密钥只能用于在社交媒体 DApp 上发帖 (execute 调用该 DApp 的 post 函数)。
  • 另一个密钥可以转移资产 (execute 调用 ERC20 的 transfer 函数)。
  • 主密钥拥有管理其他密钥的最高权限。

3. 权限管理与密钥

ERC-725 的强大之处在于其灵活的权限管理系统。身份的所有权不是由单个私钥(像 EOA 那样)控制,而是由一组具有不同权限的密钥来管理。

  • 密钥 (Key):可以是 EOA 地址或另一个合约地址。
  • 目的 (Purpose):每个密钥都被分配一个或多个“目的”,定义了它能做什么。例如:
    • PURPOSE_MANAGEMENT: 管理密钥和权限。
    • PURPOSE_EXECUTION: 执行交易。
    • PURPOSE_ENCRYPTION: 用于加密数据。
  • 方案 (Scheme):定义了签名的类型,例如 ECDSA (用于 EOA) 或 EIP1271 (用于合约签名)。

这种模型被称为 “元交易 (Meta-Transactions)” 的一种实现,因为交易的验证逻辑(签名和权限检查)是在合约内部处理的,而不是由以太坊协议本身处理。


4. 用例

ERC-725 的应用场景非常广泛:

  1. 自我主权身份 (Self-Sovereign Identity, SSI):用户可以完全控制自己的数字身份,管理个人数据,并有选择地向 DApp 授予访问权限,而无需依赖中心化服务商。
  2. 通用 DApp 配置文件:用户可以在其 ERC-725 身份上存储一次个人资料(如用户名、头像),所有集成了该标准的 DApp 都可以读取这份资料,无需重复创建。
  3. 设备与物联网 (IoT):为物联网设备创建一个链上身份,使其能够自主地进行交易、注册或与其他设备交互。
  4. 组织与 DAO:为去中心化自治组织 (DAO) 创建一个身份,管理其成员、投票权和资产。

结论

ERC-725 是构建去中心化社会 (DeSoc) 和 Web3 的一个基础构件。它通过提供一个标准化的、可扩展的身份层,将以太坊从一个纯粹的金融交易网络,转变为一个能够承载复杂社会和经济活动的平台。随着账户抽象 (ERC-4337) 的普及,基于 ERC-725 的智能合约钱包有望成为未来用户进入 Web3 的主要入口。