将ETH发送到任意用户(Slither警告)

发布于 2025-02-02 18:24:28 字数 796 浏览 0 评论 0原文

我如何通过以下方法解决有关低级别调用的Slither警告:

 // A proposer calls function and if address has an allowance, recieves ETH in return.
    function getPayout(address payable addressOfProposer)
        public
        returns (bool)
    {
        // Get the available allowance first amd store in uint256.
        uint256 allowanceAvailable = _payoutTotals[addressOfProposer];
        require(allowanceAvailable > 0, "You do not have any funds available.");

        _decreasePayout(addressOfProposer, allowanceAvailable);

        (bool sent, ) = addressOfProposer.call{value: allowanceAvailable}("");
        require(sent, "Failed to send ether");

     // console.log("transfer success");
        emit Withdraw(addressOfProposer, allowanceAvailable);
        return true;
    }

How do I resolve Slither warning about the low level call in the following method:

 // A proposer calls function and if address has an allowance, recieves ETH in return.
    function getPayout(address payable addressOfProposer)
        public
        returns (bool)
    {
        // Get the available allowance first amd store in uint256.
        uint256 allowanceAvailable = _payoutTotals[addressOfProposer];
        require(allowanceAvailable > 0, "You do not have any funds available.");

        _decreasePayout(addressOfProposer, allowanceAvailable);

        (bool sent, ) = addressOfProposer.call{value: allowanceAvailable}("");
        require(sent, "Failed to send ether");

     // console.log("transfer success");
        emit Withdraw(addressOfProposer, allowanceAvailable);
        return true;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光是把杀猪刀 2025-02-09 18:24:28

使用// Slither-disable-next-line detector_name

// A proposer calls function and if address has an allowance, recieves ETH in return.
    function getPayout(address payable addressOfProposer)
        public
        returns (bool)
    {
        // Get the available allowance first amd store in uint256.
        uint256 allowanceAvailable = _payoutTotals[addressOfProposer];
        require(allowanceAvailable > 0, "You do not have any funds available.");

        _decreasePayout(addressOfProposer, allowanceAvailable);

        //slither-disable-next-line unchecked-lowlevel
        (bool sent, ) = addressOfProposer.call{value: allowanceAvailable}("");
        require(sent, "Failed to send ether");

     // console.log("transfer success");
        emit Withdraw(addressOfProposer, allowanceAvailable);
        return true;
    }

有趣的是,它给出了未检查的低级呼叫警告,但是,鉴于它似乎确实已被检查。

Use //slither-disable-next-line DETECTOR_NAME:

// A proposer calls function and if address has an allowance, recieves ETH in return.
    function getPayout(address payable addressOfProposer)
        public
        returns (bool)
    {
        // Get the available allowance first amd store in uint256.
        uint256 allowanceAvailable = _payoutTotals[addressOfProposer];
        require(allowanceAvailable > 0, "You do not have any funds available.");

        _decreasePayout(addressOfProposer, allowanceAvailable);

        //slither-disable-next-line unchecked-lowlevel
        (bool sent, ) = addressOfProposer.call{value: allowanceAvailable}("");
        require(sent, "Failed to send ether");

     // console.log("transfer success");
        emit Withdraw(addressOfProposer, allowanceAvailable);
        return true;
    }

It's interesting that it gives an unchecked low-level call warning, however, given that it does appear to be checked.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文