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 的应用场景非常广泛:
- 自我主权身份 (Self-Sovereign Identity, SSI):用户可以完全控制自己的数字身份,管理个人数据,并有选择地向 DApp 授予访问权限,而无需依赖中心化服务商。
- 通用 DApp 配置文件:用户可以在其 ERC-725 身份上存储一次个人资料(如用户名、头像),所有集成了该标准的 DApp 都可以读取这份资料,无需重复创建。
- 设备与物联网 (IoT):为物联网设备创建一个链上身份,使其能够自主地进行交易、注册或与其他设备交互。
- 组织与 DAO:为去中心化自治组织 (DAO) 创建一个身份,管理其成员、投票权和资产。
结论
ERC-725 是构建去中心化社会 (DeSoc) 和 Web3 的一个基础构件。它通过提供一个标准化的、可扩展的身份层,将以太坊从一个纯粹的金融交易网络,转变为一个能够承载复杂社会和经济活动的平台。随着账户抽象 (ERC-4337) 的普及,基于 ERC-725 的智能合约钱包有望成为未来用户进入 Web3 的主要入口。