1.13 Fallback - 自動購買制服系統

閱讀時間約 2 分鐘
  • 一個智能合約,名為 UniformShop,它用於販售學校制服。
  • 我們希望合約在收到以太幣後自動處理購買制服的操作。
  • UniformShop 合約定義了一個 fallback 函式,用於接收以太幣並購買制服。
  • 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則 fallback 函式將被自動調用。
  • 在這個函式中,我們檢查轉帳金額是否足夠支付制服的價格,如果是,則觸發一個事件表示購買成功。
  • UniformShop 合約還定義了一個 withdraw 函式,用於將合約中的以太幣提取到合約所有者的地址。這個函式僅限合約所有者調用,以防止未經授權的提取。
// SPDX-License-Identifier: MIT
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 函式用於接收以太幣並購買制服
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);
}
}
    尋大神腳印, 亦步亦趨。
    留言0
    查看全部
    發表第一個留言支持創作者!
    從 Google News 追蹤更多 vocus 的最新精選內容