tx · 9hXdcsQZjQcg5TU174oEMuJfcVXyLCHixmeCFA7cJAtg

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.09 20:10 [901866] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "9hXdcsQZjQcg5TU174oEMuJfcVXyLCHixmeCFA7cJAtg", "fee": 1400000, "feeAssetId": null, "timestamp": 1583773784881, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "2huDukSrHPrN36uG17MATF6zjVzQtzcCBS94gvPJ4RsnUamQ1Lsfo4VnrA64CRX3CPx9ebj77f8pJWdSWTFrhVss" ], "script": "base64:AAIDAAAAAAAAAC4IARIHCgUIAQgBARIECgIIARIDCgEIEgQKAggBEgQKAggBEgQKAggBEgQKAggBAAAAHAAAAAAOa2V5RXZlbnRQcmVmaXgCAAAABmV2ZW50XwAAAAASa2V5RXZlbnREYXRhUHJlZml4AgAAAAVkYXRhXwAAAAATa2V5RXZlbnRQcmljZVByZWZpeAIAAAAGcHJpY2VfAAAAABJrZXlFdmVudERhdGVQcmVmaXgCAAAABWRhdGVfAAAAABZrZXlFdmVudEF0dGVuZGVlUHJlZml4AgAAAAlhdHRlbmRlZV8AAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAIAAAAIYmFsYW5jZV8AAAAAGmtleUV2ZW50QW1vdW50VGlja2V0UHJlZml4AgAAAA5hbW91bnRUaWNrZXRzXwAAAAAWa2V5RXZlbnRDYW5jZWxlZFByZWZpeAIAAAAJY2FuY2VsZWRfAAAAAAROT05FAgAAAARub25lAQAAAA5nZXROdW1iZXJCeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5BAAAAARib29sBAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQcFAAAABGJvb2wBAAAAC2dldEV2ZW50S2V5AAAAAgAAAAhwcm9kdWNlcgAAAAV0aXRsZQkAASwAAAACBQAAAA5rZXlFdmVudFByZWZpeAkAAlgAAAABCQAB9wAAAAEJAAGbAAAAAQkAASwAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAD2dldEV2ZW50RGF0YUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRhUHJlZml4BQAAAAVldmVudAEAAAAQZ2V0RXZlbnRQcmljZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAATa2V5RXZlbnRQcmljZVByZWZpeAUAAAAFZXZlbnQBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAASa2V5RXZlbnREYXRlUHJlZml4BQAAAAVldmVudAEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIAAAAEdXNlcgAAAAVldmVudAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAUAAAAEdXNlcgIAAAABXwUAAAAFZXZlbnQBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEAAAAHYWNjb3VudAkAASwAAAACBQAAABhrZXlQcm9kdWNlckJhbGFuY2VQcmVmaXgFAAAAB2FjY291bnQBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4BQAAAAVldmVudAEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABAAAABGl0ZW0JAQAAAAtnZXRTdHJCeUtleQAAAAEFAAAABGl0ZW0BAAAADWdldEV2ZW50VmFsdWUAAAACAAAACHByb2R1Y2VyAAAABXRpdGxlCQEAAAALZ2V0U3RyQnlLZXkAAAABCQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAAhwcm9kdWNlcgUAAAAFdGl0bGUBAAAAEmdldEV2ZW50UHJpY2VWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABBnZXRFdmVudFByaWNlS2V5AAAAAQUAAAAFZXZlbnQBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAD2dldEV2ZW50RGF0ZUtleQAAAAEFAAAABWV2ZW50AQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACAAAABHVzZXIAAAAFZXZlbnQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAEdXNlcgUAAAAFZXZlbnQBAAAAF2dldFByb2R1Y2VyQmFsYW5jZVZhbHVlAAAAAQAAAAdhY2NvdW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0UHJvZHVjZXJCYWxhbmNlS2V5AAAAAQUAAAAHYWNjb3VudAEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAYZ2V0RXZlbnRBbW91bnRUaWNrZXRzS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEAAAAFZXZlbnQJAQAAAAxnZXRCb29sQnlLZXkAAAABCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50AAAABwAAAAFpAQAAAAtjcmVhdGVFdmVudAAAAAUAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQAAAARkYXRlAAAADWFtb3VudFRpY2tldHMEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVldmVudAkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQMJAABmAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAYUHJpY2UgY2Fubm90IGJlIG5lZ2F0aXZlAwkBAAAAAiE9AAAAAgkBAAAADWdldEV2ZW50VmFsdWUAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlBQAAAAROT05FCQAAAgAAAAECAAAAF1Ro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AARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAkAAGUAAAACCQEAAAAaZ2V0RXZlbnRBbW91bnRUaWNrZXRzVmFsdWUAAAABBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAANZW5kVGlja2V0U2FsZQAAAAEAAAAFdGl0bGUEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVldmVudAkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQMJAQAAAAIhPQAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAA9wcm9kdWNlckFkZHJlc3MJAAACAAAAAQIAAAAjWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IEV2ZW50IHlldCEDCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAXVGhpcyBldmVudCB3YXMgY2FuY2VsZWQJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAAAAAAAAAAAAAUAAAADbmlsAAAAAWkBAAAAB2NoZWNraW4AAAACAAAABWV2ZW50AAAABmFtb3VudAQAAAAPYXR0ZW5kZWVBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQAAZwAAAAIAAAAAAAAAAAAJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAACBQAAAAVldmVudAUAAAAPYXR0ZW5kZWVBZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgIAAAAxWW91IGhhdmUgbm8gcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MuIAkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAACBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAABWV2ZW50AwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAT1RoaXMgZXZlbnQgd2FzIGNhbmNlbGVkLiBZb3UgY2FuIHJlZGVlbSB5b3VyIHRpY2tldCB1c2luZyByZWZ1bmRUaWNrZXQgZnVuY3Rpb24JAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAkAAGUAAAACCQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAgUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAACAAAABWV2ZW50AAAAB2RhdGVOb3cEAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgkBAAAAEWdldEV2ZW50VmFsdWVCeUlkAAAAAQUAAAAFZXZlbnQFAAAAD3Byb2R1Y2VyQWRkcmVzcwkAAAIAAAABAgAAACNZb3UgaGF2ZSBub3QgY3JlYXRlZCBhbnkgRXZlbnQgeWV0IQMJAABnAAAAAgUAAAAHZGF0ZU5vdwkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IHdhcyBhbHJlYWR5IGNhbmNlbGVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRDYW5jZWxlZEtleQAAAAEFAAAABWV2ZW50BgUAAAADbmlsAAAAAWkBAAAADHJlZnVuZFRpY2tldAAAAAIAAAAFZXZlbnQAAAAGYW1vdW50BAAAAA9hdHRlbmRlZUFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAABnAAAAAgAAAAAAAAAAAAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAAACAAAAAQIAAAAvWW91IGhhdmUgbm8gcmVnaXN0ZXJlZCB0aWNrZXQgd2l0aCB0aGlzIGFkZHJlc3MJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQJAABlAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABmFtb3VudAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPYXR0ZW5kZWVBZGRyZXNzCQAAaAAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAIFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAAFZXZlbnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAAh3aXRoZHJhdwAAAAIAAAAFZXZlbnQAAAAHZGF0ZU5vdwQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABdnZXRQcm9kdWNlckJhbGFuY2VWYWx1ZQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRJbnN1ZmZpY2llbnQgYmFsYW5jZQMJAABnAAAAAgkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQFAAAAB2RhdGVOb3cJAAACAAAAAQIAAABFRXZlbnQgaGFzIG5vdCB5ZXQgdGFrZW4gcGxhY2UuIFdpdGhkcmF3IGZ1bmRzIHdoZW4gZXZlbnQgdGFrZXMgcGxhY2UuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAFWdldFByb2R1Y2VyQmFsYW5jZUtleQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwAAAAAAAAAAAAUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABxAZXh0clVzZXIoYWRkcmVzc0Zyb21TdHJpbmcpAAAAAQUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAdiYWxhbmNlBQAAAAR1bml0BQAAAANuaWwAAAAA54uGtA==", "chainId": 84, "height": 901866, "spentComplexity": 0 } View: original | compacted Prev: HaHUu2QuTtxHkiZ9FWFnCox3jw4EhfANbirMCzM714Q2 Next: 85tAwxATSLwXSquH1uSEkDhkaAJikwwnRVnmKJyEKCun Diff:
OldNewDifferences
99
1010 let keyEventDatePrefix = "date_"
1111
12-let keyEventAttendee = "attendee_"
13-
14-let keyEventAttendeeValidator = "val_"
12+let keyEventAttendeePrefix = "attendee_"
1513
1614 let keyProducerBalancePrefix = "balance_"
1715
6664 func getEventDateKey (event) = (keyEventDatePrefix + event)
6765
6866
69-func getEventAttendeeKey (user,event) = (((keyEventAttendee + user) + "_") + event)
67+func getEventAttendeeKey (user,event) = (((keyEventAttendeePrefix + user) + "_") + event)
7068
7169
7270 func getProducerBalanceKey (account) = (keyProducerBalancePrefix + account)
158156 func checkin (event,amount) = {
159157 let attendeeAddress = toBase58String(i.caller.bytes)
160158 if ((0 >= getEventAttendeeValue(event, attendeeAddress)))
161- then throw(("You have no registered ticket with this address. " + getEventAttendeeKey(event, attendeeAddress)))
159+ then throw(("You have no registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)))
162160 else if (getEventCanceledValue(event))
163161 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164- else WriteSet([DataEntry(getEventAttendeeKey(event, attendeeAddress), (getEventAttendeeValue(event, attendeeAddress) - amount))])
162+ else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
165163 }
166164
167165
183181 @Callable(i)
184182 func refundTicket (event,amount) = {
185183 let attendeeAddress = toBase58String(i.caller.bytes)
186- if ((0 >= getEventAttendeeValue(event, attendeeAddress)))
184+ if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
187185 then throw("You have no registered ticket with this address")
188- else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(event, attendeeAddress), (getEventAttendeeValue(event, attendeeAddress) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(event, attendeeAddress)), unit)]))
186+ else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
189187 }
190188
191189
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
12-let keyEventAttendee = "attendee_"
13-
14-let keyEventAttendeeValidator = "val_"
12+let keyEventAttendeePrefix = "attendee_"
1513
1614 let keyProducerBalancePrefix = "balance_"
1715
1816 let keyEventAmountTicketPrefix = "amountTickets_"
1917
2018 let keyEventCanceledPrefix = "canceled_"
2119
2220 let NONE = "none"
2321
2422 func getNumberByKey (key) = {
2523 let num = match getInteger(this, key) {
2624 case a: Int =>
2725 a
2826 case _ =>
2927 0
3028 }
3129 num
3230 }
3331
3432
3533 func getStrByKey (key) = {
3634 let str = match getString(this, key) {
3735 case a: String =>
3836 a
3937 case _ =>
4038 NONE
4139 }
4240 str
4341 }
4442
4543
4644 func getBoolByKey (key) = {
4745 let bool = match getBoolean(this, key) {
4846 case a: Boolean =>
4947 a
5048 case _ =>
5149 false
5250 }
5351 bool
5452 }
5553
5654
5755 func getEventKey (producer,title) = (keyEventPrefix + toBase58String(sha256(toBytes((producer + title)))))
5856
5957
6058 func getEventDataKey (event) = (keyEventDataPrefix + event)
6159
6260
6361 func getEventPriceKey (event) = (keyEventPricePrefix + event)
6462
6563
6664 func getEventDateKey (event) = (keyEventDatePrefix + event)
6765
6866
69-func getEventAttendeeKey (user,event) = (((keyEventAttendee + user) + "_") + event)
67+func getEventAttendeeKey (user,event) = (((keyEventAttendeePrefix + user) + "_") + event)
7068
7169
7270 func getProducerBalanceKey (account) = (keyProducerBalancePrefix + account)
7371
7472
7573 func getEventAmountTicketsKey (event) = (keyEventAmountTicketPrefix + event)
7674
7775
7876 func getEventCanceledKey (event) = (keyEventCanceledPrefix + event)
7977
8078
8179 func getEventValueById (item) = getStrByKey(item)
8280
8381
8482 func getEventValue (producer,title) = getStrByKey(getEventKey(producer, title))
8583
8684
8785 func getEventPriceValue (event) = getNumberByKey(getEventPriceKey(event))
8886
8987
9088 func getEventDateValue (event) = getNumberByKey(getEventDateKey(event))
9189
9290
9391 func getEventAttendeeValue (user,event) = getNumberByKey(getEventAttendeeKey(user, event))
9492
9593
9694 func getProducerBalanceValue (account) = getNumberByKey(getProducerBalanceKey(account))
9795
9896
9997 func getEventAmountTicketsValue (event) = getNumberByKey(getEventAmountTicketsKey(event))
10098
10199
102100 func getEventCanceledValue (event) = getBoolByKey(getEventCanceledKey(event))
103101
104102
105103 @Callable(i)
106104 func createEvent (title,price,data,date,amountTickets) = {
107105 let producerAddress = toBase58String(i.caller.bytes)
108106 let event = getEventKey(producerAddress, title)
109107 if ((0 > price))
110108 then throw("Price cannot be negative")
111109 else if ((getEventValue(producerAddress, title) != NONE))
112110 then throw("The event already exist")
113111 else WriteSet([DataEntry(getEventKey(producerAddress, title), producerAddress), DataEntry(getEventPriceKey(event), price), DataEntry(getEventDataKey(event), data), DataEntry(getEventDateKey(event), date), DataEntry(getEventAmountTicketsKey(event), amountTickets)])
114112 }
115113
116114
117115
118116 @Callable(i)
119117 func purchase (event,amount) = {
120118 let pmt = extract(i.payment)
121119 if (isDefined(pmt.assetId))
122120 then throw("can use WAVES only at the moment")
123121 else {
124122 let userAddress = toBase58String(i.caller.bytes)
125123 let price = getEventPriceValue(event)
126124 let supplierAddress = getEventValueById(event)
127125 let amountTicket = getEventAmountTicketsValue(event)
128126 if (((price * amount) > pmt.amount))
129127 then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
130128 else if ((pmt.amount > (price * amount)))
131129 then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Expected price: ") + toString(price)))
132130 else if ((supplierAddress == NONE))
133131 then throw("supplier does not exist")
134132 else if ((0 >= amountTicket))
135133 then throw("No tickets left")
136134 else if (getEventCanceledValue(event))
137135 then throw("This event was canceled")
138136 else WriteSet([DataEntry(getEventAttendeeKey(userAddress, event), (getEventAttendeeValue(userAddress, event) + amount)), DataEntry(getProducerBalanceKey(supplierAddress), (getProducerBalanceValue(supplierAddress) + pmt.amount)), DataEntry(getEventAmountTicketsKey(event), (getEventAmountTicketsValue(event) - amount))])
139137 }
140138 }
141139
142140
143141
144142 @Callable(i)
145143 func endTicketSale (title) = {
146144 let producerAddress = toBase58String(i.caller.bytes)
147145 let event = getEventKey(producerAddress, title)
148146 if ((getEventValueById(event) != producerAddress))
149147 then throw("You have not created any Event yet!")
150148 else if (getEventCanceledValue(event))
151149 then throw("This event was canceled")
152150 else WriteSet([DataEntry(getEventAmountTicketsKey(event), 0)])
153151 }
154152
155153
156154
157155 @Callable(i)
158156 func checkin (event,amount) = {
159157 let attendeeAddress = toBase58String(i.caller.bytes)
160158 if ((0 >= getEventAttendeeValue(event, attendeeAddress)))
161- then throw(("You have no registered ticket with this address. " + getEventAttendeeKey(event, attendeeAddress)))
159+ then throw(("You have no registered ticket with this address. " + getEventAttendeeKey(attendeeAddress, event)))
162160 else if (getEventCanceledValue(event))
163161 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
164- else WriteSet([DataEntry(getEventAttendeeKey(event, attendeeAddress), (getEventAttendeeValue(event, attendeeAddress) - amount))])
162+ else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))])
165163 }
166164
167165
168166
169167 @Callable(i)
170168 func cancelEvent (event,dateNow) = {
171169 let producerAddress = toBase58String(i.caller.bytes)
172170 if ((getEventValueById(event) != producerAddress))
173171 then throw("You have not created any Event yet!")
174172 else if ((dateNow >= getEventDateValue(event)))
175173 then throw("This event has already happened")
176174 else if (getEventCanceledValue(event))
177175 then throw("This event was already canceled")
178176 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
179177 }
180178
181179
182180
183181 @Callable(i)
184182 func refundTicket (event,amount) = {
185183 let attendeeAddress = toBase58String(i.caller.bytes)
186- if ((0 >= getEventAttendeeValue(event, attendeeAddress)))
184+ if ((0 >= getEventAttendeeValue(attendeeAddress, event)))
187185 then throw("You have no registered ticket with this address")
188- else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(event, attendeeAddress), (getEventAttendeeValue(event, attendeeAddress) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(event, attendeeAddress)), unit)]))
186+ else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, event), (getEventAttendeeValue(attendeeAddress, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, event)), unit)]))
189187 }
190188
191189
192190
193191 @Callable(i)
194192 func withdraw (event,dateNow) = {
195193 let producerAddress = toBase58String(i.caller.bytes)
196194 let balance = getProducerBalanceValue(producerAddress)
197195 if ((0 >= balance))
198196 then throw("Insufficient balance")
199197 else if ((getEventDateValue(event) >= dateNow))
200198 then throw("Event has not yet taken place. Withdraw funds when event takes place.")
201199 else if (getEventCanceledValue(event))
202200 then throw("Event has been canceled")
203201 else ScriptResult(WriteSet([DataEntry(getProducerBalanceKey(producerAddress), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
204202 }
205203
206204

github/deemru/w8io/873ac7e 
35.82 ms