一个程序员怎么会上当

2025 年 4 月 12 日深圳的小林在 YouTube 看到一个 28 万播放的视频:「Build Your Own MEV Arbitrage Bot in 15 Minutes · Earn $300/day Passively」。英文口音不错的「开发者」逐步演示部署。小林懂 Solidity,自我设定是「我能读懂代码所以不会被骗」—— 然后他被骗了 2.5 万 U。

怎么会?他跟着视频走:Remix 里打开教程给的 Pastebin 合约源码、用自己钱包部署到主网(gas 18 美元)、视频说「为让 bot 有套利本金,请向合约 deposit 0.5-1 ETH」,他转了 1 ETH。视频接下来说「点击 Start 即可开始套利」。他点 Start,几秒后合约里的 1 ETH 不见了。

哪里不对

第一个不对是「合约 owner 字段不是 msg.sender」。真套利策略是无状态的合约逻辑,不需要 owner —— 因为执行者就是部署者。这个视频教程里的合约 owner 是硬编码的视频作者地址(hex 字面量写在源码里)。小林部署时 gas 用的是自己钱包,但合约里的「老板」是别人。

第二个不对是「Start() 函数实际逻辑」。Solidity 代码可以通过命名误导让人读不懂。Start() 函数里调用一个名字像 _executeStrategy() 的内部函数 —— 实际写的是 owner.transfer(address(this).balance)。小林作为开发者读源码时跳过了内部函数体(默认相信函数名描述的语义)—— 这是程序员审外部代码的典型盲点。

第三个不对是「合约要求 deposit 本金」。真套利合约从来不要求用户 deposit 本金,因为现代套利全部用 flashloan —— 借进借出在一笔交易内完成,本金归 0。任何让你「先充钱给合约才能开始套利」的逻辑都是假的。

你能学到什么

最戏剧性的是接下来这一段:小林转进去的 1 ETH 没回来时他归咎于「我的 Solidity 理解不到位」,又转了 1 ETH 试不同参数 —— 反复直到 2.5 万 U 才意识到。这种「我是聪明人不会被骗」的自信反而让程序员群体在加密钓鱼里损失率不比新人低。

能学到的第一条:自信不是核验。能读 Solidity 代码不等于已经核验了一份代码。真核验要逐行读、要做单元测试、要在测试网部署、要 fuzz —— 这些步骤一个不少,否则就是没核。

能学到的第二条:辨别假套利 / 假 MEV 教程的三条硬指标,所有正经教程都该全过:

  1. 真套利合约不要求 deposit 本金(用 flashloan 就够)
  2. 真套利策略无状态、不需要 owner 字段
  3. 真套利 repo 在 GitHub publicly accessible(不是 Pastebin / Anonfiles)
  • 教程要求你 deposit 启动资金到 bot 合约 —— 真套利 bot 用 flashloan 不需要你的本金
  • 教程提供 Pastebin / Anonfiles 源码下载链接 —— 而不是 GitHub 公开 repo
  • 合约 owner 是视频作者,而非 msg.sender —— 一行代码差别但你的钱直接归他
  • 视频评论区清一色已赚到 / 感谢老师 —— 水军特征
  • 教程要求你「赋予合约 unlimited 授权」—— 这是榨干所有 token 的标配后门

钱进了合约就是丢了 —— 合约部署是不可逆的,attacker 提走的 transaction 也是不可逆的。按《私钥泄露应急 · 五步抢救流程》后半:保留视频链接、合约地址、部署 / 调用哈希作证。举报 YouTube 视频 → Spam or misleading → Scams or fraud。小林后续帮一位朋友审了一份类似教程,发现同样的 owner 后门 —— 这类钓鱼合约源码可以批量生成,只换函数名和注释。他把样本提交到 GitHub awesome-evm-honeypots 库做反向教材。

写在最后

这个案例的真正用法不是看完点个收藏,而是把识别要点那几条记进脑子里。下次类似场景出现时,让你 3 秒内识破。

冷藏君

持币手册的作者。2016 年入场,经历过几轮牛熊,自己被骗过、也救回过别人的币。这本手册是把这些年学到的、踩过的、救回的,整理出来。

本文所有「案例描述」均为基于真实事件的合成与脱敏改写,不指向任何具体真实当事人。文中具体金额、时间、人名均为案例库的脱敏数据。本文不构成投资建议或法律建议,仅供学习参考。如发现内容错漏或想补充新型案例,欢迎通过勘误页反馈。