tx · C6FxLpVsqjo4MwvV96YyiRYqP7pNDBTSgvza75L6D4V

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.11 23:21 [904964] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "C6FxLpVsqjo4MwvV96YyiRYqP7pNDBTSgvza75L6D4V", "fee": 1400000, "feeAssetId": null, "timestamp": 1583958064863, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "fLU9vGQnVDfqNMt13WWSoJH21Lr71C1QKR9ZyHgwFcdrFGqiJydQ67uMoBKuVsanif4z1hWN8f7sGxhCN66GqQE" ], "script": "base64:AAIDAAAAAAAAAC8IARIHCgUIAQgBARIECgIIARIDCgEIEgUKAwgIARIECgIIARIECgIIARIECgIIAQAAAB0AAAAAB2FkZHJlc3MCAAAAIzNOQmRxVkdXZmRxVjNVSjhTMXhzejVxb0JSR1RFc0xpb0xmAAAAAA5rZXlFdmVudFByZWZpeAIAAAAGZXZlbnRfAAAAABJrZXlFdmVudERhdGFQcmVmaXgCAAAABWRhdGFfAAAAABNrZXlFdmVudFByaWNlUHJlZml4AgAAAAZwcmljZV8AAAAAEmtleUV2ZW50RGF0ZVByZWZpeAIAAAAFZGF0ZV8AAAAAFmtleUV2ZW50QXR0ZW5kZWVQcmVmaXgCAAAACWF0dGVuZGVlXwAAAAAYa2V5UHJvZHVjZXJCYWxhbmNlUHJlZml4AgAAAAhiYWxhbmNlXwAAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgCAAAADmFtb3VudFRpY2tldHNfAAAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4AgAAAAljYW5jZWxlZF8AAAAABE5PTkUCAAAABG5vbmUBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAUAAAADbnVtAQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQAAAANrZXkEAAAABGJvb2wEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwUAAAAEYm9vbAEAAAALZ2V0RXZlbnRLZXkAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQABLAAAAAIFAAAADmtleUV2ZW50UHJlZml4CQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHByb2R1Y2VyBQAAAAV0aXRsZQEAAAAPZ2V0RXZlbnREYXRhS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABJrZXlFdmVudERhdGFQcmVmaXgFAAAABWV2ZW50AQAAABBnZXRFdmVudFByaWNlS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABNrZXlFdmVudFByaWNlUHJlZml4BQAAAAVldmVudAEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABJrZXlFdmVudERhdGVQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgAAAAR1c2VyAAAABWV2ZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4BQAAAAR1c2VyAgAAAAFfBQAAAAVldmVudAEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAUAAAAHYWNjb3VudAEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABprZXlFdmVudEFtb3VudFRpY2tldFByZWZpeAUAAAAFZXZlbnQBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgFAAAABWV2ZW50AQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQUAAAAEaXRlbQEAAAANZ2V0RXZlbnRWYWx1ZQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAACHByb2R1Y2VyBQAAAAV0aXRsZQEAAAASZ2V0RXZlbnRQcmljZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldEV2ZW50UHJpY2VLZXkAAAABBQAAAAVldmVudAEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIAAAAEdXNlcgAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACBQAAAAR1c2VyBQAAAAVldmVudAEAAAAXZ2V0UHJvZHVjZXJCYWxhbmNlVmFsdWUAAAABAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRQcm9kdWNlckJhbGFuY2VLZXkAAAABBQAAAAdhY2NvdW50AQAAABpnZXRFdmVudEFtb3VudFRpY2tldHNWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQAAAAVldmVudAkBAAAADGdldEJvb2xCeUtleQAAAAEJAQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQUAAAAFZXZlbnQAAAAHAAAAAWkBAAAAC2NyZWF0ZUV2ZW50AAAABQAAAAV0aXRsZQAAAAVwcmljZQAAAARkYXRhAAAABGRhdGUAAAANYW1vdW50VGlja2V0cwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABWV2ZW50CQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlAwkAAGYAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAABhQcmljZSBjYW5ub3QgYmUgbmVnYXRpdmUDCQEAAAACIT0AAAACCQEAAAANZ2V0RXZlbnRWYWx1ZQAAAAIF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AAIJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAkAAGUAAAACCQEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAdhZGRyZXNzCAUAAAADcG10AAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAADWVuZFRpY2tldFNhbGUAAAABAAAABXRpdGxlBAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFZXZlbnQJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFdGl0bGUDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAPcHJvZHVjZXJBZGRyZXNzCQAAAgAAAAECAAAAI1lvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBFdmVudCB5ZXQhAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQUAAAAFZXZlbnQAAAAAAAAAAAAFAAAAA25pbAAAAAFpAQAAAAdjaGVja2luAAAAAwAAAAVldmVudAAAAA9hdHRlbmRlZUFkZHJlc3MAAAAGYW1vdW50BAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgUAAAAGYW1vdW50CQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAAIAAAABAgAAAB5Zb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggdGlja2V0cy4DCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAABPVGhpcyBldmVudCB3YXMgY2FuY2VsZWQuIFlvdSBjYW4gcmVkZWVtIHlvdXIgdGlja2V0IHVzaW5nIHJlZnVuZFRpY2tldCBmdW5jdGlvbgMJAQAAAAIhPQAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAA9wcm9kdWNlckFkZHJlc3MJAAACAAAAAQIAAAAjWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IEV2ZW50IHlldCEJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAACAAAABWV2ZW50AAAAB2RhdGVOb3cEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAAIAAAABAgAAACNZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgRXZlbnQgeWV0IQMJAABnAAAAAgUAAAAHZGF0ZU5vdwkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IHdhcyBhbHJlYWR5IGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50BgUAAAADbmlsAAAAAWkBAAAADHJlZnVuZFRpY2tldAAAAAIAAAAFZXZlbnQAAAAGYW1vdW50BAAAAA9hdHRlbmRlZUFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgAAAAAAAAAAAAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAAvWW91IGhhdmUgbm8gcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAABlAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPYXR0ZW5kZWVBZGRyZXNzCQAAaAAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRJbnN1ZmZpY2llbnQgYmFsYW5jZQMJAABnAAAAAgkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQFAAAAB2RhdGVOb3cJAAACAAAAAQIAAABFRXZlbnQgaGFzIG5vdCB5ZXQgdGFrZW4gcGxhY2UuIFdpdGhkcmF3IGZ1bmRzIHdoZW4gZXZlbnQgdGFrZXMgcGxhY2UuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAAAR1bml0BQAAAANuaWwAAAAAfGhrWg==", "chainId": 84, "height": 904964, "spentComplexity": 0 } View: original | compacted Prev: 48LzkiDuqJDJvVChEp6wHmHUABsxRmHpDysVMaYUFJ4g Next: 9x51n93p8yTBBAVQgS39uQbMVPTh3GC5Yyr4CGxX4aXF Diff:
OldNewDifferences
157157 @Callable(i)
158158 func checkin (event,attendeeAddress,amount) = {
159159 let producerAddress = toBase58String(i.caller.bytes)
160- if (getEventCanceledValue(event))
161- then throw("This event was canceled. You can redeem your ticket using refundTicket function")
162- else if ((getEventValueById(event) != producerAddress))
163- then throw("You have not created any Event yet!")
164- else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
160+ if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
161+ then throw("You don't have enough tickets.")
162+ else if (getEventCanceledValue(event))
163+ then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164+ else if ((getEventValueById(event) != producerAddress))
165+ then throw("You have not created any Event yet!")
166+ else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
165167 }
166168
167169
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let address = "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf"
55
66 let keyEventPrefix = "event_"
77
88 let keyEventDataPrefix = "data_"
99
1010 let keyEventPricePrefix = "price_"
1111
1212 let keyEventDatePrefix = "date_"
1313
1414 let keyEventAttendeePrefix = "attendee_"
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) = (((keyEventAttendeePrefix + 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")
138138 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)]))
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,attendeeAddress,amount) = {
159159 let producerAddress = toBase58String(i.caller.bytes)
160- if (getEventCanceledValue(event))
161- then throw("This event was canceled. You can redeem your ticket using refundTicket function")
162- else if ((getEventValueById(event) != producerAddress))
163- then throw("You have not created any Event yet!")
164- else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
160+ if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
161+ then throw("You don't have enough tickets.")
162+ else if (getEventCanceledValue(event))
163+ then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164+ else if ((getEventValueById(event) != producerAddress))
165+ then throw("You have not created any Event yet!")
166+ else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
165167 }
166168
167169
168170
169171 @Callable(i)
170172 func cancelEvent (event,dateNow) = {
171173 let producerAddress = toBase58String(i.caller.bytes)
172174 if ((getEventValueById(event) != producerAddress))
173175 then throw("You have not created any Event yet!")
174176 else if ((dateNow >= getEventDateValue(event)))
175177 then throw("This event has already happened")
176178 else if (getEventCanceledValue(event))
177179 then throw("This event was already canceled")
178180 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
179181 }
180182
181183
182184
183185 @Callable(i)
184186 func refundTicket (event,amount) = {
185187 let attendeeAddress = toBase58String(i.caller.bytes)
186188 if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
187189 then throw("You have no registered ticket with this address")
188190 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
189191 }
190192
191193
192194
193195 @Callable(i)
194196 func withdraw (event,dateNow) = {
195197 let producerAddress = toBase58String(i.caller.bytes)
196198 let balance = getProducerBalanceValue(producerAddress)
197199 if ((0 >= balance))
198200 then throw("Insufficient balance")
199201 else if ((getEventDateValue(event) >= dateNow))
200202 then throw("Event has not yet taken place. Withdraw funds when event takes place.")
201203 else if (getEventCanceledValue(event))
202204 then throw("Event has been canceled")
203205 else ScriptResult(WriteSet([DataEntry(getProducerBalanceKey(producerAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
204206 }
205207
206208

github/deemru/w8io/873ac7e 
219.32 ms