有些合约就是拒绝你的付款,就是这么任性 ¯\_(ツ)_/¯
这一关的目标是使合约的余额大于0
根据Foundry 官方文档配置好运行环境后,于本项目下执行下列命令:
$ cd WTF-CTF
$ forge test -C src/Ethernaut/Force -vvvvv
在日常进行solidity开发时,有时能看到这样的报错
Invalid implicit conversion from address to address payable requested.
即某个地址不具备payable属性,这时一般就会进行强转:
payable(_address)
如果一个合约要接受 ether, fallback函数或receive函数必须设置为 payable
.
在合约不接受转账时,如何强制给合约账户进行转账?
selfdestruct(address)
The
selfdestruct(address)
function removes all bytecode from the contract address and sends all ether stored to the specified address. If this specified address is also a contract, no functions (including the fallback) get called.
具体使用方法请参考:WTF Solidity极简入门: 26. 删除合约
并没有什么办法可以阻止攻击者通过自毁合约向任意地址发送 ether。
从solidity的v0.8.18后,使用selfdestruct
会产生编译警告,不过目前只是警告,并没有禁用。