簡體   English   中英

如何在solidity 0.5.0中將etherenum發送到msg.sender

[英]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 個以太幣。

  1. address(_seller).transfer(msg.value)將 1 個以太幣轉移到_seller
  2. address(_buyer).transfer(msg.value)將 1 個以太幣轉移到_seller
  3. msg.sender.transfer(msg.value)將 1 個以太幣轉移到_seller

它失敗了,因為只有 1 個以太。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM