[英]How to send etherenum to msg.sender in solidity 0.5.0
mapping(uint => Product) public products;
struct Product {
uint id;
string name;
uint price;
address payable owner;
bool purchased;
}
function purchaseProduct(unit _id) public payable {
Product memory _product = products[_id];
address payable _seller = _product.owner;
address payable _buyer = msg.sender;
}
address(_seller).transfer(msg.value)
效果很好。 但是msg.sender.transfer(msg.value)
和address(_buyer).transfer(msg.value)
不起作用。
請幫我解決這個問題。
在這個區塊(添加的行號)中,msg.value 是調用 function 時轉移到合約的以太幣數量。
在第 1 行,它已經將所有的以太幣轉移給了 _seller。 第 2 行和第 3 行將失敗,因為沒有更多的以太幣了。
1 address(_seller).transfer(msg.value);
2 address(_buyer).transfer(msg.value);
3 msg.sender.transfer(msg.value);
示例:我調用 purchaseProduct() function,價值為 1 個以太幣。
address(_seller).transfer(msg.value)
將 1 個以太幣轉移到_seller
。address(_buyer).transfer(msg.value)
將 1 個以太幣轉移到_seller
。msg.sender.transfer(msg.value)
將 1 個以太幣轉移到_seller
。它失敗了,因為只有 1 個以太。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.