tx · 6S7rvkSTrYAyeFu5W7Ky2kJCvU9CweQiuEtrJsAfz4ZA

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.09 20:18 [901876] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "6S7rvkSTrYAyeFu5W7Ky2kJCvU9CweQiuEtrJsAfz4ZA", "fee": 1400000, "feeAssetId": null, "timestamp": 1583774395427, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "3WiRfdkJD57US8FPr3p7Ukg32iVBCVgx5r7Mbrhhq7kTdsxaqqrgFNfPQfbWhxi8aecVSLQ9RNf3VRohDVnvtFAc" ], "script": "base64:AAIDAAAAAAAAAC4IARIHCgUIAQgBARIECgIIARIDCgEIEgQKAggBEgQKAggBEgQKAggBEgQKAggBAAAAHAAAAAAOa2V5RXZlbnRQcmVmaXgCAAAABmV2ZW50XwAAAAASa2V5RXZlbnREYXRhUHJlZml4AgAAAAVkYXRhXwAAAAATa2V5RXZlbnRQcmljZVByZWZpeAIAAAAGcHJpY2VfAAAAABJrZXlFdmVudERhdGVQcmVmaXgCAAAABWRhdGVfAAAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4AgAAAAlhdHRlbmRlZV8AAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAIAAAAIYmFsYW5jZV8AAAAAGmtleUV2ZW50QW1vdW50VGlja2V0UHJlZml4AgAAAA5hbW91bnRUaWNrZXRzXwAAAAAWa2V5RXZlbnRDYW5jZWxlZFByZWZpeAIAAAAJY2FuY2VsZWRfAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5BAAAAARib29sBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQcFAAAABGJvb2wBAAAAC2dldEV2ZW50S2V5AAAAAgAAAAhwcm9kdWNlcgAAAAV0aXRsZQkAASwAAAACBQAAAA5rZXlFdmVudFByZWZpeAkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAD2dldEV2ZW50RGF0YUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRhUHJlZml4BQAAAAVldmVudAEAAAAQZ2V0RXZlbnRQcmljZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAATa2V5RXZlbnRQcmljZVByZWZpeAUAAAAFZXZlbnQBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRlUHJlZml4BQAAAAVldmVudAEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIAAAAEdXNlcgAAAAVldmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAUAAAAEdXNlcgIAAAABXwUAAAAFZXZlbnQBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAABhrZXlQcm9kdWNlckJhbGFuY2VQcmVmaXgFAAAAB2FjY291bnQBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4BQAAAAVldmVudAEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEFAAAABGl0ZW0BAAAADWdldEV2ZW50VmFsdWUAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAEmdldEV2ZW50UHJpY2VWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRFdmVudFByaWNlS2V5AAAAAQUAAAAFZXZlbnQBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEFAAAABWV2ZW50AQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACAAAABHVzZXIAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAEdXNlcgUAAAAFZXZlbnQBAAAAF2dldFByb2R1Y2VyQmFsYW5jZVZhbHVlAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQUAAAAHYWNjb3VudAEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAAxnZXRCb29sQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50AAAABwAAAAFpAQAAAAtjcmVhdGVFdmVudAAAAAUAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQAAAARkYXRlAAAADWFtb3VudFRpY2tldHMEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVldmVudAkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQMJAABmAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAYUHJpY2UgY2Fubm90IGJlIG5lZ2F0aXZlAwkBAAAAAiE9AAAAAgkBAAAADWdldEV2ZW50VmFsdWUAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlBQAAAAROT05FCQAAAgAAAAECAAAAF1Ro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AARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAkAAGUAAAACCQEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAANZW5kVGlja2V0U2FsZQAAAAEAAAAFdGl0bGUEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVldmVudAkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQMJAQAAAAIhPQAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAA9wcm9kdWNlckFkZHJlc3MJAAACAAAAAQIAAAAjWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IEV2ZW50IHlldCEDCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAXVGhpcyBldmVudCB3YXMgY2FuY2VsZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAAAAAAAAAAAAAUAAAADbmlsAAAAAWkBAAAAB2NoZWNraW4AAAACAAAABWV2ZW50AAAABmFtb3VudAQAAAAPYXR0ZW5kZWVBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQAAZwAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAA5WW91IGRvbid0IGhhdmUgZW5vdWdoIHJlZ2lzdGVyZWQgdGlja2V0IHdpdGggdGhpcyBhZGRyZXNzAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAT1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkLiBZb3UgY2FuIHJlZGVlbSB5b3VyIHRpY2tldCB1c2luZyByZWZ1bmRUaWNrZXQgZnVuY3Rpb24JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAACAAAABWV2ZW50AAAAB2RhdGVOb3cEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAAIAAAABAgAAACNZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgRXZlbnQgeWV0IQMJAABnAAAAAgUAAAAHZGF0ZU5vdwkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IHdhcyBhbHJlYWR5IGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50BgUAAAADbmlsAAAAAWkBAAAADHJlZnVuZFRpY2tldAAAAAIAAAAFZXZlbnQAAAAGYW1vdW50BAAAAA9hdHRlbmRlZUFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgAAAAAAAAAAAAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAAvWW91IGhhdmUgbm8gcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAABlAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPYXR0ZW5kZWVBZGRyZXNzCQAAaAAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRJbnN1ZmZpY2llbnQgYmFsYW5jZQMJAABnAAAAAgkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQFAAAAB2RhdGVOb3cJAAACAAAAAQIAAABFRXZlbnQgaGFzIG5vdCB5ZXQgdGFrZW4gcGxhY2UuIFdpdGhkcmF3IGZ1bmRzIHdoZW4gZXZlbnQgdGFrZXMgcGxhY2UuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAAAR1bml0BQAAAANuaWwAAAAAwuI6ow==", "chainId": 84, "height": 901876, "spentComplexity": 0 } View: original | compacted Prev: ApgSAoFWaNtNvVzUYtcLt39YQBLUXDFgWV1h4hEvHSZ4 Next: 4uZioCTHD2iBQYgjREUbpp3DM9MEjoqoiAyFKp2koLgZ Diff:
OldNewDifferences
155155 @Callable(i)
156156 func checkin (event,amount) = {
157157 let attendeeAddress = toBase58String(i.caller.bytes)
158- if ((amount >= getEventAttendeeValue(event, attendeeAddress)))
159- then throw(((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". value:") + toString(getEventAttendeeValue(event, attendeeAddress))))
158+ if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
159+ then throw("You don't have enough registered ticket with this address")
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)
158- if ((amount >= getEventAttendeeValue(event, attendeeAddress)))
159- then throw(((("You don't have enough registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)) + ". value:") + toString(getEventAttendeeValue(event, attendeeAddress))))
158+ if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
159+ then throw("You don't have enough registered ticket with this address")
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/873ac7e 
52.05 ms