美文网首页践行区块链
钱锁到智能合约里了,怎么办

钱锁到智能合约里了,怎么办

作者: Ashton | 来源:发表于2021-12-24 16:59 被阅读0次

    昨天晚上有朋友发消息给我,钱锁到智能合约里提不出来了。

    image.png

    大多数情况下,如果用户误操作把钱打到了一个智能合约地址,基本上就是有去无回了。但万事都没那么绝对,昨天碰到的情况,这个合约是他们自己可以控制的,并且合约含有取款方法,只是由于逻辑写的有问题,导致取款失败。下面是出问题的代码片段:

        function withdraw(address receiver, uint256 amount) external onlyOwner returns (uint256) {
            require(amount > 0, 'Amount should be larger than 0');
            require(address(this).balance >= amount, 'Balance insufficient');
            _token.transfer(receiver, amount);
            return _token.balanceOf(address(this));
        }
    }
    

    问题就出在 require(address(this).balance >= amount, 'Balance insufficient');这一行,这里本意是判断 _token 余额的,却写成了判断主链币余额,而这个智能合约并没有payable 方法去接受主链币打款,导致 address(this).balance 的值始终为 0。

    这种情况下,只要想办法往智能合约充值,使 address(this).balance 具有某个数量的值就好了。

    经过一番操作,最终问题得到解决。

    相关文章

      网友评论

        本文标题:钱锁到智能合约里了,怎么办

        本文链接:https://www.haomeiwen.com/subject/zfmmfrtx.html