使用同一合约中的另一个函数在 Solidity 中调用一个公共函数

问题描述

一个合约中设置一个自动调用一个合约的发布函数函数,最简单的解决方案是什么?

基本结构是:

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 {
}