以太币陷入智能合约中

问题描述 投票:0回答:1

我有一个可以持有以太坊的智能合约。

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 与我的智能合约交互。

blockchain ethereum solidity smartcontracts
1个回答
0
投票

我没有指定正确的小数位数。

例如,如果我想提取 2 ETH:

正确:2_000_000_000_000_000_000

错误:2

© www.soinside.com 2019 - 2024. All rights reserved.