繁体   English   中英

为什么我不能通过智能合约向另一个账户发送 1 个以太币?

[英]why can't I send 1 ether to another account via smartcontract?

我正在与 Solidity 签订合同并将其部署到以太坊专用网络Ropsten 有一种payRequest方法可以将 1 个以太币转移到另一个帐户。 我已经部署了联系人并成功运行了该方法。 (我设置收件人地址和1作为金额)

我可以在 Etherscan 中查看交易 hash 并且其状态为成功。 但是响应中的success是错误的。

交易中的值为 0。收款人地址也没有收到此转账。 我做错了什么?

// SPDX-License-Identifier: MIT
pragma solidity 0.7.4;
pragma experimental ABIEncoderV2;

contract Leger {
    struct TransferRequest {
        string title;
        uint256 amount;
        string bsb;
        string accountName;
        string accountNumber;
    }

    event PaymentReceive(address from, uint256 amount);
    event TransactionBytes(bytes transactionBytes);
    event RequestPaid(address receiver, uint256 amount);

    function payRequest(address payable _recipient, uint256 _amount) public {
        
        (bool success, bytes memory transactionBytes) = _recipient.call{value:_amount}('');
        
        emit TransactionBytes(transactionBytes);
        
        emit RequestPaid(msg.sender, _amount);
    }

    receive() external payable {
        emit PaymentReceive(msg.sender, msg.value);
    }

}

您的 function 不付款,请使用:

function payRequest(address payable _recipient, uint256 _amount)payable public {
        
        (bool success, bytes memory transactionBytes) = _recipient.call{value:_amount}('');
        
        emit TransactionBytes(transactionBytes);
        
        emit RequestPaid(msg.sender, _amount);
    }

我看不到以太币来自哪个账户。 您没有在合同中声明您的变量(例如在最佳实践中所做的事件之前)。

为了完全透明,你的合同对我来说似乎很奇怪或不完整。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM