用 ETH「链上聊天」:一文看懂 Input Data 的妙用与风险

·

开篇小故事:13.37 ETH 的链上留言

还记得 Poly Network 被盗事件吗?一位匿名地址在转账的 input data 里写下一句话:“USDT 已被冻结,别用 USDT 提现。” 黑客当真看懂了这条链上“留言”,反手就给该地址转了 13.37 ETH。这一戏剧性插曲,让“用 ETH 聊天”瞬间火遍中文 Web3 圈。

👉 想亲手试试链上留言?点这里立刻查看 0 Gas 教程


什么是 Input Data?

核心关键词:以太坊交易、区块链浏览器、交易结构

在以太坊,每一笔交易(Transaction)都附带一段 input data,它决定了交易在 EVM 中具体做什么:


拆解 Input Data:看一段十六进制文本如何被 EVM 读懂

1. 结构总览:函数标识符 + 参数

以 ERC-20 转账为例,在区块链浏览器里你能看到一串看起来很乱的十六进制字符:

0xa9059cbb
000000000000000000000000345d8e3a1f62ee6b1d483890976fd66168e390f2
0000000000000000000000000000000000000000000054b7d8ed70650b290000

拆成三段你就懂了:

小标题内容说明
函数选择器0xa9059cbb这是 transfer(address,uint256) 签名的 Keccak-256 哈希前 4 字节
第一个参数64 位补零后的地址收款人
第二个参数64 位补零后的数值转账数量

2. 为什么是 4 字节?成本省 8 倍!

3. 静态 vs. 动态参数编码

示例——对 uint256[] 的编码:

0000000000000000000000000000000000000000000000000000000000000060 // offset = 96
...
0000000000000000000000000000000000000000000000000000000000000003 // 长度
00000000000000000000000000000000000000000000000000000000000000a1 // 元素 1
...

短地址攻击的“坑”

地址如果最后碰巧是两个 00,前端偷懒把“00”去掉,EVM 会误认为剩下字节是地址,导致把 amount 高位再补 0。于是金额直接 ×256,攻击者瞬间多拿 255 倍币。
记忆口诀:别剪地址尾巴,补零风险大

👉 演练一把真实交易?点击模拟输入 data 实时调试


用 Input Data 在链上“聊天”的四步曲

以太坊纯转账交易的 input data 原本是空着的,你可以把任何 UTF-8 文本转成十六进制写在里头。操作步骤:

  1. 打开高级模式
    在 MetaMask 设置 → 「高级」→ 开启「显示十六进制数据」开关。
  2. 准备文本
    将你的想说的话(如“HODL to the moon 🚀”)在线转成十六进制,注意最终结果要以 0x 开头。
  3. 输入数据并转账
    把十六进制字符串贴到「十六进制数据」框,确认后再发送少量 ETH。
  4. 公开验证
    交易打包后,去任意区块链浏览器打开该 tx,查看「Input Data → UTF-8」即可看到全文记录,永久不可篡改。

贴士: 链上存储按字节计费。一句话 20 字节 ≈ 7 K gas,与一笔简单转账相比几乎可以忽略,但别写长文一首歌,那费用可吃不消。


实际场景:Input Data 还能做什么?


常见问题 FAQ

Q1:任何钱包都能自定义 input data 吗?
不是。MetaMask、Rabby 支持,中心化交易所通常屏蔽该字段。

Q2:写中文会被截断吗?
UTF-8 编码后同样适用,但尽量控制长度 ≤ 1 KB,否则 gas 炸裂。

Q3:可以删除或改写已提交的 input data 吗?
无法删除。只要上链,即为永恒,除非全链回滚(概率≈灭霸响指)。

Q4:会不会暴露隐私?
是的,链上信息全世界可见。别写身份证号、银行卡号等敏感内容。

Q5:一笔普通转账若附带较多文字,手续费会增加多少?
额外约 (字节数 × 68-68) gas。写 16 个字的中文大约 48 字节,额外 3,200 gas,当前均价 20 gwei 时 ≈ 0.000064 ETH,不到 1 元人民币

Q6:为什么说这是“公开信”而不是“私信”?
因为区块链去中心化设计,所有节点都会同步并永久保留这份数据,任何人都可查看。


小结:把区块链当「留言墙」的规则书

  1. input data 就是 ETH 世界里的“便签条”。
  2. 任何文本都可编码,做成永不消失的备忘录。
  3. 切莫乱写敏感内容,切忌手抖弄丢高昂 gas。
  4. 把事情写简单、写清楚、写好玩,就能像那 13.37 ETH 的故事一样,成为链上传奇。

下次转账前,别急着点“确认”,给未来留一句“到此一游”吧!