Smart Contract

PartyMansionGiveawayContract

A.34f2bf4a80bb0f69.PartyMansionGiveawayContract

Deployed

16h ago
Feb 28, 2026, 02:28:26 AM UTC

Dependents

0 imports
1
2/**
3*  SPDX-License-Identifier: GPL-3.0-only
4*/
5
6
7// PartyMansionGiveawayContract
8//													  
9access(all)
10contract PartyMansionGiveawayContract{ 
11
12    access(all) entitlement Owner
13    // Giveaways
14    access(self)
15    var giveaways:{ String: String}
16
17    // Admin storage path
18    access(all)
19    let AdminStoragePath: StoragePath
20
21    access(all)
22    resource Admin{ 
23        // offerFreeDrinks
24        access(Owner)
25        fun addGiveawayCode(giveawayKey: String){ 
26            if PartyMansionGiveawayContract.giveaways.containsKey(giveawayKey){ 
27                panic("Giveaway code already known.")
28            }
29            PartyMansionGiveawayContract.giveaways.insert(key: giveawayKey, giveawayKey)
30        }
31    }
32
33    // checkGiveawayCode
34    access(account)
35    fun checkGiveawayCode(giveawayCode: String): Bool{ 
36        // Hash giveawayCode
37        let digest = HashAlgorithm.SHA3_256.hash(giveawayCode.decodeHex())
38        let giveawayKey = String.encodeHex(digest)
39        if !PartyMansionGiveawayContract.giveaways.containsKey(giveawayKey){ 
40            return false
41        }
42        return true
43    }
44
45    // removeGiveawayCode
46    access(account)
47    fun removeGiveawayCode(giveawayCode: String){ 
48        // Hash giveawayCode
49        let digest = HashAlgorithm.SHA3_256.hash(giveawayCode.decodeHex())
50        let giveawayKey = String.encodeHex(digest)
51        if !PartyMansionGiveawayContract.giveaways.containsKey(giveawayKey){ 
52            let msg = "Unknown Giveaway Code:"
53            panic(msg.concat(giveawayKey))
54        }
55        PartyMansionGiveawayContract.giveaways.remove(key: giveawayKey)
56    }
57
58    // Init function of the smart contract
59    init(){ 
60        // init & save Admin
61        self.AdminStoragePath = /storage/PartyMansionGiveawayAdmin
62        self.account.storage.save<@Admin>(<-create Admin(), to: self.AdminStoragePath)
63
64        // Initialize Giveawaxys
65        self.giveaways ={} 
66    }
67}
68