如何设置按钮以使用已在 Solidity 中设置的地址和金额支付费用?
How to set a button to pay a fee with address and amount already set in Solidity?
我正在尝试像这样稳定地编写一个付费函数:
contract GetFee {
address payable public feeCollector = 0x59c0f4Bea65c99C281A0107C86beE309b20b3B49;
function payFee() public payable {
feeCollector.transfer(100000000000000000);
}
}
然而,当我在 solidity 中单击它时,出现以下错误:
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,它可以工作,但我不想那样做。
我想要一个功能,当点击它时,它只需将特定金额发送到特定地址,而无需用户插入任何其他内容。
怎么做?
部署 GetFee
时,它持有 0 ETH。
feeCollector.transfer(100000000000000000);
此代码段将 0.1 ETH(代码中指定的 100000000000000000 wei)从合约地址发送到feeCollector
——而不是从用户。
因此,当 payFee()
尝试提交 0.1 ETH 而没有人事先向合约发送至少此金额时,转账失败,因为合约没有足够的余额。
请注意,调用合同功能的交易发送的金额始终需要来自用户。无法调用只会从他们的钱包中提取预定义金额的函数。
我正在尝试像这样稳定地编写一个付费函数:
contract GetFee {
address payable public feeCollector = 0x59c0f4Bea65c99C281A0107C86beE309b20b3B49;
function payFee() public payable {
feeCollector.transfer(100000000000000000);
}
}
然而,当我在 solidity 中单击它时,出现以下错误:
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,它可以工作,但我不想那样做。
我想要一个功能,当点击它时,它只需将特定金额发送到特定地址,而无需用户插入任何其他内容。
怎么做?
部署 GetFee
时,它持有 0 ETH。
feeCollector.transfer(100000000000000000);
此代码段将 0.1 ETH(代码中指定的 100000000000000000 wei)从合约地址发送到feeCollector
——而不是从用户。
因此,当 payFee()
尝试提交 0.1 ETH 而没有人事先向合约发送至少此金额时,转账失败,因为合约没有足够的余额。
请注意,调用合同功能的交易发送的金额始终需要来自用户。无法调用只会从他们的钱包中提取预定义金额的函数。