- 一個智能合約,名為
UniformShop
,它用於販售學校制服。 - 我們希望合約在收到以太幣後自動處理購買制服的操作。
UniformShop
合約定義了一個 fallback
函式,用於接收以太幣並購買制服。- 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則
fallback
函式將被自動調用。 - 在這個函式中,我們檢查轉帳金額是否足夠支付制服的價格,如果是,則觸發一個事件表示購買成功。
UniformShop
合約還定義了一個 withdraw
函式,用於將合約中的以太幣提取到合約所有者的地址。這個函式僅限合約所有者調用,以防止未經授權的提取。
pragma solidity ^0.8.0;
contract UniformShop {
address public owner;
uint public uniformPrice;
event UniformPurchased(address buyer, uint amountPaid);
constructor(uint _uniformPrice) {
owner = msg.sender;
uniformPrice = _uniformPrice;
}
fallback() external payable {
require(msg.value >= uniformPrice, "Insufficient funds");
emit UniformPurchased(msg.sender, msg.value);
}
receive() external payable {}
function withdraw() public {
require(msg.sender == owner, "Only owner can withdraw");
payable(owner).transfer(address(this).balance);
}
}