1.8 Modifier 修飾符

閱讀時間約 3 分鐘
modifier

modifier

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract GiftShop {
mapping(address => uint) public loyaltyPoints;
mapping(string => uint) public gifts;
address public owner;

event GiftRedeemed(address user, string giftName);

modifier hasEnoughPoints(uint pointsNeeded) {
require(loyaltyPoints[msg.sender] >= pointsNeeded, "Insufficient loyalty points");
_; // 函式調用的地方
}

modifier onlyOwner() {
require(msg.sender == owner, "Only owner can call this function");
_; // 函式調用的地方
}

constructor() {
owner = msg.sender;
gifts["Coffee Mug"] = 10;
gifts["T-shirt"] = 20;
gifts["Smartwatch"] = 50;
}

function addPoints(address user, uint points) public onlyOwner {
loyaltyPoints[user] += points;
}

function redeemGift(string memory giftName) public hasEnoughPoints(gifts[giftName]) {
loyaltyPoints[msg.sender] -= gifts[giftName];
emit GiftRedeemed(msg.sender, giftName);
}
}
  • 有一個智能合約 GiftShop,用於管理學生的集點數和禮物的兌換。
  • 每個學生可以根據他們的集點數來兌換禮物。我們希望僅當學生的集點數達到一定標準時才能兌換禮物。
  • GiftShop 合約用於管理學生的集點數和禮物的兌換。
  • loyaltyPoints 映射用於存儲學生的集點數。
  • gifts 映射用於存儲禮物的集點數需求。
  • hasEnoughPoints modifier 用於檢查學生是否擁有足夠的集點數來兌換禮物。
  • onlyOwner modifier 用於限制只有合約的擁有者才能調用的函式。
  • 在 modifier 中,首先檢查相應的條件。如果條件不滿足,則通過 require 函式拋出異常。
  • addPoints 函式用於為學生增加集點數,僅合約的擁有者可以調用。
  • redeemGift 函式用於兌換禮物,只有當學生擁有足夠的集點數時才能成功兌換。
尋大神腳印, 亦步亦趨。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TuitionPayment { address public school; uint public tuitionFee; mapping(
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SchoolGreetings { address public principal; event GreetingReceived(string g
一個智能合約,名為 UniformShop,它用於販售學校制服。 我們希望合約在收到以太幣後自動處理購買制服的操作。 UniformShop 合約定義了一個 fallback 函式,用於接收以太幣並購買制服。 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則 fallback 函式將
try-catch 語句用於處理外部函數調用或合約創建過程中可能發生的錯誤 以下是一個使用小朋友睡著作為例子的簡單程式碼 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Child { bool publ
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract TuitionPayment { address public school; uint public tuitionFee; mapping(
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract SchoolGreetings { address public principal; event GreetingReceived(string g
一個智能合約,名為 UniformShop,它用於販售學校制服。 我們希望合約在收到以太幣後自動處理購買制服的操作。 UniformShop 合約定義了一個 fallback 函式,用於接收以太幣並購買制服。 當有人向合約地址轉帳時,如果轉帳金額足夠支付制服的價格,則 fallback 函式將
try-catch 語句用於處理外部函數調用或合約創建過程中可能發生的錯誤 以下是一個使用小朋友睡著作為例子的簡單程式碼 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Child { bool publ
你可能也想看
Google News 追蹤
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
話說這台BMW M2 G87自去年發表以來,其獨特的外觀設計引起了車迷們之間熱烈的議論。但除了造型之外,最重要的是它採用了老大哥M3、M4的S58引擎,最大馬力可高達460匹。比起以往M2的S55引擎,多了50匹,可以說是將M Power的當家引擎性能下放給小老弟M2
日本草莓農藥殘留 ? ! See's Candies杏仁醬口味的可可製品防腐劑超標 ! 印尼調味醬檢驗不合格 ? 好市多排骨竟有刀片 ! ! 台中某Outlet的知名連鎖迴轉麻辣火鍋分店炸豆皮伴隨活的蟑螂 ? ?台東及新竹年節食品稽查 竟有不合格 ! ! 日本排放核廢水國內水產品檢測結果出爐...
Thumbnail
放肆兩天之後決心回歸正常生活,今天是新的瑜珈教室第一次上課,換上瑜珈服瑜珈褲心情特別好。
▍盤勢分析 加權開高走低,終場小漲 53 點,收 17572 櫃買則是開高後就一路走跌 熟悉的開高走低格局 留下長上影線 ▍籌碼分析 現貨: 外資買超 23 E => 多 期貨: 空單減少 891 口,來到 -18,791 口 => 多 選
Thumbnail
1/6 今日加權指數開高走高到9:30左右賣壓出籠,拉回收了一根帶上影線的小紅K,收17572,成交量縮2625億。 1/6 今日otc開高走高9:30左右開始轉折向下,收盤收在平盤子下,留上影線黑K,下跌0.05點,收230.56,成交量501.87億。 今天三大法人,外資買超23億、投信
大盤熱錢資金目前流往車用 觀光 塑化 造紙 AI 目前盤中權證+ 力旺 亞力 威盛 立積 權證- 台耀 優群 智原 保瑞 此社團純屬個人操作與看法,不代表任何買賣建議,僅供參考,盈利自負權證隨時有變化 僅供參考
Thumbnail
週五夜盤好不容易的反彈, 結果連日盤高都沒突破,接下來 不過也算守得不錯,至少籌碼留下來都是多單 現在撐日K僅存的最後一根上升趨勢 也就說今天如果再破週五日盤低點的話 就不太好。 反之,590、620、700都在攻擊範圍內 日盤時、多軍可以挑戰一下 支撐:455、477、491、
Thumbnail
最近有點散漫,因為補班所以小孩們上課,下周就開始考試,但是他們也沒很認真在複習,而媽媽我也開始追起劇來,有點狂的那種,整天都在看,這樣真的不好,可以放鬆但是當成隨便了。 之前把你好,神槍手看完,又緊接著追了捨我棋誰的劇,兩部都是講一種比賽的男主,而且男主都有些心理障礙的疾
11/22 今天我把上次報告的使用者流程流程問題作解決並且討論 11/29 今天做使用者素描的因為上禮拜沒用完使用這流程所以老師要我們先用完 12/6 今天做顧客旅程地圖流程 12/13 今天做利害關係人 12/20 報告 12/27 報名表製作 1/3 期中報告
Thumbnail
徵的就是你 🫵 超ㄅㄧㄤˋ 獎品搭配超瞎趴的四大主題,等你踹共啦!還有機會獲得經典的「偉士牌樂高」喔!馬上來參加本次的活動吧!
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
話說這台BMW M2 G87自去年發表以來,其獨特的外觀設計引起了車迷們之間熱烈的議論。但除了造型之外,最重要的是它採用了老大哥M3、M4的S58引擎,最大馬力可高達460匹。比起以往M2的S55引擎,多了50匹,可以說是將M Power的當家引擎性能下放給小老弟M2
日本草莓農藥殘留 ? ! See's Candies杏仁醬口味的可可製品防腐劑超標 ! 印尼調味醬檢驗不合格 ? 好市多排骨竟有刀片 ! ! 台中某Outlet的知名連鎖迴轉麻辣火鍋分店炸豆皮伴隨活的蟑螂 ? ?台東及新竹年節食品稽查 竟有不合格 ! ! 日本排放核廢水國內水產品檢測結果出爐...
Thumbnail
放肆兩天之後決心回歸正常生活,今天是新的瑜珈教室第一次上課,換上瑜珈服瑜珈褲心情特別好。
▍盤勢分析 加權開高走低,終場小漲 53 點,收 17572 櫃買則是開高後就一路走跌 熟悉的開高走低格局 留下長上影線 ▍籌碼分析 現貨: 外資買超 23 E => 多 期貨: 空單減少 891 口,來到 -18,791 口 => 多 選
Thumbnail
1/6 今日加權指數開高走高到9:30左右賣壓出籠,拉回收了一根帶上影線的小紅K,收17572,成交量縮2625億。 1/6 今日otc開高走高9:30左右開始轉折向下,收盤收在平盤子下,留上影線黑K,下跌0.05點,收230.56,成交量501.87億。 今天三大法人,外資買超23億、投信
大盤熱錢資金目前流往車用 觀光 塑化 造紙 AI 目前盤中權證+ 力旺 亞力 威盛 立積 權證- 台耀 優群 智原 保瑞 此社團純屬個人操作與看法,不代表任何買賣建議,僅供參考,盈利自負權證隨時有變化 僅供參考
Thumbnail
週五夜盤好不容易的反彈, 結果連日盤高都沒突破,接下來 不過也算守得不錯,至少籌碼留下來都是多單 現在撐日K僅存的最後一根上升趨勢 也就說今天如果再破週五日盤低點的話 就不太好。 反之,590、620、700都在攻擊範圍內 日盤時、多軍可以挑戰一下 支撐:455、477、491、
Thumbnail
最近有點散漫,因為補班所以小孩們上課,下周就開始考試,但是他們也沒很認真在複習,而媽媽我也開始追起劇來,有點狂的那種,整天都在看,這樣真的不好,可以放鬆但是當成隨便了。 之前把你好,神槍手看完,又緊接著追了捨我棋誰的劇,兩部都是講一種比賽的男主,而且男主都有些心理障礙的疾
11/22 今天我把上次報告的使用者流程流程問題作解決並且討論 11/29 今天做使用者素描的因為上禮拜沒用完使用這流程所以老師要我們先用完 12/6 今天做顧客旅程地圖流程 12/13 今天做利害關係人 12/20 報告 12/27 報名表製作 1/3 期中報告