Smart Contract
PartyMansionGiveawayContract
A.34f2bf4a80bb0f69.PartyMansionGiveawayContract
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