2024-04-12|閱讀時間 ‧ 約 23 分鐘

1.13 Fallback - 自動購買制服系統

    • 一個智能合約,名為 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);
    }
    }
    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.