问题描述
在一个合约中设置一个自动调用同一个合约的发布函数的函数,最简单的解决方案是什么?
基本结构是:
function send(uint256 value) public {
address sender = _msgSender();
}
我想在同一个合约中设置一个函数,当特定的钱包调用者有一定的金额值时,自动触发上述公共函数的调用。
解决方法
您可以使用 balance
类型的 address
属性检查发件人的余额。
function send(uint256 value) public {
address sender = _msgSender();
// this checks the sender's balance
if (sender.balance >= 1 ether) {
publish();
}
}
function publish() public {
}
如果您想检查他们在执行您的函数的交易中发送了多少,您可以使用全局变量 msg.value
。
此外,为了接受非零值,您需要使函数payable
。
function send(uint256 value) public payable { // mind the `payable` keyword
address sender = _msgSender();
// this checks the value of this transaction
if (msg.value >= 1 ether) {
publish();
}
}
function publish() public {
}