Solidity

從智能合約中提取乙太坊(返回給發送者)

  • February 15, 2018

假設我有一個去中心化的應用程序,它允許人們以任意價格購買一些物品。

使用者 1 以 1 eth 的價格購買該對象。片刻之後,使用者 2 購買了相同的商品。如何監控此事件並自動將適量的乙太幣返還給使用者 2?這是我到目前為止所擁有的:

contract Adoption {
   address[16] public adopters;

   function returnEth() public payable {
   msg.sender.transfer(msg.value);
   }
   // Adopting a pet
   function adopt(uint petId) public payable returns (uint) {
       require(petId >= 0 && petId <= 15);
       //require(msg.value == 1 ether);
       adopters[petId] = msg.sender;
       returnEth();
       return petId;
       //return value;
   }
   // Retrieving the adopters
   function getAdopters() public view returns (address[16]) {
       return adopters;
   }


}

在字裡行間,我認為您是在說使用者 2 不應該被允許購買使用者 1 已經購買的商品。

如果是這種情況,那麼使用者 2 為購買該項目而進行的呼叫應該會失敗。您尚未共享用於進行購買的功能,但如果該商品已售出,它應該恢復交易。

引用自:https://ethereum.stackexchange.com/questions/39704