tx · 5bThoF1DGKaVg97juyZwLBvs6TuSuPoSjfi7XepRDVSu

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.11 23:13 [904955] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "5bThoF1DGKaVg97juyZwLBvs6TuSuPoSjfi7XepRDVSu", "fee": 1400000, "feeAssetId": null, "timestamp": 1583957619138, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "4kTv1RLwAFDdtPLQLYEzXiZVPEK7dGfKrssAvDuQDWaWKrkamF2C2DVPG58mvFD1N6gpe9EMJohQ1AXSm4E4LsoC" ], "script": "base64:AAIDAAAAAAAAAC8IARIHCgUIAQgBARIECgIIARIDCgEIEgUKAwgIARIECgIIARIECgIIARIECgIIAQAAAB0AAAAAB2FkZHJlc3MCAAAAIzNOQmRxVkdXZmRxVjNVSjhTMXhzejVxb0JSR1RFc0xpb0xmAAAAAA5rZXlFdmVudFByZWZpeAIAAAAGZXZlbnRfAAAAABJrZXlFdmVudERhdGFQcmVmaXgCAAAABWRhdGFfAAAAABNrZXlFdmVudFByaWNlUHJlZml4AgAAAAZwcmljZV8AAAAAEmtleUV2ZW50RGF0ZVByZWZpeAIAAAAFZGF0ZV8AAAAAFmtleUV2ZW50QXR0ZW5kZWVQcmVmaXgCAAAACWF0dGVuZGVlXwAAAAAYa2V5UHJvZHVjZXJCYWxhbmNlUHJlZml4AgAAAAhiYWxhbmNlXwAAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgCAAAADmFtb3VudFRpY2tldHNfAAAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4AgAAAAljYW5jZWxlZF8AAAAABE5PTkUCAAAABG5vbmUBAAAADmdldE51bWJlckJ5S2V5AAAAAQAAAANrZXkEAAAAA251bQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwUAAAADa2V5AQAAAAtnZXRTdHJCeUtleQAAAAEAAAADa2V5BAAAAANzdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEFAAAABE5PTkUFAAAAA3N0cgEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQAAAANrZXkEAAAABGJvb2wEAAAAByRtYXRjaDAJAAQbAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAdCb29sZWFuBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBwUAAAAEYm9vbAEAAAALZ2V0RXZlbnRLZXkAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQABLAAAAAIFAAAADmtleUV2ZW50UHJlZml4CQACWAAAAAEJAAH3AAAAAQkAAZsAAAABCQABLAAAAAIFAAAACHByb2R1Y2VyBQAAAAV0aXRsZQEAAAAPZ2V0RXZlbnREYXRhS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABJrZXlFdmVudERhdGFQcmVmaXgFAAAABWV2ZW50AQAAABBnZXRFdmVudFByaWNlS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABNrZXlFdmVudFByaWNlUHJlZml4BQAAAAVldmVudAEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABJrZXlFdmVudERhdGVQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgAAAAR1c2VyAAAABWV2ZW50CQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4BQAAAAR1c2VyAgAAAAFfBQAAAAVldmVudAEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQAAAAdhY2NvdW50CQABLAAAAAIFAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAUAAAAHYWNjb3VudAEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABprZXlFdmVudEFtb3VudFRpY2tldFByZWZpeAUAAAAFZXZlbnQBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgFAAAABWV2ZW50AQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQUAAAAEaXRlbQEAAAANZ2V0RXZlbnRWYWx1ZQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAACHByb2R1Y2VyBQAAAAV0aXRsZQEAAAASZ2V0RXZlbnRQcmljZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldEV2ZW50UHJpY2VLZXkAAAABBQAAAAVldmVudAEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIAAAAEdXNlcgAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACBQAAAAR1c2VyBQAAAAVldmVudAEAAAAXZ2V0UHJvZHVjZXJCYWxhbmNlVmFsdWUAAAABAAAAB2FjY291bnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABVnZXRQcm9kdWNlckJhbGFuY2VLZXkAAAABBQAAAAdhY2NvdW50AQAAABpnZXRFdmVudEFtb3VudFRpY2tldHNWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQAAAAVldmVudAkBAAAADGdldEJvb2xCeUtleQAAAAEJAQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQUAAAAFZXZlbnQAAAAHAAAAAWkBAAAAC2NyZWF0ZUV2ZW50AAAABQAAAAV0aXRsZQAAAAVwcmljZQAAAARkYXRhAAAABGRhdGUAAAANYW1vdW50VGlja2V0cwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABWV2ZW50CQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlAwkAAGYAAAACAAAAAAAAAAAABQAAAAVwcmljZQkAAAIAAAABAgAAABhQcmljZSBjYW5ub3QgYmUgbmVnYXRpdmUD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bmNlS2V5AAAAAQUAAAAPc3VwcGxpZXJBZGRyZXNzCQAAZAAAAAIJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3N1cHBsaWVyQWRkcmVzcwgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAkAAGUAAAACCQEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAAdhZGRyZXNzCAUAAAADcG10AAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAADWVuZFRpY2tldFNhbGUAAAABAAAABXRpdGxlBAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFZXZlbnQJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFdGl0bGUDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAPcHJvZHVjZXJBZGRyZXNzCQAAAgAAAAECAAAAI1lvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBFdmVudCB5ZXQhAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQUAAAAFZXZlbnQAAAAAAAAAAAAFAAAAA25pbAAAAAFpAQAAAAdjaGVja2luAAAAAwAAAAVldmVudAAAAA9hdHRlbmRlZUFkZHJlc3MAAAAGYW1vdW50BAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgUAAAAGYW1vdW50CQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAAIAAAABAgAAADtZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MuIAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAE9UaGlzIGV2ZW50IHdhcyBjYW5jZWxlZC4gWW91IGNhbiByZWRlZW0geW91ciB0aWNrZXQgdXNpbmcgcmVmdW5kVGlja2V0IGZ1bmN0aW9uAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAAIAAAABAgAAACNZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgRXZlbnQgeWV0IQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAABWV2ZW50CQAAZQAAAAIJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAABWV2ZW50BQAAAAZhbW91bnQFAAAAA25pbAAAAAFpAQAAAAtjYW5jZWxFdmVudAAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAPcHJvZHVjZXJBZGRyZXNzCQAAAgAAAAECAAAAI1lvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBFdmVudCB5ZXQhAwkAAGcAAAACBQAAAAdkYXRlTm93CQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBhbHJlYWR5IGhhcHBlbmVkAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAH1RoaXMgZXZlbnQgd2FzIGFscmVhZHkgY2FuY2VsZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQUAAAAFZXZlbnQGBQAAAANuaWwAAAABaQEAAAAMcmVmdW5kVGlja2V0AAAAAgAAAAVldmVudAAAAAZhbW91bnQEAAAAD2F0dGVuZGVlQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkAAGcAAAACAAAAAAAAAAAACQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAAIAAAABAgAAAC9Zb3UgaGF2ZSBubyByZWdpc3RlcmVkIHRpY2tldCB3aXRoIHRoaXMgYWRkcmVzcwkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA9hdHRlbmRlZUFkZHJlc3MJAABoAAAAAgUAAAAGYW1vdW50CQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAVldmVudAAAAAdkYXRlTm93BAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYmFsYW5jZQkBAAAAF2dldFByb2R1Y2VyQmFsYW5jZVZhbHVlAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzAwkAAGcAAAACAAAAAAAAAAAABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAAFEluc3VmZmljaWVudCBiYWxhbmNlAwkAAGcAAAACCQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAUAAAAHZGF0ZU5vdwkAAAIAAAABAgAAAEVFdmVudCBoYXMgbm90IHlldCB0YWtlbiBwbGFjZS4gV2l0aGRyYXcgZnVuZHMgd2hlbiBldmVudCB0YWtlcyBwbGFjZS4DCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAXRXZlbnQgaGFzIGJlZW4gY2FuY2VsZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzAAAAAAAAAAAABQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAAB2JhbGFuY2UFAAAABHVuaXQFAAAAA25pbAAAAAAKjOJ4", "chainId": 84, "height": 904955, "spentComplexity": 0 } View: original | compacted Prev: GmtC1bcZixf3QeX97qBWjSKdcj15pvsYHnrCQfB33BNA Next: 48LzkiDuqJDJvVChEp6wHmHUABsxRmHpDysVMaYUFJ4g Diff:
OldNewDifferences
158158 func checkin (event,attendeeAddress,amount) = {
159159 let producerAddress = toBase58String(i.caller.bytes)
160160 if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
161- then throw(("You don't have enough registered ticket with this address. " + toString(getIntegerValue(this, ((("attendee_" + attendeeAddress) + "_event_") + event)))))
161+ then throw("You don't have enough registered ticket with this address. ")
162162 else if (getEventCanceledValue(event))
163163 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164164 else if ((getEventValueById(event) != producerAddress))
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 getIntegerValue(this, key)
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)
160160 if ((amount >= getEventAttendeeValue(attendeeAddress, event)))
161- then throw(("You don't have enough registered ticket with this address. " + toString(getIntegerValue(this, ((("attendee_" + attendeeAddress) + "_event_") + event)))))
161+ then throw("You don't have enough registered ticket with this address. ")
162162 else if (getEventCanceledValue(event))
163163 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164164 else if ((getEventValueById(event) != producerAddress))
165165 then throw("You have not created any Event yet!")
166166 else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
167167 }
168168
169169
170170
171171 @Callable(i)
172172 func cancelEvent (event,dateNow) = {
173173 let producerAddress = toBase58String(i.caller.bytes)
174174 if ((getEventValueById(event) != producerAddress))
175175 then throw("You have not created any Event yet!")
176176 else if ((dateNow >= getEventDateValue(event)))
177177 then throw("This event has already happened")
178178 else if (getEventCanceledValue(event))
179179 then throw("This event was already canceled")
180180 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
181181 }
182182
183183
184184
185185 @Callable(i)
186186 func refundTicket (event,amount) = {
187187 let attendeeAddress = toBase58String(i.caller.bytes)
188188 if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
189189 then throw("You have no registered ticket with this address")
190190 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
191191 }
192192
193193
194194
195195 @Callable(i)
196196 func withdraw (event,dateNow) = {
197197 let producerAddress = toBase58String(i.caller.bytes)
198198 let balance = getProducerBalanceValue(producerAddress)
199199 if ((0 >= balance))
200200 then throw("Insufficient balance")
201201 else if ((getEventDateValue(event) >= dateNow))
202202 then throw("Event has not yet taken place. Withdraw funds when event takes place.")
203203 else if (getEventCanceledValue(event))
204204 then throw("Event has been canceled")
205205 else ScriptResult(WriteSet([DataEntry(getProducerBalanceKey(producerAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
206206 }
207207
208208

github/deemru/w8io/03bedc9 
51.74 ms