我有一个可以持有以太坊的智能合约。
receive() external payable whenNotPaused {
if (msg.value == 0) revert AmountZero();
emit EthDeposit(msg.sender, msg.value);
}
function withdraw(uint256 amount) external onlyOwner nonReentrant whenNotPaused {
if (amount == 0) revert AmountZero();
if (address(this).balance < amount) {
revert InsufficientBalance(amount, address(this).balance);
}
(bool success, ) = payable(owner()).call{value: amount}("");
if (!success) revert TransferFailed();
emit EthWithdrawal(owner(), amount);
}
我能够成功将 eth 发送到智能合约(例如通过元掩码)。
当我尝试调用提现时,交易成功(任何金额,即使超过发送给它的金额),但智能合约中的 eth 数量不会改变。
我已经检查了blockexplorer,并且传递给提款的参数是正确的,但它说该值为0,例如:
价值:0 ETH
调用的函数:withdraw(uint256 amount = 20)
天然气价格:1.599151031 Gwei
我正在使用 Scaffold-Eth 2 与我的智能合约交互。
我没有指定正确的小数位数。
例如,如果我想提取 2 ETH:
正确:2_000_000_000_000_000_000
错误:2