[英]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.