tx · 4qiCRFnPkdDCuqRzMtQomNCNod4r8KbEVKzRFs8v9DLQ

3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf:  -0.01400000 Waves

2020.03.14 13:10 [908726] smart account 3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf > SELF 0.00000000 Waves

{ "type": 13, "id": "4qiCRFnPkdDCuqRzMtQomNCNod4r8KbEVKzRFs8v9DLQ", "fee": 1400000, "feeAssetId": null, "timestamp": 1584180597758, "version": 1, "sender": "3NBdqVGWfdqV3UJ8S1xsz5qoBRGTEsLioLf", "senderPublicKey": "3LEuAZxU2NYqTtbUBJLs5XaFQ8z781ENmxbLvFXZy33D", "proofs": [ "33ScuK5fJLDd8mqEU5ycgCmqUe5kCsPzkYeNNSEsCAbfewc7LoA5dF6682PKcGFqDUPisyZTG7HZBTRvhRC5HN9b" ], "script": "base64:AAIDAAAAAAAAADEIARIICgYIAQgBAQQSBQoDCAEIEgMKAQgSBgoECAgBCBIDCgEIEgUKAwgBCBIDCgEIAAAAIAAAAAAHYWRkcmVzcwIAAAAjM05CZHFWR1dmZHFWM1VKOFMxeHN6NXFvQlJHVEVzTGlvTGYAAAAADmtleUV2ZW50UHJlZml4AgAAAAZldmVudF8AAAAAEmtleUV2ZW50RGF0YVByZWZpeAIAAAAFZGF0YV8AAAAAE2tleUV2ZW50UHJpY2VQcmVmaXgCAAAABnByaWNlXwAAAAASa2V5RXZlbnREYXRlUHJlZml4AgAAAAVkYXRlXwAAAAAWa2V5RXZlbnRBdHRlbmRlZVByZWZpeAIAAAAJYXR0ZW5kZWVfAAAAABhrZXlQcm9kdWNlckJhbGFuY2VQcmVmaXgCAAAACGJhbGFuY2VfAAAAABprZXlFdmVudEFtb3VudFRpY2tldFByZWZpeAIAAAAOYW1vdW50VGlja2V0c18AAAAAFmtleUV2ZW50Q2FuY2VsZWRQcmVmaXgCAAAACWNhbmNlbGVkXwAAAAAYa2V5RXZlbnRSZXF1aXJlc0lkUHJlZml4AgAAAAtyZXF1aXJlc0lkXwAAAAAETk9ORQIAAAAEbm9uZQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQQAAAADbnVtBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABQAAAANudW0BAAAAC2dldFN0ckJ5S2V5AAAAAQAAAANrZXkEAAAAA3N0cgQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQUAAAAETk9ORQUAAAADc3RyAQAAAAxnZXRCb29sQnlLZXkAAAABAAAAA2tleQQAAAAEYm9vbAQAAAAHJG1hdGNoMAkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAB0Jvb2xlYW4EAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEHBQAAAARib29sAQAAAAtnZXRFdmVudEtleQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAAEsAAAAAgUAAAAOa2V5RXZlbnRQcmVmaXgJAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAIcHJvZHVjZXIFAAAABXRpdGxlAQAAAA9nZXRFdmVudERhdGFLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAEmtleUV2ZW50RGF0YVByZWZpeAUAAAAFZXZlbnQBAAAAEGdldEV2ZW50UHJpY2VLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAE2tleUV2ZW50UHJpY2VQcmVmaXgFAAAABWV2ZW50AQAAAA9nZXRFdmVudERhdGVLZXkAAAABAAAABWV2ZW50CQABLAAAAAIFAAAAEmtleUV2ZW50RGF0ZVByZWZpeAUAAAAFZXZlbnQBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAADAAAABHVzZXIAAAACaWQAAAAFZXZlbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAFmtleUV2ZW50QXR0ZW5kZWVQcmVmaXgJAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAEdXNlcgUAAAACaWQCAAAAAV8FAAAABWV2ZW50AQAAABJnZXRFdmVudEJhbGFuY2VLZXkAAAACAAAAB2FjY291bnQAAAAFZXZlbnQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAGGtleVByb2R1Y2VyQmFsYW5jZVByZWZpeAUAAAAHYWNjb3VudAIAAAABXwUAAAAFZXZlbnQBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEAAAAFZXZlbnQJAAEsAAAAAgUAAAAaa2V5RXZlbnRBbW91bnRUaWNrZXRQcmVmaXgFAAAABWV2ZW50AQAAABNnZXRFdmVudENhbmNlbGVkS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABZrZXlFdmVudENhbmNlbGVkUHJlZml4BQAAAAVldmVudAEAAAAVZ2V0RXZlbnRSZXF1aXJlc0lkS2V5AAAAAQAAAAVldmVudAkAASwAAAACBQAAABhrZXlFdmVudFJlcXVpcmVzSWRQcmVmaXgFAAAABWV2ZW50AQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEAAAAEaXRlbQkBAAAAC2dldFN0ckJ5S2V5AAAAAQUAAAAEaXRlbQEAAAANZ2V0RXZlbnRWYWx1ZQAAAAIAAAAIcHJvZHVjZXIAAAAFdGl0bGUJAQAAAAtnZXRTdHJCeUtleQAAAAEJAQAAAAtnZXRFdmVudEtleQAAAAIFAAAACHByb2R1Y2VyBQAAAAV0aXRsZQEAAAASZ2V0RXZlbnRQcmljZVZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAEGdldEV2ZW50UHJpY2VLZXkAAAABBQAAAAVldmVudAEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABAAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQUAAAAFZXZlbnQBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAMAAAAEdXNlcgAAAAJpZAAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAE2dldEV2ZW50QXR0ZW5kZWVLZXkAAAADBQAAAAR1c2VyBQAAAAJpZAUAAAAFZXZlbnQBAAAAFGdldEV2ZW50QmFsYW5jZVZhbHVlAAAAAgAAAAdhY2NvdW50AAAABWV2ZW50CQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAASZ2V0RXZlbnRCYWxhbmNlS2V5AAAAAgUAAAAHYWNjb3VudAUAAAAFZXZlbnQBAAAAGmdldEV2ZW50QW1vdW50VGlja2V0c1ZhbHVlAAAAAQAAAAVldmVudAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldEV2ZW50QW1vdW50VGlja2V0c0tleQAAAAEFAAAABWV2ZW50AQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABAAAABWV2ZW50CQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQkBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABBQAAAAVldmVudAEAAAAXZ2V0RXZlbnRSZXF1aXJlc0lkVmFsdWUAAAABAAAABWV2ZW50CQEAAAAMZ2V0Qm9vbEJ5S2V5AAAAAQkBAAAAFWdldEV2ZW50UmVxdWlyZXNJZEtleQAAAAEFAAAABWV2ZW50AAAABwAAAAFpAQAAAAtjcmVhdGVFdmVudAAAAAYAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQAAAARkYXRlAAAADWFtb3VudFRpY2tldHMAAAAKcmVxdWlyZXNJZAQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABWV2ZW50CQEAAAALZ2V0RXZlbnRLZXkAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlAwkBAAAAAiE9AAAAAgkBAAAADWdldEV2ZW50VmFsdWUAAAACBQAAAA9wcm9kdWNlckFkZHJlc3MFAAAABXRpdGxlBQAAAAROT05FCQAAAgAAAAECAAAAF1RoZSBldmVudCBhbHJlYWR5IGV4aXN0AwkAAGYAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAEZGF0ZQkAAAIAAAABAgAAABpEYXRlIGNhbm5vdCBiZSBpbiB0aGUgcGFzdAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAC2dldEV2ZW50S2V5AAAAAgUAAAAPcHJvZHVjZXJBZGRyZXNzBQAAAAV0aXRsZQUAAAAPcHJvZHVjZXJBZGRyZXNzCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAQZ2V0RXZlbnRQcmljZUtleQAAAAEFAAAABWV2ZW50BQAAAAVwcmljZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAD2dldEV2ZW50RGF0YUtleQAAAAEFAAAABWV2ZW50BQAAAARkYXRhCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAAPZ2V0RXZlbnREYXRlS2V5AAAAAQUAAAAFZXZlbnQFAAAABGRhdGUJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABhnZXRFdmVudEFtb3VudFRpY2tldHNLZXkAAAABBQAAAAVldmVudAUAAAANYW1vdW50VGlja2V0cwkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAA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AAAGYW1vdW50AAAAAmlkBAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAIhPQAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAA9wcm9kdWNlckFkZHJlc3MJAAACAAAAAQIAAABHVGhpcyBldmVudCBkb2VzIG5vdCBleGlzdCwgb3IgeW91IGRvbidlIGhhdmUgdGhlIGNyZWRlbnRpYWxzIHRvIGNoZWNraW4DCQAAZgAAAAIFAAAABmFtb3VudAkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAMFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAACaWQFAAAABWV2ZW50CQAAAgAAAAECAAAAHllvdSBkb24ndCBoYXZlIGVub3VnaCB0aWNrZXRzLgMJAQAAABVnZXRFdmVudENhbmNlbGVkVmFsdWUAAAABBQAAAAVldmVudAkAAAIAAAABAgAAAE9UaGlzIGV2ZW50IHdhcyBjYW5jZWxlZC4gWW91IGNhbiByZWRlZW0geW91ciB0aWNrZXQgdXNpbmcgcmVmdW5kVGlja2V0IGZ1bmN0aW9uAwkAAGYAAAACCQEAAAARZ2V0RXZlbnREYXRlVmFsdWUAAAABBQAAAAVldmVudAkAAGQAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAAAAOThwAkAAAIAAAABAgAAAB9UaGlzIGV2ZW50IGhhcyBub3QgeWV0IGhhcHBlbmVkCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQEAAAATZ2V0RXZlbnRBdHRlbmRlZUtleQAAAAMFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAACaWQFAAAABWV2ZW50CQAAZQAAAAIJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAADBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAAAmlkBQAAAAVldmVudAUAAAAGYW1vdW50BQAAAANuaWwAAAABaQEAAAALY2FuY2VsRXZlbnQAAAABAAAABWV2ZW50BAAAAA9wcm9kdWNlckFkZHJlc3MJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAIhPQAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAA9wcm9kdWNlckFkZHJlc3MJAAACAAAAAQIAAAAjWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IEV2ZW50IHlldCEDCQAAZgAAAAIJAABkAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAADk4cAJAQAAABFnZXRFdmVudERhdGVWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAH1RoaXMgZXZlbnQgaGFzIGFscmVhZHkgaGFwcGVuZWQDCQEAAAAVZ2V0RXZlbnRDYW5jZWxlZFZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCB3YXMgYWxyZWFkeSBjYW5jZWxlZAkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAE2dldEV2ZW50Q2FuY2VsZWRLZXkAAAABBQAAAAVldmVudAYFAAAAA25pbAAAAAFpAQAAAAxyZWZ1bmRUaWNrZXQAAAADAAAABWV2ZW50AAAABmFtb3VudAAAAAJpZAQAAAAPYXR0ZW5kZWVBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQAAAAAAAAIJAQAAABFnZXRFdmVudFZhbHVlQnlJZAAAAAEFAAAABWV2ZW50BQAAAAROT05FCQAAAgAAAAECAAAAGFRoZSBldmVudCBkb2VzIG5vdCBleGlzdAMJAABnAAAAAgUAAAAGYW1vdW50CQEAAAAVZ2V0RXZlbnRBdHRlbmRlZVZhbHVlAAAAAwUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAJpZAUAAAAFZXZlbnQJAAACAAAAAQIAAAA6WW91IGRvbid0IGhhdmUgZW5vdWdoIHJlZ2lzdGVyZWQgdGlja2V0cyB3aXRoIHRoaXMgYWRkcmVzcwMJAABmAAAAAgkAAGQAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAAAAOThwAkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAAACAAAAAQIAAAAfVGhpcyBldmVudCBoYXMgYWxyZWFkeSBoYXBwZW5lZAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAQAAABNnZXRFdmVudEF0dGVuZGVlS2V5AAAAAwUAAAAPYXR0ZW5kZWVBZGRyZXNzBQAAAAJpZAUAAAAFZXZlbnQJAABlAAAAAgkBAAAAFWdldEV2ZW50QXR0ZW5kZWVWYWx1ZQAAAAMFAAAAD2F0dGVuZGVlQWRkcmVzcwUAAAACaWQFAAAABWV2ZW50BQAAAAZhbW91bnQFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAD2F0dGVuZGVlQWRkcmVzcwkAAGgAAAACBQAAAAZhbW91bnQJAQAAABVnZXRFdmVudEF0dGVuZGVlVmFsdWUAAAADBQAAAA9hdHRlbmRlZUFkZHJlc3MFAAAAAmlkBQAAAAVldmVudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAVldmVudAQAAAAPcHJvZHVjZXJBZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2JhbGFuY2UJAQAAABRnZXRFdmVudEJhbGFuY2VWYWx1ZQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFZXZlbnQDCQEAAAACIT0AAAACCQEAAAARZ2V0RXZlbnRWYWx1ZUJ5SWQAAAABBQAAAAVldmVudAUAAAAPcHJvZHVjZXJBZGRyZXNzCQAAAgAAAAECAAAATkV2ZW50IGRvZXMgbm90IGV4aXN0LCBvciB5b3UgZG9uJ3QgaGF2ZSB0aGUgY3JlZGVudGlhbHMgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbgMJAABnAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAABRJbnN1ZmZpY2llbnQgYmFsYW5jZQMJAABmAAAAAgkBAAAAEWdldEV2ZW50RGF0ZVZhbHVlAAAAAQUAAAAFZXZlbnQJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAAAPQkAJAAACAAAAAQIAAABFRXZlbnQgaGFzIG5vdCB5ZXQgdGFrZW4gcGxhY2UuIFdpdGhkcmF3IGZ1bmRzIHdoZW4gZXZlbnQgdGFrZXMgcGxhY2UuAwkBAAAAFWdldEV2ZW50Q2FuY2VsZWRWYWx1ZQAAAAEFAAAABWV2ZW50CQAAAgAAAAECAAAAF0V2ZW50IGhhcyBiZWVuIGNhbmNlbGVkCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkBAAAAEmdldEV2ZW50QmFsYW5jZUtleQAAAAIFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAFZXZlbnQAAAAAAAAAAAAFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAcQGV4dHJVc2VyKGFkZHJlc3NGcm9tU3RyaW5nKQAAAAEFAAAAD3Byb2R1Y2VyQWRkcmVzcwUAAAAHYmFsYW5jZQUAAAAEdW5pdAUAAAADbmlsAAAAAEmZSFs=", "chainId": 84, "height": 908726, "spentComplexity": 0 } View: original | compacted Prev: HN4VKnksDTXkWJwnKkrbsKKkV4vhs7m79DvewL9C1tWb Next: 8N9MaYT2p6SzW53yb6P2KWkyc2zX6tyDk88pfSnN9NnR Diff:
OldNewDifferences
190190
191191
192192 @Callable(i)
193-func cancelEvent (event,dateNow) = {
193+func cancelEvent (event) = {
194194 let producerAddress = toBase58String(i.caller.bytes)
195195 if ((getEventValueById(event) != producerAddress))
196196 then throw("You have not created any Event yet!")
218218
219219
220220 @Callable(i)
221-func withdraw (event,dateNow) = {
221+func withdraw (event) = {
222222 let producerAddress = toBase58String(i.caller.bytes)
223223 let balance = getEventBalanceValue(producerAddress, event)
224224 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 keyEventRequiresIdPrefix = "requiresId_"
2323
2424 let NONE = "none"
2525
2626 func getNumberByKey (key) = {
2727 let num = match getInteger(this, key) {
2828 case a: Int =>
2929 a
3030 case _ =>
3131 0
3232 }
3333 num
3434 }
3535
3636
3737 func getStrByKey (key) = {
3838 let str = match getString(this, key) {
3939 case a: String =>
4040 a
4141 case _ =>
4242 NONE
4343 }
4444 str
4545 }
4646
4747
4848 func getBoolByKey (key) = {
4949 let bool = match getBoolean(this, key) {
5050 case a: Boolean =>
5151 a
5252 case _ =>
5353 false
5454 }
5555 bool
5656 }
5757
5858
5959 func getEventKey (producer,title) = (keyEventPrefix + toBase58String(sha256(toBytes((producer + title)))))
6060
6161
6262 func getEventDataKey (event) = (keyEventDataPrefix + event)
6363
6464
6565 func getEventPriceKey (event) = (keyEventPricePrefix + event)
6666
6767
6868 func getEventDateKey (event) = (keyEventDatePrefix + event)
6969
7070
7171 func getEventAttendeeKey (user,id,event) = (((keyEventAttendeePrefix + toBase58String(sha256(toBytes((user + id))))) + "_") + event)
7272
7373
7474 func getEventBalanceKey (account,event) = (((keyProducerBalancePrefix + account) + "_") + event)
7575
7676
7777 func getEventAmountTicketsKey (event) = (keyEventAmountTicketPrefix + event)
7878
7979
8080 func getEventCanceledKey (event) = (keyEventCanceledPrefix + event)
8181
8282
8383 func getEventRequiresIdKey (event) = (keyEventRequiresIdPrefix + event)
8484
8585
8686 func getEventValueById (item) = getStrByKey(item)
8787
8888
8989 func getEventValue (producer,title) = getStrByKey(getEventKey(producer, title))
9090
9191
9292 func getEventPriceValue (event) = getNumberByKey(getEventPriceKey(event))
9393
9494
9595 func getEventDateValue (event) = getNumberByKey(getEventDateKey(event))
9696
9797
9898 func getEventAttendeeValue (user,id,event) = getNumberByKey(getEventAttendeeKey(user, id, event))
9999
100100
101101 func getEventBalanceValue (account,event) = getNumberByKey(getEventBalanceKey(account, event))
102102
103103
104104 func getEventAmountTicketsValue (event) = getNumberByKey(getEventAmountTicketsKey(event))
105105
106106
107107 func getEventCanceledValue (event) = getBoolByKey(getEventCanceledKey(event))
108108
109109
110110 func getEventRequiresIdValue (event) = getBoolByKey(getEventRequiresIdKey(event))
111111
112112
113113 @Callable(i)
114114 func createEvent (title,price,data,date,amountTickets,requiresId) = {
115115 let producerAddress = toBase58String(i.caller.bytes)
116116 let event = getEventKey(producerAddress, title)
117117 if ((getEventValue(producerAddress, title) != NONE))
118118 then throw("The event already exist")
119119 else if ((lastBlock.timestamp > date))
120120 then throw("Date cannot be in the past")
121121 else WriteSet([DataEntry(getEventKey(producerAddress, title), producerAddress), DataEntry(getEventPriceKey(event), price), DataEntry(getEventDataKey(event), data), DataEntry(getEventDateKey(event), date), DataEntry(getEventAmountTicketsKey(event), amountTickets), DataEntry(getEventRequiresIdKey(event), requiresId)])
122122 }
123123
124124
125125
126126 @Callable(i)
127127 func purchase (event,amount,id) = {
128128 let pmt = extract(i.payment)
129129 if (isDefined(pmt.assetId))
130130 then throw("can use WAVES only at the moment")
131131 else {
132132 let userAddress = toBase58String(i.caller.bytes)
133133 let price = getEventPriceValue(event)
134134 let producerAddress = getEventValueById(event)
135135 let ticketsLeft = getEventAmountTicketsValue(event)
136136 let attendeeKey = ""
137137 if ((producerAddress == NONE))
138138 then throw("Event does not exist")
139139 else if (((price * amount) > pmt.amount))
140140 then throw(((("You did not send enough money. You sent: " + toString(pmt.amount)) + ". Expected: ") + toString((amount * price))))
141141 else if ((pmt.amount > (price * amount)))
142142 then throw(((("You send too much money. You sent: " + toString(pmt.amount)) + ". Total price: ") + toString((amount * price))))
143143 else if ((0 >= (ticketsLeft - amount)))
144144 then throw("Not enough tickets left")
145145 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
146146 then throw("This event has already happened")
147147 else if (getEventCanceledValue(event))
148148 then throw("This event was canceled")
149149 else if (if (getEventRequiresIdValue(event))
150150 then (id == "")
151151 else false)
152152 then throw("This event requires that you register with a personal ID")
153153 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(userAddress, id, event), (getEventAttendeeValue(userAddress, id, event) + amount)), DataEntry(getEventBalanceKey(producerAddress, event), (getEventBalanceValue(producerAddress, event) + pmt.amount)), DataEntry(getEventAmountTicketsKey(event), (ticketsLeft - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(address), pmt.amount, unit)]))
154154 }
155155 }
156156
157157
158158
159159 @Callable(i)
160160 func endTicketSale (title) = {
161161 let producerAddress = toBase58String(i.caller.bytes)
162162 let event = getEventKey(producerAddress, title)
163163 if (if ((event == ""))
164164 then true
165165 else (getEventValueById(event) != producerAddress))
166166 then throw("You have not created any Event yet!")
167167 else if (getEventCanceledValue(event))
168168 then throw("This event was canceled")
169169 else if ((lastBlock.timestamp > getEventDateValue(event)))
170170 then throw("This event has already happened")
171171 else WriteSet([DataEntry(getEventAmountTicketsKey(event), 0)])
172172 }
173173
174174
175175
176176 @Callable(i)
177177 func checkin (event,attendeeAddress,amount,id) = {
178178 let producerAddress = toBase58String(i.caller.bytes)
179179 if ((getEventValueById(event) != producerAddress))
180180 then throw("This event does not exist, or you don'e have the credentials to checkin")
181181 else if ((amount > getEventAttendeeValue(attendeeAddress, id, event)))
182182 then throw("You don't have enough tickets.")
183183 else if (getEventCanceledValue(event))
184184 then throw("This event was canceled. You can redeem your ticket using refundTicket function")
185185 else if ((getEventDateValue(event) > (lastBlock.timestamp + 15000000)))
186186 then throw("This event has not yet happened")
187187 else WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, id, event), (getEventAttendeeValue(attendeeAddress, id, event) - amount))])
188188 }
189189
190190
191191
192192 @Callable(i)
193-func cancelEvent (event,dateNow) = {
193+func cancelEvent (event) = {
194194 let producerAddress = toBase58String(i.caller.bytes)
195195 if ((getEventValueById(event) != producerAddress))
196196 then throw("You have not created any Event yet!")
197197 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
198198 then throw("This event has already happened")
199199 else if (getEventCanceledValue(event))
200200 then throw("This event was already canceled")
201201 else WriteSet([DataEntry(getEventCanceledKey(event), true)])
202202 }
203203
204204
205205
206206 @Callable(i)
207207 func refundTicket (event,amount,id) = {
208208 let attendeeAddress = toBase58String(i.caller.bytes)
209209 if ((getEventValueById(event) == NONE))
210210 then throw("The event does not exist")
211211 else if ((amount >= getEventAttendeeValue(attendeeAddress, id, event)))
212212 then throw("You don't have enough registered tickets with this address")
213213 else if (((lastBlock.timestamp + 15000000) > getEventDateValue(event)))
214214 then throw("This event has already happened")
215215 else ScriptResult(WriteSet([DataEntry(getEventAttendeeKey(attendeeAddress, id, event), (getEventAttendeeValue(attendeeAddress, id, event) - amount))]), TransferSet([ScriptTransfer(addressFromStringValue(attendeeAddress), (amount * getEventAttendeeValue(attendeeAddress, id, event)), unit)]))
216216 }
217217
218218
219219
220220 @Callable(i)
221-func withdraw (event,dateNow) = {
221+func withdraw (event) = {
222222 let producerAddress = toBase58String(i.caller.bytes)
223223 let balance = getEventBalanceValue(producerAddress, event)
224224 if ((getEventValueById(event) != producerAddress))
225225 then throw("Event does not exist, or you don't have the credentials to perform this action")
226226 else if ((0 >= balance))
227227 then throw("Insufficient balance")
228228 else if ((getEventDateValue(event) > (lastBlock.timestamp - 1000000)))
229229 then throw("Event has not yet taken place. Withdraw funds when event takes place.")
230230 else if (getEventCanceledValue(event))
231231 then throw("Event has been canceled")
232232 else ScriptResult(WriteSet([DataEntry(getEventBalanceKey(producerAddress, event), 0)]), TransferSet([ScriptTransfer(addressFromStringValue(producerAddress), balance, unit)]))
233233 }
234234
235235

github/deemru/w8io/873ac7e 
39.66 ms