我正在努力编写一个可靠的付费功能,如:
contract GetFee {
address payable public feeCollector = 0x59c0f4Bea65c99C281A0107C86beE309b20b3B49;
function payFee() public payable {
feeCollector.transfer(100000000000000000);
}
}但是,当我在实体中单击它时,会得到以下错误:
Note: The called function should be payable if you send value and the value you send should be less than your current balance.但是,如果我在部署和运行中插入任何数量,比如1 ETH,它就能工作,但我不想这样做。
我想要一个函数,当单击它时,它只需将特定的金额发送到特定的地址,而不需要用户插入任何其他内容。
怎么做?
发布于 2021-12-29 12:36:31
这是无法做到的,因为任何资金转移都必须由用户发起。在web3和js中有一个解决方案。
发布于 2022-01-22 08:06:16
这很容易。与其对金额进行硬编码,不如在其中添加一个变量。查看下面的代码,它从用户那里获取地址和金额,然后将金额发送到给定的地址:
function payFromContract (address payable _recipient, uint _amount) external {
_recipient.transfer(_amount);
}https://ethereum.stackexchange.com/questions/117546
复制相似问题