tx · HaHUu2QuTtxHkiZ9FWFnCox3jw4EhfANbirMCzM714Q2

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.09 20:03 [901860] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

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

github/deemru/w8io/873ac7e 
50.21 ms