ERC-725 拆开看:一个合约的存储抽屉和执行手臂
很多链上档案页会告诉你某个 NFT 的元数据住在 ERC-725 合约里;也有教程把 ERC-725 直接讲成智能账户标准。两种说法都只说对一半——这份 2017 年 10 月 2 日起草、至今保持 Draft 的标准其实是两个零件的组合装:ERC725Y,一个通用的键值存储;ERC725X,一个通用的执行函数。原文态度明确,两者可以合用也可以分开用,Y 常被拿来给 NFT 和代币增强元数据,X 则让合约像账户一样行动。
Y 是抽屉,X 是手臂
Y 的部分接口很朴素:setData 与 getData 按 bytes32 键读写值,Batch 版本一次操作一组。真正的复杂度在约定上:键本身没有标准语义,同一个键在不同项目里可能是任何含义。LUKSO 为此维护了 LSP2 这样的键模式规范,把每个键定义成类型与值的编码蓝图;键的哈希算法也因此成为项目方言的一部分,读别人的 ERC725Y 数据而没拿到键表,等于拿着一串十六进制猜字谜。原文还点出一个容易混淆的分工:ERC725Y 这个 ERC 只负责存取裸值,按模式解码出结构是 LSP2 的工作。对 NFT 场景这是一个务实的组合:代币合约保持 721 不动,把易变的、需要增补的元数据搬进一个 ERC725Y 合约,tokenURI 指向那里,改动记录全部留在链上可查——相当于给元数据找了一个有审计轨迹的住处,而不是散落在某个随时会失效的网站域名上。
X 的部分一个函数包打天下:execute 接操作类型、目标地址、金额与调用数据,操作类型从 0 到 4 分别是 CALL、CREATE、CREATE2、STATICCALL 与 DELEGATECALL,创建合约时目标应为空地址,静态与委托调用时金额应为零;Batch 版本一次执行一组。合约受单一所有者控制,沿用 ERC-173 的 owner 与转所有权,事件层记录 Executed 与 ContractCreated,谁在什么时候以什么方式花了这个账户的钱,全部可从事件还原。两个零件合体的账户形态在 LSP0 里有了正式名字 ERC725Account:手臂负责花钱和调合约,抽屉存身份记录和权限表,所有动作的触发权在 owner 手里。接口识别按 ERC-165 登记,X 的接口 id 是 0x7545acac,Y 是 0x629aa694,工具扫一眼 supportsInterface 就能分辨合约装了哪个零件。
这份标准另一个值得留意的特点是它的长寿与间接影响力:起草于 2017 年 10 月的文本至今停在 Draft,却成为 LUKSO 生态把智能账户与数字身份做成体系的底座,X 与 Y 这两个零件也被更多项目单独取用。一个接口小而稳的草案能养活一整套框架,这种标准与实践的错位,和它把存储与执行拆开的模块化设计是同一件事的两面。

给藏家的三句读法
第一句,看到元数据地址指向 ERC725Y 合约,先用 supportsInterface 确认 Y 在册,再找项目的键表把关心的键解码,直接读原始值大概率只会误读。第二句,ERC725X 的执行能力与代理合约的 delegatecall 只有一线之隔:X 的 operationType 允许委托调用,而一个把 X 暴露给任意 owner 的合约,owner 被钓鱼就等于合约以自身身份做任何事——权限边界完全由 owner 配置与多签结构决定,标准本身不提供保险。第三句,X 与 Y 的组合没有规定谁能读谁能写,透明性与隐私取决于部署:同一份接口既能做公开档案,也能做只对成员可见的记录本,读之前先想清楚你在查的是谁的抽屉。最后补一条通用直觉:把 ERC-725 当作乐高底板而不是成品,它承诺的是形状不是功能——你能确定接口长什么样,但权限模型、键语义、资金规则全在部署者手里。评估任何自称 ERC725 账户的地址,正确姿势都是三步连招:supportsInterface 看零件、读键表解抽屉、翻事件追手臂,三步都过了,这个账户的行为才算可读。本文为机制说明,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。