币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?(2)

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

上图为关键差异,土狗修改了原版的 migrator 方法,还增加了个一个叫做 preUpgrade 的函数。

看到这里,如果你对合约一无所知,安全期间,就可以直接关闭页面保平安了。

这里简单分析一下差异,首先 migrate 方法,这个是 sushiswap 继承的代码,原版代码就有将池子里钱掏空的可能性(所以土狗如果有 migrate 方法,求稳就不要去玩)。

popcorn 这里,新的 preUpgrade 方法,是 public 的,代表所有人都能调用,就是一个非常可疑的点,理论上在 migrator 设置为恶意地址的时候能够让 migrator 掏空所有的钱。

第二步:检查变量

点击土狗合约的这个按钮:

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

检查 migrator,owner 等变量:(owner 是核心

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?

可以看到 migrator 是 0,owner 是一个 timelock 地址,土狗的一种套路是,声称自己有 timelock,给出了合约地址,但 owner 并不是 timelock 的地址,那明显就是骗局了。

当然 timelock 合约,也可以做小动作,所以也需要做 diff 操作,这里他的 timelock 没有问题,就不赘述了

那么完成了上面两步,很多资深矿工可能会觉得,timelock 有的,合约变量没问题,虽然有代码存在风险,但是有 timelock 啊,没事,冲 tmd,对低级土狗而言,可能确实就无风险了,但很可惜,popcornswap 是一个略高级的土狗。看我下面分解盗币过程:

项目方通过调用:

https://bscscan.com/tx/0x38f75296e3343228c0309f8c99a24ca4f4812372f2b032f38ce25ac5a992b768

preUpgrade 方法,让自己的地址有了合约里 token 的 transferFrom 权限(简单理解为 uniswap 交易之前你需要 allow 合约花你的币,这里是 allow 自己花合约里的币)

看前面的代码可以发现,preUpgrade 确实又这个功能,但他只会给 migrator 这个权限,而 migrator 又是 0,修改 migrator 需要经过时间锁,那么他是怎么做到的呢?(这个问题其实也困扰了我一会)

答案是:项目方在部署合约后,加 timelock 之前,把 migrator 改成了自己的地址,并通过 preUpgrade 提前获取了里面所有 token 的 allowance,然后再改回 migrator,添加时间锁。

因为这些 tx 混在项目方添加池子的 tx 中,普通人根本不可能去检查一个池子之前的每一个 tx,所以 popcornswap 得以在 2 小时内盗取 2 mil 的代币。

这个作案手法也引起了我的思考,目前并没有有效的工具,能够查出一个合约地址里,token allow 给其他地址的情况,因此非常难发现问题。普通的用户,没有能力,也不太可能发现这个端倪,甚至我相信在本次事件中,一些对合约代码有所了解的土矿老司机也一并翻车。

后续思考

本次作案手法曝光之后,相信未来的土矿也很有可能利用类似的手法进行盗币,而对普通用户而言防不胜防,事实上最近 2 天 bsc 上就有 2 个矿翻车,金额还都不小。

作为交易所公链,不管是 bsc,还是 heco,他们的核心竞争力是什么?是去中心化吗?

我个人认为不是的。

bsc,heco 等,他们最大的优势应该是 1. 低手续费 2. 交易所公信力背书。

以 bsc 为例,作为一个类似 DPos 的设计公链,跨链桥非去中心化,以及上面的大部分资产都是币安发放的情况下,即使代码开源,谈何去中心化?

个人认为,反而应该反其道行之,引入类似 EOS 的仲裁机制,最大程度的保证用户在链上的的财产安全才是生存之道。

 文章标题:币安智能链多项目跑路 PopcornSwap 卷走 4 万 BNB 交易所公链“尴尬”何解?(2)

内容摘要:上图为关键差异,土狗修改了原版的 migrator 方法,还增加了个一个叫做 preUpgrade 的函数。 看到这里,如果你对合约一无所知,安全期间,就可以直接关闭 ...

免责声明:融易新媒体转载此文目的在于传递更多信息,不代表本网的观点和立场。文章内容仅供参考,不构成投资建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。


本文网址:http://mt.ironge.com.cn/opinion/sypl/236980.html