tx · ApgSAoFWaNtNvVzUYtcLt39YQBLUXDFgWV1h4hEvHSZ4

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.09 20:13 [901868] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "ApgSAoFWaNtNvVzUYtcLt39YQBLUXDFgWV1h4hEvHSZ4", "fee": 1400000, "feeAssetId": null, "timestamp": 1583774021129, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "629tqLH1uZzWDupbdMRSXqH1xr4mT54pnSU8bdCqzgcHRYXyjsNGPZCKifFCxq4Br4hBCGSMiKYXiKY5vmQsDav7" ], "script": "base64:AAIDAAAAAAAAAC4IARIHCgUIAQgBARIECgIIARIDCgEIEgQKAggBEgQKAggBEgQKAggBEgQKAggBAAAAHAAAAAAOa2V5RXZlbnRQcmVmaXgCAAAABmV2ZW50XwAAAAASa2V5RXZlbnREYXRhUHJlZml4AgAAAAVkYXRhXwAAAAATa2V5RXZlbnRQcmljZVByZWZpeAIAAAAGcHJpY2VfAAAAABJrZXlFdmVudERhdGVQcmVmaXgCAAAABWRhdGVfAAAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4AgAAAAlhdHRlbmRlZV8AAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAIAAAAIYmFsYW5jZV8AAAAAGmtleUV2ZW50QW1vdW50VGlja2V0UHJlZml4AgAAAA5hbW91bnRUaWNrZXRzXwAAAAAWa2V5RXZlbnRDYW5jZWxlZFByZWZpeAIAAAAJY2FuY2VsZWRfAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5BAAAAARib29sBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQcFAAAABGJvb2wBAAAAC2dldEV2ZW50S2V5AAAAAgAAAAhwcm9kdWNlcgAAAAV0aXRsZQkAASwAAAACBQAAAA5rZXlFdmVudFByZWZpeAkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAD2dldEV2ZW50RGF0YUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRhUHJlZml4BQAAAAVldmVudAEAAAAQZ2V0RXZlbnRQcmljZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAATa2V5RXZlbnRQcmljZVByZWZpeAUAAAAFZXZlbnQBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRlUHJlZml4BQAAAAVldmVudAEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIAAAAEdXNlcgAAAAVldmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAUAAAAEdXNlcgIAAAABXwUAAAAFZXZlbnQBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAABhrZXlQcm9kdWNlckJhbGFuY2VQcmVmaXgFAAAAB2FjY291bnQBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4BQAAAAVldmVudAEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEFAAAABGl0ZW0BAAAADWdldEV2ZW50VmFsdWUAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAEmdldEV2ZW50UHJpY2VWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRFdmVudFByaWNlS2V5AAAAAQUAAAAFZXZlbnQBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEFAAAABWV2ZW50AQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACAAAABHVzZXIAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAEdXNlcgUAAAAFZXZlbnQBAAAAF2dldFByb2R1Y2VyQmFsYW5jZVZhbHVlAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQUAAAAHYWNjb3VudAEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAAxnZXRCb29sQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50AAAABwAAAAFpAQAAAAtjcmVhdGVFdmVudAAAAAUAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQAAAARkYXRlAAAADWFtb3VudFRpY2tldHMEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVldmVudAkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQMJAABmAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAYUHJpY2UgY2Fubm90IGJlIG5lZ2F0aXZlAwkBAAAAAiE9AAAAAgkBAAAADWdldEV2ZW50VmFsdWUAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlBQAAAAROT05FCQAAAgAAAAECAAAAF1Ro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AAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAIAAAAILiB2YWx1ZToJAAGkAAAAAQkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAABWV2ZW50BQAAAA9hdHRlbmRlZUFkZHJlc3MDCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAABPVGhpcyBldmVudCB3YXMgY2FuY2VsZWQuIFlvdSBjYW4gcmVkZWVtIHlvdXIgdGlja2V0IHVzaW5nIHJlZnVuZFRpY2tldCBmdW5jdGlvbgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAABWV2ZW50CQAAZQAAAAIJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAABWV2ZW50BQAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAtjYW5jZWxFdmVudAAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAPcHJvZHVjZXJBZGRyZXNzCQAAAgAAAAECAAAAI1lvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBFdmVudCB5ZXQhAwkAAGcAAAACBQAAAAdkYXRlTm93CQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAH1RoaXMgZXZlbnQgd2FzIGFscmVhZHkgY2FuY2VsZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQUAAAAFZXZlbnQGBQAAAANuaWwAAAABaQEAAAAMcmVmdW5kVGlja2V0AAAAAgAAAAVldmVudAAAAAZhbW91bnQEAAAAD2F0dGVuZGVlQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkAAGcAAAACAAAAAAAAAAAACQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAAIAAAABAgAAAC9Zb3UgaGF2ZSBubyByZWdpc3RlcmVkIHRpY2tldCB3aXRoIHRoaXMgYWRkcmVzcwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA9hdHRlbmRlZUFkZHJlc3MJAABoAAAAAgUAAAAGYW1vdW50CQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAVldmVudAAAAAdkYXRlTm93BAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYmFsYW5jZQkBAAAAF2dldFByb2R1Y2VyQmFsYW5jZVZhbHVlAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzAwkAAGcAAAACAAAAAAAAAAAABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAAFEluc3VmZmljaWVudCBiYWxhbmNlAwkAAGcAAAACCQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAUAAAAHZGF0ZU5vdwkAAAIAAAABAgAAAEVFdmVudCBoYXMgbm90IHlldCB0YWtlbiBwbGFjZS4gV2l0aGRyYXcgZnVuZHMgd2hlbiBldmVudCB0YWtlcyBwbGFjZS4DCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAXRXZlbnQgaGFzIGJlZW4gY2FuY2VsZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzAAAAAAAAAAAABQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAAB2JhbGFuY2UFAAAABHVuaXQFAAAAA25pbAAAAAA1DIv/", "chainId": 84, "height": 901868, "spentComplexity": 0 } View: original | compacted Prev: 85tAwxATSLwXSquH1uSEkDhkaAJikwwnRVnmKJyEKCun Next: 6S7rvkSTrYAyeFu5W7Ky2kJCvU9CweQiuEtrJsAfz4ZA Diff:
OldNewDifferences
156156 func checkin (event,amount) = {
157157 let attendeeAddress = toBase58String(i.caller.bytes)
158158 if ((amount >= getEventAttendeeValue(event, attendeeAddress)))
159- then throw((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". getEventAttendeeValue(event, attendeeAddress)"))
159+ then throw(((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". value:") + toString(getEventAttendeeValue(event, attendeeAddress))))
160160 else if (getEventCanceledValue(event))
161161 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
162162 else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let keyEventPrefix = "event_"
55
66 let keyEventDataPrefix = "data_"
77
88 let keyEventPricePrefix = "price_"
99
1010 let keyEventDatePrefix = "date_"
1111
1212 let keyEventAttendeePrefix = "attendee_"
1313
1414 let keyProducerBalancePrefix = "balance_"
1515
1616 let keyEventAmountTicketPrefix = "amountTickets_"
1717
1818 let keyEventCanceledPrefix = "canceled_"
1919
2020 let NONE = "none"
2121
2222 func getNumberByKey (key) = {
2323 let num = match getInteger(this, key) {
2424 case a: Int =>
2525 a
2626 case _ =>
2727 0
2828 }
2929 num
3030 }
3131
3232
3333 func getStrByKey (key) = {
3434 let str = match getString(this, key) {
3535 case a: String =>
3636 a
3737 case _ =>
3838 NONE
3939 }
4040 str
4141 }
4242
4343
4444 func getBoolByKey (key) = {
4545 let bool = match getBoolean(this, key) {
4646 case a: Boolean =>
4747 a
4848 case _ =>
4949 false
5050 }
5151 bool
5252 }
5353
5454
5555 func getEventKey (producer,title) = (keyEventPrefix + toBase58String(sha256(toBytes((producer + title)))))
5656
5757
5858 func getEventDataKey (event) = (keyEventDataPrefix + event)
5959
6060
6161 func getEventPriceKey (event) = (keyEventPricePrefix + event)
6262
6363
6464 func getEventDateKey (event) = (keyEventDatePrefix + event)
6565
6666
6767 func getEventAttendeeKey (user,event) = (((keyEventAttendeePrefix + user) + "_") + event)
6868
6969
7070 func getProducerBalanceKey (account) = (keyProducerBalancePrefix + account)
7171
7272
7373 func getEventAmountTicketsKey (event) = (keyEventAmountTicketPrefix + event)
7474
7575
7676 func getEventCanceledKey (event) = (keyEventCanceledPrefix + event)
7777
7878
7979 func getEventValueById (item) = getStrByKey(item)
8080
8181
8282 func getEventValue (producer,title) = getStrByKey(getEventKey(producer, title))
8383
8484
8585 func getEventPriceValue (event) = getNumberByKey(getEventPriceKey(event))
8686
8787
8888 func getEventDateValue (event) = getNumberByKey(getEventDateKey(event))
8989
9090
9191 func getEventAttendeeValue (user,event) = getNumberByKey(getEventAttendeeKey(user, event))
9292
9393
9494 func getProducerBalanceValue (account) = getNumberByKey(getProducerBalanceKey(account))
9595
9696
9797 func getEventAmountTicketsValue (event) = getNumberByKey(getEventAmountTicketsKey(event))
9898
9999
100100 func getEventCanceledValue (event) = getBoolByKey(getEventCanceledKey(event))
101101
102102
103103 @Callable(i)
104104 func createEvent (title,price,data,date,amountTickets) = {
105105 let producerAddress = toBase58String(i.caller.bytes)
106106 let event = getEventKey(producerAddress, title)
107107 if ((0 > price))
108108 then throw("Price cannot be negative")
109109 else if ((getEventValue(producerAddress, title) != NONE))
110110 then throw("The event already exist")
111111 else WriteSet([DataEntry(getEventKey(producerAddress, title), producerAddress), DataEntry(getEventPriceKey(event), price), DataEntry(getEventDataKey(event), data), DataEntry(getEventDateKey(event), date), DataEntry(getEventAmountTicketsKey(event), amountTickets)])
112112 }
113113
114114
115115
116116 @Callable(i)
117117 func purchase (event,amount) = {
118118 let pmt = extract(i.payment)
119119 if (isDefined(pmt.assetId))
120120 then throw("can use WAVES only at the moment")
121121 else {
122122 let userAddress = toBase58String(i.caller.bytes)
123123 let price = getEventPriceValue(event)
124124 let supplierAddress = getEventValueById(event)
125125 let amountTicket = getEventAmountTicketsValue(event)
126126 if (((price * amount) > pmt.amount))
127127 then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
128128 else if ((pmt.amount > (price * amount)))
129129 then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Expected price: ") + toString(price)))
130130 else if ((supplierAddress == NONE))
131131 then throw("supplier does not exist")
132132 else if ((0 >= amountTicket))
133133 then throw("No tickets left")
134134 else if (getEventCanceledValue(event))
135135 then throw("This event was canceled")
136136 else WriteSet([DataEntry(getEventAttendeeKey(userAddress, event), (getEventAttendeeValue(userAddress, event) + amount)), DataEntry(getProducerBalanceKey(supplierAddress), (getProducerBalanceValue(supplierAddress) + pmt.amount)), DataEntry(getEventAmountTicketsKey(event), (getEventAmountTicketsValue(event) - amount))])
137137 }
138138 }
139139
140140
141141
142142 @Callable(i)
143143 func endTicketSale (title) = {
144144 let producerAddress = toBase58String(i.caller.bytes)
145145 let event = getEventKey(producerAddress, title)
146146 if ((getEventValueById(event) != producerAddress))
147147 then throw("You have not created any Event yet!")
148148 else if (getEventCanceledValue(event))
149149 then throw("This event was canceled")
150150 else WriteSet([DataEntry(getEventAmountTicketsKey(event), 0)])
151151 }
152152
153153
154154
155155 @Callable(i)
156156 func checkin (event,amount) = {
157157 let attendeeAddress = toBase58String(i.caller.bytes)
158158 if ((amount >= getEventAttendeeValue(event, attendeeAddress)))
159- then throw((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". getEventAttendeeValue(event, attendeeAddress)"))
159+ then throw(((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". value:") + toString(getEventAttendeeValue(event, attendeeAddress))))
160160 else if (getEventCanceledValue(event))
161161 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
162162 else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
163163 }
164164
165165
166166
167167 @Callable(i)
168168 func cancelEvent (event,dateNow) = {
169169 let producerAddress = toBase58String(i.caller.bytes)
170170 if ((getEventValueById(event) != producerAddress))
171171 then throw("You have not created any Event yet!")
172172 else if ((dateNow >= getEventDateValue(event)))
173173 then throw("This event has already happened")
174174 else if (getEventCanceledValue(event))
175175 then throw("This event was already canceled")
176176 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
177177 }
178178
179179
180180
181181 @Callable(i)
182182 func refundTicket (event,amount) = {
183183 let attendeeAddress = toBase58String(i.caller.bytes)
184184 if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
185185 then throw("You have no registered ticket with this address")
186186 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
187187 }
188188
189189
190190
191191 @Callable(i)
192192 func withdraw (event,dateNow) = {
193193 let producerAddress = toBase58String(i.caller.bytes)
194194 let balance = getProducerBalanceValue(producerAddress)
195195 if ((0 >= balance))
196196 then throw("Insufficient balance")
197197 else if ((getEventDateValue(event) >= dateNow))
198198 then throw("Event has not yet taken place. Withdraw funds when event takes place.")
199199 else if (getEventCanceledValue(event))
200200 then throw("Event has been canceled")
201201 else ScriptResult(WriteSet([DataEntry(getProducerBalanceKey(producerAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
202202 }
203203
204204

github/deemru/w8io/c3f4982 
48.08 ms