以太坊地址只有一种样子,Filecoin 却有好几种。官方参考库 go-address 按构造方式提供了几类地址:从数字 ID 构造的 ID 地址、从 secp256k1 公钥推导的地址、从 BLS 公钥推导的地址,以及从数据构造的 actor 地址。落到文本上,它们分别以 f0、f1、f2、f3 开头:f0 是链上分配的数字编号,f1 由 secp256k1 公钥哈希而来,f2 指向已部署的 actor,f3 由 BLS 公钥推导。2022 年 10 月提出的 FIP-0048 给这个家族加了第五位:f4 委托地址,状态 Final。
f4 的构造:一个命名空间规矩
FIP-0048 把 f4 定义成一个可扩展的地址类:每个 f4 地址由一个“地址管理 actor”负责签发。二进制形态是三段拼接——协议号 0x4、leb128 编码的管理者 actor ID、任意子地址;文本形态写成 f4 加十进制 actor ID、字母 f、再加 base32 编码的“子地址拼上校验码”,校验码用 blake2b 取 32 位,与 f1 到 f3 的文本校验同一套做法。文档举例:管理者地址是 f010 的 actor,就负责签发 f410 打头的所有地址。

为什么要加这一类
官方给出的动机有三层。第一,兼容外来寻址系统:以太坊的 EVM 有自己的 0x 地址,FVM 把 0x 空间映射进 f4 的一个子命名空间,由 ID 为 10 的账户管理器统一签发,f410 前缀就是这条映射的载体。第二,可预测地址:部署之前就能算出合约未来会坐在哪个地址上,跨链桥和工厂类合约依赖这件事。第三,先收款后部署:FIP 之前的世界里,给还不存在的 f1 或 f3 账户转账是允许的,钱会由协议记着,但给一个尚未部署的非账户 actor 转账没有渠道;f4 把这个能力扩展到了任意委托命名空间,FIP 为此引入占位 actor(placeholder actor)来替你收着先行到账的资金,等到真正部署时再交付。
机制层加了什么
为支撑 f4,规范动了四处:新增 f4 地址类本身,要求工具链适配解析;在 init actor 上新增 Exec4 方法,让部署可以带一个处于部署者自己子命名空间下的 f4 地址;新增 lookup_delegated_address 系统调用和 ActorState 上的 delegated_address 字段,用来查询某个 actor 的 f4 地址;f4 到 actor ID 的映射与 f1 到 f3 存在同一张 init actor 的地址表里,不需要额外状态迁移。规范同时注明:现阶段 f4 只能由官方认定的地址管理 actor 与其关联部署签发,未来才向社区自建的管理者开放。
两种写法,同一个 actor
这里藏着用户最容易困惑的一点。FIP 定义的是通用文本形态,但官方同样明确期望:浏览器和客户端应当理解具体命名空间,并按“本地”形态展示——f410 空间里的 EVM actor,工具应当直接显示为 0x 开头的地址。也就是说,同一个账户在链上档案里可能写作 f410f……,在以太坊化钱包里显示为 0x……,两者不是两个账户,而是同一映射的两次投影。地址识别的规矩和波卡系 SS58 前缀、Aptos 长短地址的处理思路相近,可以对照阅读:同一把公钥在不同链地址却不同:SS58 地址格式与前缀校验、Aptos 地址为什么能短成 0x1:AIP-40 的长短形态与显示规矩。
转账前能核对什么
作为用户,可执行的动作有四条:一是看钱包的输入校验,正规钱包应当能区分 f0 到 f4 各协议,遇到不认识的格式报错而不是照发;二是理解 f410 与 0x 的对应关系,别把同一个账户的两个写法当成两个收款人;三是先收款后部署的场景要用小额测试,钱停在占位 actor 期间,只有目标合约部署成功后才归位;四是记住 Filecoin 链标识的 f 与 t 二分说的是网络选择,不是地址格式:链标识只用一个字母:CAIP-23 的 Filecoin f 与 t 二分法。资产价值波动不靠地址格式担保,本文只讲编码与规则,不构成投资建议。
校验码是你的第一道闸
文本层的规矩值得再强调一遍:f4 的尾部是 base32 编码的子地址拼上 blake2b 的前 4 字节校验,抄错任何一个字符,正规解析器都会当场报错而不是发出交易;这与 f1 到 f3 的文本校验同源。反过来说,校验只能防手滑,防不了语义:把别人钱包显示的 0x 形态地址和链上档案的 f410 形态地址当成两个人,或者把不认识的协议前缀强行粘进输入框,都是校验码管不住的错。转账前确认格式与网络匹配,永远值得。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。