tx · 9paf8SgfuzxtwgtL6nqJ16BfDNyZ2EpUpBHzWpR1bR49

3NCoR3JwLYoWhVZV8q5ybbnWs2xitQnTmfW:  -0.01400000 Waves

2020.03.09 20:32 [901892] smart account 3NCoR3JwLYoWhVZV8q5ybbnWs2xitQnTmfW > SELF 0.00000000 Waves

{ "type": 13, "id": "9paf8SgfuzxtwgtL6nqJ16BfDNyZ2EpUpBHzWpR1bR49", "fee": 1400000, "feeAssetId": null, "timestamp": 1583775182651, "version": 1, "sender": "3NCoR3JwLYoWhVZV8q5ybbnWs2xitQnTmfW", "senderPublicKey": "8sbyjDcNFY7aeWjhpunP9NSpLRpZhPwSdYRZ69FEzekn", "proofs": [ "5oPc3nd2Rpb2WyrCpBJzCUQcFz8npE2Fd1KQKEnqvJgsidBoXebm5ZKbcVEA7mmYgWebFW4MJGoA8zySUwMWyEhE" ], "script": "base64:AAIDAAAAAAAAAC4IARIHCgUIAQgBARIECgIIARIDCgEIEgQKAggBEgQKAggBEgQKAggBEgQKAggBAAAAHQAAAAAHYWRkcmVzcwIAAAAjM05CZHFWR1dmZHFWM1VKOFMxeHN6NXFvQlJHVEVzTGlvTGYAAAAADmtleUV2ZW50UHJlZml4AgAAAAZldmVudF8AAAAAEmtleUV2ZW50RGF0YVByZWZpeAIAAAAFZGF0YV8AAAAAE2tleUV2ZW50UHJpY2VQcmVmaXgCAAAABnByaWNlXwAAAAASa2V5RXZlbnREYXRlUHJlZml4AgAAAAVkYXRlXwAAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAIAAAAJYXR0ZW5kZWVfAAAAABhrZXlQcm9kdWNlckJhbGFuY2VQcmVmaXgCAAAACGJhbGFuY2VfAAAAABprZXlFdmVudEFtb3VudFRpY2tldFByZWZpeAIAAAAOYW1vdW50VGlja2V0c18AAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgCAAAACWNhbmNlbGVkXwAAAAAETk9ORQIAAAAEbm9uZQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAAxnZXRCb29sQnlLZXkAAAABAAAAA2tleQQAAAAEYm9vbAQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEHBQAAAARib29sAQAAAAtnZXRFdmVudEtleQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAAEsAAAAAgUAAAAOa2V5RXZlbnRQcmVmaXgJAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIcHJvZHVjZXIFAAAABXRpdGxlAQAAAA9nZXRFdmVudERhdGFLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAEmtleUV2ZW50RGF0YVByZWZpeAUAAAAFZXZlbnQBAAAAEGdldEV2ZW50UHJpY2VLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAE2tleUV2ZW50UHJpY2VQcmVmaXgFAAAABWV2ZW50AQAAAA9nZXRFdmVudERhdGVLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAEmtleUV2ZW50RGF0ZVByZWZpeAUAAAAFZXZlbnQBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACAAAABHVzZXIAAAAFZXZlbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAFmtleUV2ZW50QXR0ZW5kZWVQcmVmaXgFAAAABHVzZXICAAAAAV8FAAAABWV2ZW50AQAAABVnZXRQcm9kdWNlckJhbGFuY2VLZXkAAAABAAAAB2FjY291bnQJAAEsAAAAAgUAAAAYa2V5UHJvZHVjZXJCYWxhbmNlUHJlZml4BQAAAAdhY2NvdW50AQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAGmtleUV2ZW50QW1vdW50VGlja2V0UHJlZml4BQAAAAVldmVudAEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAWa2V5RXZlbnRDYW5jZWxlZFByZWZpeAUAAAAFZXZlbnQBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQAAAARpdGVtCQEAAAALZ2V0U3RyQnlLZXkAAAABBQAAAARpdGVtAQAAAA1nZXRFdmVudFZhbHVlAAAAAgAAAAhwcm9kdWNlcgAAAAV0aXRsZQkBAAAAC2dldFN0ckJ5S2V5AAAAAQkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAIcHJvZHVjZXIFAAAABXRpdGxlAQAAABJnZXRFdmVudFByaWNlVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAQZ2V0RXZlbnRQcmljZUtleQAAAAEFAAAABWV2ZW50AQAAABFnZXRFdmVudERhdGVWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAAA9nZXRFdmVudERhdGVLZXkAAAABBQAAAAVldmVudAEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgAAAAR1c2VyAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIFAAAABHVzZXIFAAAABWV2ZW50AQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEAAAAHYWNjb3VudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEFAAAAB2FjY291bnQBAAAAGmdldEV2ZW50QW1vdW50VGlja2V0c1ZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEFAAAABWV2ZW50AQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABAAAABWV2ZW50CQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQkBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABBQAAAAVldmVudAAAAAcAAAABaQEAAAALY3JlYXRlRXZlbnQAAAAFAAAABXRpdGxlAAAABXByaWNlAAAABGRhdGEAAAAEZGF0ZQAAAA1hbW91bnRUaWNrZXRzBAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFZXZlbnQJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFdGl0bGUDCQAAZgAAAAIAAAAAAAAAAAAFAAAABXByaWNlCQAAAgAAAAECAAAAGFByaWNlIGNhbm5vdCBiZSBuZWdhdGl2ZQMJAQAAAAIhPQAAAAIJAQAAAA1nZXRFdmVudFZhbHVlAAAAAgUA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Ynl0ZXMDCQAAZwAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAA5WW91IGRvbid0IGhhdmUgZW5vdWdoIHJlZ2lzdGVyZWQgdGlja2V0IHdpdGggdGhpcyBhZGRyZXNzAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAT1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkLiBZb3UgY2FuIHJlZGVlbSB5b3VyIHRpY2tldCB1c2luZyByZWZ1bmRUaWNrZXQgZnVuY3Rpb24JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAACAAAABWV2ZW50AAAAB2RhdGVOb3cEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAAIAAAABAgAAACNZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgRXZlbnQgeWV0IQMJAABnAAAAAgUAAAAHZGF0ZU5vdwkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IHdhcyBhbHJlYWR5IGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50BgUAAAADbmlsAAAAAWkBAAAADHJlZnVuZFRpY2tldAAAAAIAAAAFZXZlbnQAAAAGYW1vdW50BAAAAA9hdHRlbmRlZUFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgAAAAAAAAAAAAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAAvWW91IGhhdmUgbm8gcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAABlAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPYXR0ZW5kZWVBZGRyZXNzCQAAaAAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRJbnN1ZmZpY2llbnQgYmFsYW5jZQMJAABnAAAAAgkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQFAAAAB2RhdGVOb3cJAAACAAAAAQIAAABFRXZlbnQgaGFzIG5vdCB5ZXQgdGFrZW4gcGxhY2UuIFdpdGhkcmF3IGZ1bmRzIHdoZW4gZXZlbnQgdGFrZXMgcGxhY2UuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAAAR1bml0BQAAAANuaWwAAAAAmWXBAw==", "chainId": 84, "height": 901892, "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 3 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let address = "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf"
5+
6+let keyEventPrefix = "event_"
7+
8+let keyEventDataPrefix = "data_"
9+
10+let keyEventPricePrefix = "price_"
11+
12+let keyEventDatePrefix = "date_"
13+
14+let keyEventAttendeePrefix = "attendee_"
15+
16+let keyProducerBalancePrefix = "balance_"
17+
18+let keyEventAmountTicketPrefix = "amountTickets_"
19+
20+let keyEventCanceledPrefix = "canceled_"
21+
22+let NONE = "none"
23+
24+func getNumberByKey (key) = {
25+ let num = match getInteger(this, key) {
26+ case a: Int =>
27+ a
28+ case _ =>
29+ 0
30+ }
31+ num
32+ }
33+
34+
35+func getStrByKey (key) = {
36+ let str = match getString(this, key) {
37+ case a: String =>
38+ a
39+ case _ =>
40+ NONE
41+ }
42+ str
43+ }
44+
45+
46+func getBoolByKey (key) = {
47+ let bool = match getBoolean(this, key) {
48+ case a: Boolean =>
49+ a
50+ case _ =>
51+ false
52+ }
53+ bool
54+ }
55+
56+
57+func getEventKey (producer,title) = (keyEventPrefix + toBase58String(sha256(toBytes((producer + title)))))
58+
59+
60+func getEventDataKey (event) = (keyEventDataPrefix + event)
61+
62+
63+func getEventPriceKey (event) = (keyEventPricePrefix + event)
64+
65+
66+func getEventDateKey (event) = (keyEventDatePrefix + event)
67+
68+
69+func getEventAttendeeKey (user,event) = (((keyEventAttendeePrefix + user) + "_") + event)
70+
71+
72+func getProducerBalanceKey (account) = (keyProducerBalancePrefix + account)
73+
74+
75+func getEventAmountTicketsKey (event) = (keyEventAmountTicketPrefix + event)
76+
77+
78+func getEventCanceledKey (event) = (keyEventCanceledPrefix + event)
79+
80+
81+func getEventValueById (item) = getStrByKey(item)
82+
83+
84+func getEventValue (producer,title) = getStrByKey(getEventKey(producer, title))
85+
86+
87+func getEventPriceValue (event) = getNumberByKey(getEventPriceKey(event))
88+
89+
90+func getEventDateValue (event) = getNumberByKey(getEventDateKey(event))
91+
92+
93+func getEventAttendeeValue (user,event) = getNumberByKey(getEventAttendeeKey(user, event))
94+
95+
96+func getProducerBalanceValue (account) = getNumberByKey(getProducerBalanceKey(account))
97+
98+
99+func getEventAmountTicketsValue (event) = getNumberByKey(getEventAmountTicketsKey(event))
100+
101+
102+func getEventCanceledValue (event) = getBoolByKey(getEventCanceledKey(event))
103+
104+
105+@Callable(i)
106+func createEvent (title,price,data,date,amountTickets) = {
107+ let producerAddress = toBase58String(i.caller.bytes)
108+ let event = getEventKey(producerAddress, title)
109+ if ((0 > price))
110+ then throw("Price cannot be negative")
111+ else if ((getEventValue(producerAddress, title) != NONE))
112+ then throw("The event already exist")
113+ else WriteSet([DataEntry(getEventKey(producerAddress, title), producerAddress), DataEntry(getEventPriceKey(event), price), DataEntry(getEventDataKey(event), data), DataEntry(getEventDateKey(event), date), DataEntry(getEventAmountTicketsKey(event), amountTickets)])
114+ }
115+
116+
117+
118+@Callable(i)
119+func purchase (event,amount) = {
120+ let pmt = extract(i.payment)
121+ if (isDefined(pmt.assetId))
122+ then throw("can use WAVES only at the moment")
123+ else {
124+ let userAddress = toBase58String(i.caller.bytes)
125+ let price = getEventPriceValue(event)
126+ let supplierAddress = getEventValueById(event)
127+ let amountTicket = getEventAmountTicketsValue(event)
128+ if (((price * amount) > pmt.amount))
129+ then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
130+ else if ((pmt.amount > (price * amount)))
131+ then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Expected price: ") + toString(price)))
132+ else if ((supplierAddress == NONE))
133+ then throw("supplier does not exist")
134+ else if ((0 >= amountTicket))
135+ then throw("No tickets left")
136+ else if (getEventCanceledValue(event))
137+ then throw("This event was canceled")
138+ else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(userAddress, event), (getEventAttendeeValue(userAddress, event) + amount)), DataEntry(getProducerBalanceKey(supplierAddress), (getProducerBalanceValue(supplierAddress) + pmt.amount)), DataEntry(getEventAmountTicketsKey(event), (getEventAmountTicketsValue(event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(address), pmt.amount, unit)]))
139+ }
140+ }
141+
142+
143+
144+@Callable(i)
145+func endTicketSale (title) = {
146+ let producerAddress = toBase58String(i.caller.bytes)
147+ let event = getEventKey(producerAddress, title)
148+ if ((getEventValueById(event) != producerAddress))
149+ then throw("You have not created any Event yet!")
150+ else if (getEventCanceledValue(event))
151+ then throw("This event was canceled")
152+ else WriteSet([DataEntry(getEventAmountTicketsKey(event), 0)])
153+ }
154+
155+
156+
157+@Callable(i)
158+func checkin (event,amount) = {
159+ let attendeeAddress = toBase58String(i.caller.bytes)
160+ if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
161+ then throw("You don't have enough registered ticket with this address")
162+ else if (getEventCanceledValue(event))
163+ then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164+ else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
165+ }
166+
167+
168+
169+@Callable(i)
170+func cancelEvent (event,dateNow) = {
171+ let producerAddress = toBase58String(i.caller.bytes)
172+ if ((getEventValueById(event) != producerAddress))
173+ then throw("You have not created any Event yet!")
174+ else if ((dateNow >= getEventDateValue(event)))
175+ then throw("This event has already happened")
176+ else if (getEventCanceledValue(event))
177+ then throw("This event was already canceled")
178+ else WriteSet([DataEntry(getEventCanceledKey(event), true)])
179+ }
180+
181+
182+
183+@Callable(i)
184+func refundTicket (event,amount) = {
185+ let attendeeAddress = toBase58String(i.caller.bytes)
186+ if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
187+ then throw("You have no registered ticket with this address")
188+ else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
189+ }
190+
191+
192+
193+@Callable(i)
194+func withdraw (event,dateNow) = {
195+ let producerAddress = toBase58String(i.caller.bytes)
196+ let balance = getProducerBalanceValue(producerAddress)
197+ if ((0 >= balance))
198+ then throw("Insufficient balance")
199+ else if ((getEventDateValue(event) >= dateNow))
200+ then throw("Event has not yet taken place. Withdraw funds when event takes place.")
201+ else if (getEventCanceledValue(event))
202+ then throw("Event has been canceled")
203+ else ScriptResult(WriteSet([DataEntry(getProducerBalanceKey(producerAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
204+ }
205+
206+

github/deemru/w8io/873ac7e 
28.81 ms