多出来的 0 金额转账是有人往你的转账记录里放了一个仿造地址
转账记录里多出一笔不是你发的转账:金额是 0,这个币的余额没变,对方地址的头几位和末几位跟你打过交道的某个地址相同。这是地址投毒(address poisoning)里的 0 金额转账,那个地址是仿造的。币没有被转走,单凭这一条记录也不说明钱包被盗。
要改的是下一笔转账的做法:收款地址不从转账记录里复制。回到收款方当初发给你的那份地址(聊天记录、邮件、对方平台的收款页)重新取一次,粘贴之后把整串字符从头对到尾,中间那一段也要对。
怎么确认币没有被转走:看余额、金额和对方地址
币被转走,余额会变少。下面三处在钱包里看得到,也可以到区块浏览器(公开查询任意地址转账记录的网站)里搜自己的地址来看;币在哪条链,就用那条链的区块浏览器查。
- 余额。这个币现在的数量,和这条记录出现之前一样。
- 金额。这笔转账的数量一栏是 0。
- 对方地址。开头几位、结尾几位看着眼熟,像你转过账的某个收款地址,也可能像你自己的地址。地址中间被省略显示时,点开看完整的一串,中间那段和你认得的那个对不上。
三处都符合,对应的是 Etherscan(以太坊的区块浏览器)信息中心讲的 0 值代币转账攻击(Zero-Value Token Transfer Attack):攻击者仿造一个首尾几位与受害者地址相同的地址,让人把它当成熟悉的地址,把钱转过去。这页告诉在它网站上看到这类转账的用户:保持冷静,钱包没事,密钥是安全的。
转来的是极小的一点真币,或者一个同名的假币,也属于地址投毒,对照表在第 3 节。
另外,点过不明链接、签过看不懂的钱包授权、在别处输过助记词或私钥的,或者余额真的少了的,上面的结论不适用。这些事和 0 金额转账可以同时发生,要按 ethereum.org 《我被骗了或丢失了资金》页的步骤处理,头两步是把剩余资金转到一个对方碰不到的新钱包、撤销代币授权。
别人为什么能让我的地址显示转出了一笔 0 金额?
记录里发出方一栏写着你的地址,像是你自己转了 0 个币出去。这条记录能生成,原因在代币标准里。
以太坊的代币标准 ERC-20 里有一个函数叫 transferFrom,用来把代币从一个地址转到另一个地址,本来是给代扣用的:你先给某个合约一个授权额度,也就是允许它动用多少币,它再替你转。按标准,每发生一笔转账都要发出一条 Transfer 事件,相当于在链上记下谁转给谁、转了多少。转 0 个币的情况标准也写了:必须当作正常转账处理,并且触发 Transfer 事件。
Etherscan 在讲地址投毒的说明里解释了这一条怎么被利用:对 USDC、USDT、DAI 这类真代币,攻击者发起一笔转 0 个币的 transferFrom;每个地址默认的授权额度就是 0,所以 Transfer 事件照样发出,一条 0 金额记录就留在了受害地址的转账历史里。
发起调用的是攻击者,用到的只是每个地址默认就有的 0 额度。所以单是多出这样一条记录,不代表你签过名,也不代表你给谁授权过。
记录里的同名假币、小额真币和 0 金额转账属于同一种骗法
地址投毒在转账记录里有三种长相,下表按你会看到的样子排,细节见 Etherscan 讲地址投毒的说明。
| 看到什么 | 是什么 | 怎么分辨 |
|---|---|---|
| 一笔写着 USDT、USDC 的代币转账,从一个和你常用地址相似的地址发来,名称和符号都对,金额还可以和你某笔真实转账相同 | 攻击者自己部署的代币合约,名称和符号仿照真币;这种仿冒代币没有价值 | 看代币合约,不是真币的那一个;名称、符号和金额都可以仿得一样 |
| 收到极小额的真 USDT 或 USDC,发来的地址看着眼熟 | 用地址生成工具造出来的相似地址,中间被省略显示时与目标地址看上去完全相同 | 金额不是 0,币是真币;让地址显示完整的一串,中间一段对不上 |
| 一笔金额为 0 的真代币转账,记录里出现了那个相似地址 | 由别人发起、转 0 个币的调用 | 金额一栏是 0,这个币的余额没有变化 |
FBI 丹佛分局的公告只讲了表里第 1 行那种:仿冒 USDT 等稳定币的代币,从一个与你往来过的正规地址极为相似的地址发过来。收到别人地址发来的代币时,先查资金来源,再到公开的区块浏览器上查这个地址和代币,有的浏览器会标出可疑的地址或代币合约。
三种长相要的是同一个结果:你下一笔转账时把那个仿造的地址填进收款栏。几种手法可以叠在一起用。可疑的代币不与它发生任何交互,在 Etherscan 上可以加进忽略列表隐藏。
这类记录是成批制造的,不是冲着你一个人来的:一项对以太坊和 BNB 智能链(BSC)两年数据的研究统计到 2.7 亿次这样的攻击尝试,针对 1,700 万个受害者,其中 6,633 起造成了损失,合计至少 8,380 万美元。
下一笔转账的收款地址从哪里复制才安全?
这四条出自 Etherscan 的两页说明和 FBI 丹佛分局的那份公告,按动手的先后排。
- 收款地址不从转账历史里复制。用收款方当初发给你的那份地址,或者你事先存好的联系人。出事的情形是这样的:刚转完一笔,两分钟后想再转一笔,以为历史里最新的那个地址是对的,拿它当收款地址,钱就转给了攻击者。
- 粘贴后核对完整地址。ethereum.org 的《以太坊安全与防骗指南》建议:「在发送交易之前,请务必确保你发送的地址与预期接收者的地址完全匹配。」地址中间被省略号代替时,让它显示出完整的一串,和那份地址一段一段地比。仿造的地址开头和结尾的几位字符相同、中间的字符不同,只比首尾比不出来。
- 常转的地址存进钱包的联系人列表或地址白名单。存的那一次用那份地址、整串核对,之后转账从联系人里选。仿造的也可以是你自己的地址,所以从平台提币到钱包时,收款地址用钱包收款页上显示的那一个。
- 在区块浏览器里留意隐藏和提醒。0 值转账在 Etherscan 上怎么显示,两页说明写法不同:一页写默认隐藏,另有一个隐藏 0 值代币转账的选项;一页写淡化显示、带一个灰色警告图标。在它的代币转账页复制地址时会弹出提醒,对应三种情况:代币信誉差,代币信息没有更新,或者交易的发起地址和代币的发送方不是同一个。看到提醒就停手,回到第 1 条。
已经把币转到那个相似地址了还能追回来吗?
ethereum.org 的《我被骗了或丢失了资金》页上有一句:「没有人可以撤销区块链交易。」发错地址的钱,只有那个地址的主人自己退才回得来,这一次地址的主人是设局的人。
剩下能做的是报案和留证据。同一页给了报案的去处:美国向 IC3(联邦调查局的互联网犯罪投诉中心),英国向 Action Fraud,欧盟向欧洲刑警组织(Europol),其他国家和地区向当地警方。
要交的材料,IC3 给加密货币诈骗受害者的指引把交易细节列为你能提供的最重要的信息,一共四样:
| 要留的东西 | 是什么、怎么记 |
|---|---|
| 加密货币地址 | 你发出转账的地址和收款的那个相似地址,各是一长串字母数字;两个都记完整的一串 |
| 金额与币种 | 数量照原样记全,连同币种;指引里的例子是 1.02345 ether |
| 日期和时间 | 具体到几点几分,带上时区;指引里的例子是 1 January 2023, 12:01 AM EST |
| 交易哈希(Transaction ID / hash) | 这笔交易的编号,同样是一长串字母数字;拿它到区块浏览器里能查到这笔交易 |
指引里还有两条:拿不准某条信息有没有用,也一并附上;没有交易信息,也照样提交报告,手上有多少给多少。四样东西加上当时的页面截图,按链上转账留凭证的办法在钱包之外另存一份。
在区块浏览器里搜这笔交易哈希,能看到钱后来被转去了哪里。去向里出现中心化交易平台时,立刻联系那家平台的客服,把交易详情交给他们。那个相似地址可以在区块浏览器上举报,被标记后能提醒之后可能上当的人。
报案和举报做的是留记录、帮执法部门追查这类团伙。出事之后有人主动找来,说能帮你追回资金,这可能是另一场骗局;开口要收费的,几乎肯定是二次诈骗。