Solidity
從智能合約中提取乙太坊(返回給發送者)
假設我有一個去中心化的應用程序,它允許人們以任意價格購買一些物品。
使用者 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 為購買該項目而進行的呼叫應該會失敗。您尚未共享用於進行購買的功能,但如果該商品已售出,它應該恢復交易。