如何将智能合约余额的一部分提取到账户中?

How to withdraw PART of the Smart Contract's balance into an account?

我看了很多类似的问题,但他们只解决了将智能合约的全部余额转移到个人账户的问题,并且是这样完成的:

msg.sender.transfer(address(this).balance);

我正在尝试(但未能)弄清楚的是如何转移部分余额。例如。如果合约包含 3 个以太币,我只想转账 1 个。并且我希望每次使用该功能时都能够指定要转账的金额。我没有发布我的代码,因为我没有尝试过,而且这几乎是猜测。

感谢您的帮助。

function withdraw(uint amount) public {
    msg.sender.transfer(amount);
}

提取 amount 变量指定的金额。无需检查合约的总余额,因为如果您尝试提取的金额超过总余额,它将恢复。

正如 Iftivar Taz 提到的,如果您正在练习尝试 msg.sender.transfer(amount)。尝试使用 0 的数量,它可能会起作用。显然你的练习合同不会有超过零的 eths。