ERC-3722 Poster:往链上发一条带标签的广播 图 1
ERC-3722 Poster:往链上发一条带标签的广播 · 图 1

ERC-3722 Poster:往链上发一条带标签的广播

以太坊上发一条推文的官方姿势是什么?ERC-3722 的答案简短到近乎幽默:一个合约、一个函数、一个事件。合约调用 post,参数是内容字符串与标签字符串,合约把这两段文本连同调用者地址一起塞进 NewPost 事件,执行完毕。没有存储、没有映射、没有状态——全部数据躺在事件日志里,链上”时间线”由索引器在链下重建。提案在 2021 年 7 月 31 日创建,状态 Stagnant,却成了链上社交和链上签名公告场景里最常被直接抄的最小样本。

事件当存储:省钱账与查询账

把数据写进事件而非存储槽,成本结构完全不同。存储槽写入一次要数万 gas,事件日志字节的单价低得多,且同一份数据所有读者共享同一段日志。代价在另一头:合约里没有任何函数能”读出某条帖子”,所有查询都是对全量 NewPost 事件的离线扫描与重建,前端看到的时间线永远取决于索引器的实现质量。提案为 Twitter 式场景给出了一份标准 JSON 格式——content 数组里每个条目带 type 字段(microblog、reply、like 等操作),条目间可用 replyTo 引用相互串成话题串,索引器据此拼装线程。换句话说,标准管的是”怎么写得让人人能懂”,读端一致性问题留给生态解决。

ERC-3722 Poster:往链上发一条带标签的广播 图 2
ERC-3722 Poster:往链上发一条带标签的广播 · 图 2

事件里的地址才是资产

Poster 对 NFT 圈的真正用处不在社交。事件里的 msg.sender 是密码学绑定的:谁在何时发出过这段字符串,事后无法抵赖,字符串本身随出块永久留在日志里。于是三个场景顺手成立。一是链上签名公告:持有者把一段带日期或nonce的声明文本 post 出来,等于公开广播”我此刻控制这个地址”,任何第三方日后可独立取证——这比私聊截图强一个量级。二是内容锚定:创作者先 post 一段作品哈希,之后再铸造 NFT,日志时间戳给出”哈希先于铸造存在”的顺序证据,供原创争议时参考。三是属性变更说明:项目方改元数据前后各 post 一条说明,社区可用两份日志核验公告与实际操作是否相符。三处的原理相同:锚的是字符串与地址的绑定,不锚内容真伪——你可以证明某地址广播过某哈希,不能证明哈希对应的原始文件没有更早版本。

索引器这条单行道还派生出两个使用侧的守恒提醒。第一,一致性完全取决于索引器,遇到两条时间线显示不一致时,以事件原文为准:直接按合约地址过滤 NewPost,用浏览器或脚本还原原始字符串,任何前端都只是它的投影,投影可以有缓存滞后,日志不会说谎。第二,标签虽然进了事件索引,但它区分大小写、不做归一化,nft-noticeNFT-Notice 在事件层是两个标签,项目方发公告时混用标签会让”按标签查全量历史”失效,这属于协议层不管、纪律层兜底的典型缺口——给任何基于 Poster 的公告系统提验收要求时,标签枚举应当写进运营手册。再补一条常被低估的负面用法:事件是公开广播,把任何只想给特定人看的内容写进 post,等同于向全网永久公开,包括未来的链上分析工具与你的对手方;在”链上留痕更可信”与”链上留痕更透明”之间, Poster 永远站在透明那一侧,用之前先想清楚这条字符串会被谁在未来读到。

使用姿势与坑

写进事件的字符串永久公开、永久可检索,草稿、隐私信息、尚未发布的链接一旦发出就收不回,发前当作”印上报纸头版”自检。事件没有长度硬限制但整笔交易受 gas 与区块大小约束,超长内容拆分多次发布还要设计好关联字段。标签参数在事件签名里带 indexed,按标签过滤高效——把协议名、合约地址之类做标签,等于给后续索引器留路标。最后,事件数据不可删改也不可篡改,但也无人担保它”有意义”:任何地址都可广播任何字符串,看到某地址的链上留言时,仍需结合该地址的其他行为判断其分量。本文为机制说明,不构成任何投资建议。