区块链安全

一次有来无回的赌注

1. “能不能查到?”

某天在一个群里,我们在瞎扯,扯到了乱七八糟的hun淆币相关。

然后x君私聊我,让我给他推荐一个hun淆币平台,我就发了一个给他。他说我推荐给他的他见过,没他用的好。我把他用的平台看了一下,我觉得根本不算一个hun币平台,也没用到零知识证明,只是换币而已,仅仅是不用注册罢了。

他说那个平台经过一轮置换,是查不到来源钱包的。我说可以查到。然后就吵起来了。

这位老板提出给我转 *.* 个eth,通过他所谓的平台打到我的trc20的钱包里面,让我找出他的钱包地址。我心想还有这等好事,立马同意。

2. 查询过程

很快,我的trc20钱包收到了 ***.***usdt 的入账。

我分析了一下那个钱包,大概的换币过程是这样的:

我目前仅仅能从我的收钱的交易记录看到红框内的一笔交易。

初步的思路是:监控以太链上那一段时间内交易额为***ether的交易。但是那个数字太过普通,可能会找到多条类似的交易。

我通过这个平台尝试换了一笔钱,想找到平台提供的 eth 地址有没有什么规律。发现:这个地址是新的,也就是没用过交易记录。可能是通过什么算法自动生成的。因为可以猜到,因为用户不用注册,所以如果都把要换的币转入同一个地址,可能难以区分,毕竟没法通过用户账号:最终要转入的地址。但是可以通过生成一个新的地址,映射到最终要转入的地址上,形成对应关系。

于是可以猜测出筛选条件了:绿框中 to 地址的交易记录仅有2次,一次转入,一次转出。以to这个地址为转入地址的交易记录仅有1次。

进行数据查询。

初步按照时间和金额晒出来有26条记录:

查询交易to为以上这些地址中的一个、且一周内交易记录为1次的有7个地址:

select "to",count(*) as cnt
from public.tx
where timestamp >= '2021-08-** 0*:51:00+00' 
and timestamp <= '2021-08-** 0*:56:00+00'
and "to" = ANY(ARRAY['0x7Be8076f4EA4A4AD08075C2508e481d6C946D12b',...,'0x7Be8076f4EA4A4AD08075C2508e481d6C946D12b'])
group by "to" 
order by cnt asc
limit 100;

根据这7个to地址再查询出对应的 from 地址,根据时间再做了比较精细的过滤。最终把嫌疑锁定到了2个from地址上。

最后一步运气爆好,其中一个交易是打到合约上的,而那个平台生成的一般都是外部地址,直接把这个排除了。剩下一个直接是他的地址。

3. 后续

我把这个地址跟他说了,他很满意。

至于以太的事情,我提出让他给个地址我还给他。他说要不你留着吧,我虽然觉得这样不好,真的不好,但是由于我不会给别人转币,只好留在了我的钱包里。

4. 特别感谢

感谢 @Rivaill 大佬一直以来在区块链技术上的不吝赐教和耐心指导。强烈推荐他的博客:https://www.tofreedom.me/